AT89C51RD2 GLCD Grafik LCD ile Animasyon

| Mayıs 16, 2023 Tarihinde güncellendi
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.

PCBway Türkiye PCB Manufacturer PCB Assembly

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ı;

at89c51rd2-glcd-grafik-lcd-ile-animasyon

Şifre-Pass: 320volt.com

Yayım tarihi: 2008/05/22 Etiketler: , , , , , ,



11 Yorum “AT89C51RD2 GLCD Grafik LCD ile Animasyon

  1. NURİNURİ

    Hocam eline sağlık proton basic İle aynı şeyler yapılamazmı?
    oluyorsa örnek varmı?

    CEVAPLA
  2. EmrahEmrah

    burada yazılı olan kodları hangi programla asm veya hex kodlarına çevirebiliyoruz acaba. teşekkürler.

    CEVAPLA
  3. EmrahEmrah

    Benim asıl amacım, bunu p16F877 için tekrar yazmak istiyorum. c ile yazıp bir türlü çeviremedim asm’ye.

    CEVAPLA
  4. Özen ÖzkayaÖzen Özkaya

    abi bu bitmap converter olayını bi yapamadım bendeki demo heralde =( bi yardımcı olur musun???

    CEVAPLA
  5. adminadmin Yazar

    burada grafik lcd ve program kullanımı hakkında bir makale var faydası olacaktır M.Alper USLU çok güzel anlatmış

    CEVAPLA
  6. cemilcemil

    bitmap konverter programının demo versiyonu tam sürüm lazım bir şey yapılamazmı acaba
    yada başka program önerseniz

    CEVAPLA
  7. sezgınsezgın

    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

    CEVAPLA
  8. ahmetahmet

    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…

    CEVAPLA
  9. HalukHaluk

    benim merak ettiğim – vout a bağlı olan pot’un diğer ucu şaseye değil de 5v’a Bağlanması gerekmiyormu ?

    CEVAPLA

ahmet için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir