Ïîäêëþ÷àåì ñèìâîëüíûé ÆÊÈ.
Ìíîãèå ëþäè äíÿìè ñèäÿò â ñâîåé ìàñòåðñêîé è ëîìàþò ñåáå ãîëîâó íàä òåì, êàê ïîäêëþ÷èòü ÆÊÈ ê ñâîåìó óñòðîéñòâó, íî íå ó ìíîãèõ ýòî ïîëó÷àåòñÿ.  ýòîé ñòàòüå ÿ íàó÷ó âàñ, êàê ëåãêî è áåç áîëüøèõ óñèëèé ïîäêëþ÷èòü ñèìâîëüíûé ÆÊÈ ê ñâîåìó óñòðîéñòâó. Ïîäêëþ÷àòü ÆÊÈ ìû áóäåì ïðè ïîìîùè ñðåäû >CodeVisionAVR, è ìíîãîå èìåííî îíà ñäåëàåò çà íàñ. Èòàê, äàâàéòå ðàçáåð¸ìñÿ, ÷òî òàêîå ñèìâîëüíûé ÆÊÈ, âåäü ÆÊÈ áûâàþò íå òîëüêî ñèìâîëüíûå, íî è ãðàôè÷åñêèå. Ñèìâîëüíûé æèäêî-êðèñòàëëè÷åñêèé èíäèêàòîð – ýòî äèñïëåé ñî âñòðîåííûì ìèêðîêîíòðîëëåðîì, êîòîðûé ãåíåðèðóåò ñèìâîëû. Ãðàôè÷åñêèé ÆÊÈ íå ãåíåðèðóåò ñèìâîëû, èõ íàäî âûðèñîâûâàòü ïîïèêñåëüíî(ïèêñåëü-ýòî òî÷êà íà äèñïëåå).
Äëÿ ïîäêëþ÷åíèÿ ñèìâîëüíîãî ÆÊÈ íàì ïîòðåáóåòñÿ (Ðèñ.1):
1. Ëþáîé ñèìâîëüíûé ÆÊÈ íà 16 èëè 14 âûõîäîâ;
2. Ìèêðîêîíòðîëëåð >ATMega8;
3. Øëåéô íà 16 ïðîâîäêîâ;
4. Ðàçúåì äëÿ øëåéôà íà 16 âûõîäîâ;
5. Âõîä äëÿ ðàçúåìà äëÿ øëåéôà íà 16 âõîäîâ;
6. Òåêñòîëèò.
Ðèñ.1
Äëÿ ïðîåêòèðîâàíèÿ óñòðîéñòâà íà ÆÊÈ íóæíî íåìíîæêî íàðóøèòü ïîñëåäîâàòåëüíîñòü äåéñòâèé, òóò íå ñëåäóåò ñíà÷àëà ïðèäóìûâàòü ñõåìó, à çàòåì òðàâèòü ïëàòó. Ñõåìó áóäåò ïðèäóìûâàòü çà âàñ ñðåäà >CodeVisionAVR, ïîýòîìó çàïóñêàåì å¸ è íàæèìàåì êíîïêó ‘>Run> >the> >CodeWizardAVR> >automatic> >program> >generator’, òî åñòü çàïóñêàåì àâòîìàòè÷åñêèé ãåíåðàòîð êîäà. Äàëüøå âûáèðàåì âêëàäêó >LCD, íà âêëàäêå >LCD> >Port> âûáèðàåì òðåáóåìûé äëÿ ÆÊÈ ïîðò ìèêðîêîíòðîëëåðà, è âèäèì (Ðèñ.2), ê êàêîìó áèòó ïîðòà ìèêðîêîíòðîëëåðà íóæíî ïîäêëþ÷àòü âûõîäû ÆÊÈ. Òóò æå íà âêëàäêå >Chars./>Line> âûáèðàåì êîëè÷åñòâî ñèìâîëîâ â ïåðâîé ñòðîêå âàøåãî äèñïëåÿ. Òåïåðü ñëåäóåò íàñòðîèòü îñòàëüíûå âêëàäêè ãåíåðàòîðà îñíîâûâàÿñü íà óðîêå «Ïåðâûé ïðîåêò íà ìèêðîêîíòðîëëåðå >AVR». Ïîñëå ýòîãî, îñíîâûâàÿñü íà Òàáëèöå 1(Ôóíêöèè äëÿ ðàáîòû ñ ÆÊÈ èç áèáëèîòåêè >LCD.>h), ïèøåì êîä ïðîãðàììû íàøåãî óñòðîéñòâà.
Ôóíêöèÿ |
Îáúÿñíåíèå |
>lcd_>init(êîëè÷åñòâî_ñèìâîëîâ_â_ñòðîêå)
|
Èíèöèàëèçèðóåò ÆÊÈ ñ ââåäåííûì êîëè÷åñòâîì ñèìâîëîâ â ñòðîêå. |
>lcd_clear() |
Î÷èùàåò ýêðàí ÆÊÈ |
>lcd_gotoxy(x, y) |
Ïåðåâîäèò êóðñîð â òî÷êó ñ êîîðäèíàòàìè (>x, >y). |
>lcd_putchar(char ñèìâîë>) |
Âûâîäèò íà ýêðàí ÆÊÈ óêàçàííûé ñèìâîë. |
>lcd_puts(char *ñòðîêà) |
Âûâîäèò íà ýêðàí ÆÊÈ óêàçàííóþ ñòðîêó. |
Òàáëèöà 1. Ôóíêöèè äëÿ ðàáîòû ñ ÆÊÈ èç áèáëèîòåêè >LCD.>h.
Ïðîãðàììíûé êîä âû ìîæåòå óâèäåòü â Ëèñòèíãå 1.  ýòîé ïðîãðàììå íà ýêðàí ÆÊÈ âûâîäèòñÿ íàäïèñü «>Hello,>I> >am> >ready».
ËÈÑÒÈÍÃ 1:
#include //Âêëþ÷àåì áèáëèîòåêó äëÿ ðàáîòû ñ ìèêðîêîíòðîëëåðîì ATMega8 >#asm > >.equ __lcd_port=0x12 ;PORTD> #>endasm // Èíèöèàëèçèðóåì >PORTD> êàê ïîðò ÆÊÈ #>include <>lcd.>h> //Âêëþ÷àåì áèáëèîòåêó äëÿ ðàáîòû ñ ÆÊÈ >void main(void) >{ >char *_str="Hello,Im ready"; //Ñîçäàåì âûâîäèìóþ ñòðîêó >PORTD=0>x00; //Âûñòàâëÿåì âñå âûõîäû >PORTD íà íîëü >DDRD=0>x00; // Âûñòàâëÿåì âñå âûõîäû >PORTD êàê âõîäû >lcd_>init(16); // Èíèöèàëèçàöèÿ ÆÊÈ íà 16 ñèìâîëîâ >lcd_>gotoxy(0, 0); // Ïåðåâîäèì êóðñîð íà ïåðâûé ñèìâîë ïåðâîé ñòðîêè >lcd_>puts(_>str); // Âûâîäèì ñòðîêó _>str> íà äèñïëåé ÆÊÈ while (1) { }; } |
Òåïåðü ïðèñòóïàåì ê ìåõàíè÷åñêîé ÷àñòè – ñîáèðàåì ñàìî óñòðîéñòâî.
Ðèñ.2
Îñíîâûâàÿñü íà ðèñóíêå 2, ìû è ðèñóåì ñõåìó íàøåãî óñòðîéñòâà (Ðèñ. 3).
Ðèñ.3
Çà ýòîé ñõåìîé ðèñóåì ñõåìó äëÿ ïå÷àòè íà òåêñòîëèò (Ðèñ.4) è òðàâèì ïëàòó íàøåãî óñòðîéñòâà.
Ðèñ.4
Íà ðèñóíêå 4 âû âèäèòå áëîê âûõîäîâ 2õ4 – ýòî èíòåðôåéñ äëÿ ÆÊÈ, êîòîðûé ñäåëàí ïóò¸ì çàæèìàíèÿ òèñêàìè øëåéôà, âñòàâëåííîãî â ñîîòâåòñòâóþùåå îòäåëåíèå â ðàçúåìå äëÿ øëåéôà. (Ðèñ.5).
Ðèñ.5
Îñòàëîñü òîëüêî ñïàÿòü ïëàòó, âñòàâèòü â íåå âõîä äëÿ ðàçúåìà äëÿ øëåéôà, ïåðåïðîøèòü óñòðîéñòâî è óñòðîéñòâî ãîòîâî.
Èòàê, ñ÷èòàåì, ñêîëüêî ïîøëî äåíåã íà âàø ïåðâûé ïðîåêò íà ìèêðîêîíòðîëëåðå:
1. Òåêñòîëèò - 4,50ãðí. = 0,90$;
2. Ìèêðîêîíòðîëëåð >Atmel> >Mega 8(>ATMega8) – 10,50ãðí. = 2$;
3. Øëåéô íà 16 ïðîâîäêîâ – 0,50ãðí. = 0,1$;
4. Ðàçúåì äëÿ øëåéôà íà 16 âûõîäîâ – 1ãðí. = 0,2$;
5. Øëåéô íà ïÿòü ïðîâîäêîâ è ðàçúåì äëÿ ïðîãðàììàòîðà - 1ãðí. = 0,20$;
6. Âõîä äëÿ ðàçúåìà äëÿ øëåéôà íà 16 âõîäîâ – 1ãðí. = 0,20$;
7. Ñèìâîëüíûé ÆÊÈ â€“ 25ãðí. = 5$;
ÈÒÎÃÎ: 43,50ãðèâíû = 8,2$
֏!
Ïîëèùóê Îëåã