CCS C Karakter LCD Kullanımı

Bu dersimizde CCS C dilinde pic ile 2×16 karakter LCD bağlantısını ve temel fonksiyonlarını inceleyeceğiz. LCD üzerine farklı formatta verile yazdırmayı ele alacağız.

Karakter LCD Ekran Nedir

Karakter LCD’ler ASCII standartlarında basılabilir karakterleri destekleyen ekranlardır. ASCII standartlarındaki karakter setinde yalnızca ingilizce karakterler ve semboller bulunur. Yani Ç, ç, Ş, ş,  Ö, ö, Ü, ü, Ğ, ğ karakterleri desteklemezler. Yalnızca karakter numaraları olan 0 ile 127 arasında olan basılabilir karakterler desteklenir. Desteklenmeyen Türkçe karakterleri yazdırabilmek için kendi karakter dizimizi oluşturmamız gerekmektedir.

ASCII karakterlerin listesini Karakter Kodları sayfamızda bulabilirsiniz.

Öncelikle karakter lcd’yi tanıyalım.

2x16 Karakter LCD pinleri

2×16 değerindeki bir karakter LCD ekranda, 2 satır ve her satırda 16 karakter gösterebilme özelliği bulunur. Yukarıda görüldüğü üzere karakter LCD’de 16 adet pin vardır. Bu pinlerin ne işe yaradıklarını açıklamaya çalışalım.

  1. VSS : Bu pin Ground (Negatif Besleme) pinidir, yani güç kaynağının negatif (-) ucuna bağlanır.
  2. VDD: Pozitif besleme pinidir, güç kaynağının pozitif (+) ucuna bağlanır.
  3. VEE : LCD kontrast pinidir, bağlanacak bir pot yardımı ile kontrast ayarlanabilir.
  4. RS: Register Select pinidir. Bu pine 0 uygulanırsa, komut modu, 1 uygulanırsa veri modu olarak çalışır.
  5. RW : Okuma Yazma pini. Eğer pine 0 uygulanırsa okuma işlemi, 1 uygulanırsa yazma işlemi yapılabilir.
  6. E : Enable (etkinleştirme) pini, Okuma / Yazma yapmak için bu pinin lojik 1 seviyesinde tutulması gerekmektedir.
  7. D0 …. D7 : Veri pinleri. Bu pinler, LCD’ye veri göndermek için kullanılır.
  8. LedA ve LedK pinleri, LCD arka aydınlatması için kullanılır. LedA +, LedK ise – besleme uçlarıdır.

LCD Ekran Fonksiyonları

CCS C dili ile karakter lcd kullanmak için önce LCD pinlerinin denetleyicimizin hangi pinlerine bağlı olduğunu belirtmek için sabitler tanımlayacağız. Sabitler daha önce belirttiğimiz üzere programın başında bir kez tanımlandıktan sonra değeri program boyunca değişmeyecek olan yapılarımızdı. Sabitleri tanımlamak için #define önişlemci komutundan yararlanacağız.

Yukarıda tanımladığımız sabitlere göre, LCD bağlantımız aşağıdaki gibi olacak.

CCS C LCD Kullanımı

 

Sabitlerimizi tanımladıktan sonra LCD kütüphanemizi projemize dahil ediyoruz. Bunu #include önişlemci komutu ile gerçekleştireceğiz;

LCD kütüphanemizde kullanacağımız başlıca fonksiyonlar şunlardır;

  1. lcd_init()
  2. lcd_putc()
  3. lcd_getc()
  4. lcd_gotoxy()
  5. lcd_cursor_on()
  6. printf()

1- lcd_init()

Bu fonksiyonumuz LCD işlemlerini başlatmak için main fonksiyonu içerisinde kullanılır. Herhangi bir parametre almaz ve geriye değer döndürmez.

 

2- lcd_putc()

Bu fonksiyonumuz LCD’ye bir karakter dizesi yazdırmak için kullanılır. Parantezler arasına LCD ye gönderilecek olan karakterler tırnak içerisinde yazılır.

Örnek:

lcd_putc() fonksiyonu ile LCD’ye birtakım komutlar da gönderebiliriz. Bu komutlar;

  • \a – İmleci sol üste ayarlamak için kulanılır
  • \f – Görüntüyü temizlemek ve imleci sol üste ayarlamak için kullanılır
  • \n – Bir sonraki satırın başına gitmek için kullanılır
  • \b – Bir konum geri gitmek için kullanılır

Örneğin LCD ekranındaki yazıyı temizleyelim ve ekranın birinci satırına MERHABA, ikinci satırına ise koddefteri.net yazalım;

Tüm bu komutları tek satır ile de yazabiliriz;

3- lcd_getc()

Bu gonksiyonumuz LCD ekranında yazan yazının dilediğimiz pozisyondaki bir karakterini almak için kullanılır. Integer türünde 2 adet parametre alır. Birinci parametre sütunu, ikinci parametre ise satırı belirtir. Geriye ise char türünden bir parametre döndürür. Eğer her satırı x, her sütun değerini y olarak ele alırsak, fonksiyona göndereceğimiz parametre lcd_getc(y,x) şeklinde girilmelidir.

Örneğin ekranımızın ilk satırında MERHABA, ikinci satırında ise KOD DEFTERİ yazdığını varsayalım. Eğer biz ikinci satırın birinci karakteri olan “K” karakterini almak istersek lcd_getc(1,2) komutunu kullanmalıyız. Kodumuz şu şekilde olacak;

4- lcd_gotoxy()

Bu komutumuz ise imlecimizi ekranın herhangi bir konumuna götürmek için kullanılır. Satır ve sütun  olmak üzere integer türünde 2 adet parametre alır. İlk parametre sütunu, ikinci parametre ise satırı temsil eder.

Örnek olarak biraz önce LCD’den aldığımız K karakterini ilk satırın son sütununa yazdıralım;

Yukarıdaki kodumuzun dördüncü satırında, imleci birinci satırın onaltıncı sütununa sabitledik ve karakter değişkenizmideki K değerini ilk satırın en sonuna yazdırdık.

5- lcd_cursor_on()

lcd_cursor_on fonksiyonumuz imleci açıp kapatmaya yarayan fonksiyonumuzdur. int1 (boolean) türü 1 adet parametre alır. Eğer parantezler içerisine 0 değeri girilirse imleç kapalı, eğer 1 değeri girilirse imleç açık konuma getirilir. İmleç bir kez açık konuma getirildiğinde, tekrar kapat komutu gelinceye kadar ya da imleç ekrandan taşıncaya kadar ekranda görünecektir.

6- printf()

printf fonksiyonu aslında LCD’ye özgü bir fonksiyon değildir. Bu fonksiyon genel yazdırma işlemi için kullanılır. Daha sonra göreceğimiz RS232 ile haberleşme işlemlerinde de bu fonksiyonu sıklıkla kullanacağız. Bu fonksiyonu LCD ile kullanmak için ilk parametre olarak putc fonksiyonunu vermeliyiz. Ardından karakter ve sayı türü parametreleri verebiliriz.

printf fonksiyonu ile aynı anda hem karakter hem de sayı türü verileri ekrana yazdırabiliriz.

Formatlar

LCD’ye yazılacak her bir veri türü için formatlar mevcuttur. Fortmatlar % karakteri ile başlarlar ve sonrasıda formatın belirteci yazılır. Belirli formattaki verileri yazdırmak için kullanılacak formatlar şunlardır;

  1. %c – karakter
  2. %s – string – karakter dizisi
  3. %d – işaretli tamsayı (int8)
  4. %u – işaretsiz tamsayı (unsigned int8)
  5. %Ld – Uzun işaretli tamsayı (int16)
  6. %Lu – Uzun işaretsiz tamsayı (unsigned int16)
  7. %x – Hexadecimal tamsayı (küçük harfli – int8)
  8. %X – Hexadecimal tamsayı (büyük harfli – int8)
  9. %Lx – Uxun hexadecimal tamsayı (küçük harfli – int16)
  10. %LX – Uzun hexadecimal tamsayı (büyük harfli – int16)
  11. %f – Kırpılmış ondalıklı sayı (Float)
  12. %g – Yuvarlatılmış ondalıklı sayı (Float)
  13. %e – Üstsel biçimde ondalıklı sayı (Float)

Şimdi bu formatları örnek kodlarla açıklayalım;

String formatı örneği %s;

İnteger formatı örneği %d;

Float formatı örneği %f, %g, %e;

 

Yorum Yap