- Material necesar
- Diagrama circuitului
- LCD grafic 128 * 64
- Conversia imaginii în cod hexagonal:
- Codul Arduino și explicația de lucru
Există multe tipuri de LCD-uri utilizate în proiecte electronice. Am folosit deja 16X2 LCD în multe dintre proiectele noastre și am folosit și TFT LCD cu Arduino. Puteți găsi întregul nostru proiect 16X2 LCD urmând acest link, inclusiv interfața cu 8051, AVR, Arduino și multe altele.
ST9720 LCD grafic este total diferit de LCD - uri obișnuite. Ecranul LCD obișnuit poate imprima doar text simplu sau numere într-o dimensiune fixă. Dar în LCD-urile grafice avem 128 * 64, care este egal cu 8192 puncte sau 8192/8 = 1024 pixeli, deci, în afară de caracter, putem afișa orice imagine grafică pe acest GLCD.
Am interfațat deja GLCD cu 8051, astăzi vom interfața LCD grafic cu Arduino pentru a afișa text și imagini pe el.
Material necesar
- Arduino UNO
- 128 * 64 LCD grafic ST9720
- Potențiometru-10k
- Conectarea firelor
- Breadboard
Diagrama circuitului
LCD grafic 128 * 64
Acest LCD grafic are un consum redus de energie și este potrivit și pentru dispozitivele portabile cu baterie. Are o gamă largă de tensiuni de funcționare de la 2.2v la 5.5v și acceptă atât comunicații seriale, cât și comunicare paralelă de 8/4 biți și vine cu controler LCD ST7290 / driver IC. Modul de comunicare interfață poate fi comutat între paralel și serial folosind PSB PIN 15. Acest ecran LCD grafic are o funcție de resetare automată și poate fi controlat cu ușurință de MCU, cum ar fi 8051, AVR, ARM, Arduino și Raspberry Pi.
Puteți parcurge foaia tehnică pentru informații detaliate despre LCD grafic ST7290 128 * 64
Configurare pin
Pin nr. |
Nume PIN |
Descriere |
1 |
Gnd |
Terminalul de masă |
2 |
Vcc |
Tensiunea de alimentare de intrare (2,7v - 5,5v) |
3 |
Vo |
Contrast LCD |
4 |
RS |
Selectați înregistrare RS = 0: Registrul de instrucțiuni RS = 1: Registrul de date |
5 |
R / W |
Control citire / scriere |
6 |
E |
Permite |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Pinii de date (utilizați în modul de comunicare paralel 8 / 4bit) |
15 |
PSB |
Selectarea interfeței: Scăzut (0) pentru modul de comunicare serial Înalt (1) pentru modul magistrală paralelă de 8/4 biți. |
16 |
NC |
Nu este conectat |
17 |
RST |
Resetați pinul |
18 |
Vout |
Ieșire dublare tensiune LCD. VOUT ≦ 7V. |
19 |
BLA |
Alimentare pozitivă cu iluminare din spate |
20 |
BLK |
Alimentare negativă a iluminării din spate |
Aplicații
- Dispozitiv industrial
- Sisteme integrate
- Securitate
- Medical
- Echipament de mână
Conversia imaginii în cod hexagonal:
Pentru a afișa orice imagine pe ecranul grafic LCD, avem nevoie de codul HEX al acelei imagini, deci iată câțiva pași pentru a converti imaginea în cod HEX. Înainte de aceasta, trebuie să vă asigurați că dimensiunea imaginii nu trebuie să depășească 128 * 64.
Pasul 1: micșorați dimensiunea imaginii normale la 128 * 64 sau mai puțin, lucru pe care îl puteți face folosind orice software de editare a imaginilor, cum ar fi MS paint.
După cum se arată în imaginea de mai sus, setăm lățimea și înălțimea imaginii la 128 * 64.
Pasul 2: Apoi, trebuie să salvați imaginea în format „image_name .bmp ”.
Selectați formatul afișat în imaginea de mai sus și salvați fișierul pentru un proces ulterior.
Pasul 3: După ce ați salvat-o în format „.bmp”, trebuie să convertiți imaginea în cod hexagonal pentru imprimare. Pentru aceasta, folosesc software-ul numit GIMP 2, care convertește fișierul Bmp în cod hex.
După cum se arată în imaginea de mai sus, am deschis fișierul în format „.bmp” în software-ul GIMP 2.
Pasul 4: După descărcarea software-ului, deschideți fișierul imagine în format BMP pe care doriți să îl imprimați și apoi salvați- l în format „ .xbm ” (X BitMap). După salvare, deschideți fișierul utilizând Notepad și veți obține codul hexagonal al imaginii.
După cum se arată în imaginea de mai jos, alegeți opțiunea Export pentru a salva fișierul în format xbm :
Selectați formatul afișat în imaginea de mai jos și exportați fișierul imagine.
După exportarea fișierului, veți obține fișierul în format „.xbm”. Deschideți fișierul xbm folosind Notepad și veți primi codul HEX așa cum se arată în imaginea de mai jos.
Codul Arduino și explicația de lucru
Pentru a interfața LCD-ul grafic cu Arduino, mai întâi trebuie să definim biblioteca utilizată pentru LCD-ul grafic. Arduino nu are această bibliotecă, trebuie să descărcați și să instalați această bibliotecă de pe acest link. Apoi puteți include biblioteca ca mai jos:
#include "U8glib.h"
Aici, „ u8g (10) ” definește conexiunea pinului RS (Register Select) al ecranului LCD grafic cu al 10-lea pin al Arduino UNO. Pinul RS folosit ca „chip select” și „Register Select” atunci când este utilizat în modul Serial și respectiv în paralel. Deci, folosim modul serial și pinul RS setat la High (1) pentru cip activat și Low (0) pentru cip dezactivat.
U8GLIB_ST7920_128X64_4X u8g (10);
Acum, pentru imprimarea imaginii, trebuie să plasăm codul hexagonal al imaginii în codul de mai jos. Puteți imprima orice altă imagine, trebuie doar să lipiți codul hexagonal al imaginii.
const uint8_t rook_bitmap U8G_PROGMEM = { Inserați aici codul hexagonal al imaginii };
Verificați codul Arduino complet la sfârșitul acestui articol.
Funcția de mai jos este utilizată pentru imprimarea imaginii, comanda utilizată pentru imprimare este „u8g.drawXBMP (x, y, lățimea imaginii, înălțimea imaginii)” . Unde, X și Y este poziția de pornire a imaginii pe LCD și trebuie să scriem și dimensiunea imaginii care nu trebuie să depășească 128 * 64 și în argumentul final am numit funcția în care am plasat codul HEX al imaginii.
imagine nulă (nulă) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Am realizat două funcții numite „draw” și „next”, în care codul pentru imprimarea conținutului este scris folosind comanda „u8g.drawStr (x, y,” abcd ”)”. Aici, x și y sunt poziția pe ecranul LCD în care conținutul va fi tipărit și „ abcd ” este conținutul care urmează să fie tipărit.
draw nul (nul) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "CIRCUIT DIGEST"); } void next (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, „Interfață”); u8g.drawStr (0, 35, „LCD grafic”); u8g.drawStr (0, 55, "cu Arduino"); }
Funcția clearLCD () este făcută pentru ștergerea ecranului LCD, oferind doar valoare nulă funcției.
void clearLCD () {u8g.firstPage (); face {} while (u8g.nextPage ()); }
Configurați pixelii, culoarea și intensitatea utilizând codul de mai jos
configurare nulă (nulă) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // alb} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // intensitate maximă} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // pixel on} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255.255.255); }}
Void buclă continuă să imprime textul și imaginea după întârzierea dată. În primul rând, am tipărit „Circuit Digest” folosind funcția draw și după 2 sec. de întârziere am șters ecranul folosind funcția clearLCD și apoi imprimăm „ Interfacing LCD grafic folosind Arduino ” folosind următoarea funcție. Apoi am imprimat imaginea folosind funcția picture () care va rămâne pe ecran timp de 3 secunde. Acest lucru va continua până când sursa de alimentare este pornită.
bucla void (void) {u8g.firstPage (); {draw (); } while (u8g.nextPage ()); întârziere (2000); clearLCD (); u8g.firstPage (); face {next (); } while (u8g.nextPage ()); întârziere (2000); clearLCD (); u8g.firstPage (); face {poza (); } while (u8g.nextPage ()); întârziere (3000); clearLCD (); întârziere (50); }
După programarea Arduino folosind codul dat, conectați LCD-ul grafic conform schemei de circuite cu Arduino și furnizați Arduino utilizând adaptor sau USB. Tu, vei primi conținut și imagine tipărite pe ecranul grafic LCD, așa cum se arată în videoclipul de mai jos.
De asemenea, verificați interfața LCD grafic Nokia 5110 cu Arduino,