Hazırlayan: Avni ÇiFTÇiLER
Animasyon: Devreye gerilim uygulandığı anda ekrana ilk Türkiye haritası gelmektedir. Daha sonra Türk Bayrağı ve bir sonraki adımda ise Mustafa Kemal Atatürk’ün resmi gelmektedir. Resimler geldikten sonra dünya dönmeye başlayacaktır.
Devrede kullanılan Elemanlar
1 Adet KS0107 chip’li Grafik Lcd
1 Adet AT89C51RD2 (PLCC Kılıf)
1 Adet 12 Mhz Kristal
2 Adet 22pF Kondansatör
1 Adet 10uF/25v Kondansatör
1 Adet 8.2K Direnç
Devre Şeması
Devrenin çalışması: Grafik lcd’lerin en önemli özelliği nokta tabanlı olarak çalışmasıdır. Yani metin lcd’lerde olduğu gibi hem yazı yazdırılabilir hem de şekil çizdirilebiliriz. Devrede P2 portu data çıkışı olarak ayarlanmıştır.P1_0 grafik lcd’nin CS1 ucuna, P1_1 portu ise grafik lcd’nin CS2 ucuna bağlanmıştır. Grafik Lcd yapı olarak sağ ve sol olmak üzere 2 kısma ayrılmıştır.
CS1=0,CS2=1 durumunda GLCD’nin sol kısmı, tam tersi durumda ise sağ tarafı aktif olmaktadır. Bu kısımların her biri 64 sütun ve 8 sayfadan oluşmaktadır. GLCD’ye ilgili DI, R/W,E uçları uygulanarak glcd’ye data gönderimi hazır hale getirilmelidir. Devrede Atmel serisinden AT89c51RD2 mikrokontrolcüsü kullanılmıştır. 64K program hafızasına sahiptir. P2 potundan glcd’ye gönderilen veriler, P1 portundaki kontol bitleri ile glcd’ye veri yazdılmaktadır. Devrenin c kaynak kodu aşağıdaki gibidir. C kaynak kodu yazılırken Tablo.h ve Glcd.h dosyaları mutlaka programa eklenmelidir.
Glcd.h dosyası ile glcd’nin çalışması için önemlidir.Glcd’nin pinleri tanımlanıp lcd’yi açma, kapama ayarları girilmiştir. Tablo.h dosyasında ise 128×64 ebatındaki *.bmp uzantılı resimler GLCDtools programında hex’e çevrilip buraya yerleştirilmiştir.
/**************************************************************************/ /* Uygulama Adı : Grafik LCD Animasyon */ /* Dosya Adı : Grafik_LCD */ /* Tarih : 03-04-2007 */ /* Hedef İşlemci: AT89c51rd2 */ /* Avni Çiftçiler Elektronik-3 040303015 */ /* Grafik Lcd'de önce Tablo.h dosyasındaki harfler yazmakta ve daha sonra */ /*resim fonksiyonları tek tek cagirilmakta. */ /**************************************************************************/ #include // islemci baslik dosyasi #include // C dili baslik dosyasi #include "Tablo.h" // Resimlerimizin bulundugu dosya #include "G_LCD.h" // Grafik LCD baslik dosyasi /* Türkiye haritasını ekrana basan fonksiyon */ /* resimlerin tanımlandığı Tablo.h dosyasından sirasiyla 8 bitlik degerler göstergeye gonderilir. Her resim basımından sonra resim gelen tablo degerlerinin '~' islemi ile terslenmesi sonucu ters renkte basılır. */ Turkiye(){ int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (15000); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableTurkiye[j++]); } } Gecikme (15000); } } /*Bayragimizi ekrana basan fonksiyon*/ Bayrak(){ int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (15000); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableBayrak[j++]); } } Gecikme (15000); } } //Ulu önder Atatürk'ün resmini ekrana basan fonksiyon Ataturk(){ int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (15000); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableAtaturk[j++]); } } Gecikme (15000); } } //Dünya resimlerini basan fonksiyonlar DispDUNYA1() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA1[j++]); } } Gecikme (500); } } DispDUNYA2() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA2[j++]); } } Gecikme (500); } } DispDUNYA3() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA3[j++]); } } Gecikme (500); } } DispDUNYA4() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA4[j++]); } } Gecikme (500); } } DispDUNYA5() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA5[j++]); } } Gecikme (500); } } DispDUNYA6() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA6[j++]); } } Gecikme (500); } } DispDUNYA7() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA7[j++]); } } Gecikme (500); } } DispDUNYA8() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA8[j++]); } } Gecikme (500); } } DispDUNYA9() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA9[j++]); } } Gecikme (500); } } DispDUNYA10() { int x,y,i,j; for(i=0; i<2; i++) { j=0; Gecikme (500); for(y=0; y<8; y++) // 8 sayfa içerisindeki döngü { for(x=0; x<=127; x++) // sütunlar arasında döngü { if(i==0) GLCD_int_8Bit (x, y, TableDUNYA10[j++]); } } Gecikme (500); } } main() { int x=0,y=0,Data_X=0,i=0,j=0; bit renk=0; char TEXT0[]="*********************"; char karakter[]=" "; while(1) { GLCD_Ekran(0); //dolgu var x=0; y=0; sprintf(TEXT0,"#####################"); GLCD_Harf(1,0, TEXT0, 100, 1); sprintf(TEXT0, " AVNI "); GLCD_Harf(1,1, TEXT0, 100, 1); sprintf(TEXT0, " CIFTCILER "); GLCD_Harf(1,2, TEXT0, 100, 1); sprintf(TEXT0, " KOCAELI UNIVERSITESI"); GLCD_Harf(1,3, TEXT0, 100, 1); sprintf(TEXT0, " TEKNIK EGITIM "); GLCD_Harf(1,4, TEXT0, 100, 1); sprintf(TEXT0, " FAKULTESI "); GLCD_Harf(1,5, TEXT0, 100, 1); sprintf(TEXT0, " ELEKTRONIK-3 "); GLCD_Harf(1,6, TEXT0, 100, 1); sprintf(TEXT0, " 040303015 "); GLCD_Harf(1,7, TEXT0, 100, 1); Gecikme(10000); Turkiye(); Bayrak(); Ataturk(); DispDUNYA1(); DispDUNYA2(); DispDUNYA3(); DispDUNYA4(); DispDUNYA5(); DispDUNYA6(); DispDUNYA7(); DispDUNYA8(); DispDUNYA9(); DispDUNYA10(); } }
Animasyon Projesinin Kaynak kod, pcb, similasyon, bitmap yazılımı;
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/05/22 Etiketler: animasyon, AT89C51RD2, atmel avr projeleri, GLCD, GLCD tools, grafik lcd, proje
Hocam eline sağlık proton basic İle aynı şeyler yapılamazmı?
oluyorsa örnek varmı?
burada yazılı olan kodları hangi programla asm veya hex kodlarına çevirebiliyoruz acaba. teşekkürler.
proje dosyalarnda keil klasöründe hex kodu var
Benim asıl amacım, bunu p16F877 için tekrar yazmak istiyorum. c ile yazıp bir türlü çeviremedim asm’ye.
abi bu bitmap converter olayını bi yapamadım bendeki demo heralde =( bi yardımcı olur musun???
burada grafik lcd ve program kullanımı hakkında bir makale var faydası olacaktır M.Alper USLU çok güzel anlatmış
bitmap konverter programının demo versiyonu tam sürüm lazım bir şey yapılamazmı acaba
yada başka program önerseniz
Program içinde yazılmış olan bayragımız kelımesının bayrak degılde bayragımız oldugu için programı yazan arkadasa mınnettarım
arkadas ellerine sağlık şu toblo.h dosyası olayını anlamadım acıklarmısın
o dosyayı kendinmizmi yazıyoruz yoksa bıtmap cevırıcı ıle ılgılı dosyamı yardımcı olursan cok sevınırım…
benim merak ettiğim – vout a bağlı olan pot’un diğer ucu şaseye değil de 5v’a Bağlanması gerekmiyormu ?
acaba bu kodun proton da yazılışı nasıl olur?