Bu uygulama karakter LCD nasıl bağlanır, komutları nelerdir bunlardan bahsedeceğim.
LCD, Liquid Crystal Display yani Sıvı Kristal Ekran elektrikle kutuplanan sıvının ışığı tek fazlı geçirmesi ve önüne eklenen bir kutuplanma filtresi ile gözle görülebilmesi ilkesine dayanan bir görüntü teknolojisidir. Piyasada kullanılan LCD ler genelde Hitachi firmasının HD44780 entegresini veya buna benzer entegre içerir. Karakter LCD’de genelde 14 adet pin bulunur. Bu pinlere ek olarak LCD arka ışık besleme uçlarıdı bulunur.
LCD’nin temel bağlantı şekli aşağıdaki gibidir. RS,E,D4,D5,D6,D7 pinleri PIC’in başka pinlerine de bağlanabilir sabit değildir. VEE ve GND arasına 10Kohm’luk potansiyometre bağlanmalıdır. Bu direnç LCD kontrast ayarıdır. LCD karakterleri gözükmez ise potansiyometre kolunu çevirerek doğru direnci bulunuz. Direnç bağlanmadığı takdirde LCD’de karakterler gözükmez
İlk komutumuz;
1 |
printf(lcd_putc,"Ekranda Gözükecek Kısım"); |
printf komutu lcdde yazı yazmamızı, değişken değerlerini göstermemize yarayan temel komuttur.
Örneğin ekrana Merhaba yazacak olursak;
1 |
printf(lcd_putc,"Merhaba"); |
Değişken tanımlarken nasıl değişkeninin tipini belirtiyorsak LCD’de de ekranda göstereceğimiz verinin tipini belirtmemiz gerekmektedir.
İlk önce hangi veri tipinin nasıl gösterildiğine bakacak olursak;
Karakter |
Anlamı |
---|---|
%d | signed int sayıları gösterir. |
%c | Karakterleri gösterir. |
%s | String ifadeleri gösterir. |
%f | float sayıları gösterir. |
%x | Hexadesimal int sayıları gösterir. (Harfler küçük yazılır) |
%X | Hexadesimal int sayıları gösterir. (Harfler büyük yazılır) |
%u | unsigned int sayıları gösterir. |
%Ld | Long signed int sayıları gösterir. |
%Lu | Long unsigned int sayıları gösterir. |
%Lx | Hexadesimal long int sayıları gösterir. (Harfler küçük yazılır) |
%LX | Hexadesimal long int sayıları gösterir. (Harfler büyük yazılır) |
1 2 |
int i = 5; printf(lcd_putc,"i = %d",i); |
“i = %d” bölümünde, “%d” kısmı değişkenin int türünde olduğunu virgülden sonraki kısımda ise hangi değişkenin yazdırılacağını belirtir.
1 2 |
float x = 5.12; printf(lcd_putc,"x = %f",x); |
1 2 |
char a = 'o'; printf(lcd_putc,"harf = %c",a); |
1 2 3 |
int32 a = 123; float b = 5.06; printf(lcd_putc,"a = %lu b = %f",a,b); |
Örnekte a %lu ile, b %f ile ekranda gösterilmiştir.
LCD ekran komutlarında ekranı silme,alt satıra geçme, tab boşluğu gibi Backslash(\) komutları vardır. Bu komutlar;
Karakter | Anlamı |
---|---|
\f | Ekranı temizler. |
\b | Bir Karakter geri gider. |
\n | Bir sonraki satıra geçer. Yeni satır. |
\r | Satır başı yapar. |
\t | Tab. Bir tab değeri kadar boşluk bırakır. |
1 |
printf(lcd_putc,"Onur"); |
1 |
printf(lcd_putc,"\fOnur"); |
Alt satıra MikroCore yazmak için;
printf(lcd_putc,”\nMikroCore”);
Gördüğünüz gibi backslash komutları yazımızın hemen başına yazılmaktadır.
LCD ekranı devrede kullanabilmemiz için yazılıma bazı tanımlamalar yapmamız gerekmektedir;
1 2 3 4 5 6 7 8 |
#define LCD_ENABLE_PIN PIN_B2 #define LCD_RW_PIN PIN_B1 #define LCD_RS_PIN PIN_B0 #define LCD_DATA4 PIN_B4 #define LCD_DATA5 PIN_B5 #define LCD_DATA6 PIN_B6 #define LCD_DATA7 PIN_B7 #include |
Şemada yapmış olduğumuz bağlantıların hangi pinin nereye gittiği #define komutu ile belirtilmiştir. Bu pin atamalarını yazılımda veya donanımda istediğiniz gibi değiştirebilirsiniz.
Ekrana ilk satıra “Onur” alt sarıta “MikroCore” yazan uygulamanın yazılımını yazarsak;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include #FUSES NOWDT,XT,NOPUT,NOPROTECT #use delay(clock=4000000) #define LCD_ENABLE_PIN PIN_B3 #define LCD_RW_PIN PIN_B2 #define LCD_RS_PIN PIN_B1 #define LCD_DATA4 PIN_B4 #define LCD_DATA5 PIN_B5 #define LCD_DATA6 PIN_B6 #define LCD_DATA7 PIN_B7 #include void main() { lcd_init(); delay_ms(10); while(1) { printf(lcd_putc,"\fOnur"); printf(lcd_putc,"\nMikroCore"); delay_ms(500); } } |