- Gerekli Malzeme
- Devre şeması
- 128 * 64 Grafik LCD
- Görüntüyü Hex Koduna Dönüştürme:
- Arduino Kodu ve Çalışma Açıklaması
Elektronik Projelerde kullanılan birçok LCD türü vardır. Projelerimizin çoğunda 16X2 LCD kullandık ve Arduino ile TFT LCD kullandık. Bu bağlantıyı takip ederek 16X2 LCD ile ilgili projemizin tamamını 8051, AVR, Arduino ve çok daha fazlası ile arayüz oluşturarak bulabilirsiniz.
ST9720 Grafik LCD Olağan LCD'ler tamamen farklıdır. Sıradan LCD, yalnızca basit metinleri veya sabit bir boyuttaki sayıları yazdırabilir. Ancak Grafik LCD'lerde, 8192 noktaya veya 8192/8 = 1024 piksele eşit olan 128 * 64'e sahibiz, bu nedenle karakter dışında herhangi bir Grafik Görüntüyü bu GLCD'de görüntüleyebiliriz.
GLCD'yi 8051 ile zaten arayüzledik, bugün üzerinde metin ve resimleri görüntülemek için Grafik LCD'yi Arduino ile arayüzleyeceğiz.
Gerekli Malzeme
- Arduino UNO
- 128 * 64 Grafik LCD ST9720
- Potansiyometre-10k
- Bağlantı telleri
- Breadboard
Devre şeması
128 * 64 Grafik LCD
Bu Grafik LCD, düşük güç tüketimine sahiptir ve ayrıca pille çalışan taşınabilir cihaz için uygundur. 2.2v ila 5.5v arasında geniş bir çalışma voltajı aralığına sahiptir ve hem seri hem de 8/4-bit paralel iletişimi destekler ve ST7290 LCD denetleyici / sürücü IC ile birlikte gelir. Arayüz iletişim modu, PSB PIN 15 kullanılarak paralel ve seri arasında değiştirilebilir. Bu grafik LCD, otomatik açma Sıfırlama işlevine sahiptir ve 8051, AVR, ARM, Arduino ve Raspberry Pi gibi MCU tarafından kolayca kontrol edilebilir.
ST7290 128 * 64 Grafik LCD ile ilgili detaylı bilgi için datasheet'i inceleyebilirsiniz.
PIN konfigürasyonu
Pin No. |
Pin Adı |
Açıklama |
1 |
Gnd |
Yer terminali |
2 |
Vcc |
Giriş besleme voltajı (2.7v - 5.5v) |
3 |
Vo |
LCD kontrast |
4 |
RS |
Kayıt Seç RS = 0: Talimat Kaydı RS = 1: Veri Kaydı |
5 |
R / W |
Okuma / Yazma kontrolü |
6 |
E |
etkinleştirme |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
Veri Pinleri (paralel 8 / 4bit iletişim modunda kullanılır) |
15 |
PSB |
Arayüz seçimi: Seri iletişim modu için Düşük (0) 8/4-bit paralel veri yolu modu için Yüksek (1). |
16 |
NC |
Bağlı değil |
17 |
RST |
PIN'i Sıfırla |
18 |
Vout |
LCD voltaj katlayıcı çıkışı. VOUT ≦ 7V. |
19 |
BLA |
Arka ışık pozitif kaynağı |
20 |
BLK |
Arka Işık Negatif besleme |
Başvurular
- Endüstriyel cihaz
- Gömülü sistemler
- Güvenlik
- Tıbbi
- Elde taşınan ekipman
Görüntüyü Hex Koduna Dönüştürme:
Grafik LCD'de herhangi bir görüntüyü göstermek için, o görüntünün HEX koduna ihtiyacımız var, bu yüzden Görüntüyü HEX koduna dönüştürmek için birkaç adım. Bundan önce, görüntünün boyutunun 128 * 64'ü geçmediğinden emin olmalısınız.
Adım-1: Normal görüntünün boyutunu 128 * 64 veya daha aza indirin, bunu MS paint gibi herhangi bir görüntü düzenleme yazılımı kullanarak yapabilirsiniz.
Yukarıdaki resimde gösterildiği gibi, görüntünün genişliğini ve yüksekliğini 128 * 64 olarak ayarlıyoruz.
Adım-2: Daha sonra resmi “resim_adı .bmp ” formatında kaydetmeniz gerekir.
Yukarıdaki resimde gösterilen formatı seçin ve sonraki işlem için dosyayı kaydedin.
Adım-3: “.bmp” formatına kaydettikten sonra , görüntüyü yazdırmak için onaltılık koda dönüştürmeniz gerekir. Bunun için Bmp dosyasını hex koda dönüştüren GIMP 2 adlı yazılımı kullanıyorum.
Yukarıdaki görselde görüldüğü gibi GIMP 2 yazılımında “.bmp” formatlı dosyayı açtık.
Adım 4: Programı indirdikten sonra, yazdırmak ve ardından istediğiniz BMP formatında resim dosyasını açmak olarak kaydetmek bunun “ .xbm ” (X BitMap) formatında. Kaydettikten sonra, bu dosyayı Not Defteri'ni kullanarak açın ve görüntünün Hex kodunu alacaksınız.
Aşağıdaki resimde gösterildiği gibi, dosyayı xbm formatında kaydetmek için Dışa Aktar seçeneğini seçin:
Aşağıdaki resimde gösterilen formatı seçin ve görüntü dosyasını dışa aktarın.
Dosyayı dışa aktardıktan sonra, dosyayı “.xbm” formatında alacaksınız. Xbm dosyasını Not Defteri'ni kullanarak açın ve aşağıdaki resimde gösterildiği gibi HEX kodunu alacaksınız.
Arduino Kodu ve Çalışma Açıklaması
Grafik LCD'yi Arduino ile arayüzlemek için önce Grafik LCD için kullanılan kitaplığı tanımlamamız gerekir. Arduino'nun bu kütüphanesi yok, bu kütüphaneyi bu linkten indirip kurmanız gerekiyor. Ardından kitaplığı aşağıdaki gibi ekleyebilirsiniz:
#include "U8glib.h"
Burada ' u8g (10) ', grafik LCD'nin RS (Register Select) pininin Arduino UNO'nun 10. piniyle bağlantısını tanımlar. Sırasıyla Seri ve Paralel modda kullanıldığında 'çip seçimi' ve 'Kayıt Seçimi' olarak kullanılan RS pini. Bu nedenle, çip etkinleştirilmiş için Yüksek (1) ve çip devre dışı için Düşük (0) olarak ayarlanmış seri modu ve RS pini kullanıyoruz.
U8GLIB_ST7920_128X64_4X u8g (10);
Şimdi, görüntüyü yazdırmak için görüntünün Hex kodunu aşağıdaki koda yerleştirmemiz gerekiyor. Başka bir resmi yazdırabilirsiniz, tek yapmanız gereken resmin onaltılık kodunu yapıştırmaktır.
const uint8_t rook_bitmap U8G_PROGMEM = { Görüntünün Hex kodunu buraya yapıştırın };
Bu Makalenin sonundaki Tam Arduino Kodunu kontrol edin.
Aşağıdaki işlev görüntüyü yazdırmak için kullanılır, yazdırmak için kullanılan komut “u8g.drawXBMP (x, y, görüntünün genişliği, görüntünün yüksekliği)” dir . Burada, X ve Y görüntünün LCD'deki başlangıç konumudur ve ayrıca 128 * 64'ü geçmemesi gereken görüntünün boyutunu da yazmamız gerekir ve son argümanda HEX görüntünün kodunu yerleştirdiğimiz işlevi çağırdık.
boş resim (void) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
İçeriği yazdırmak için kodun "u8g.drawStr (x, y," abcd ")" komutu kullanılarak yazıldığı "çizim" ve "sonraki" adında iki işlev yaptık . Burada x ve y, içeriğin yazdırılacağı LCD'deki konumdur ve ' abcd ' yazdırılacak içeriktir.
void draw (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "DEVRE DIGEST"); } sonraki void (void) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "Arayüz"); u8g.drawStr (0, 35, "Grafik LCD"); u8g.drawStr (0, 55, "Arduino ile"); }
clearLCD () işlevi, işleve sadece boş değer vererek LCD'yi temizlemek için yapılır.
void clearLCD () {u8g.firstPage (); do {} while (u8g.nextPage ()); }
Aşağıdaki kodu kullanarak piksel, renk ve yoğunluk ayarlama
geçersiz kurulum (void) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // beyaz} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // maksimum yoğunluk} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // pixel on} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
Hükümsüz döngü devam metin ve resim yazdırmak verilen gecikmeden sonra. İlk olarak, çizim işlevini kullanarak ve 2 saniye sonra "Devre Özeti" yazdırdık. Gecikme için ekranı clearLCD işlevini kullanarak temizledik ve ardından sonraki işlevi kullanarak " Arduino kullanarak Grafik LCD'yi Arayüz " yazdırdık. Daha sonra ekranda 3 saniye kalacak olan picture () fonksiyonunu kullanarak görüntüyü bastırdık. Bu, güç kaynağı açılana kadar devam edecektir.
geçersiz döngü (void) {u8g.firstPage (); yapmak {draw (); } while (u8g.nextPage ()); gecikme (2000); clearLCD (); u8g.firstPage (); sonraki(); } while (u8g.nextPage ()); gecikme (2000); clearLCD (); u8g.firstPage (); yap {resim (); } while (u8g.nextPage ()); gecikme (3000); clearLCD (); gecikme (50); }
Arduino'yu verilen kodu kullanarak programladıktan sonra, Grafik LCD'yi Arduino ile devre şemasına göre bağlayın ve Arduino'yu Adaptör veya USB kullanarak sağlayın. Aşağıda verilen videoda gösterildiği gibi Grafik LCD'de yazdırılan içerik ve görüntü alacaksınız.
Ayrıca Nokia 5110 Grafik LCD ile Arduino arasındaki arabirimi kontrol edin,