Grafik LCD (GLCD) Ekranlar – ARM Programlama

  • Grafik LCD’ler, karakter LCD’lerden farklı olarak üzerindeki bütün piksellerin tek tek kontrol edilebildiği ekran çeşitleridir.
  • 128×64, 240×64, 240×128 gibi çok farklı boy ve ebatta bulunabilirler.
  • Grafik LCD’ler sıvı kristal ekran ve bu ekranı kontrol eden kontrol kartından oluşmaktadır.
  • MikroC derleyicisinin piyasada en çok kullanılan grafik LCD kontrolcüleri için 5 ayrı grafik LCD kütüphanesi bulunmaktadır.

Pin Tablosu

Pin NoSembolFonksiyon
1VssGnd
2VddGüç Kaynağı (+5 V)
3VoKontrast Ayarı
4D/IData/Komut
5R/WYazma/Okuma
6EH→L Aktif etme sinyali
7DB0Data ucu
8DB1Data ucu
9DB2Data ucu
10DB3Data ucu
11DB4Data ucu
12DB5Data ucu
13DB6Data ucu
14DB7Data ucu
15CS1Chip seçme pini
16CS2Chip seçme pini
17RSTReset
18VeeNegatif voltaj çıkış pini
19AAydınlatma ledi anot pini
20KAydınlatma ledi katot pini

Glcd Yapısı

Pin Atamaları

unsigned long GLCD_DataPort_Input at GPIOE_IDR; //GLCD Data portu giriş GPIOE_IDR
unsigned long GLCD_DataPort_Output at GPIOE_ODR; //GLCD Data portu çıkış GPIOE_ODR

sbit GLCD_CS1 at GPIOE_ODR.B8; //CS1 pini GPIOE’nin 8. pini
sbit GLCD_CS2 at GPIOE_ODR.B9; //CS2 pini GPIOE’nin 9. pini
sbit GLCD_RS at GPIOE_ODR.B10; //RS pini GPIOE’nin 10. pini
sbit GLCD_RW at GPIOE_ODR.B11; // RW pini GPIOE’nin 11. pini
sbit GLCD_EN at GPIOE_ODR.B12; //EN pini GPIOE’nin 12. pini
sbit GLCD_RST at GPIOE_ODR.B13; //RST pini GPIOE’nin 13. pini

GLCD_Init()

Grafik LCD modülünü kullanıma hazırlar. Bu fonksiyon kullanılmadan önce programın en başında pin tanımlamaları yapılmalıdır.
Örnek: Glcd_Init(); //parametre almadan kullanılır.

Glcd_Fill

Grafik LCD ekranı koyu ve açık piksellerle doldurur. Bu fonksiyon kullanılmadan önce Glcd_Init() fonksiyonu kullanılmış olmalıdır.
Örnek:
Glcd_Fill(0);
Glcd_Fill(0xFF);
Glcd_Fill(0x33);
Glcd_Fill(0xF0);

sbit GLCD_CS1 at GPIOE_ODR.B12;
sbit GLCD_RS at GPIOE_ODR.B8;
sbit GLCD_RW at GPIOE_ODR.B9;
sbit GLCD_EN at GPIOE_ODR.B10;
sbit GLCD_RST at GPIOE_ODR.B13;

void main() {
	Glcd_Init();
	while(1){
		Glcd_Fill(0xFF);
		Delay_ms(2000);
		Glcd_Fill(0);
		Delay_ms(2000);
	}
}

Glcd_Dot

Belirtilen koordinatlardaki pikseli aktif eder, yani nokta koyar. Bu fonksiyon Glcd_Init() kullanılmalıdır.

//Glcd_Dot(x,y,renk);

Glcd_Dot(127,63,2) // 127,63 koordinatlarındaki pikselin rengini tersler
Glcd_Dot(0,10,0); // 0,10 koordinatlarındaki pikseli temizler
Glcd_Dot(63,31,1); // 63,31 koordinatlarındaki pikseli renklendirir.

Dikkat edilmesi gereken nokta x değerinin maksimum 127, y değerinin ise
maksimum 63 olmasıdır. Çünkü 128×64 ekran kullanıyoruz.

unsigned long GLCD_DataPort_Input at GPIOE_IDR;
unsigned long GLCD_DataPort_Output at GPIOE_ODR;

sbit GLCD_CS2 at GPIOE_ODR.B11;
sbit GLCD_CS1 at GPIOE_ODR.B12;
sbit GLCD_RS at GPIOE_ODR.B8;
sbit GLCD_RW at GPIOE_ODR.B9;
sbit GLCD_EN at GPIOE_ODR.B10;
sbit GLCD_RST at GPIOE_ODR.B13;

void main() {
	Glcd_Init();
		while(1){
		Glcd_Dot(127,63,2);
		Delay_ms(2000);
		Glcd_Dot(0,10,0);
		Delay_ms(2000);
		Glcd_Dot(63,31,1);
		Delay_ms(2000);
		Glcd_Fill(0);
		Delay_ms(2000);
	}
}

Glcd_Line

Belirlenen iki nokta arasında çizgi çizer.

// Glcd_Line(x_başlangıç, y_başlangıç, x_bitiş, y_bitiş, renk);

Glcd_Line(0,0,20,30,1); //0,20 ve 0,30 arası çizgi çizer
Glcd_Line(10,10,40,10,0); //10,40 ve 10,10 arası beyaz çizgi çizer
Glcd_Line(30,30,80,40,2); //30,80 ve 30,40 arasını tersler

Glcd_V_Line

Grafik LCD ekranında dikey bir çizgi çizer.

//Glcd_V_Line(y_baslangic, y_bitiş, x, renk);

Glcd_V_Line(12,25,10,1);
Glcd_V_Line(0,63,32,1);

Glcd_H_Line

Grafik LCD ekranında x ekseninde, y eksenini dik kesen, belirlenen
noktalar arasına yatay bir çizgi çizer.

//Glcd_H_Line(x_baslangic, x_bitiş, y, renk);

Glcd_H_Line(12,25,10,0);
Glcd_H_Line(0,63,32,1);

Glcd_Rectrangle

Grafik LCD ekranına belirlenen koordinatlar arasına dik açılı bir
dörtgen çizer.

//Glcd_Rectangle(x_sol_üst, y_sol_üst, x_sağ_alt, y_sağ_alt, renk);

Glcd_Rectangle(0,0,40,40,1);
Glcd_Rectangle(7,5,25,60,0);
Glcd_Rectangle(6,10,20,35,2);

Glcd_Rectrangle_Round_Edges

Grafik LCD ekranına belirlenen koordinatlar arasına yuvarlatılmış
köşeli, dik açılı bir dörtgen çizer.

//Glcd_Rectrangle_Round_Edges(x_sol_üst, y_sol_üst, x_sağ_alt, y_sağ_alt, yarıçap, renk)

Glcd_Rectangle_Round_Edges(7,5,25,60,2,1); //kenarları yuvarlatılmış
Glcd_Rectangle_Round_Edges(7,5,25,60,9,1); //Elips oldu
Glcd_Rectangle_Round_Edges(7,5,25,60,20,1); //çizmedi
Glcd_Rectangle_Round_Edges(7,5,25,60, 0,1); //köşeli

Glcd_Rectrangle_Round_Edges_Fill

Grafik LCD ekranına belirlenen koordinatlar arasına yuvarlatılmış
köşeli, içi dolu, dik açılı bir dörtgen çizer.

//Glcd_Rectrangle_Round_Edges_Fill(x_sol_üst, y_sol_üst, x_sağ_alt, y_sağ_alt, yarıçap, renk)

Glcd_Rectangle_Round_Edges_Fill(7,5,25,60,2,1);
Glcd_Rectangle_Fill(7,5,25,60,1); //HATA

Glcd_Box

İçi dolu, dik açılı dörtgen çizer.

//Glcd_Box(x_sol_üst, y_sol_üst, x_sağ_alt, y_sağ_alt, renk);

Glcd_Box(0, 0, 40, 40 ,1);

Glcd_Circle

Ekrana bir çember çizer.

//Glcd_Circle(x_merkez, y_merkez, yarıçap, renk);

Glcd_Circle(50,50,10,1);
Glcd_Circle(50,60,10,1); //taşma var. Yarım çizildi

Glcd_Circle_Fill

Ekrana içi dolu bir daire çizer.

//Glcd_Circle_Fill(x_merkez, y_merkez, yarıçap, renk);

Glcd_Circle_Fill(50,50,10,1);

Glcd_Set_Font

  • Grafik LCD üzerine herhangi bir yazı veya karakter basmakta kullanılan yazı stili ve boyutları seçilir.
  • Mikroelektronikanın tanımladığı 4 adet yazı stili bulunmaktadır.
  • Eğer istenirse harici bir yazı stili de kullanılabilir.
  • Bu fonksiyonda dikkat edilecek husus ofset kısmıdır.
  • Ofset kısmı kullanılan fontun başladığı karakter ile ASCII karakter setinin başladığı karakter arasındaki sayısal farktır.
  • Örnek olarak ‘A’ harfinin ASCII değeri 65’tir.
  • Karakter setimizde diyelim ki ‘A’ karakteri 45 olsun.
  • O halde ofset değeri 20 olacaktır.
  • MikroC fontlarının ofset değeri 32’dir.
  • 4 font;
  • Font_Glcd_System3x5
  • Font_Glcd_System5x7
  • Font_Glcd_5x7
  • Font_Glcd_Character8x7
  • Glcd_Set_Font(&Font_Glcd_System3x5, 3, 5, 32);
  • Glcd_Set_Font(&Font_Glcd_5x7, 3, 5, 32);

Glcd_Write_Char

Grafik LCD ekrana bir adet karakter yazmak için kullanılır.
Bu fonksiyondan önce Glcd_Set_Font kullanılmalıdır.

//Glcd_Write_Char(‘karakter’, x_pozisyonu, sayfa, renk);

Glcd_Write_Char(‘M’, 8, 5, 1);

Glcd_Write_Text

Grafik LCD ekrana yazı yazmak için kullanılır. Bu fonksiyondan önce Glcd_Set_Font kullanılmalıdır.

//Glcd_Write_Text(‘’text’’, x_pozisyonu, sayfa, renk);

Glcd_Write_Text(‘’MikroC’’, 8, 5, 1);

Glcd_Image

Grafik LCD ekranda bitmap resim gösterme işini gerçekleştiren fonksiyondur.

Gösterilecek resmin 128×64 piksel olması gerekir.

//Glcd_Image(my_image)

Glcd_PartialImage

Ekranın belirlenen bir lokasyonunda, resmin belirli bir kısmını gösteren fonksiyondur.

//Glcd_PartialImage(x_sol, y_yukarı, genişlik, yükseklik, orijinal_genişlik, orijinal_yükseklik, resim);

Glcd_PartialImage(10,12,10,15,16,32,image);