|
Afisaj LCD
Multe dispozitive cu microcontroler folosesc LCDuri inteligente pentru a afisa informatia vizuala. Urmatorul material se ocupa de conectarea unui afisaj LDC Hitachi la un microcontroler PIC. Afisajele LCD proiectate cu HD44780, modulul pentru LCD fabricat de Hitachi, nu sunt scumpe si sunt usor de folosit, si chiar posibil sa produca verificarea datelor afisate folosind cei 8x80 pixeli ai afisajului. Afisajele LCD Hitachi contin un set de caractere ASCII plus simboluri japoneze, grecesti si matematice.
A 16x2 line Hitachi HD44780 display
Fiecare dintre cei 640 de pixeli ai afisajului trebuie sa poata fi accesat individual si aceasta se poate realiza cu un numar de integrate SMD pentru control montate pe spatele afisajului. Aceasta ne salveaza de o cantitate enorma de fire si de un control adecvat astfel incat sunt necesare doar cateva linii pentru a accesa afisajul. Putem comunica cu afisajul prin intermediul unui bus de date pe 8 biti sau de 4 biti. Pentru un bus de 8 biti, afisajul are nevoie de o tensiune de alimentare de +5v si 11 linii I/O. Pentru un bus de 4 biti sunt necesare doar liniile de alimentare si 7 linii. Cand afisajul LCD nu este pornit liniile de date sunt TRI-STATE, ceea ce inseamna ca ele sunt in stare de inalta impedanta (ca si cum ar fi deconectate) si astfel nu interfereaza cu functionabilitatea microcontrolerului cand afisajul nu este adresat. LCDul necesita de altfel 3 linii de control de la microcontroler.
Linia Enable (E) permite accesul
la afisaj prin intermediul liniilor R/W si RS. Cand aceasta
linie este LOW, LCDul este dezactivat si ignora semnalele de
Linia Read/Write (R/W)
stabileste directia datelor dintre LCD si microcontroler. Cand
linia este LOW, datele sunt scrise in LCD. Cand este HIGH, datele sunt citite
de
Cu ajutorul liniei Register select (RS), LCD interpreteaza tipul datelor de pe liniile de date. Cand este LOW, o instructiune este scrisa in LCD. Cand este HIGH, un caracter este scris in LCD.
Starea logica a liniilor de control:
E
0 Accesul
1 Accesul
R/W
0 Scrie date in LCD
1 Citeste date din LCD
RS 0
Instructiuni
1 Caracter
Scrierea datelor in LCD se realizeaza in cativa pasi:
se seteaza bitul R/W LOW se seteaza bitul RS in 0 sau 1 logic (instructiune sau caracter) se trimit datele catre liniile de date (daca se executa o scriere) se seteaza linia E HIGH se citesc datele de la liniile de date (daca se executa o citire)
Citirea datelor de
Afisajul LCD mai contine 64 bytes CG RAM ( Character Generator RAM). Aceasta memorie este rezervata pentru caracterele definite de utilizator. Datele din CG RAM sunt reprezentate sub forma de caractere bitmap de 8 biti. Fiecare caracter ocupa maxim 8 bytes in CG RAM, astfel numarul total de caractere pe care un utilizator poate sa le defineasca este 8. Pentru a afisa caracterul bitmap pe LCD, trebuie setata adresa CG RAM la punctul de start (de obicei 0) si apoi sa fie scrise datele in afisaj. Definirea unui caracter ,special' este exemplificata in figura.
Inainte de a accesa DD RAM, dupa definirea unui caracter special, programul trebuie sa seteze adresa in DD RAM. Orice scriere si citire a datelor din memoria LCD este realizata de la ultima adresa care a fost setata, folosind instructiunea set-adress. Odata ce adresa DD RAM este setata, un caracter nou va fi afisat in locul potrivit pe ecran. Pana acum am discutat operatia de scriere si citire a memoriei unui LCD ca si cum ar fi o memorie obisnuita. Acest lucru nu este adevarat. Controlerul LCD are nevoie de 40 pana la 120 microsecunde (us) pentru scriere si citire. Alte operatii pot dura pana la 5 ms. In acest timp microcontrolerul nu poate accesa LCDul, astfel un program trebuie sa stie cand un LCD este ocupat. Putem rezolva aceasta in doua metode.
O metoda este verificarea bitului BUSY de pe linia de date D7. Aceasta nu este cea mai buna metoda pentru ca LCDul se poate bloca si programul va sta intr-o bucla infinita verificand bitul BUSY. O alta metoda este introducerea unei intarzieri in program. Intarzierea trebuie sa fie destul de lunga pentru ca LCDul sa termine operatia in desfasurare. Instructiunile pentru scriere si citire cu memoria LCDului sunt afisate mai sus. La inceput am mentionat ca avem nevoie de 11 linii I/O pentru a comunica cu un LCD. Oricum, putem comunica cu un LCD printr-un bus de 4 linii. Putem reduce numarul total de linii de comunicatie la 7. Schema pentru conectarea printr-un bus de 4 biti este in imaginea de mai jos. In acest exemplu folosim un afisaj LCD cu 2x16 caractere, denumit LM16x212 fabricat de producatorul japonez Sharp. Mesajul ,character' este scris pe prima linie urmat de doua caractere speciale ,~' si ,}'. Pe a doua linie este scris cuvantul ,mikroElektronika'.
Conectarea unui afisaj la un microcontroler
Fisierul LCD.inc contine un grup de macrouri pentru lucrul cu afisajele LCD.