- 16x2 Dot Matrix LCD Controller IC HD44780:
- Afișarea unui caracter personalizat pe ecranul LCD 16x2:
- Programare și explicație de lucru:
- Conexiuni de circuit și testare:
În tutorialul nostru anterior, am învățat cum să interfațăm un ecran LCD 16 * 2 cu microcontroler PIC. Vă recomandăm să îl parcurgeți înainte de a merge mai departe, dacă sunteți începător în microcontroler PIC. Anterior, am învățat, de asemenea, elementele de bază ale PIC folosind programul LED intermitent și temporizatoarele din microcontrolerul PIC. Puteți verifica aici toate tutorialele despre învățarea microcontrolerelor PIC utilizând compilatorul MPLABX și XC8.
În acest tutorial, permiteți-ne să îl facem mai interesant, creându-ne propriile caractere personalizate și afișându-le pe ecranul nostru LCD utilizând microcontrolerul PIC16F877A PIC. De asemenea, există unele caractere personalizate predefinite, utilizate în cea mai mare parte, date de IC-ul HD44780A în sine, vom vedea și cum le putem folosi. După cum s-a explicat în tutorialul nostru anterior, ecranul nostru LCD are încorporat un controler Hitachi HD44780 care ne ajută să afișăm caractere. Fiecare caracter afișat este deja predefinit în ROM-ul HD44780 IC. Vom afla despre controlerul LCD IC HD44780, înainte de a afișa caracterul pe LCD.
16x2 Dot Matrix LCD Controller IC HD44780:
Pentru a afișa un caracter personalizat, trebuie să spunem cumva IC-ului cum va arăta caracterul personalizat. Pentru a face acest lucru, ar trebui să știm despre cele trei tipuri de amintiri prezente în IC-ul controlerului HD44780 LCD:
ROM Generator de caractere (CGROM): Este memoria de numai citire care, așa cum am spus mai devreme, conține toate tiparele caracterelor predefinite în interiorul acesteia. Această ROM va varia de la fiecare tip de IC de interfață, iar unele ar putea avea un caracter personalizat predefinit cu ele.
Display Data RAM (DDRAM): Aceasta este o memorie cu acces aleatoriu. De fiecare dată când afișăm un caracter, modelul său va fi preluat din CGROM și transferat în DDRAM și apoi va fi plasat pe ecran. Pentru a o simplifica, DDRAM va avea tiparele tuturor caracterelor care sunt afișate în prezent pe ecranul LCD. Astfel, pentru fiecare ciclu IC nu trebuie să preia date de la CGROM și ajută la obținerea unei frecvențe scurte de actualizare
Generator de caractere RAM (CGRAM): Aceasta este, de asemenea, o memorie cu acces aleatoriu, astfel încât să putem scrie și citi date din ea. După cum sugerează și numele, această memorie va fi cea care poate fi utilizată pentru a genera caracterul personalizat. Trebuie să formăm un model pentru personaj și să-l scriem în CGRAM, acest model poate fi citit și afișat pe ecran atunci când este necesar.
Acum, din moment ce avem o înțelegere de bază a tipurilor de memorie prezente în IC-ul interfeței HD44780. Să aruncăm o privire în foaia sa tehnică pentru a înțelege ceva mai mult.
După cum sugerează fișa tehnică, IC-ul HD44780 a furnizat 8 locații pentru a stoca tiparele noastre personalizate în CGRAM, de asemenea, în dreapta putem vedea că există câteva caractere predefinite care pot fi afișate și pe ecranul nostru LCD. Să vedem cum o putem face.
Afișarea unui caracter personalizat pe ecranul LCD 16x2:
Pentru a afișa un caracter personalizat trebuie mai întâi să generăm un model pentru acesta și apoi să-l salvăm în CGRAM. Deoarece avem deja funcțiile bibliotecii la noi, ar trebui să fie ușor să facem acest lucru cu câteva comenzi simple. Aici este Biblioteca pentru funcțiile LCD, dar aici am copiat toate funcțiile Bibliotecii în programul în sine, deci nu este nevoie să includeți acest fișier antet în programul nostru. Verificați, de asemenea, acest articol pentru funcționarea LCD-ului de bază și pinouturile acestuia.
Primul pas este de a genera un model sau caracterul personalizat. După cum știm, fiecare personaj este o combinație de 5 * 8 puncte. Trebuie să selectăm care punct (pixel) ar trebui să meargă în sus și care ar trebui să rămână scăzut. Pur și simplu desenați o casetă ca mai jos și umbrați regiunile în funcție de personajul dvs. Personajul meu de aici este un om băț (sper să arate ca unul). Odată umbrit, scrieți simplu valoarea binară echivalentă a fiecărui octet așa cum se arată mai jos.
Pur și simplu puneți un „1” pe regiunea umbrită și un „0” pe regiunea ne-umbrită pentru fiecare octet și acesta este modelul nostru personalizat gata. În mod similar, am creat 8 coduri de modele personalizate pentru cele 8 spații de memorie care îi prezintă CGROM. Acestea sunt listate în tabelul de mai jos.
S.NO: |
Personaj personalizat |
Codul modelului |
1 |
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
|
2 |
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
|
3 |
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
|
4 |
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
5 |
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
|
6 |
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
|
7 |
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
|
8 |
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Notă: Nu este obligatoriu să încărcați toate cele 8 spații prevăzute în CGRAM.
Programare și explicație de lucru:
Acum, codurile noastre de model sunt gata, trebuie doar să le încărcăm pe CGRAM de pe LCD și să le afișăm folosind microcontrolerul PIC. Pentru a le încărca în CGRAM putem forma o matrice de elemente 5 * 8 și putem încărca fiecare octet folosind o buclă „ for ”. Matricea de cod de model este prezentată mai jos:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Cod pentru spațiu de memorie CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b10001,0b01110,0b00000, Spațiu de memorie CGRAM 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Cod pentru spațiu de memorie CGRAM 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00AM, // spațiu 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Cod pentru spațiu de memorie CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00000, // Cod pentru memorie CGRAM spațiu 6 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Cod pentru spațiul de memorie CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11111 // Cod pentru spațiul de memorie CGRAM 8};
Fiecare spațiu de memorie este încărcat cu modelul său de caractere respectat. Pentru a încărca acest model în HD44780 IC, fișa tehnică a HD44780 trebuie să fie menționată, dar sunt doar linii de comandă care pot fi utilizate pentru a seta adresa CGRAM
// *** Încărcați caracterele personalizate în CGROM *** ////// Lcd_Cmd (0x04); // Setați adresa CGRAM Lcd_Cmd (0x00); //.. setați adresa CGRAM pentru (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Revenire la Acasă Lcd_Cmd (2); //.. reveniți la Acasă // *** Se încarcă caracterele personalizate complet *** //////
Aici, în interiorul buclei „ for” fiecare valoare binară este încărcată în CGROM. Odată ce modelul este încărcat, caracterele personalizate pot fi afișate prin simpla apelare a locației modelului utilizând funcția nulă Lcd_Print_Char (date char) , așa cum se arată mai jos.
Lcd_Print_Char (0); // Afișare caracter personalizat 0 Lcd_Print_Char (1); // Afișați caracterul personalizat 1 Lcd_Print_Char (2); // Afișați caracterul personalizat 2 Lcd_Print_Char (3); // Afișați caracterul personalizat 3 Lcd_Print_Char (4); // Afișare caracter personalizat 4 Lcd_Print_Char (5); // Afișați caracterul personalizat 5 Lcd_Print_Char (6); // Afișați caracterul personalizat 6 Lcd_Print_Char (7); // Afișați caracterul personalizat 7
Imprimați caracterul special predefinit:
IC-ul HD44780 are câteva caractere speciale predefinite stocate în DDROM. Aceste caractere pot fi imprimate direct pe ecran, referindu-se la valoarea sa binară din foaia de date.
De exemplu: valoarea binară a caracterului „ALPHA” este 0b11100000. Cum se obține acest lucru poate fi înțeles din figura de mai jos, la fel puteți obține valoare pentru orice caracter special care este predefinit în IC.
Odată ce se cunoaște valoarea binară, caracterul corespunzător poate fi imprimat pe ecran utilizând pur și simplu funcția nulă Lcd_Print_Char (date char) așa cum se arată mai jos, Lcd_Print_Char (0b11100000); // valoarea binară a alfa din fișa tehnică
Codul complet al acestui proiect este prezentată mai jos în secțiunea Cod, de asemenea, verifica detaliile video explicație la sfârșitul acestui tutorial.
Conexiuni de circuit și testare:
Acest proiect nu are nicio cerință hardware suplimentară, pur și simplu am folosit aceleași conexiuni din tutorialul anterior de interfață LCD și am folosit aceeași placă pe care am creat-o în Tutorialul intermitent cu LED-uri. Ca întotdeauna, să simulăm programul folosind Proteus pentru a ne verifica rezultatele.
Odată ce avem simulare rulează așa cum era de așteptat, să ardem direct codul în setarea noastră hardware. Rezultatul programului ar trebui să fie ceva de genul acesta:
Așa că așa puteți afișa orice caracter personalizat pe ecranul LCD de 16x2 folosind microcontrolerul PIC cu compilator MPLABX și XC8. De asemenea, verificați aici seria noastră completă de învățare a microcontrolerelor PIC.