Zobrazovacie jednotky sú najdôležitejším výstupným zariadením vo vstavaných projektoch a elektronických výrobkoch. 16x2 LCD je jednou z najpoužívanejších zobrazovacích jednotiek. 16x2 LCD znamená, že existujú dva riadky, v ktorých je možné zobraziť 16 znakov na riadok, a každý znak zaberá 5x7 maticový priestor na LCD. V tomto výučbe sa chystáme pripojiť 16X2 LCD modul k mikrokontroléru 8051 (AT89S52). Prepojenie LCD displeja s mikrokontrolérom 8051 by mohlo pre nováčikov vyzerať dosť zložito, ale po pochopení tohto konceptu by vyzeralo veľmi jednoducho a ľahko. Aj keď to môže trvať dlho, pretože musíte pochopiť a pripojiť 16 pinov LCD k mikrokontroléru. Najprv teda pochopíme 16 pinov LCD modulu.
Môžeme ho rozdeliť do piatich kategórií, Power Piny, kontrastné piny, Control Piny, Data piny a Backlight piny.
Kategória |
Pin č. |
Názov špendlíka |
Funkcia |
Napájacie piny |
1 |
VSS |
Uzemňovací kolík, pripojený k zemi |
2 |
VDD alebo Vcc |
Napäťový kolík + 5V |
|
Kontrastný kolík |
3 |
V0 alebo VEE |
Nastavenie kontrastu, pripojené k Vcc cez variabilný rezistor. |
Kontrolné piny |
4 |
RS |
Registrovať Vyberte Pin, RS = 0 Príkazový režim, RS = 1 dátový režim |
5 |
RW |
Pin na čítanie a zápis, RW = 0 režim zápisu, RW = 1 režim čítania |
|
6 |
E |
Povoliť, musí sa povoliť vysoký až nízky impulz LCD |
|
Dátové kolíky |
7-14 |
D0-D7 |
Dátové kolíky, Ukladá údaje, ktoré sa majú zobraziť na LCD displeji alebo podľa pokynov k príkazu |
Kolíky podsvietenia |
15 |
LED + alebo A |
Na napájanie podsvietenia + 5V |
16 |
LED- alebo K |
Podsvietenie zeme |
Všetky piny sú zreteľne zrozumiteľné podľa názvu a funkcií, okrem ovládacích piny, takže sú vysvetlené nižšie:
RS: RS je pin pre výber registra. Ak posielam nejaké údaje, ktoré sa majú zobraziť na LCD, musíme ho nastaviť na 1. A nastavíme ho na 0, ak posielame nejaké príkazové inštrukcie, ako je vymazanie obrazovky (hexadecimálny kód 01).
RW: Toto je pin na čítanie a zápis, nastavíme ho na 0, ak sa chystáme zapisovať nejaké údaje na LCD. A nastavíme ho na 1, ak čítame z LCD modulu. Spravidla je nastavená na 0, pretože nemusíme čítať údaje z LCD. Niekedy je potrebné prečítať iba jednu inštrukciu „Získať stav LCD“.
E: Tento pin sa používa na povolenie modulu, keď je daný vysoký až nízky impulz. Mal by sa dať impulz 450 ns. Vďaka prechodu z HIGH na LOW je modul POVOLENÝ.
Na LCD existuje niekoľko prednastavených príkazových pokynov, ktoré sme použili v našom nižšie uvedenom programe na prípravu LCD (vo funkcii lcd_init ()). Niektoré dôležité pokyny pre príkaz sú uvedené nižšie:
Hex kód |
Príkaz do registra inštrukcií LCD |
0F |
LCD ZAPNUTÝ, kurzor ZAPNUTÝ |
01 |
Jasná obrazovka displeja |
02 |
Vrátiť sa domov |
04 |
Zmenšiť kurzor (posunúť kurzor doľava) |
06 |
Prírastok kurzora (posun kurzora doprava) |
05 |
Posunúť displej doprava |
07 |
Posunúť displej doľava |
0E |
Displej ZAPNUTÝ, kurzor bliká |
80 |
Nastaví kurzor na začiatok prvého riadku |
C0 |
Nastaví kurzor na začiatok druhého riadku |
38 |
2 riadky a matica 5 × 7 |
83 |
Poloha kurzora 1, pozícia 3 |
3C |
Aktivujte druhý riadok |
08 |
Displej VYPNUTÝ, kurzor VYPNUTÝ |
C1 |
Preskočte na druhý riadok, pozícia 1 |
OC |
Displej ZAPNUTÝ, kurzor VYPNUTÝ |
C1 |
Preskočte na druhý riadok, pozícia 1 |
C2 |
Prejdite na druhý riadok, pozícia 2 |
Schéma zapojenia a vysvetlenie
Schéma zapojenia rozhrania LCD s mikrokontrolérom 8051 je znázornená na obrázku vyššie. Ak máte základné znalosti o 8051, musíte vedieť o EA (PIN 31), XTAL1 a XTAL2, kolíku RST (PIN 9), Vcc a uzemňovacom kolíku mikrokontroléra 8051. Tieto piny som použil vo vyššie uvedenom obvode. Ak o tom nemáte žiadnu predstavu, odporúčam vám prečítať si tento článok Rozhranie LED s mikrokontrolérom 8051 pred prechodom na rozhranie LCD.
Okrem týchto vyššie uvedených pinov sme teda pripojili dátové piny (D0-D7) LCD k mikrokontroléru Port 2 (P2_0 - P2_7). A ovládacie piny RS, RW a E ku kolíku 12,13,14 (pin 2,3,4 na porte 3) mikrokontroléra.
PIN 2 (VDD) a PIN 15 (podsvietenie) LCD sú pripojené na napätie (5v) a PIN 1 (VSS) a PIN 16 (zem podsvietenia) sú pripojené k zemi.
Pin 3 (V0) je pripojený k napätiu (Vcc) cez variabilný rezistor 10k, aby sa nastavil kontrast LCD. Stredná časť variabilného odporu je pripojená k PIN 3 a ďalšie dve časti sú pripojené k zdroju napätia a uzemneniu.
Vysvetlenie kódu
Pokúsil som sa vysvetliť kód pomocou komentárov (v samotnom kóde).
Ako som už skôr vysvetlil o príkazovom režime a dátovom režime, môžete vidieť, že pri odosielaní príkazu (funkcia lcd_cmd) sme nastavili RS = 0, RW = 0 a impulz HIGH to LOW je daný E tak, že je 1, potom 0.Pri odosielaní dát (funkcia lcd_data) na LCD sme nastavili RS = 1, RW = 0 a impulz HIGH to LOW je daný E na 1 až 0. Bola vytvorená funkcia msdelay () na vytvorenie oneskorenia v milisekundách. a často sa v programe volá, nazýva sa tak, aby LCD modul mal dostatok času na vykonanie internej operácie a príkazov.
Bola vytvorená slučka while na vytlačenie reťazca, ktorý volá funkciu lcd_data zakaždým, keď sa má vytlačiť znak až do posledného znaku (nulový terminátor - „\ 0“).
Na prípravu LCD sme použili funkciu lcd_init () pomocou vopred nastavených pokynov príkazu (vysvetlené vyššie).