- Nødvendig materiale
- Kretsdiagram
- 128 * 64 Grafisk LCD
- Konvertere bilde til heksekode:
- Arduino-kode og arbeidsforklaring
Det er mange typer LCD-skjermer som brukes i elektroniske prosjekter. Vi har allerede brukt 16X2 LCD i mange av våre prosjekter og har også brukt TFT LCD med Arduino. Du kan finne hele vårt 16X2 LCD-relaterte prosjekt ved å følge denne lenken, inkludert grensesnitt med 8051, AVR, Arduino og mange flere.
Den ST9720 Grafisk LCD er helt forskjellig fra det vanlige LCD-skjermer. Vanlig LCD kan bare skrive ut enkel tekst eller tall i en fast størrelse. Men i grafiske LCD-skjermbilder har vi 128 * 64, som tilsvarer 8192 prikker eller 8192/8 = 1024 piksler, så bortsett fra tegn, kan vi vise hvilket som helst grafisk bilde på denne GLCD-en.
Vi har allerede koblet GLCD til 8051, i dag vil vi grensesnitt Grafisk LCD med Arduino for å vise tekst og bilder på den.
Nødvendig materiale
- Arduino UNO
- 128 * 64 Grafisk LCD ST9720
- Potensiometer-10k
- Koble ledninger
- Brettbrett
Kretsdiagram
128 * 64 Grafisk LCD
Denne grafiske LCD-skjermen har lavt strømforbruk og er også egnet for bærbar batteristrøm. Den har bredt driftsspenningsområde 2,2 til 5,5 v og støtter både seriell og 8/4-bit parallellkommunikasjon og leveres med ST7290 LCD-kontroller / driver-IC. Grensesnittkommunikasjonsmodus kan byttes mellom parallell og seriell ved hjelp av PSB PIN 15. Denne grafiske LCD-skjermen har en automatisk tilbakestillingsfunksjon og kan enkelt styres av MCU som 8051, AVR, ARM, Arduino og Raspberry Pi.
Du kan gå gjennom databladet for detaljert informasjon om ST7290 128 * 64 Grafisk LCD
Pin-konfigurasjon
Pin nr. |
Pin-navn |
Beskrivelse |
1 |
Gnd |
Jordterminal |
2 |
Vcc |
Inngangsspenning (2,7 v til 5,5 v) |
3 |
Vo |
LCD kontrast |
4 |
RS |
Registrer Velg RS = 0: Instruksjonsregister RS = 1: Dataregister |
5 |
R / W |
Lese / skrive kontroll |
6 |
E |
Muliggjøre |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Data Pins (brukes i parallell 8 / 4bit kommunikasjonsmodus) |
15 |
PSB |
Grensesnittvalg: Lav (0) for seriell kommunikasjonsmodus Høy (1) for 8/4-bit parallell bussmodus. |
16 |
NC |
Ikke tilkoblet |
17 |
RST |
Tilbakestill pin |
18 |
Vout |
LCD-spenningsdoblerutgang. VOUT ≦ 7V. |
19 |
BLA |
Bakgrunnsbelysning |
20 |
BLK |
Motlys Negativ forsyning |
applikasjoner
- Industriell enhet
- Innebygde systemer
- Sikkerhet
- Medisinsk
- Håndholdt utstyr
Konvertere bilde til heksekode:
For å vise et hvilket som helst bilde på grafisk LCD, trenger vi HEX-kode for det bildet, så her er noen trinn for å konvertere bilde til HEX-kode. Før det må du sørge for at størrelsen på bildet ikke skal overstige 128 * 64.
Trinn 1: Reduser størrelsen på det normale bildet til 128 * 64 eller mindre, noe du kan gjøre med hvilken som helst bilderedigeringsprogramvare som MS-maling.
Som vist på bildet ovenfor, setter vi bredden og høyden på bildet til 128 * 64.
Trinn 2: Da må du lagre bildet i “image_name .bmp ” format.
Velg formatet som vises i bildet ovenfor, og lagre filen for videre prosess.
Trinn 3: Når du har lagret det i ".bmp" -format, må du konvertere bildet til heksekode for utskrift. For dette bruker jeg programvaren som heter GIMP 2, som konverterer Bmp-fil til heksekode.
Som vist på bildet ovenfor, åpnet vi ".bmp" -formatfilen i GIMP 2-programvaren.
Trinn 4: Etter at du har lastet ned programvaren, åpner du bildefilen i BMP-format som du vil skrive ut, og lagrer den som den i " .xbm " (X BitMap) -format. Når du har lagret den, åpner du filen ved hjelp av Notisblokk, og du får Hex-koden til bildet.
Som vist på bildet nedenfor, velg eksportalternativet for å lagre filen i xbm- format:
Velg formatet som vises på bildet nedenfor, og eksporter bildefilen.
Etter at du har eksportert filen, får du filen i “.xbm” -format. Åpne xbm- filen ved hjelp av Notisblokk, og du får HEX-koden som vist på bildet nedenfor.
Arduino-kode og arbeidsforklaring
For å grensesnitt grafisk LCD med Arduino, må vi først definere biblioteket som brukes til den grafiske LCD-skjermen. Arduino har ikke dette biblioteket, du må laste ned og installere dette biblioteket fra denne lenken. Deretter kan du inkludere biblioteket som nedenfor:
# inkluderer "U8glib.h"
Her definerer ' u8g (10) ' forbindelsen til RS (Register Select) -pinne på grafisk LCD med den 10. pinnen til Arduino UNO. RS-pinne brukes som 'chip select' og 'Register Select' når den brukes i henholdsvis seriell og parallell modus. Så vi bruker seriemodus og RS-pin satt til High (1) for chip-aktivert og Low (0) for chip-deaktivert.
U8GLIB_ST7920_128X64_4X u8g (10);
Nå, for å skrive ut bildet, må vi plassere Hex-koden til bildet i koden nedenfor. Du kan skrive ut hvilket som helst annet bilde alt du bare trenger å gjøre er å lime inn hex-koden til bildet.
const uint8_t rook_bitmap U8G_PROGMEM = { Lim inn Hex-koden til bildet her };
Sjekk hele Arduino-koden på slutten av denne artikkelen.
Funksjonen nedenfor brukes til utskrift av bilde, kommandoen som brukes til utskrift er “u8g.drawXBMP (x, y, bredde på bildet, høyde på bildet)” . Hvor, X og Y er startposisjonen til bildet på LCD, og vi må også skrive størrelsen på bildet som ikke skal overstige 128 * 64, og i siste argument har vi kalt funksjon der vi plasserte HEX-koden for bildet.
ugyldig bilde (ugyldig) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Vi har laget to funksjoner kalt “tegne” og “neste”, der koden for utskrift av innholdet skrives med kommandoen “u8g.drawStr (x, y,” abcd ”)”. Her er x og y posisjonen i LCD-skjermen der innholdet skal skrives ut og ' abcd ' er innholdet som skal skrives ut.
ugyldig tegning (ugyldig) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "CIRCUIT DIGEST"); } ugyldig neste (ugyldig) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Grensesnitt"); u8g.drawStr (0, 35, "Grafisk LCD"); u8g.drawStr (0, 55, "med Arduino"); }
clearLCD () -funksjonen er laget for å rydde LCD-skjermen ved å bare gi nullverdien til funksjonen.
ugyldig clearLCD () {u8g.firstPage (); gjør {} mens (u8g.nextPage ()); }
Sette opp piksel, farge og intensitet ved å bruke koden nedenfor
ugyldig oppsett (ugyldig) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // hvit} annet hvis (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // maks intensitet} annet hvis (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // piksel på} annet hvis (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
Det tomrommet sløyfe fortsetter å skrive ut tekst og bilde etter en gitt forsinkelse. Først har vi trykt “Circuit Digest” hjelp uavgjort funksjon og etter 2 sek. av forsinkelse ryddet vi skjermen ved hjelp av clearLCD- funksjonen og skrev deretter ut " Interfacing Graphical LCD using Arduino " ved hjelp av neste funksjon. Så har vi skrevet ut bildet ved hjelp av bilde () -funksjonen som vil forbli på skjermen i 3 sekunder. Dette vil fortsette til strømforsyningen er slått på.
ugyldig sløyfe (ugyldig) {u8g.firstPage (); gjør {draw (); } mens (u8g.nextPage ()); forsinkelse (2000); clearLCD (); u8g.firstPage (); gjør {neste (); } mens (u8g.nextPage ()); forsinkelse (2000); clearLCD (); u8g.firstPage (); gjør {bilde (); } mens (u8g.nextPage ()); forsinkelse (3000); clearLCD (); forsinkelse (50); }
Etter å ha programmert Arduino ved hjelp av den gitte koden, kobler du den grafiske LCD-skjermen i henhold til kretsskjemaet med Arduino og leverer Arduino ved hjelp av adapter eller USB. Du vil få innhold og bilde skrevet ut på den grafiske LCD-skjermen, som vist i videoen nedenfor.
Sjekk også grensesnittet Nokia 5110 Grafisk LCD med Arduino,