- Potreben material
- Shema vezja
- 128 * 64 grafični LCD
- Pretvorba slike v šestnajstiško kodo:
- Koda Arduino in delovna razlaga
V elektronskih projektih se uporablja veliko vrst LCD-jev. V številnih projektih smo že uporabljali LCD 16X2, uporabljali pa smo tudi TFT LCD z Arduinom. Na tej povezavi lahko najdete naš celoten projekt, povezan z LCD 16X2, vključno s povezovanjem z 8051, AVR, Arduino in mnogimi drugimi.
ST9720 Grafični LCD je popolnoma drugačna od navadnih LCD. Običajni LCD lahko tiska samo preprosto besedilo ali številke v določeni velikosti. Toda na grafičnih LCD-jih imamo 128 * 64, kar je enako 8192 pikam ali 8192/8 = 1024 slikovnih pik, zato lahko na tem GLCD poleg znakov prikažemo katero koli grafično sliko.
GLCD smo že povezali z 8051, danes pa bomo grafični LCD povezali z Arduinom, da na njem prikažemo besedilo in slike.
Potreben material
- Arduino UNO
- 128 * 64 grafični LCD ST9720
- Potenciometer-10k
- Priključne žice
- Breadboard
Shema vezja
128 * 64 grafični LCD
Ta grafični LCD ima majhno porabo energije in je primeren tudi za prenosne naprave z napajanjem iz akumulatorja. Ima širok razpon delovne napetosti od 2,2 do 5,5 v, podpira tako serijsko kot 8/4-bitno vzporedno komunikacijo, prihaja pa z IC 7272 LCD krmilnikom / gonilnikom. Način vmesniške komunikacije lahko preklapljate med vzporednim in serijskim s pomočjo PSB PIN 15. Ta grafični LCD ima funkcijo samodejnega vklopa funkcije Ponastavitev in ga lahko enostavno nadzoruje MCU, kot so 8051, AVR, ARM, Arduino in Raspberry Pi.
Podrobne informacije o grafičnem LCD-ju ST7290 128 * 64 si lahko ogledate s podatkovnim listom
Konfiguracija zatiča
Pin št. |
Pripnite ime |
Opis |
1. |
Gnd |
Ozemljitveni terminal |
2. |
Vcc |
Vhodna napajalna napetost (2,7 do 5,5 v) |
3. |
Vo |
LCD kontrast |
4. |
RS |
Register Select RS = 0: Register navodil RS = 1: Podatkovni register |
5. |
R / W |
Nadzor branja / pisanja |
6. |
E |
Omogoči |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Podatkovni zatiči (uporabljajo se v vzporednem 8/4-bitnem komunikacijskem načinu) |
15. |
PSB |
Izbira vmesnika: Nizka (0) za način serijske komunikacije Visoka (1) za 8/4-bitni način vzporednega vodila. |
16. |
NC |
Brez povezave |
17. |
RST |
Ponastavi PIN |
18. |
Vout |
Izhod za podvojitev napetosti LCD. GLAS ≦ 7V. |
19. |
BLA |
Pozitivna dobava osvetlitve ozadja |
20. |
BLK |
Negativna osvetlitev ozadja |
Aplikacije
- Industrijska naprava
- Vgrajeni sistemi
- Varnost
- Medicinsko
- Ročna oprema
Pretvorba slike v šestnajstiško kodo:
Za prikaz katere koli slike na grafičnem LCD-ju potrebujemo šestnajstiško kodo te slike, zato je nekaj korakov za pretvorbo slike v šestnajstiško kodo. Pred tem se prepričajte, da velikost slike ne sme presegati 128 * 64.
1. korak: Zmanjšajte velikost običajne slike na 128 * 64 ali manj, kar lahko storite s katero koli programsko opremo za urejanje slik, kot je MS paint.
Kot je prikazano na zgornji sliki, širino in višino slike nastavljamo na 128 * 64.
2. korak: Nato morate sliko shraniti v obliki "image_name .bmp ".
Izberite obliko, prikazano na zgornji sliki, in datoteko shranite za nadaljnji postopek.
3. korak: Ko jo shranite v format.bmp, morate sliko pretvoriti v šestnajstiško kodo za tiskanje. Za to uporabljam programsko opremo z imenom GIMP 2, ki pretvori datoteko Bmp v šestnajstiško kodo.
Kot je prikazano na zgornji sliki, smo v programski opremi GIMP 2 odprli datoteko formata.bmp.
Korak 4: Po prenosu programske opreme, odprite BMP format slikovne datoteke, ki jo želite natisniti in nato shranite kot to v " .xbm " (X bitmap) formatu. Ko jo shranite, odprite to datoteko s programom Notepad in dobili boste šestnajstiško kodo slike.
Kot je prikazano na spodnji sliki, izberite možnost Izvozi, če želite datoteko shraniti v obliki xbm :
Izberite obliko, prikazano na spodnji sliki, in izvozite slikovno datoteko.
Po izvozu datoteke boste dobili datoteko v obliki.xbm. Datoteko xbm odprite s programom Notepad in dobili boste HEX kodo, kot je prikazano na spodnji sliki.
Koda Arduino in delovna razlaga
Za povezavo grafičnega LCD-ja z Arduinom moramo najprej definirati knjižnico, ki se uporablja za grafični LCD. Arduino nima te knjižnice, to knjižnico morate prenesti in namestiti s te povezave. Nato lahko vključite knjižnico, kot je spodaj:
#include "U8glib.h"
Tu ' u8g (10) ' določa povezavo RS (Register Select) zatiča grafičnega LCD-ja z 10. zatičem Arduino UNO. RS-pin se uporablja kot 'chip chip' in 'Register Select', kadar se uporablja v zaporednem in vzporednem načinu. Torej uporabljamo serijski način in RS-pin, nastavljen na High (1) za omogočen čip in Low (0) za onemogočeni čip.
U8GLIB_ST7920_128X64_4X u8g (10);
Zdaj moramo za tiskanje slike v spodnjo kodo vstaviti šestnajstiško kodo slike. Natisnete lahko katero koli drugo sliko, vse kar morate storiti je, da prilepite šestnajstiško kodo slike.
const uint8_t rook_bitmap U8G_PROGMEM = {sem prilepite šestnajstiško kodo slike };
Preverite celotno kodo Arduino na koncu tega članka.
Spodnja funkcija se uporablja za tiskanje slike, ukaz za tiskanje je "u8g.drawXBMP (x, y, širina slike, višina slike)" . Kjer sta X in Y začetni položaj slike na LCD-ju, prav tako moramo napisati velikost slike, ki ne sme presegati 128 * 64, in v zadnjem argumentu smo poklicali funkcijo, v katero smo postavili šestnajstiško kodo slike.
nična slika (void) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
Izdelali smo dve funkciji, imenovani "risanje" in "naslednja", pri katerih je koda za tiskanje vsebine napisana z ukazom "u8g.drawStr (x, y," abcd ")". Tu sta x in y položaj na LCD-prikazovalniku, kjer bo vsebina natisnjena, ' abcd ' pa vsebina, ki jo je treba natisniti.
neveljavno žrebanje (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "DIGEST CIRCUIT"); } void next (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Povezovanje"); u8g.drawStr (0, 35, "Grafični LCD"); u8g.drawStr (0, 55, "z Arduino"); }
Funkcija clearLCD () je narejena za brisanje LCD-ja, tako da funkciji samo dodeli vrednost nič.
void clearLCD () {u8g.firstPage (); naredi {} while (u8g.nextPage ()); }
Nastavitev slikovnih pik, barv in intenzivnosti s spodnjo kodo
void setup (void) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // belo} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // največja intenzivnost} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // pixel on} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
Nična zanko še naprej tiskati besedilo in sliko, po določenem času. Najprej smo s funkcijo risanja natisnili “Circuit Digest” in po 2sec. zamude smo očistili zaslon s funkcijo clearLCD in nato z naslednjo funkcijo natisnili “ Interfacing Graphical LCD using Arduino ”. Nato smo sliko natisnili s funkcijo picture (), ki ostane na zaslonu 3 sekunde. To se bo nadaljevalo, dokler se ne vklopi napajanje.
void loop (void) {u8g.firstPage (); narediti {risanje (); } while (u8g.nextPage ()); zamuda (2000); clearLCD (); u8g.firstPage (); naredi {next (); } while (u8g.nextPage ()); zamuda (2000); clearLCD (); u8g.firstPage (); do {slika (); } while (u8g.nextPage ()); zamuda (3000); clearLCD (); zamuda (50); }
Po programiranju Arduina z uporabo dane kode povežite grafični LCD v skladu z vezjem z Arduinom in Arduino napajajte z adapterjem ali USB-jem. Vsebino in sliko boste natisnili na grafični LCD, kot je prikazano v spodnjem videoposnetku.
Preverite tudi povezavo grafičnega LCD-ja Nokia 5110 z Arduinom,