Da bi se uspostavila dobra komunikacija između ljudskog svijeta i strojnog svijeta, jedinice zaslona igraju važnu ulogu. Stoga su važan dio ugrađenih sustava. Izložbene jedinice - velike ili male, rade na istom osnovnom principu. Uz složene jedinice zaslona poput grafičkih zaslona i 3D prikaza, treba znati raditi i s jednostavnim zaslonima poput jedinica 16x1 i 16x2. Prikazna jedinica 16x1 imat će 16 znakova i nalazi se u jednom retku. 16x2 LCD-u će imati 32 znakova u ukupnom 16in 1. st linije i još 16 u 2 ndcrta. Ovdje moramo shvatiti da u svakom znaku postoji 5x10 = 50 piksela, tako da za prikaz jednog znaka svih 50 piksela moraju raditi zajedno. Ali ne trebamo se zbog toga brinuti jer se na jedinici zaslona nalazi još jedan kontroler (HD44780) koji obavlja posao upravljanja pikselima. (možete ga vidjeti na LCD jedinici, to je crno oko straga).
Komponente potrebne
Hardver:
Mikrokontroler ATmega32
Napajanje (5v)
AVR-ISP programer
JHD_162ALCD (LCD 16x2)
Kondenzator od 100uF.
Softver:
Atmel studio 6.1
Progisp ili flash magija
Kružni dijagram i objašnjenje

Kao što je prikazano na LCD povezivanju s krugom ATmega32, možete vidjeti da je PORTA od ATMEGA32 spojena na podatkovni port LCD. Ovdje treba imati na umu onemogućavanje JTAG komunikacije u PORTC-u ATMEGA-e promjenom bajtova osigurača, ako se želi koristiti PORTC-om kao normalnim komunikacijskim priključkom. Na LCD zaslonu 16x2 postoji 16 pinova, ako postoji pozadinsko svjetlo, ako nema pozadinskog svjetla, bit će 14 pinova. Može se napajati ili ostaviti igle stražnjeg svjetla. Sada u 14 pinova postoji 8 podatkovnih pinova (7-14 ili D0-D7), 2 pina za napajanje (1 & 2 ili VSS & VDD ili gnd & + 5v), treći pinski za kontrolu kontrasta (VEE - kontrolira koliko debeli znakovi trebaju biti prikazano), 3 upravljačka zatiča (RS & RW & E)
U gore navedenom krugu za povezivanje 16x2 LCD-a s AVR mikrokontrolerom možete primijetiti da sam uzeo samo dvije kontrolne igle. To daje fleksibilnost boljeg razumijevanja. Kontrastni bit i READ / WRITE se ne koriste često, tako da se mogu kratko spojiti na masu. Ovo LCD postavlja u najveći kontrast i način čitanja. Samo trebamo kontrolirati ENABLE i RS igle da bi u skladu s tim slali znakove i podatke.
Poveznice između ATmega32 mikrokontrolera i 16x2 LCD prikazane su u nastavku:
PIN1 ili VSS - uzemljenje
PIN2 ili VDD ili VCC - + 5v snage
PIN3 ili VEE - uzemljenje (daje maksimalni kontrast najbolje za početnike)
PIN4 ili RS (Izbor registra) - PD6 mikrokontrolera
PIN5 ili RW (čitanje / pisanje) - uzemljenje (stavlja LCD u način čitanja olakšava komunikaciju za korisnika)
PIN6 ili E (Omogući) - PD5 mikrokontrolera
PIN7 ili D0 - PA0 mikrokontrolera
PIN8 ili D1 - PA1
PIN9 ili D2 - PA2
PIN10 ili D3 - PA3
PIN11 ili D4 - PA4
PIN12 ili D5 - PA5
PIN13 ili D6 - PA6
PIN14 ili D7 - PA7
U krugu možete vidjeti da smo koristili 8-bitnu komunikaciju (D0-D7), međutim to nije obvezno, a možemo koristiti i 4-bitnu komunikaciju (D4-D7), ali s 4-bitnim komunikacijskim programom postaje pomalo složen za početnike, pa upravo smo krenuli s 8-bitna komunikacija.
Dakle, iz pukog promatranja iz gornje tablice spajamo 10 pinova LCD-a na kontroler u kojem su 8 pinova podatkovne i 2 pina za kontrolu.
Radno
Sada za početak morate znati funkcije 10 pinova LCD-a 16x2 (8 podatkovnih pinova + 2 kontrolna pina). 8 podatkovnih igla služi za slanje podataka ili naredbi na LCD. U dvije upravljačke igle:
1. Pribadača RS (odabir registra) govori LCD-u da li mu šaljemo podatke ili naredbu.
Na primjer:


U gornjoj tablici jedan za podatkovni port (D7-D0) vrijednost "0b0010 1000 ili 0x28" govori LCD-u da prikaže simbol "(". U tablici dvije ista vrijednost 0x28 kaže LCD-u "da ste LCD s 5 x 7 točaka i ponašati se kao jedan ", tako da za istu vrijednost korisnik može definirati dvije stvari, sada je ova situacija neutralizirana registracijskim odabirom, ako je RS pin postavljen nisko, tada LCD razumije da šaljemo naredbu. Ako RS pin postavimo na visok tada LCD razumije da šaljemo podatke, pa u oba slučaja LCD poštuje vrijednost podatkovnog porta prema RS pin vrijednosti.
2. E (Omogući) pin je samo da kaže "LED indikator napajanja računala", ovaj pin je postavljen na visoki da kaže LCD-u "da prima podatke iz podatkovnog porta kontrolera". Jednom kad se ovaj pin smanji nakon visokog, LCD obrađuje primljene podatke i prikazuje odgovarajući rezultat. Dakle, ovaj je pin postavljen na visoku vrijednost prije slanja podataka i povučen na zemlju nakon slanja podataka.
Nakon spajanja hardvera, pokrenite Atmel studio i započnite novi projekt za pisanje programa, a sada otvorite zaslon za programiranje i pokrenite program za ožičenje. Program mora slijediti kao što slijedi.
Prvo kažemo kontroloru koje priključke koristimo za podatke i kontrolu LCD-a. Zatim recite upravljaču kada treba poslati podatke ili naredbu u skladu s igranjem s RS i E pinovima.
Kratko objašnjenje pojmova korištenih u programu:
1. E je postavljeno visoko (govori LCD-u da prima podatke), a RS je nisko (govori LCD-u dajemo naredbu)
2. Davanje vrijednosti 0x01 podatkovnom portu kao naredba za brisanje zaslona
3. E je postavljeno visoko (govori LCD-u da prima podatke), a RS visoko (govori LCD-u dajemo podatke)
4. Uzimanje niza znakova, slanje svakog znaka u niz jedan po jedan.
5. E je postavljeno na nisko (na LCD-u se govori da smo gotovi sa slanjem podataka)
6. Nakon posljednje naredbe LCD prekida komunikaciju i obrađuje podatke te prikazuje niz znakova na zaslonu.
U ovom ćemo scenariju slati likove jedan za drugim. Znakovi su na LCD-u dodijeljeni ASCII kodovima (američki standardni kod za razmjenu informacija).
Tablica ASCII kodova prikazana je gore. Ovdje da bi LCD prikazao znak "@", moramo poslati heksadecimalni kôd "64". Ako na LCD pošaljemo '0x62', pokazat će simbol '>'. Ovako ćemo poslati odgovarajuće kodove na LCD da prikažu ime.

Način komunikacije između LCD-a i ATmega32 AVR mikrokontrolera najbolje je objasniti korak po korak C koda dolje,
