Conectarea LCD la placa Arduino. Conectarea și lucrul cu display-ul WH1602 Lcd 1602 dimensiuni

Fiecare radioamator, după un anumit număr de proiecte simple de casă, ajunge la scopul de a construi ceva grandios folosind senzori și butoane. La urma urmei, este mult mai interesant să afișați datele pe un afișaj, mai degrabă decât pe un monitor de port. Dar atunci apare întrebarea: ce afișaj să alegi? Și, în general, cum să-l conectați, ce este necesar pentru a vă conecta? Răspunsurile la aceste întrebări vor fi discutate în acest articol.

LCD 1602

Dintre numeroasele opțiuni de afișare, aș dori să menționez în mod special afișajul LCD1602 bazat pe controlerul HD4478. Acest afișaj este disponibil în două culori: litere albe pe fond albastru, litere negre pe fond galben. Conectarea LCD 1602 la Arduino nu va cauza nicio problemă, deoarece există o bibliotecă încorporată și nu este nevoie să descărcați nimic suplimentar. Ecranele diferă nu numai prin preț, ci și prin dimensiune. Adesea, radioamatorii folosesc 16 x 2, adică 2 rânduri de 16 caractere. Dar există și 20 x 4, unde sunt 4 rânduri de 20 de caractere. Dimensiunile și culoarea nu joacă niciun rol în conectarea afișajului lcd 1602 la Arduno, acestea sunt conectate în același mod. Unghiul de vizualizare este de 35 de grade, timpul de răspuns al afișajului este de 250 ms. Poate funcționa la temperaturi de la -20 la 70 de grade Celsius. În timpul funcționării, folosește 4 mA pentru ecran și 120 mA pentru iluminarea de fundal.

Unde este folosit?

Acest afișaj este popular nu numai printre amatorii de radio, ci și printre marii producători. De exemplu, imprimantele și aparatele de cafea folosesc și LCD1602. Acest lucru se datorează prețului său scăzut, acest afișaj costă 200-300 de ruble pe site-urile chinezești. Merită să cumpărați acolo, deoarece în magazinele noastre markupurile pentru acest afișaj sunt foarte mari.

Conectarea la Arduino

Conectarea LCD 1602 la Arduino Nano și Uno nu este diferită. Puteți lucra cu afișajul în două moduri: 4 biți și 8. Când lucrați cu 8 biți, se folosesc atât biții de ordin inferior, cât și biți de ordin înalt, iar la 4 biți, doar cei de ordin inferioară. Nu are rost să lucrezi cu 8 biți, deoarece se vor adăuga încă 4 contacte pentru conectare, ceea ce nu este recomandabil, deoarece viteza nu va fi mai mare, limita pentru actualizările afișajului este de 10 ori pe secundă. În general, pentru a conecta lcd-ul 1602 la Arduino, se folosesc o mulțime de fire, ceea ce provoacă unele inconveniente, dar există scuturi speciale, dar mai multe despre asta mai târziu. Fotografia arată conexiunea afișajului la Arduino Uno:

Cod simplu:

#include // Adăugați biblioteca LiquidCrystal necesară lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Setați dimensiunea ecranului lcd.setCursor(0, 0); // Setați cursorul la începutul 1 linii lcd.print("Bună, lume!" // Imprimă textul lcd.setCursor(0, 1) // Setează cursorul la începutul liniei 2 lcd.print("site"); ; // Imprimă textul ) bucla nulă ()( )

Ce face codul? Primul pas este să conectați biblioteca pentru a lucra cu afișajul. După cum am menționat mai sus, această bibliotecă este deja inclusă în Arduino IDE și nu trebuie descărcată și instalată suplimentar. În continuare, se determină contactele care sunt conectate la pini: RS, E, DB4, DB5, DB6, respectiv DB7. Apoi dimensiunea ecranului este setată. Deoarece lucrăm cu o versiune cu 16 caractere și 2 rânduri, scriem următoarele valori. Plasăm cursorul la începutul primei rânduri și afișăm primul text Hello World. Apoi, plasați cursorul pe a doua linie și afișați numele site-ului. Asta e tot! S-a luat în considerare conectarea lcd 1602 la Arduino Uno.

Ce este I2C și de ce este necesar?

După cum am menționat mai sus, conectarea afișajului necesită o mulțime de contacte. De exemplu, atunci când lucrați cu mai mulți senzori și un afișaj LCD, 1602 pini pot să nu fie de ajuns. Adesea, radioamatorii folosesc versiunile Uno sau Nano, care nu au multe contacte. Apoi oamenii au venit cu scuturi speciale. De exemplu, I2C. Vă permite să conectați un afișaj cu doar 4 pini. Aceasta este de două ori mai mult. Modulul I2C este vândut atât separat, unde trebuie să îl lipiți singur, cât și deja lipit pe afișajul LCD 1602.

Conexiune folosind modulul I2C

Conectarea LCD 1602 la Arduino Nano cu I2C ocupă puțin spațiu, doar 4 pini: masă, putere și 2 ieșiri de date. Conectam alimentarea și împământarea la 5V și respectiv GND pe Arduino. Conectăm celelalte două contacte: SCL și SDA la orice pin analogic. În fotografie puteți vedea un exemplu de conectare a unui lcd 1602 la un arduino cu un modul I2C:

Cod program

Dacă pentru a lucra cu un afișaj fără modul a fost necesar să folosiți o singură bibliotecă, atunci pentru a lucra cu un modul aveți nevoie de două biblioteci. Unul dintre ele este deja inclus în Arduino IDE - Wire. O altă bibliotecă, LiquidCrystal I2C, trebuie descărcată separat și instalată. Pentru a instala biblioteca în Arduino, conținutul arhivei descărcate trebuie să fie încărcat în folderul rădăcină Biblioteci. Exemplu de cod de program folosind I2C:

#include #include LiquidCrystal_I2C lcd(0x27,16,2); // Setați afișajul void setup() ( lcd.init(); lcd.backlight(); // Activați iluminarea de fundal a afișajului lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Setați cursorul pe a doua linie și pe caracterul zero. lcd.setCursor(0, 1); // Afișează numărul de secunde de când a pornit Arduino lcd.print(millis()/1000); )

După cum puteți vedea, codul este aproape același.

Cum să adăugați propriul simbol?

Problema cu aceste afișaje este că nu există suport pentru alfabetul și simbolurile chirilice. De exemplu, trebuie să încărcați un simbol pe afișaj, astfel încât să îl reflecte. Pentru a face acest lucru, afișajul vă permite să creați până la 7 dintre propriile simboluri. Imaginați-vă masa:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Dacă 0 - nu există nimic acolo, dacă 1 - aceasta este o zonă pictată. În exemplul de mai sus puteți vedea crearea simbolului „zâmbet zâmbitor”. Folosind un exemplu de program în Arduino, ar arăta astfel:

#include #include // Adăugați biblioteca necesară // Mască de biți a simbolului zâmbet octet zâmbet = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal lcd (7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Setați dimensiunea ecranului lcd.createChar(1, smile); // Creați numărul caracterului 1 lcd.setCursor(0, 0); // Setează cursorul la începutul liniei 1 lcd.print("\1" // Imprimă un smiley (numărul caracterului 1) - "\1" ) void loop(); ) ( )

După cum puteți vedea, a fost creată o mască de bit la fel ca tabelul. Odată creat, acesta poate fi afișat ca variabilă pe afișaj. Amintiți-vă că puteți stoca doar 7 caractere în memorie. În principiu, acest lucru este suficient. De exemplu, dacă trebuie să afișați un simbol de grad.

Probleme în care afișajul poate să nu funcționeze

Există momente când afișajul nu funcționează. De exemplu, pornește, dar nu afișează caractere. Sau nu se aprinde deloc. Mai întâi, verificați dacă ați conectat corect pinii. Dacă ați folosit o conexiune LCD 1202 la Arduino fără I2C, este foarte ușor să vă încurcați în fire, ceea ce poate face ca afișajul să nu funcționeze corect. De asemenea, ar trebui să vă asigurați că contrastul afișajului este crescut, deoarece cu contrastul minim nici măcar nu este vizibil dacă LCD 1602 este pornit sau nu. Dacă acest lucru nu ajută, atunci poate că problema poate fi lipirea contactelor, aceasta este atunci când utilizați un modul I2C. Un alt motiv comun pentru care afișajul poate să nu funcționeze este setarea incorectă a adresei I2C. Faptul este că există mulți producători și pot pune o adresă diferită, trebuie să o corectați aici:

LiquidCrystal_I2C lcd(0x27,16,2);

În paranteze puteți vedea două valori, 0x27 și 16.2 (16.2 este dimensiunea afișajului, iar 0x27 este adresa I2C). În loc de aceste valori, puteți încerca să setați 0x37 sau 0x3F. Ei bine, un alt motiv este pur și simplu un LCD 1602 defect. Având în vedere că aproape totul pentru Arduino este fabricat în China, nu poți fi 100% sigur că produsul achiziționat nu este defect.

Avantaje și dezavantaje ale LCD-ului 1602

Să ne uităm la avantajele și dezavantajele afișajului LCD 1602.

  • Preț. Acest modul poate fi achiziționat la un preț foarte accesibil din magazinele chinezești. Prețul este de 200-300 de ruble. Uneori este chiar vândut împreună cu un modul I2C.
  • Ușor de conectat. Probabil că nimeni nu conectează LCD 1602 fără I2C în aceste zile. Și cu acest modul, conexiunea durează doar 4 contacte, nu vor exista „pânze” de fire.
  • Programare. Datorită bibliotecilor gata făcute, lucrul cu acest modul este ușor, toate funcțiile sunt deja scrise. Și dacă trebuie să adăugați propriul simbol, durează doar câteva minute.
  • În timpul utilizării sale de către mii de radioamatori, nu au fost identificate dezavantaje majore, doar că există cazuri de achiziții defecte, deoarece sunt utilizate în principal versiunile chinezești ale afișajelor.

Acest articol a analizat conectarea 1602 la Arduino și a oferit, de asemenea, exemple de programe pentru lucrul cu acest afișaj. Este într-adevăr unul dintre cele mai bune din categoria sa, nu degeaba mii de radioamatori îl aleg pentru proiectele lor!

Uneori ne confruntăm cu problema de a scoate diverse informații de la Arduino către lumea exterioară. Adesea, utilizarea unui port serial este imposibilă, incomodă și neprofitabilă.

Un afișaj de caractere este unul dintre cele mai simple și mai ieftine mijloace de afișare a informațiilor, deoarece are propriul microcontroler care stochează caracterele codificate. Acest sistem simplifică utilizarea acestor afișaje, dar în același timp limitează utilizarea lor la afișarea doar a informațiilor text, spre deosebire de afișajele grafice.

În exemplu, ne vom uita la afișajul Winstar wh1602l1, unul dintre cele mai comune afișaje de pe controlerul hd44780. În plus, puteți conecta LCD 2004 și altele similare.
Primele două cifre indică numărul de caractere pe linie, iar a doua numărul de rânduri, astfel încât afișajul selectat are 2 rânduri de 16 caractere.
Această metodă de conectare presupune ocuparea a cel puțin 6 porturi ale microcontrolerului Arduino. Dacă este necesar, puteți conecta afișajul de text 1602 prin interfața I2C (2 porturi).

Dintre elementele suplimentare, avem nevoie de un rezistor variabil pentru a controla contrastul. În caz contrar, totul este conectat conform diagramei, conform fișei de date și a ieșirilor Arduino selectate în program.

Pinii 15 și 16 de pe afișaj sunt responsabili pentru iluminarea din spate; aceasta poate fi oprită sau luminozitatea poate fi ajustată automat prin conectarea unui fotorezistor la Arduino ca senzor de luminozitate.

În exemplul nostru, vom citi datele de pe portul serial și le vom afișa pe afișaj:

#include // Conectați biblioteca pentru lucrul cu afișaje de caractere LiquidCrystal lcd(13, 11, 5, 4, 3, 2); // (RS, E, D4, D5, D6, D7) conectați ieșirile afișajului conform secvenței, R/W – GND, deoarece vom scrie date pe afișaj și nu vom citi void setup() ( lcd.begin( 16, 2); // Inițializare LCD 1602 // lcd.begin(20, 4); // Inițializare LCD 2004 Serial.begin(9600) void loop() ()) // Dacă datele provin de la port, atunci... ( delay(100); lcd.clear(); // Şterge complet ecranul în timp ce (Serial.available() > 0) // Dacă datele provin de la portul mai mare de 0, apoi ... ( lcd.write(Serial.read()); // Citiți valorile de pe portul serial și afișați-le pe afișaj ) ) )

Puteți complica codul și puteți scoate ceasul în timp real DS1307 pe Arduino pe LCD1602.

Acum să aruncăm o privire mai atentă la toate funcțiile din bibliotecă Cristal lichid:

Primul și cel mai important lucru este că folosind această bibliotecă nu puteți afișa litere rusești, chiar dacă afișajul are aceste caractere în memorie. Această problemă poate fi rezolvată fie prin alte biblioteci, fie prin scrierea valorilor folosind cod hexazecimal.

lcd.print();- cel mai simplu și cel mai des folosit, folosit pentru afișarea informațiilor.

lcd. clar(); - folosit pentru curățarea afișajului.

lcd.setCursor(X, y); - plasează cursorul într-un anumit loc.

X – schimbarea poziţiei în linie

Y – schimbare de linie

De exemplu, lcd.setCursor(0, 0); aceasta este celula din stânga sus.

lcd.home(); - plasează cursorul în poziția 0, 0

lcd.home(); = lcd.setCursor(0, 0);

lcd. scrollDisplayLeft(); - schimbă la stânga

lcd. scrollDisplayRight(); - schimba la dreapta

Lcd.createChar(Nume, matrice); - crearea propriului semn.

De exemplu, semnul gradului arată astfel:

Celc = (B00111, B00101, B00111, B00000, B00000, B00000, B00000, B00000);

De ceva timp, acest afișaj a rămas inactiv.


Și acum există dorința de a-l atașa la unul dintre proiecte Puteți, desigur, să încercați să găsiți o bibliotecă cu funcții gata făcute, dar în acest caz imaginea modului în care funcționează afișajul va fi incompletă, iar noi suntem. nu multumit de asta. Odată ce ați înțeles principiul de funcționare al unui afișaj LCD, nu va fi dificil să vă scrieți propria bibliotecă pentru afișajul dorit dacă acesta lipsește sau nu este satisfăcător într-un fel.

Deci, să începem.
Primul lucru de făcut este să găsiți pinout-ul, adică care contact este responsabil pentru ce, al doilea este să găsiți numele controlerului care controlează afișajul, pentru a face acest lucru, descărcați fișa de date pentru acest LCD și deschideți-o pe prima pagină.


Contactele sunt numărate de la stânga la dreapta, prima este marcată cu o săgeată roșie. Tensiunea de alimentare este de 5 volți, controlerul de control S6A0069 sau similar, de exemplu, ks0066U.

De ce căutam numele controlerului de control? Faptul este că în fișa de date de pe afișaj există întârzieri (diagrama de timp), sistemul de comandă este descris, dar nu există o inițializare banală și fără ea nu există nicăieri.
Apoi, deschideți a doua pagină și vedeți un tabel care spune care contact este responsabil pentru ce.


DB7...DB0– magistrală de date/adresă.

R/V- determină ce vom face, citim (R/W=1) sau scriem (R/W=0)

R/S– determină dacă vom trimite o comandă (RS=0) sau date (RS=1)

E– intrare strobe, prin schimbarea semnalului la această intrare permitem afișajului să citească/scrie date.

LED±– controlul luminii de fundal.

Trebuie să spun că pe afișajul primit, lumina de fundal nu se va aprinde doar pentru a face acest lucru, trebuie să lipiți o rezistență, marcată pe placă ca R7. Dar deocamdată nu avem nevoie.

Descărcați fișa de date pentru controlerul de control și găsiți instrucțiunile de inițializare. Pozele pot fi mărite făcând clic pe ele.



Se pare că există două astfel de instrucțiuni, pentru modurile pe 8 și 4 biți. Ce fel de moduri sunt acestea? Aceste moduri determină câte fire de date vor fi transmise: patru sau opt. Să ne uităm la transmisie 4 fire, în acest caz, afișajul va funcționa mai lent, dar vom salva 4 pini ai microcontrolerului, iar implementarea modului pe opt biți nu este mult diferită.

Schema de conectare a informațiilor este următoarea.


Contrastul poate fi reglat prin conectarea unui potențiometru între pinii de alimentare.

Aș dori să vă atrag atenția asupra faptului că în timpul inițializării R/SȘi R/V sunt întotdeauna egale cu zero, adică vom trimite echipe.

În timpul inițializării puteți configura:

  • N - numărul de linii afișate
  • C - pornește sau dezactivează cursorul
  • B - faceți cursorul să clipească
  • I/D - crește sau micșorează valoarea contorului adresei
  • SH - mutați fereastra de afișare
Să ne uităm la ultimele două puncte mai detaliat.
Imaginea de mai jos arată la ce adresă trebuie să scriem datele astfel încât acestea să fie afișate într-o anumită poziție, de exemplu, dacă dorim să afișăm un simbol pe prima poziţie a liniei a doua, atunci trebuie să scriem la adresa 0x40.


După aceasta, valoarea contorului se va schimba automat, fie crește, fie scădea, iar odată cu aceasta se va schimba și poziția cursorului.

Apropo, se numește memoria căreia îi scriem DDRAM, tot ce scriem în această memorie va fi afișat pe afișaj, mai există CGROM, care stochează tabelul generator de caractere.


Acest tabel nu poate fi schimbat, dar simboluri gata făcute pot fi luate din el. Un alt tip de memorie este CGRAM, este și un tabel generator de caractere, dar personajele din acest tabel le desenăm noi înșine.


Acum câteva cuvinte despre mișcarea ecranului, adevărul este că de obicei pe afișaj nu vedem toată DDRAM-ul, ci doar o anumită parte, așa cum se arată în imaginea de mai jos.


Putem scrie și în partea invizibilă, dar ceea ce scriem nu va fi vizibil până când nu mutăm fereastra ecranului în acest loc.

Am terminat cu teoria, să trecem la practică.
Imaginea comunicării cu un afișaj LCD în modul pe 4 biți este următoarea.


Datele sunt trimise în octeți, dar întrucât avem un mod pe 4 biți, pentru a trimite un octet trebuie să faceți 2 trimiteri, mai întâi bitul cel mai semnificativ. În imagine, primul pachet este desemnat D7 (tetradă înaltă), al doilea D3 (tetradă scăzută). Înainte de următoarea trimitere, trebuie să verificăm steag-ul de ocupat și dacă nu este setat, îl putem trimite din nou dacă este setat, așteptăm până când controlerul care controlează LCD-ul își termină activitatea;

Având o imagine generală a trimiterii, să ne dăm seama cum să implementăm operația de trimitere.


Pentru a-l trimite trebuie să utilizați o magistrală de 8 biți:
  • R/W setat la 0
  • emite codul de comandă/date către magistrală
  • intarziere 2us
  • stroboscopul inferior E

Operația de citire este implementată în mod similar:

  • asigurați-vă că controlerul este liber
  • R/W setat la 1
  • ridicați strobe E (în acest moment, LCD-ul va scoate date către magistrală)
  • intarziere 2us
  • citim ce a dat LCD-ul
  • stroboscopul inferior E
De unde a apărut întârzierea 2us?

Deasupra timpilor există un tabel care spune cu ce sunt egale întârzierile afișate pe grafic și, astfel, durata pulsului stroboscopic - tw ar trebui să fie egală cu 230nS sau 450nS în funcție de tensiunea de alimentare, am luat-o puțin cu un marginea. De ce am ținut cont doar de această întârziere? Pentru că valoarea întârzierilor rămase este foarte mică.

Pentru a trimite printr-o magistrală pe 4 biți:

  • asigurați-vă că controlerul este liber
  • setați RS la 0 (comandă) sau 1 (date), în funcție de ceea ce vom trimite
  • R/W setat la 0
  • ridicați stroboscopul E (setat la 1)
  • eliberăm cel mai înalt caiet pentru autobuz
  • intarziere 2us
  • stroboscopul inferior E
  • întârziere 1us
  • ridicați stroboscopul E (setat la 1)
  • emitem tetrada joasă autobuzului
  • intarziere 2us
  • stroboscopul inferior E

Pentru a citi pe un autobuz pe 4 biți:

  • asigurați-vă că controlerul este liber
  • port de date pentru intrare cu pull-up
  • setați RS la 0 (comandă) sau 1 (date), în funcție de ceea ce vom citi
  • R/W setat la 1
  • ridicați stroboscopul E (setat la 1)
  • intarziere 2us
  • citește caietul seniorului
  • stroboscopul inferior E
  • întârziere 1us
  • ridicați stroboscopul E (setat la 1)
  • intarziere 2us
  • citim caietul de jos
  • stroboscopul inferior E

Ridicarea stroboscopului și transmiterea comenzii/datelor către magistrală pot fi schimbate. Acum nu va fi dificil să inițializați afișajul. Pentru a simplifica inițializarea, vom înlocui citirea indicatorului de ocupat cu o întârziere și vom lua în considerare lucrul cu steag-ul mai târziu.
Trebuie remarcat faptul că în timpul inițializării în modul de 4 biți sunt utilizate instrucțiuni de 4 biți, iar după inițializare se utilizează un sistem de instrucțiuni de 8 biți, așa că pentru inițializare implementăm o funcție separată pentru trimiterea comenzilor void Write_Init_Command (date uint8_t).
//Cod de inițializare pentru Atmega16 #define F_CPU 8000000UL #define LCD_PORT PORTA #define LCD_DDR DDRA #define LCD_PIN PINA #define DATA_BUS 0XF0 #define RS 0 #define RW 1 #define E 2 #include #include void Write_Init_Command(uint8_t data) ( //picioare prin care comenzile/datele sunt transmise către ieșirea LCD_DDR |= DATA_BUS; // vom trimite comanda LCD_PORT &= ~(1)<Un cursor care clipește vesel indică faptul că inițializarea a avut succes. ÎN

Când mi-am asamblat detectorul de metale, am ajuns să am un afișaj LCD 1602, construit pe controlerul HD44780. Am decis să nu ratez ocazia și să-l conectez la analogul meu chinezesc al Arduino UNO.

Acesta este afișajul 1602 pe care îl vom conecta astăzi la Arduino.

Numerele „1602” indică faptul că afișajul este format din 2 rânduri, câte 16 caractere fiecare. Acesta este un ecran destul de comun, cu ajutorul căruia oamenii construiesc ceasuri, testere și alte gadget-uri. Ecranul vine cu iluminare de fundal verde și albastră.

Am lipit un pieptene de contacte pe afișaj, astfel încât să pot conecta cu ușurință firele.

Vom conecta afișajul 1602 la Arduino printr-o interfață paralelă pe 4 biți. Există, de asemenea, o opțiune pentru o interfață pe 8 biți, dar folosește mai multe fire și nu vom vedea niciun câștig în acest sens.

Pe lângă display și Arduino, vom avea nevoie de fire și de o rezistență variabilă de 10 kOhm. Rezistorul se va potrivi oricărei mărci, atâta timp cât are valoarea necesară.

Alimentarea ecranului este furnizată prin primul (VSS)Și al doilea (VDD) concluzii. La concluzii 15 (A)Și 16 (K)- iluminarea de fundal a afișajului este alimentată. Deoarece pentru alimentare și iluminare este folosită aceeași tensiune de +5V, le vom alimenta de la pinii Arduino "5V"Și "GND". Principalul lucru este să nu confundați polaritatea, altfel puteți arde electronica afișajului.

al 3-lea concluzie (V0) Conectam un rezistor variabil la picior, îl vom folosi pentru a controla contrastul afișajului. Rezistorul nu poate fi folosit, ci ieșirea "V0" conectează la GND. În acest caz, contrastul va fi maxim și nu va exista nicio posibilitate de ajustare lină a acestuia.

al 5-lea concluzie (RW) folosit pentru a citi sau a scrie pe ecran. Deoarece vom scrie doar pe afișaj, vom conecta acest pin la masă (GND).

Concluzii: al 4-lea (RS), al 6-lea (E), al 11-lea (D4), al 12-lea (D5), al 13-lea (D6), al 14-lea (D7) conectați-vă la pinii digitali Arduino. Nu este necesar să folosiți aceiași pini ca și al meu, vă puteți conecta la oricare digital, principalul lucru este să le setați corect în schiță.

Arduino-ul meu conectat, tot ce trebuie să fac este să îl conectez la computer prin USB și să încarc schița.

În semn vom folosi o schiță din setul standard.

În Arduino IDE selectăm "Fişier" -"Eșantioane" -"Cristal lichid" - "Salut Lume".

Să ne uităm la codul schiței.

În linie „LCD cu cristale lichide”, între paranteze, sunt pinii digitali care sunt utilizați pe Arduino. Pinurile sunt afișate în următoarea secvență: RS, E, DB4, DB5, DB6, DB7. Dacă ați folosit alți pini digitali la conectarea afișajului, introduceți-i în ordinea corectă între paranteze.

În linie "lcd.print ("bună ziua, lume!");" pe display este afișat un salut, implicit aceasta este inscripția "Salut Lume!", îl poți schimba cu oricare al tău, scriem în latină.

Încărcăm schița pe Arduino și iată rezultatul. În loc de „bună, lume!” Am intrat pe site-ul meu. Pe linia de mai jos, cronometrul numără invers timpul.

Afișaj de caractere LCD1602 cu lumină de fundal albastră - display cu cristale lichide (Liquid Crystal Display) al carui ecran este capabil sa afiseze simultan pana la 32 de caractere (16 coloane, 02 randuri). Conexiunea la se realizează printr-o interfață paralelă sincronă pe 8 biți. Exemple de lucru cu afișarea caracterelor sunt descrise în secțiune.

Caracteristici

  • Tipul informațiilor de ieșire: simbolic.
  • Limba în ROM-ul de afișare: latină, japoneză.
  • Posibilitatea de a încărca propriile simboluri: da.
  • Format informații de ieșire: 16×02 caractere;
  • Tip display: LCD.
  • Tehnologia de afișare: STN.
  • Unghi de vizualizare: 180°.
  • Tip iluminare de fundal: LED.
  • Culoare iluminare de fundal: albastru.
  • Culoarea caracterului: alb.
  • Controler: HD44780.
  • Interfață: sincronă, 8 biți, paralelă.
  • Tensiune de alimentare 5 V.
  • Temperatura de functionare: -20 ... +70 °C.
  • Temperatura de depozitare -30 ... +80 °C.
  • Dimensiuni: 80x36 mm.

Conexiune

Conectarea afișajului LCD1602 printr-o interfață paralelă este puțin mai complicată decât prin magistrala I2C și este necesar și un element suplimentar pentru a regla contrastul.

Magistrala de date de afișare constă din 8 linii (D0-D7), dar dacă conectați numai cele 4 linii superioare (D4-D7), așa cum se arată în figură, acest lucru nu reduce viteza afișajului. Pentru comoditate, am conectat pinii D4-D7 ai afișajului la pinii cu același nume D4-D7 . Puteți conecta pinii D0-D7, E și RS ai afișajului la orice pini, specificându-i în schiță atunci când declarați obiectul bibliotecă.

№: Afişa: Arduino: Scop:
16 K(LED-) GND Catod (minus) al luminii de fundal LED.
15 A(LED+) 5V Anod (plus) de iluminare de fundal LED.
14...7 D7...D0(DB7...DB0) Orice Bus de date format din 8 linii. În diagrama de mai sus se folosesc doar liniile senior 4, deoarece acest lucru nu afectează viteza afișajului.
6 E Orice Activare semnal.
5 RW GND Selectarea direcției (Citire / Scriere) de transfer de date: „1” - citire de pe afișaj / „0” - scriere pe afișaj. Pinul este conectat la GND deoarece Datele sunt scrise doar pe afișaj.
4 R.S. Orice Register Selectarea destinatarului informațiilor: „1” - registru de date / „0” - registru de instrucțiuni.
3 V0(VEE)
Setarea contrastului afișajului: 0 ... +5 V DC.
2 VDD(VCC) 5V Putere logică a afișajului: +5 VDC.
1 VSS(GND) GND Alimentare comună (împământare).

Nutriție

Tensiunea de alimentare logică a afișajului de 5 VDC este furnizată la pinii VDD (VCC) și VSS (GND) ai afișajului.

Tensiunea de alimentare cu iluminare de fundal de 5 VDC este furnizată la bornele A (Anod) și K (Catod) ale afișajului.

Un potențial pentru setarea contrastului de 0 ... +5 V DC este aplicat pinului V0 al afișajului.

Mai multe despre afișaj

Afișarea caracterelor se bazează pe un afișaj LCD STN (Super Twisted Nematic) controlat de un controler HD44780 și are o interfață paralelă sincronă pe 8 biți. Display-ul este echipat cu iluminare de fundal LED albastra si este capabil sa afiseze simultan pana la 32 de caractere (16 coloane, 02 randuri), de unde provine denumirea display-ului: LCD1602. Controlerul HD44780 are un ROM care stochează numere, caractere latine și unele caractere japoneze pentru a le afișa pe afișaj. Caractere lipsă, incl. și caracterele chirilice pot fi încărcate în memoria RAM a controlerului pentru a afișa inscripții în caractere rusești sau nestandard (de exemplu, „emoticons”).

Dacă vă conectați la pinii afișajului, puteți converti interfața paralelă sincronă de 8 biți într-o magistrală I2C (transformând afișajul de la un LCD1602 în