This post is also available in: English (İngilizce)
Önemli Notlar:
- Burada yapılan işlemler için daha önce yazmış olduğum “GLCD EKRAN KÜTÜPHANESİ – (SAP1024B – T6963C)” kullanılmaktadır. Öncelikle bu kütüphaneyi indirip MikroC ye yüklemeniz gerekir
- Bu kütüphanede bulunan “SAP1024_LCD_SIMGE_BAS Fonksiyonu” kullanılarak aşağıdaki işlemler yapılır. Fonksiyon detaylarına verilen bağlantıdan da bakabilirsiniz
- Kütüphane SAP1024B ve T6963C entegresi kullanan GLCD ler için yazıldığından diğer sürücü entegresi bulunan GLCD lerde çalışmayacaktır.
- Kullanılacak resimler mutlaka 1bit e çevirilmelidir.Çünkü kullandığımız GLCD ler 1 bitliktir yani siyah ya da beyaz renk alabilirler.
- Çevrim işlemi PhotoShop gibi programlarda sadece ayarlardan 1bite cevir denerek yapılabilir. Ancak tabi ki görüntü kalite kaybı olacaktır
- LCD Assistant programında mutlaka “horizontal” seçilmelidir. Çünkü yukarıda adı gecen sürücü entegreleri yatay tarama yapar.
- LCD Assistant bulunan resimleri kod haline çevirmek için kullanılır. Bu sebeple uygun boyutta istenilen resim simge olarak kullanılabilir
- Oluşturulan dizi adı ile “SAP1024_LCD_SIMGE_BAS” fonksiyonundaki dizi adı mutlaka aynı olmalıdır.
- Resimlerin boyutları önceden düzenlenmelidir. Eğer MikroC içinden düzeltme yaparsanız görüntü hatalı çıkacaktır.
GLCD SİMGE BASMA NEDİR?
- Grafik LCD ekranlar diğer karakter ekranlardan farklı olarak pixel pixel kontrol edilir ve bir çok grafik , şekil, resim hatta animasyon bile yapılabilir.
- Bu ekranlar genel olarak uygun boyutlarda dokunmatik paneller takılarak kullanılır. Bu şart olmamak ile beraber basit bir panel ile buton gibi ek araçlara ihtiyaç kalmaz.
- Bu anlatımda ister dokunmatik panel isterse buton kullanın bir şey fark etmez. Burada anlatılan internetten yada kendi hazırladığımız simgelerin öncelikle 1 bite çevirip sonrasında kod haline dönüştürüp “SAP1024_LCD_SIMGE_BAS Fonksiyonu” içerisinde nasıl kullanılacağını göreceğiz.
ÇALIŞMADA KULLANILACAK ÖRNEK SİMGE
- Aşağıda 85×85 pixel bmp türünde 1 bitlik bir örnek simge bulunmaktadır. Bunu ben internetten bularak çevirdim ve kullandım .
- Çalışmalarda bu simge kullanılacak. Bunu “Gerekli Dosyalar” kısmından yada farklı kaydet diyerek alıp kullanabilirsiniz.
1 BİT SİMGENİN KOD HALİNE GETİRİLMESİ
- İlk olarak simgemizi kullancağımız boyuta getirmemiz gerekmektedir. Ardından 1 bite çevireceğimizi söylemiştik.
- Ben 85×85 px boyutuna getirdim. Bu boyut ekranın boyutuna göre ve sizin isteğinize göre değişir.
- Şu halde resim hazır olduğuna göre LCD Assistant ile resimi kod haline cevirebiliriz
- Öncelikle “Horizontal” seçilir. Çünkü SAP1024B entegreli GLCD ler horizontal tarama yapar
- Little Endian seçilir. Çünkü PIC MCU lar little endian sistemi kullanır.(ÖR: Intel işlemciler ise tam tersine big endian kullanır)
- 8 byte seçilir. Pixeller 8 byte gruplar halinde dönüştürür.
- Sonra olarak “File” dan “Save Output” yapılarak resimin dizi halinde kodlarını alabiliriz.
- Cevirilen resmin kod hali aşağıda görülmektedir.
Resim Kodları const unsigned char dizi [] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0xDF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x00, 0x7F, 0x3F, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x3E, 0x3F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0x3C, 0x7F, 0xFC, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x18, 0x00, 0x01, 0x00, 0x1A, 0x00, 0x04, 0x00, 0x28, 0x00, 0x02, 0x00, 0x38, 0x00, 0x00, 0x00, 0x4A, 0x02, 0x00, 0x00, 0x5F, 0x02, 0x00, 0x00, 0x7B, 0x03, 0x03, 0x00, 0x97, 0x05, 0x09, 0x00, 0xAF, 0x0E, 0x0F, 0x00, 0xC1, 0x17, 0x16, 0x00, 0xD5, 0x25, 0x29, };
FONKSİYONUN UYGULANMASI
- SAP1024_LCD_SIMGE_BAS(pozisyon_x,pozisyon_y,veri,genislik_pixel,yukseklik_pixel,invert) – Fonksiyon parametreleri görüldüğü gibidir.
- Parametreleri kısaca anlamak açısından ne işe yaradıklarına bakalım
- -pozisyon_x: simgenin görüntülenmeye başlayacağı x pozisyonu
- -pozisyon_y: simgenin görüntülenmeye başlayacağı y pozisyonu
- -veri : simge verisini taşıyan dizi adı buraya yazılır
- -genislik_pixel : simgenin piksel olarak genisliği yazılır
- -yukseklik_pixel : simgenin piksek olarak yüksekliği yazılır
- -invert: simgeyi terse cevirir. Bu özellik butonlarda basıldığını belirtmek üzere üzerine gelindiğinde kullanılmak için idealdir.
- SAP1024_LCD_SIMGE_BAS(100,0,dizi,85,85,1) ve şeklinde kullanıyorum. Çünkü ;
- (100,0) konumunda oluşması için x=100 ve y=0 olarak verdim
- veri parametresine dizi adını yazdım yukarıda resimin kod karşılığında göreceğiniz gibi dizi adı yine dizi olarak verildi . Yani resimin kod karşılığındaki dizi adı ne ise burayada o yazılmalıdır.
- Hatırlatma
Resim Kodları const unsigned char dizi [] = {//dizi adıda dizi olduguna dikkat edilmelidir. Buraya yazılan isim ne ise fonksiyonda veri yerine o isim yazılmalıdır
- Resimi daha önceden 85×85 pixel yaptığımdan genişlik ve yükseklik parametrelerini 85 olarak girdim.
- İnvert parametresini 1 yaptım çünkü renklerin terse cevirilmesini istedim.
- SAP1024_LCD_SIMGE_BAS(0,0,dizi,85,85,0) – bu fonksiyonda tek fark invert sıfırdır. Yani renkler terse çevirilmemiştir.
- Tam Program Kodları
Program Kodları #include "dizi.c"//kod dizisi burada include edilirerek ana yazılıma dahil edilir. char SAPTRIS at trisd;//data portları char SAPDATA_giris at portd; char SAPDATA_cikis at latd; sbit SAP1024_RD at RC1_bit ; //GLCD RD UCU BAĞLANTI PİNİ sbit SAP1024_CE at rc2_bit ; //GLCD CE UCU BAĞLANTI PİNİ sbit SAP1024_CD at Rc3_bit ; //GLCD C/D UCU BAĞLANTI PİNİ sbit SAP1024_RST at Rc4_bit ; //GLCD RST UCU BAĞLANTI PİNİ sbit SAP1024_FS at Rc5_bit ; //GLCD FS UCU BAĞLANTI PİNİ sbit SAP1024_WR at RC0_bit ; //GLCD wr UCU BAĞLANTI PİNİ sbit SAP1024_RD_Direction at TRISC1_bit; //GLCD RD UCU BAĞLANTI PİNİ sbit SAP1024_CE_Direction at TRISC2_bit; //GLCD CE UCU BAĞLANTI PİNİ sbit SAP1024_CD_Direction at TRISC3_bit; //GLCD C/D UCU BAĞLANTI PİNİ sbit SAP1024_RST_Direction at TRISC4_bit; //GLCD RST UCU BAĞLANTI PİNİ sbit SAP1024_FS_Direction at TRISC5_bit; //GLCD FS UCU BAĞLANTI PİNİ sbit SAP1024_WR_Direction at TRISC0_bit; //GLCD FS UCU BAĞLANTI PİNİ void main { cmcon|=7; SAP1024_INIT(240,128,8); SAP1024_LCD_SIMGE_BAS(100,0,dizi,85,85,0); SAP1024_LCD_SIMGE_BAS(0,0,dizi,85,85,0); delay_ms(1000);//1 saniye bekledikten sonra simge renkleri terse çevirilir SAP1024_LCD_SIMGE_BAS(0,0,dizi,85,85,1); }
- Sonuç aşağıda görülebilir. Daha iyi anlaşılması için video dersi izleyiniz
- NOT: İnvertin kullanım amacı aslında tam anlamı ile buton yapmaktır. Yani ilk olarak invert değeri sıfır girilerek simge ekranda gösterilir. Eğer kullanıcı buna dokunursa invert değeri 1 yapılır. Böylece oluşan renk değişiminden kullanıcı o butona dokunulduğunu anlar. En basit olarak bu amaç ile kullanılabilir
“GLCD SİMGE BASMA” VİDEO DERS
Gerekli Dosyalar
This post is also available in: English (İngilizce)