- Nødvendigt materiale
- Kredsløbsdiagram
- 128 * 64 Grafisk LCD
- Konvertering af billede til hex-kode:
- Arduino-kode og arbejdsforklaring
Der er mange typer LCD-skærme, der bruges i elektroniske projekter. Vi har allerede brugt 16X2 LCD i mange af vores projekter og har også brugt TFT LCD med Arduino. Du kan finde hele vores 16X2 LCD-relaterede projekt ved at følge dette link, herunder grænseflade til 8051, AVR, Arduino og mange flere.
Den ST9720 Grafisk LCD er helt forskellig fra den almindelige LCD-skærme. Almindelig LCD kan kun udskrive simpel tekst eller tal inden for en fast størrelse. Men i grafiske LCD-skærme har vi 128 * 64, hvilket svarer til 8192 prikker eller 8192/8 = 1024 pixels, så bortset fra tegn kan vi vise ethvert grafisk billede på denne GLCD.
Vi har allerede interfacet GLCD med 8051, i dag vil vi interface Grafisk LCD med Arduino for at vise tekst og billeder på den.
Nødvendigt materiale
- Arduino UNO
- 128 * 64 Grafisk LCD ST9720
- Potentiometer-10k
- Tilslutning af ledninger
- Brødbræt
Kredsløbsdiagram
128 * 64 Grafisk LCD
Denne grafiske LCD-skærm har lavt strømforbrug og er også velegnet til bærbar enhed med batteristrøm. Den har et bredt driftsspændingsområde fra 2,2 til 5,5 v og understøtter både seriel og 8/4-bit parallel kommunikation og leveres med ST7290 LCD-controller / driver-IC. Interface-kommunikationstilstand kan skiftes mellem parallel og seriel ved hjælp af PSB PIN 15. Denne grafiske LCD-skærm har en automatisk tændt-reset-funktion og kan let styres af MCU såsom 8051, AVR, ARM, Arduino og Raspberry Pi.
Du kan gå igennem med databladet for at få detaljerede oplysninger om ST7290 128 * 64 Grafisk LCD
Pin-konfiguration
Pin nr. |
Pin-navn |
Beskrivelse |
1 |
Gnd |
Jordterminal |
2 |
Vcc |
Indgangsforsyningsspænding (2,7 v til 5,5 v) |
3 |
Vo |
LCD kontrast |
4 |
RS |
Registrer Vælg RS = 0: Instruktionsregister RS = 1: Dataregister |
5 |
R / W |
Læse / skrive kontrol |
6 |
E |
Aktiver |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Data Pins (bruges i parallel 8 / 4bit kommunikationstilstand) |
15 |
PSB |
Interface valg: Lav (0) for seriel kommunikationstilstand Høj (1) til 8/4-bit parallel bustilstand. |
16 |
NC |
Ikke forbundet |
17 |
RST |
Nulstil pin |
18 |
Vout |
LCD-spændingsdobleroutput. VOUT ≦ 7V. |
19 |
BLA |
Positiv forsyning med baggrundslys |
20 |
BLK |
Baggrundslys Negativ forsyning |
Ansøgninger
- Industriel enhed
- Indlejrede systemer
- Sikkerhed
- Medicinsk
- Håndholdt udstyr
Konvertering af billede til hex-kode:
For at vise ethvert billede på grafisk LCD har vi brug for HEX-kode for det billede, så her er nogle få trin til at konvertere billede til HEX-kode. Før det skal du sørge for, at billedets størrelse ikke må overstige 128 * 64.
Trin 1: Reducer størrelsen på det normale billede til 128 * 64 eller mindre, hvilket du kan gøre ved hjælp af enhver billedredigeringssoftware som MS-maling.
Som vist på billedet ovenfor indstiller vi bredden og højden på billedet til 128 * 64.
Trin 2: Derefter skal du gemme billedet i "image_name .bmp " -format.
Vælg det format, der vises i ovenstående billede, og gem filen til yderligere proces.
Trin 3: Når du har gemt det i ".bmp" -format, skal du konvertere billedet til hex-kode til udskrivning. Til dette bruger jeg softwaren GIMP 2, der konverterer Bmp-fil til hex-kode.
Som vist på billedet ovenfor åbnede vi ".bmp" -formatfilen i GIMP 2-softwaren.
Trin 4: Efter download af softwaren skal du åbne billedfilen i BMP-format, som du vil udskrive, og gemme som den i “ .xbm ” (X BitMap) -format. Når du har gemt det, skal du åbne filen ved hjælp af Notesblok, og du får billedets Hex-kode.
Som vist på billedet nedenfor skal du vælge eksportindstillingen for at gemme filen i xbm- format:
Vælg det format, der vises på billedet nedenfor, og eksporter billedfilen.
Efter eksport af filen får du filen i “.xbm” -format. Åbn xbm- filen ved hjælp af Notepad, og du får HEX-koden som vist på billedet nedenfor.
Arduino-kode og arbejdsforklaring
For at interface grafisk LCD med Arduino skal vi først definere det bibliotek, der bruges til det grafiske LCD. Arduino har ikke dette bibliotek, du skal downloade og installere dette bibliotek fra dette link. Derefter kan du medtage biblioteket som nedenfor:
# inkluderer "U8glib.h"
Her definerer ' u8g (10) ' forbindelsen til RS-stift (Register Select) på grafisk LCD med den 10. pin i Arduino UNO. RS-pin bruges som 'chip select' og 'Register Select', når den bruges i henholdsvis seriel og parallel tilstand. Så vi bruger seriel tilstand og RS-pin indstillet til High (1) for chip-aktiveret og Low (0) for chip deaktiveret.
U8GLIB_ST7920_128X64_4X u8g (10);
Nu, til at udskrive billedet, vi har brug for at placere Hex kode af billedet i nedenstående kode. Du kan udskrive ethvert andet billede, alt hvad du bare skal gøre er at indsætte billedets hex-kode.
const uint8_t rook_bitmap U8G_PROGMEM = { Indsæt Hex-koden for billedet her };
Tjek den fulde Arduino-kode i slutningen af denne artikel.
Nedenstående funktion bruges til udskrivning af billede, den kommando, der bruges til udskrivning, er “u8g.drawXBMP (x, y, billedets bredde, billedets højde)” . Hvor, X og Y er billedets startposition på LCD, og vi skal også skrive størrelsen på billedet, der ikke skal overstige 128 * 64, og i sidste argument har vi kaldt funktion, hvor vi placerede HEX-billedkoden.
ugyldigt billede (ugyldigt) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Vi har lavet to funktioner kaldet "tegn" og "næste", hvor koden til udskrivning af indholdet er skrevet ved hjælp af kommandoen "u8g.drawStr (x, y," abcd ")". Her er x og y den position i LCD'et, hvor indholdet udskrives, og ' abcd ' er det indhold, der skal udskrives.
ugyldig tegning (ugyldig) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "CIRCUIT DIGEST"); } ugyldig næste (ugyldig) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Interfacing"); u8g.drawStr (0, 35, "Grafisk LCD"); u8g.drawStr (0, 55, "med Arduino"); }
clearLCD () -funktionen er lavet til at rydde LCD'et ved blot at give funktionen null værdi.
ugyldig clearLCD () {u8g.firstPage (); gør {} mens (u8g.nextPage ()); }
Opsætning af pixel, farve og intensitet ved hjælp af nedenstående kode
ugyldig opsætning (ugyldig) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // hvid} ellers hvis (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // max intensitet} ellers hvis (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // pixel på} andet hvis (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
Den tomrum løkke fortsætter med at udskrive teksten og billedet efter den givne forsinkelse. Først har vi udskrevet “Circuit Digest” ved hjælp af tegnefunktionen og efter 2sek. forsinket ryddede vi skærmen ved hjælp af clearLCD- funktion og udskrev derefter " Interfacing Graphical LCD using Arduino " ved hjælp af næste funktion. Derefter har vi udskrevet billedet ved hjælp af billedfunktionen () , som forbliver på skærmen i 3 sekunder. Dette fortsætter, indtil strømforsyningen er tændt.
ugyldig sløjfe (ugyldig) {u8g.firstPage (); gør {draw (); } mens (u8g.nextPage ()); forsinkelse (2000); clearLCD (); u8g.firstPage (); gør {næste (); } mens (u8g.nextPage ()); forsinkelse (2000); clearLCD (); u8g.firstPage (); gør {billede (); } mens (u8g.nextPage ()); forsinkelse (3000); clearLCD (); forsinkelse (50); }
Efter programmering af Arduino ved hjælp af den givne kode, skal du forbinde den grafiske LCD-skærm i henhold til kredsløbsdiagrammet med Arduino og levere Arduino ved hjælp af adapter eller USB. Du får indhold og billede udskrevet på det grafiske LCD-display som vist i videoen nedenfor.
Kontroller også grænsefladen Nokia 5110 Grafisk LCD med Arduino,