Zaslon je nujni del katerega koli stroja, ne glede na to, ali gre za gospodinjske aparate ali industrijske stroje. Na zaslonu niso prikazane samo možnosti upravljanja za upravljanje stroja, temveč tudi stanje in izhod opravila, ki ga izvaja ta naprava. V elektroniki se uporablja veliko vrst zaslonov, kot so 7-segmentni zaslon, 16x2 LCD zaslon, TFT zaslon na dotik, OLED zaslon itd.
LCD zaslon 16x2 je najosnovnejši prikazovalni modul in se uporablja tudi v nekaterih majhnih elektronskih napravah, kot so kalkulator, digitalni števec itd. Z uporabo LCD 16x2 smo izvedli veliko projektov, vključno z osnovnim povezovanjem z drugimi mikrokrmilniki:
- Povezava LCD z mikrokrmilnikom 8051
- Povezava LCD-ja z mikrokrmilnikom ATmega32
- Povezava LCD z mikrokrmilnikom PIC
- Povezava 16x2 LCD z Arduinom
- 16-kratno povezovanje LCD-jev z Raspberry Pi z uporabo Pythona
V tej vadnici bomo videli, kako povezati LCD 16x2 z mikrokrmilnikom Atmega16 AVR in prikazati preprosto pozdravno sporočilo.
Potrebne komponente
- Atmega16
- 16x2 LCD modul
- Skakalci
- Breadboard
Shema vezja
Programiranje Atmega16 za LCD zaslon 16x2
Programiranje ne zahteva nobenih zunanjih knjižnic. Tu je Atmega16 programiran z uporabo USBASP in Atmel Studio7.0. Celoten program in delovni video je podan na koncu projekta, samo naložite program v Atmega16 in zavrtite 10k POT, da prilagodite svetlost LCD-ja.Sprva določite frekvenco CPU in vključite potrebne knjižnice, ki jih dobite s paketom Atmel Studio, na primer za dostop do IO zatičev in
V programu določite RS in EN pin LCD-ja. Zatiči RS se uporabljajo za izbiro podatkovnega in ukaznega registra. Vtič za omogočanje zaklene podatke.
#define sl PA3 #define rs PA2
Določite tudi, kateri PORT od Atmega16 bo uporabljen za vmesnike LCD. Tu se uporablja PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
Naslednji korak je izdelava funkcije, ki bo sprejela ukaz s predajo parametra. Ukazov LCD HEX je veliko. Hex ukazi se uporabljajo za določanje funkcije LCD-ja. Ker uporabljamo 4-bitni način LCD-ja, bo bajt (8-bitni) poslan v dveh paketih. En paket bo zgornji grizljaj (4-bitni), drugi pa spodnji grizljaj (4-bitni).
void lcdCommand (nepodpisani ukazi char) { lcdPort = (lcdPort & 0x0F) - (ukazi & 0xF0); lcdPort & = ~ (1 <
Naslednji korak bi bil sprejetje znakov in pritrditev na vrata LCD. Prejeti znaki se nato grizljajo na LCD-ju. Funkcija zavzame znak s parametrom pass by in nato vzame zgornji in spodnji grizljaj. Zatič 'rs' je nastavljen na visoko za podatkovni register, nato pa se pošlje naraščajoči impulz za zaklepanje podatkov. Podobno se pošlje spodnje grizljanje s spreminjanjem vrednosti omogočenja in pošiljanjem naraščajočega impulza za omogočanje.
void lcdChar (nepodpisani niz char) { lcdPort = (lcdPort & 0x0F) - (string & 0xF0); lcdPort - = (1 <
Ta funkcija samo pretvori znak v niz in ga lahko kasneje uporabite v programu, kjer je potrebno zapisovanje niza.
void lcdString (char * str) { int j; za (j = 0; str! = 0; j ++) { lcdChar (str); } }
Zdaj je napisana funkcija samo za čiščenje zaslona. Samo ukaz 01 morate poslati v šestnajstiškem in nato le nastaviti kurzor v začetni položaj.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Zdaj je v glavni funkciji LCD inicializiran. Sprva nastavite smer PORT za vmesnik LCD. Tu je PORT nastavljen kot IZHOD tako nastavljen FF.
lcdDirection = 0xFF; _delay_ms (20)
Nato nastavite LCD v 4-bitni način s pošiljanjem 02 v šestnajstiškem. Pošljite tudi 28 v šestnajstiški nastavitvi, da jo nastavite v dvovrstični matrični slikovni piki 15x7 v 4-bitnem načinu.
lcdCommand (0x02); lcdCommand (0x28);
Ukaz 0C in 06 se uporablja za nadzor položaja kurzorja. In na koncu samo počistite zaslon, tako da pošljete 01 v šestnajstiški obliki. S tem se konča inicializacija LCD-ja.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Po končani inicializaciji preizkusite LCD s pošiljanjem niza. Tukaj smo pošiljanjem String " Povezovanje LCD " v 1. st zapored.
lcdString ("Interfacing LCD");
Nato premaknite kurzor v naslednjo vrstico, tako da v šestnajstiki pošljete ukaz c0. In na koncu na tem mestu napišite niz "With Atmega1 6".
lcdCommand (0xC0); lcdString ("Z Atmega16");
S tem je končana celotna vadnica o povezovanju 16x2 LCD z Atmega16. Upoštevajte, da če ne dobite nobene slike ali slikovnih pik, preverite ožičenje v skladu s kodo in vezjem ali spremenite vrednost POT, pritrjenega na V0 zatič LCD. Če imate kakršen koli dvom ali predlog, nas lahko kontaktirate tako, da pišete na naš forum ali spodaj.