Elektronik / Mikrodenetleyici Projeleri/

AT89C51RD2 GLCD Grafik LCD ile Animasyon

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.

Animasyon Projesinin Kaynak kod, pcb, similasyon dosyaları AT89C51RD2 GLCD Grafik LCD ile Animasyon

Dosya indirme LINK listesi (TXT formatında) link-1359.zip şifre-pass: 320volt.com

/**************************************************************************/
/* 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();

}
}

  1. NURİ 2008/06/04
  2. Emrah 2008/06/15
  3. admin 2008/06/15
  4. Emrah 2008/06/20
  5. Özen Özkaya 2008/07/14
  6. admin 2008/07/14
  7. cemil 2008/08/06
  8. sezgın 2009/06/26
  9. ahmet 2009/07/08
  10. Haluk 2011/03/08
  11. aydın 2012/05/08

Yorum

Soru: