Displejs ir nepieciešama jebkura mašīna neatkarīgi no tā, vai tā ir jebkura sadzīves tehnika vai rūpniecības mašīna. Displejs ne tikai parāda vadības opcijas, lai darbinātu mašīnu, bet arī parāda šīs mašīnas veiktā uzdevuma statusu un rezultātu. Elektronikā tiek izmantoti daudzi displeju veidi, piemēram, 7 segmentu displejs, 16x2 LCD displejs, TFT skārienekrāna displejs, OLED displejs utt.
16x2 LCD displejs ir visvienkāršākais displeja modulis, un to izmanto arī dažās mazās elektronikas iekārtās, piemēram, kalkulatorā, digitālajā skaitītājā utt. Mēs esam veikuši daudz projektu, izmantojot 16x2 LCD, ieskaitot pamata saskarni ar citiem mikrokontrolleriem:
- LCD mijiedarbība ar 8051 mikrokontrolleru
- Saskarnes LCD ar mikrokontrolleru ATmega32
- LCD mijiedarbība ar PIC mikrokontrolleru
- Saskarne 16x2 LCD ar Arduino
- 16x2 LCD saskarne ar Raspberry Pi, izmantojot Python
Šajā apmācībā mēs redzēsim, kā saskarni 16x2 LCD ar Atmega16 AVR mikrokontrolleru un parādīt vienkāršu apsveikuma ziņojumu.
Nepieciešamās sastāvdaļas
- Atmega16
- 16x2 LCD modulis
- Džemperi
- Maizes dēlis
Ķēdes shēma
Atmega16 programmēšana 16x2 LCD displejam
Programmēšanai nav nepieciešamas ārējas bibliotēkas. Šeit Atmega16 tiek ieprogrammēts, izmantojot USBASP un Atmel Studio7.0. Pilnīga programma un darba video tiek doti projekta beigās, vienkārši augšupielādējiet programmu Atmega16 un pagrieziet 10k POT, lai pielāgotu LCD spilgtumu.Sākotnēji definējiet CPU frekvenci un iekļaujiet nepieciešamās bibliotēkas, kas nāk ar Atmel Studio Package, piemēram, lai piekļūtu IO tapām un
Programmā definējiet LCD un EN tapu. RS Pins tiek izmantots, lai atlasītu datu un komandu reģistru. Iespējošanas tapa fiksē datus.
#define lv PA3 #define rs PA2
Nosakiet arī to, kurš Atmega16 ports tiks izmantots LCD saskarnei. Šeit tiek izmantots PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
Nākamais solis ir konstruēt funkciju, kas pieņems komandu, nododot parametru. Ir daudz LCD HEX komandu. Hex komandas tiek izmantotas, lai noteiktu LCD funkciju. Tā kā mēs izmantojam LCD 4 bitu režīmu, baits (8 biti) tiks nosūtīts divās paketēs. Viena pakete būs Augšējā Nibble (4 bitu), bet otra pakete - Lower Nibble (4 bitu).
void lcdCommand (neparakstītas char komandas) { lcdPort = (lcdPort & 0x0F) - (komandas & 0xF0); lcdPort & = ~ (1 <
Nākamais solis būtu rakstzīmju pieņemšana un piestiprināšana LCD pieslēgvietai. Saņemtās rakstzīmes pēc tam tiek nosūtītas uz LCD šķīstīt ar nibble. Funkcija ņem rakstzīmi, izmantojot parametru Pass by pass, un pēc tam veic augšējo un apakšējo nibble. Datu reģistram “rs” tapa ir iestatīta uz augstu, un pēc tam datu fiksēšanai tiek nosūtīts augošs impulss. Līdzīgi arī apakšējais kniebiens, kas nosūtīts, mainot iespējošanas vērtību un nosūtot pieaugošo impulsu iespējošanai.
void lcdChar (neparakstīta rakstzīmju virkne) { lcdPort = (lcdPort & 0x0F) - (virkne & 0xF0); lcdPort - = (1 <
Šī funkcija vienkārši pārveido rakstzīmi virknē, un to var izmantot programmā vēlāk, kur nepieciešama rakstīšanas virkne.
void lcdString (char * str) { int j; par (j = 0; str! = 0; j ++) { lcdChar (str); } }
Tagad funkcija ir uzrakstīta tikai ekrāna notīrīšanai. Jums vienkārši jānosūta komanda 01 HEX un pēc tam vienkārši iestatiet kursoru sākotnējā pozīcijā.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Tagad galvenā funkcija ir inicializēt LCD. Sākumā iestatiet PORT virzienu, lai saskarne būtu LCD. Šeit PORT ir iestatīts kā OUTPUT, tāpēc iestatiet FF.
lcdDirection = 0xFF; _delay_ms (20)
Pēc tam iestatiet LCD 4 bitu režīmā, nosūtot 02 sešstūrī. Nosūtiet arī 28 ar sešstūru, lai iestatītu to 2 līnijās, 15x7 matricas pikseļus 4 bitu režīmā.
lcdCommand (0x02); lcdCommand (0x28);
Komanda 0C un 06 tiek izmantots, lai kontrolētu kursora pozīciju. Un visbeidzot vienkārši notīriet ekrānu, nosūtot 01 sešstūrī. Tas pabeidz LCD inicializēšanu.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Pēc inicializācijas pabeigšanas vienkārši pārbaudiet LCD, nosūtot virkni. Šeit mēs nosūtām String " sasaistei LCD ", kas 1. st rindā.
lcdString ("saskarnes LCD");
Pēc tam pārvietojiet kursoru uz nākamo rindu, nosūtot komandu c0 sešstūrī. Un visbeidzot uz šīs pozīcijas uzrakstiet virkni "Ar Atmega1 6".
lcdCommand (0xC0); lcdString ("Ar Atmega16");
Ar šo tiek pabeigta visa apmācība par 16x2 LCD saskarni ar Atmega16. Ņemiet vērā, ka, ja nesaņemat attēlu vai pikseļus, vai nu pārbaudiet elektroinstalāciju atbilstoši kodam un ķēdes shēmai, vai mainiet POT vērtību, kas piestiprināta LCD V0 tapai. Ja jums ir kādas šaubas vai ieteikumi, varat sazināties ar mums, rakstot uz mūsu forumu vai komentējot tālāk.