LCD komutları ve kullanımı.

C ile Temel PIC kullanımını öğrendikten sonra birkaç uygulama yaparak, aktif dinlenme yapalım. Bu dersimizde LCD ekran kullanarak ufak programlar yazarak, programlama tekniğimizi geliştirelim.

Bilenleriniz vardır. Assembly dilinde LCD programı yazmak pösteki saymaktır. LCD ekrana tek bir karakter göndermek için bile kırk takla atıp kırk bakla yeriz. Bereket versin, MikroC derleyicinin kendine ait LCD kütüphaneleri vardır. Yani hazır komutlarla LCD işlerimizi yürütebiliriz.

Gelin öncelikle bu komutlarımızı görelim. Biz 8 bitlik LCD üzerine çalışacağız. LCD komutlarımız:

• Lcd8_Config
• Lcd8_Init
• Lcd8_Out
• Lcd8_Out_Cp
• Lcd8_Chr
• Lcd8_Chr_Cp
• Lcd8_Cmd

LCD8_CONFIG:

Bu komut portlardan hangisinin kontrol portu hangisinin data portu olduğunu ayarlamak için kullanılır. Ayrıca RS, EN, WR uçlarının da hangi pinler olacağı bu komutla belirtilir.
Mesela ben,

Lcd8_Config(&PORTC,&PORTB,0,1,2,6,5,4,3,7,1,2,0); komutunu yazdıysam.

PORTC’nin kontrol portu,
PORTB’nin data port, olmasını istemiş ve,

PORTC’nin 0.bitini RS
PORTC’nin 1.bitini EN
PORTC’nin 2.bitini RW olarak ayarlamış, son olarak

PORTB’nin 6.bitini
PORTB’nin 5.bitini

PORTB’nin 0.bitini de data çıkışı olarak ayarlamış olurum.

 

LCD8_INIT:

Yukarıda gördüğümüz komutun aynısıdır. Tek farklı yukarıda komutta PORT’ların istediğimiz pinlerine istediğimiz değeri atarken burada “default” yani varsayılan değerdir. Mesela:

Lcd8_Init(&PORTB, &PORTC);

Komutunu yazdığımızda artık RS RW EN gibi değerleri bildirmeye gerek yok. Kendisi varsayılan olarak o değerleri şu şekil atıyor:

E    →  ctrlport.6
RS   →  ctrlport.4
R/W  →  ctrlport.5

D7   →  dataport.7
D6   →  dataport.6
D5   →  dataport.5
D4   →  dataport.4
D3   →  dataport.3
D2   →  dataport.2
D1   →  dataport.1
D0   →  dataport.0

Böylece PORTB’nin
6.pini=E,
4.pini=RS
5.pini= RW oldu. Gördüğünüz gibi bu komut diğerine göre daha kullanışlı. Biz de genelde varsayılan değeri kullanalım.

 

LCD8_OUT:

Bu komut LCD ekrana, göndermek istediğimiz bilgiyi yollar.

Lcd8_Out(1, 3, "Merhaba!");

Dersek 1. satır ve 3. haneden itibaren merhaba! Yazısını görürüz ekranda.
 

Lcd8_Out_Cp:Kursör’ün bulunduğu yerden itibaren yazıyı ekrana basar.

Lcd8_Out_Cp("Burada!");

Kursor o onda nerdeyse oradan itibaren burada! yazısını görürüz.

Lcd8_Chr: istediğimiz satır ve sütuna tek bir karakter yazdırmak içindir:

Lcd8_Chr(2, 3, 'K');

Komutu 2.satır 3.haneye bir K harfi basacaktır.

Lcd8_Chr_Cp:Kursorun olduğu noktaya bir karakter basar.

Lcd8_Chr_Cp('k'); dediğimizde o anda işaretçi nerdeyse oraya bir k basacaktır.

LCD8_COMMAND:

Lcd ekrana başka komutlar göndermek istediğimizde bunu kullanılırız. Mesela ekranı sildirmek için, Lcd_clear komutunu parantez içinde yazarız:

Lcd8_Cmd(Lcd_Clear);

Parantez içine yazabileceğimiz Diğer komutlar:

LCD_FIRST_ROW: İşaretçiyi 1.satıra taşır
LCD_SECOND_ROW: İşaretçiyi 2.satıra taşır
LCD_THIRD_ROW: İşaretçiyi 3.satıra taşır (3.satır varsa)
LCD_FOURTH_ROW: İşaretçiyi 3.satıra taşır (3.satır varsa)
LCD_CLEAR: Ekranı temizler
LCD_RETURN_HOME: İşaretçiyi varsayılan yerine getirir.
LCD_CURSOR_OFF: İşaretçiyi kapatır
LCD_UNDERLINE_ON: İşaretçiyi _ haline getirir
LCD_BLINK_CURSOR_ON: İşaretçinin yanıp sönmesini sağlar
LCD_MOVE_CURSOR_LEFT: display data RAM değişmeden kursor sola taşınır
LCD_MOVE_CURSOR_RIGHT: display data RAM değişmeden kursor sağa taşınır
LCD_TURN_ON: LCD açılır
LCD_TURN_OFF: LCD kapanır
LCD_SHIFT_LEFT: display data RAM değişmeden ekran sola kayar
LCD_SHIFT_RIGHT: display data RAM değişmeden ekran sola kayar

Bu dersimiz uzadığı için şimdilik sadece ekrana ismimizi yazdıran kısa bir program düzenleyelim, sonraki dersimizde LCD ile cambazlık yaparız.

Program Kodu:

char *text = "RuzName.Net";

void main()

{

  TRISB = 0;                  // PORTB çıkış olarak ayarlandı
  TRISC = 0;                  // PORTC çıkış olarak ayarlandı

  Lcd8_Init(&PORTB, &PORTC);       //PORTB kontrol, PORTC ise data portu olarak ayarlandı

  Lcd8_Cmd(LCD_CURSOR_OFF);   // imleci kapattık, görünmeyecek

  Lcd8_Out(1, 1, text);       // 1.satır 1.haneden itibaren yazımız yazıldı.

}

Buradaki char *text olayını kafanıza takmayınız. Karakter tipinde sonsuz uzunlukta bir diziymiş gibi kabul ediniz.

Son olarak LCD ekranların RS RW E gibi uçları ne işe yarar diyor ve LCD ekranlar hakkında malumat istiyorsanız google amcaya danışınız.

Anahtar Kelimeler: Mikrodenetleyici

peynir6 suyu tozu , 08/05/2008-12:52 Facebook'ta Paylas