Zaslonske enote igrajo pomembno vlogo za vzpostavitev dobre komunikacije med človeškim in strojnim svetom. Tako so pomemben del vgrajenih sistemov. Prikazne enote - velike ali majhne, delujejo po istem osnovnem principu. Poleg zapletenih prikaznih enot, kot so grafični zasloni in 3D prikazovalniki, je treba poznati tudi delo s preprostimi zasloni, kot so enote 16x1 in 16x2. Zaslonska enota 16x1 bo imela 16 znakov in bo v eni vrstici. 16x2 LCD bo imel 32 znakov v skupni 16in 1. st linije in še 16 v 2 ndčrta. Tu je treba razumeti, da je v vsakem znaku 5x10 = 50 slikovnih pik, zato mora za prikaz enega znaka vseh 50 slikovnih pik delati skupaj. A tega nas ne bi smelo skrbeti, ker je v prikazovalni enoti še en krmilnik (HD44780), ki opravlja nalogo nadzora pikslov. (vidite ga v LCD-enoti, zadaj je črno oko).
Potrebne komponente
Strojna oprema:
Mikrokrmilnik ATmega32
Napajanje (5v)
Programer AVR-ISP
JHD_162ALCD (16x2 LCD)
Kondenzator 100uF.
Programska oprema:
Atmel studio 6.1
Progisp ali flash magija
Shema vezja in razlaga
Kot je prikazano na povezavi LCD-ja z vezjem ATmega32, lahko vidite, da je PORTA ATMEGA32 povezana z LCD-jem za podatkovna vrata. Tukaj ne pozabite onemogočiti komunikacije JTAG v PORTC-ju ATMEGA s spreminjanjem bajtov varovalk, če želite uporabljati PORTC kot običajna komunikacijska vrata. Na 16x2 LCD-ju je 16 zatičev, če je osvetlitev ozadja, če ni osvetlitve ozadja, bo 14 zatičev. Lahko napajate ali pustite zatiče zadnje luči. Sedaj v 14 zatiči obstaja 8 podatkovnih zatiči (7-14 ali D0-D7), 2 Mrežni zatiči (1 & 2 ali VSS in VDD ali gnd in +5), 3 rd pin za nadzor kontrasta (vee-kontrole kako debela mora biti znake prikazano), 3 krmilne nožice (RS & RW & E)
V zgornjem vezju za vmesnik 16x2 LCD z mikrokrmilnikom AVR lahko opazite, da sem vzel le dva kontrolna zatiča. To omogoča fleksibilnost boljšega razumevanja. Kontrastni bit in READ / WRITE se ne uporabljata pogosto, zato jih je mogoče kratko skleniti na tla. To LCD zaslon postavi v najvišji kontrast in način branja. Samo nadzorovati moramo ENABLE in RS pin, da ustrezno pošljemo znake in podatke.
Povezave med mikrokrmilnikom ATmega32 in LCD 16x2 so podane spodaj:
PIN1 ali VSS - ozemljitev
PIN2 ali VDD ali VCC - + 5v moči
PIN3 ali VEE - ozemljitev (daje največji kontrast najboljši za začetnike)
PIN4 ali RS (izbira registra) - PD6 mikrokrmilnika
PIN5 ali RW (branje / pisanje) - ozemljitev (LCD v načinu branja olajša komunikacijo za uporabnika)
PIN6 ali E (Omogoči) - PD5 mikrokrmilnika
PIN7 ali D0 - PA0 mikrokrmilnika
PIN8 ali D1 - PA1
PIN9 ali D2 - PA2
PIN10 ali D3 - PA3
PIN11 ali D4 - PA4
PIN12 ali D5 - PA5
PIN13 ali D6 - PA6
PIN14 ali D7 - PA7
V vezju lahko vidite, da smo uporabili 8-bitno komunikacijo (D0-D7), vendar to ni obvezno in lahko uporabimo tudi 4-bitno komunikacijo (D4-D7), vendar s 4-bitnim komunikacijskim programom postane nekoliko zapleten za začetnike, zato smo pravkar začeli 8-bitna komunikacija.
Iz zgolj opazovanja iz zgornje tabele torej na krmilnik priključimo 10 nožic LCD-ja, pri čemer je 8 nožic podatkovnih nožic in 2 nožici za nadzor.
Delo
Za začetek morate poznati funkcije 10 zatičev LCD 16x2 (8 podatkovnih zatičev + 2 nadzorni zatiči). 8 podatkovnih zatičev je namenjenih pošiljanju podatkov ali ukazov na LCD. V dveh kontrolnih zatičih:
1. Zatič RS (izbira registra) sporoča LCD-ju, ali mu pošiljamo podatke ali ukaz.
Na primer:
V zgornji tabeli ena za vrednost podatkovnih vrat (D7-D0) "0b0010 1000 ali 0x28" sporoča LCD-ju, da prikaže simbol "(". V tabeli dve enaka vrednost 0x28 pove LCD-ju, "ste LCD s 5 x 7 pikami in obnašajte se kot ena ", tako da lahko uporabnik za isto vrednost definira dve stvari, zdaj pa to situacijo nevtralizira z registracijskim izbirnim zatičem, če je zatič RS nastavljen nizko, potem LCD razume, da pošiljamo ukaz. Če nastavimo RS pin na visoko, potem LCD razume, da podatke pošiljamo, zato v obeh primerih LCD spoštuje vrednost podatkovnih vrat glede na RS pin vrednost.
2. E (Omogoči) zatič preprosto sporoča “LED za prikaz moči računalnika”, ta zatič je nastavljen na visoko, da LCD-prikazovalniku sporoča “za sprejem podatkovnih obrazcev podatkovnih vrat krmilnika”. Ko se ta zatič nizko in visoko zniža, LCD obdela prejete podatke in prikaže ustrezen rezultat. Torej je ta pin pred pošiljanjem podatkov nastavljen na visoko in po pošiljanju spuščen na tla.
Zdaj po priključitvi strojne opreme zaženite Atmel studio in začnite nov projekt za pisanje programa, odprite zaslon za programiranje in zaženite program za ožemanje. Program mora slediti, kot sledi.
Najprej povemo krmilniku, katera vrata uporabljamo za podatke in nadzor LCD-ja. Nato povejte krmilniku, kdaj naj pošlje podatke ali ukaz, tako da se igrate z zatiči RS in E.
Kratka razlaga konceptov, uporabljenih v programu:
1. E je nastavljeno visoko (LCD-jem sporoča, naj sprejema podatke), RS pa nizko (LCD-ukaz sporoča, da dajemo ukaz)
2. Dajanje vrednosti 0x01 v podatkovna vrata kot ukaz za čiščenje zaslona
3. E je nastavljeno visoko (LCD, ki sprejema podatke), RS pa visoko (LCD, ki sporoča, da podajamo podatke)
4. Zavzemanje niza znakov, ki pošljejo vsak znak v niz enega za drugim.
5. E je nastavljeno na nizko (na LCD-prikazovalniku povemo, da smo s pošiljanjem podatkov končali)
6. Po zadnjem ukazu LCD prekine komunikacijo in obdela podatke ter na zaslonu prikaže niz znakov.
V tem primeru bomo znake pošiljali enega za drugim. Znake na LCD-prikazovalniku dajejo kode ASCII (ameriška standardna koda za izmenjavo informacij).
Tabela ASCII kod je prikazana zgoraj. Tukaj, da LCD prikaže znak "@", moramo poslati šestnajstiško kodo "64". Če na LCD zaslon pošljemo '0x62', se prikaže simbol '>'. Tako bomo na LCD-prikazovalnik poslali ustrezne kode za prikaz imena.
Način komunikacije med LCD in ATmega32 AVR mikrokrmilnikom je najbolje razložiti v korakih po spodnji kodi C,