Pre nadviazanie dobrej komunikácie medzi ľudským svetom a svetom strojov zohrávajú zobrazovacie jednotky dôležitú úlohu. A preto sú dôležitou súčasťou zabudovaných systémov. Zobrazovacie jednotky - veľké alebo malé, pracujú na rovnakom základnom princípe. Okrem zložitých zobrazovacích jednotiek, ako sú grafické displeje a 3D zobrazenia, musíte vedieť pracovať s jednoduchými displejmi, ako sú jednotky 16x1 a 16x2. Zobrazovacia jednotka 16x1 bude mať 16 znakov a je v jednom riadku. Displej LCD 16 x 2 bude mať celkovo 32 znakov 16 v 1. riadku a ďalších 16 v 2. riadkuriadok. Tu je potrebné pochopiť, že v každom znaku je 5x10 = 50 pixelov, takže na zobrazenie jedného znaku musí všetkých 50 pixelov spolupracovať. Toho sa ale nemusíme báť, pretože v zobrazovacej jednotke je ďalší ovládač (HD44780), ktorý ovláda pixely. (vidíte to na LCD jednotke, je to čierne oko vzadu).
Súčasti sú povinné
Hardvér:
Mikrokontrolér ATmega32
Napájanie (5v)
Programátor AVR-ISP
JHD_162ALCD (16x2 LCD)
100uF kondenzátor.
Softvér:
Štúdio Atmel 6.1
Progisp alebo flash mágia
Schéma zapojenia a vysvetlenie
Ako je zobrazené na LCD rozhraní s obvodom ATmega32, môžete vidieť, že PORTA z ATMEGA32 je pripojená k LCD údajového portu. Tu by ste si mali pamätať, že chcete deaktivovať komunikáciu JTAG v PORTC ATMEGA zmenou bajtov poistky, ak chcete použiť PORTC ako normálny komunikačný port. Na 16x2 LCD je 16 pinov, ak je podsvietenie, ak nie je podsvietenie, bude 14 pinov. Jeden môže napájať alebo nechať kolíky podsvietenia. Teraz v 14 kolíkoch je 8 dátových kolíkov (7-14 alebo D0-D7), 2 kolíky napájacieho zdroja (1 a 2 alebo VSS & VDD alebo gnd & + 5v), 3. kolík na kontrolu kontrastu (VEE - určuje, aké silné by mali byť znaky) zobrazené), 3 ovládacie kolíky (RS & RW & E)
Vo vyššie uvedenom obvode na prepojenie LCD 16x2 s mikrokontrolérom AVR môžete pozorovať, že som vzal iba dva ovládacie piny. To dáva flexibilitu lepšieho porozumenia. Kontrastný bit a READ / WRITE sa často nepoužívajú, aby ich bolo možné skratovať na zem. Toto nastavuje LCD do najvyššieho kontrastu a režimu čítania. Potrebujeme iba ovládať piny ENABLE a RS, aby sme mohli zodpovedajúcim spôsobom odosielať znaky a údaje.
Pripojenia medzi mikrokontrolérom ATmega32 a 16x2 LCD sú uvedené nižšie:
PIN1 alebo VSS - zem
PIN2 alebo VDD alebo VCC - napájanie + 5 V.
PIN3 alebo VEE - zem (poskytuje maximálny kontrast najlepšie pre začiatočníkov)
PIN4 alebo RS (výber registra) - PD6 mikrokontroléra
PIN5 alebo RW (čítanie / zápis) - zem (prepnutie LCD do režimu čítania uľahčuje komunikáciu pre používateľa)
PIN6 alebo E (povoliť) - PD5 mikrokontroléra
PIN7 alebo D0 - PA0 mikrokontroléra
PIN8 alebo D1 - PA1
PIN9 alebo D2 - PA2
PIN10 alebo D3 - PA3
PIN11 alebo D4 - PA4
PIN12 alebo D5 - PA5
PIN13 alebo D6 - PA6
PIN14 alebo D7 - PA7
V okruhu, ktorý vidíte, sme použili 8-bitovú komunikáciu (D0-D7), nie je to však povinné a môžeme použiť aj 4-bitovú komunikáciu (D4-D7), ale so 4-bitovým komunikačným programom sa stáva pre začiatočníkov trochu zložitý, takže sme šli s 8 bitová komunikácia.
Takže iba z pozorovania z vyššie uvedenej tabuľky pripájame 10 pinov LCD k radiču, v ktorých 8 pinov sú dátové piny a 2 piny pre riadenie.
Pracovne
Na začiatok musíte poznať funkcie 10 pinov 16x2 LCD (8 dátových pinov + 2 ovládacie piny). 8 dátových kolíkov slúži na odosielanie údajov alebo príkazov na displej LCD. V dvoch ovládacích kolíkoch:
1. Pin RS (výber registra) slúži na to, aby sa na LCD displeji zobrazilo, či doň odosielame údaje, alebo mu dávame príkaz.
Napríklad:
Vo vyššie uvedenej tabuľke jedna pre dátový port (D7-D0) hodnota „0b0010 1000 alebo 0x28“ informuje LCD, aby zobrazila symbol „(“. V tabuľke dva hovorí rovnaká hodnota 0x28 LCD „ste LCD s veľkosťou 5x7 bodov a správať sa ako jeden “, takže pre rovnakú hodnotu môže používateľ definovať dve veci, teraz je táto situácia neutralizovaná pinom pre výber registra, ak je pin RS nastavený na nízku hodnotu, potom LCD pochopí, že posielame príkaz. Ak nastavíme RS pin na vysokú potom Displej LCD chápe, že údaje odosielame. Takže v obidvoch prípadoch monitor LCD rešpektuje hodnotu dátového portu podľa hodnoty kolíka RS.
2. E (Enable) pin je jednoducho povedať „LED indikácie napájania PC“, tento pin je nastavený na vysoko, aby informoval LCD „prijímať dáta z dátového portu radiča“. Akonáhle tento pin klesne po vysokom, LCD spracuje prijaté dáta a zobrazí zodpovedajúci výsledok. Tento pin je teda nastavený na vysoký pred odoslaním údajov a po odoslaní údajov je stiahnutý na zem.
Teraz po pripojení hardvéru spustite Atmel studio a začnite nový projekt pre písanie programu, teraz otvorte obrazovku programovania a spustite program wring. Program musí nasledovať ako nasledujúca ukážka.
Najskôr ovládaču povieme, ktoré porty používame na dáta a kontrolu LCD. Potom hraním s pinmi RS a E povedzte ovládaču, kedy má príslušne odoslať údaje alebo príkaz.
Stručné vysvetlenie pojmov použitých v programe:
1. E je nastavené vysoko (hovorí LCD, aby prijímalo dáta) a RS je nastavené nízko (hovorí LCD, že dávame príkaz)
2. Dátový port 0x01 ako príkaz na vymazanie obrazovky
3. E je nastavené vysoko (hovorí LCD, aby prijímalo dáta) a RS je nastavené vysoko (hovorí LCD, že dávame údaje)
4. Vezmite reťazec znakov a každý znak v reťazci odošlite jeden po druhom.
5. E je nastavená na nízku hodnotu (informuje LCD, že sme odoslali údaje)
6. Po poslednom príkaze LCD ukončí komunikáciu a spracuje údaje a na obrazovke zobrazí reťazec znakov.
V tomto scenári ideme posielať znaky jeden za druhým. Znaky sa na displeji LCD zobrazujú pomocou kódov ASCII (americký štandard Code for Information Interchange).
Tabuľka kódov ASCII je uvedená vyššie. Tu, aby sa na displeji LCD zobrazil znak „@“, musíme poslať hexadecimálny kód „64“. Ak pošleme na displej znak „0x62“, zobrazí sa symbol „>“. Takto pošleme príslušné kódy na displej LCD, aby sa zobrazilo meno.
Spôsob komunikácie medzi LCD a mikrokontrolérom ATmega32 AVR je najlepšie vysvetliť krok za krokom v C kóde dole,