LCD (Liquid Crystal Display ) Hafif olmaları,az yer kaplamaları gibi avantajları yüzünden günlük hayatta birçok cihazda tercih edilen Standart LCD paneller +5 V ile çalışır ve genellikle 14 konnektor lü olurlar.2x16lık( 2 satır-her satırda 16 karakter) standart LCD panellerin bacak bağlantıları aynı sayılır ve görevleri aşağıdaki gibidir. Lcd pinleri Pin İşlevi 1..Toprak (Graund) 2..Vcc +5V 3..VO(Kontras) 4..RS (Register Select) 5..R/W (Okuma yada Yazma modu) 6..E (Enable) 7-14.D0-D7 (Data Girişleri) 15 (Varsa).LCD Panel ışığı (+5V) 16 (Varsa) Toprak (Graund) 15 ve 16 nolu uçlar olmayabilir.varsa Panel iç ışıklandırması için kullanılıyor demektir. Standart LCD paneller 8 bit programlanabilirler.örneğin PORTB çıkışları (PB0-PB7) İle istenilen veri LCD ye gönderilebilir. Bir LCD Paneli için gelen bilginin iki farklı manası vardır.bunlar KOMUT veya VERİ dir. Gönderilen bir komut ise LCD panelinin RS ucu lojik 0 yapılmalıdır. Bu bit, panelin KOMUT SAKLAYICISI olarak çalışmasını sağlar.örneğin Ekranı Sil,İmleci aç-kapa vs gibi komutları bu modda kullanabiliriz.gönderilen bilgi komut değilde bir veri ise, RS ucu lojik 1 yapılarak panel VERİ SAKLAYICISI haline getirilir.bu modda ise ekrana istediğimiz karakter veya yazıyı yazdırabiliriz. LCD ( mikroişlemci ile kullanılırken) 3 kontrol sinyali almaktadır. Bunlar: 1-Enable (E): Lojik 0 seviyesinde LCD disable yani iptal olur, Lojik 1 seviyesinde LCD enable yani aktif dir.portb üzerine 8 bitlik bilgi yerleştirildikten sonra LCD Panelin E ucu ile bu veriyi okumasını sağlayabiliriz.bunun için E ucu 1 yapılıp bir müddet beklenir, bir sonraki bayt için tekrar 0 yapılır.aynı işlemler tekrarlanır. 2- Read/Write (R/W): Bu giriş Lojik 0 seviyesinde ise LCD Panel yazma modunda, Lojik 1 seviyesinde ise okuma modundadır.yazma yaparken bu uç 0 yapılır. Yazma işinin bitip bitmediği ise meşgul bayragı (busy flag) okunarak anlaşılır. Bu bayrağı okuyacağımız zaman bu uç 1 yapılır. 3- Register select (RS): Bu giriş Lojik 0 seviyesindeyken LCD Panele komut verilmektedir.(panel komut saklayıcı olarak çalışmaktadır.). Lojik 1seviyesindeyken ise LCD Panele yazı yazdırılmaktadır..(panel veri saklayıcı olarak çalışmaktadır.) V0 ucu : Kontras ucudur.bir dirençle şase yapılır.sürekli kontras değiştirilecekse direnç ayarlı yapılır.direnç değeri ile Kontras ters orantılı değişecektir. 1
LCD ler PIC ler kadar hızlı çalışamaz. Okuma veya yazmada 40-120 mikro saniyeye,( hatta bazı işlemlerde 5 mili sn ye kadar çıkan bir süreye) ihtiyaç duyarlar.oysa beraber çalişacağı PIC te bir komut 1 veya 2 mikrosaniye sürer.bu yüzden program LCD nin meşgul olduğu zamanı bilmeli ve en az o zaman kadar bekletilmelidir.bekletilme iki yolla olur. 1-) Meşgul Bayrağına bakılır.(busy Flag).Bayrak 1 ise program bekletilir.örnek bir alt yazılım program da şu şekilde kullanılabilir. ;Adnan KEÇELİ 20/4/2005 LCD UYGULAMASI list p=16f628 include P16F628.inc cblock h'20' DEPO,SAYAC,DELAY,DELAY1 endc org 00h goto basla basla movlw h'07' movwf CMCON clrf STATUS clrf PORTA clrf PORTB bsf STATUS,PRO movlw 0xF8 movwf TRISA movwf TRISB bsf OPTION_REG,7 ; Pull-Up ları temizle bcf STATUS,PRO call initial movlw 0x80 ; 1.satır adresi call text1 movlw 0xC0 ;2.satır adresi call text2 initial clear text1 disp1 aaa clrf PORTA movlw 0x1E ; Sağa kaydır call bekle1 movlw 0x38 ; Sekiz bit-çift satır ; Displeyi,kursorü,blinki kapat call clear movlw 0x0C ;Displey aç ; imlec, yanıp sönme kapa movlw 0x06 ; Sonraki harf sutununa otomatik geçiş movlw 0x01 ; Paneli temizle,imleci sol üst başa al movwf SAYAC call msg1 andlw 0xFF btfsc STATUS,Z goto aaa call char movf SAYAC,w addlw 1 goto disp1 text2 disp2 movwf SAYAC call msg2 andlw 0xFF btfsc STATUS,Z goto bbb 2
bbb komut char busy call char movf SAYAC,w addlw 1 goto disp2 movwf DEPO call busy bcf PORTA,5 ; R/W = 0 LCD ye yaz bcf PORTA,7 ; RS = 0 Gelen bilgi Komut movf DEPO,w movwf DEPO call busy bcf PORTA,5 ; R/W = 0 LCD ye yaz bsf PORTA,7 ; RS = 1 Gelen bilgi Veri movf DEPO,w bsf STATUS,PRO movlw 0xFF movwf TRISB bcf STATUS,PRO bcf PORTA,7 ; RS = 0 Gelen bilgi Komut bsf PORTA,5 ; R/W = 1 LCD den oku (BF için) movf PORTB,w andlw 0x80 btfss STATUS,Z goto busy notbusy bcf PORTA,5 ; R/W = 0 LCD ye yaz bsf STATUS,5 bcf STATUS,5 bekle xx bekle1 yy msg1 movlw d'165' movwf DELAY decfsz DELAY,f goto xx movwf DELAY1 call bekle decfsz DELAY1,f goto yy addwf PCL,1 retlw "H" retlw "U" retlw "R" retlw "R" retlw "Y" retlw "T" retlw "N" retlw "D" retlw "M" retlw "S" retlw 0 msg2 addwf PCL,1 retlw "L" 3
retlw "S" retlw "V" retlw "T" retlw "K" retlw "L" retlw "S" retlw 0 end Ancak bu iyi bir tercih değildir.çünkü program takılarak, sürekli mesgul biti verip sonsuza dek meşgul bitini kontrol eden bir döngüde kalabilir.ayrıca elimizdeki deney devrelerinde R/W ucu (PORTA,5) direkt şase yapılmış (yani sürekli lojik 0) oldugundan meşgul bayragını kontrol etme şansımız yoktur.çünkü bu bayraga bakmak için R/W ucu Yüksek (lojik 1) yapılmalıdır.dolayısıyla Labaratuarda deney için yukardaki devre yeniden düzenlendi ve sizlere 20/4/2005 LCD UYGULAMASI 2 şeklinde sunulacaktır. 2-) Program döngülerle bekletilebilir.ancak bu bekleme süreleri yeterince uzun olmalıdır. Örnek bir bekletme alt yazılımı şu şekilde olabilir. delay movlw 0xFF movwf bekle2 next2 movlw 0xFF movwf bekle1 next1 decfsz bekle1,f goto next1 decfsz bekle2,f goto next2 end Bu gecikmeyi kullanan ve deney devremize uygun hazırlanan örnek bir program da sizlere yine 20/4/2005 LCD UYGULAMASI 1 şeklinde sunulacaktır. LCD ile ilgili bazi genel önemli bilgilere de aşağıda yer verilmiştir.bunlar sırasıyla; RAM adres ile data bilgileri tablosu,lcd nin bağlantı şeması, komut saklatıcı fonksiyonları dır. 4
İşlem D7 D6 D5 D4 D3 D2 D1 D0 Açıklama Ekranı Sil 0 0 0 0 0 0 0 1 Ekranı siler (P) Panel AÇ (1) / KAPA (0) Ekran seçenekleri 0 0 0 0 1 P K Y (K) Kürsör AÇ (1) / KAPA (0) Fonksiyon ayarları 0 0 1 D N 0 X X (Y) Yanıp Sönme AÇ (1) / KAPA (0) (D) Veri girişi 8-bit (1) / 4-bit (0) (N) Çift satır (1) / Tek satır (0) CGRAM Adres ayarı (C5-C0) CGRAM e gidecek 0 1 C5 C4 C3 C2 C1 C0 (ilk satırın adresleri) veriler. DDRAM Adres ayarı (D6-D0) DDRAM e gidecek 1 D6 D5 D4 D3 D2 D1 D0 (ikinci satırın adresleri) veriler. Busy Flag / Adres sayaç okuma BF A6 C6 A5 C5 A4 C4 Cursor Shift 0 0 0 1 Entry Mode Set 0 0 0 0 0 1 A3 C3 S C A2 C2 R L A1 C1 X I D A0 C0 X S Meşgul bayrağı (BF) RW=1, RS= 0 iken D7 pininden okunur. D6-D0 dan adres counter verisi okunur. Shift (1) / Cursor (0) Right(1) / Left(0) Increment (1), Decrement(0) Shift (1) on (0) off. 5