În acest articol, vă voi arăta cum să utilizați o bibliotecă destul de comună pentru a gestiona ecranul LCD de la baza controlerului HD44780 și a obține informații despre acesta. Biblioteca este alcătuită din două fișiere lcd_lib.h și lcd_lib.c pentru a fi utilizate cu un afișaj conectat pe o magistrală de date pe patru biți. Fișierul antet afișează setările conexiunii de afișare pentru controler, pe care le puteți modifica la discreția dvs., precum și variabilele și funcțiile.
Mai jos sunt funcțiile de bază ale controlului și afișării informațiilor pe ecranul LCD.
lcd_com - trimiterea unei comenzi pe ecranul LCD
exemplu:
lcd_com (0x01); // ștergeți afișajul
lcd_com (0x38); // interfață 8 biți 2 linii
lcd_dat - trimite un caracter la poziția curentă
exemplu:
lcd_dat ("U"); // extrageți caracterul "U"
lcd_dat (0xB0); // ieșirea simbolului "Y" (conform tabelului simbolurilor afișajului)
lcd_init - Inițializare LCD
Iată un exemplu de secvență comună pentru inițializarea ecranului LCD: 0x38, 0xOC, 0x06.
0x38 stabilește modul de afișare a 2 linii cu o matrice de 5 x 8 pixeli și funcționează cu o magistrală de date pe 8 biți;
0xOC pornește afișajul LCD-mozyulya, fără afișarea cursorilor;
0x06 stabilește modul de mișcare automată a cursorului de la stânga la dreapta după fiecare ieșire de caractere.
lcd_clr - Curățarea ecranului LCD
lcd_home - mută cursorul la început
lcd_string - ieșiți șirul lungimii specificate în poziția curentă
Exemplu: lcd_string ("TEST", 4); // tipăriți un șir TEST de 4 caractere
lcd_gotoxy - deplasează cursorul în poziția specificată
Exemplu: lcd_gotoxy (12, 1); // cursorul în a treisprezecea poziție a liniei a doua
lcd_definechar - scrie o imagine particularizată a caracterului în memoria de afișare
Pentru a afișa afișarea pe ecran propriul personaj trebuie să știți codul de caractere, înregistrați codul în memoria software-ului microcontroler (PROGMEM), apoi pune-l într-o celulă de memorie liberă LCD (CGRAM) și afișa pe ecran utilizând funcția lcd_dat ().
Pentru a crea un simbol este mai convenabil în format binar, de exemplu, vom crea un simbol dreptunghi, codul va fi după cum urmează:
lcd_shift_right - Mută imaginea la numărul specificat de caractere din dreapta
lcd_shift_Left - Mută imaginea la numărul de caractere specificat spre stânga
lcd_cursor_on - Activează cursorul subliniat
lcd_cursor_blink - activează cursorul intermitent
lcd_cursor_off - dezactivează cursorul
lcd_blank - dezactivează imaginea, dar nu se șterge
lcd_visible - include imaginea
lcd_cursor_left - Mută cursorul la numărul de caractere specificat la stânga
lcd_cursor_right - Mută cursorul la numărul specificat de caractere din dreapta
lcd_progress_bar - vă permite să afișați o scală dinamică, vom vorbi mai multe despre această funcție într-un exemplu practic.
lcd_num_to_str - permite afișarea unei variabile de până la 4 cifre
Exemplu: void lcd_num_to_str (ADC, 4); // Afișați variabila ADC pe 4 biți
Vom face proiectul "Voltmetru analogic" în care informația despre tensiunea măsurată va fi afișată pe ecran sub forma unei scări dinamice orizontale. Tensiunea măsurată se aplică la intrarea ADC0, maxim 5V. fără a folosi un divizor. Folosim microcontrolerul atmega8 pentru acest proiect, care este tactat de un oscilator intern de 8 MHz. Afișajul este conectat pe o magistrală pe 4 biți, în conformitate cu setările din fișierul lcd_lib.h. Când creați un proiect în 2 AVRSTUDIO copia fișierul bibliotecă în dosarul de proiect, în Arborele de proiect adăuga aceste fișiere (lcd_lib.c și lcd_lib.h).
Pentru producția la scară dinamică corespunde funcției lcd_progress_bar (uint8_t progres, maxprogress uint8_t, lungime uint8_t). în funcție de variabilele de stare ale acestei funcții, scala modifică nivelul său, progresul - nivelul la 0 la 255, maxprogress - nivelul maxim este limitat de un număr de la 0 la 255, lungime - scara de lungime de la 0 la 16 celule (în funcție de tipul de afișare). Deoarece tensiunea maximă la valoarea de intrare ADC este de 1024, împărțiți această valoare cu 4, și atribuiți-l la o variabilă „u“, iar variabila „U“, cu ajutorul funcției de ieșire void progres scala dinamic ().
Textul complet al programului pe care l-am postat mai jos: