PICBASIC ile LCD Kullanımı
Bu yazımızda LCD ( Liquid Crystal Display ) tanıyacağız ve bol uygulamalar ile bilgilerimizi pekiştireceğiz.
LCD nedir: LCD ( Liquid Crystal Display ) LCD’ler ilk olarak 1960 yılında kullanılmış olup günümüzdede kullanılan yüksek teknolojik sistemlerdir. LCD'ler cep telefonu, hesap makinası ve televizyonlarda kullanılmaktadır.
LCD çeşitleri: İki adet LCD vardır bunlardan bir tanesi normal, sadece yazı gösteren yeşil ve mavirenkli LCD’ler diğeri ise renkli ekran cep telefonlarında kullanılan GLCD ( Grapich Liquid Crystal Display )’dir
Resim 1: LCD ( Liquid Crystal Display ) genel görünümü
Resim 2: GLCD ( Grapich Liquid Crystal Display ) genel görünümü
Piyasa satılan LCD’ler 1x8, 2x8, 2x16, 4x16, 4x20, 4x24 ilk sayı satır sayısı son sayı ise karakter sayısıdır.
Örneğin; 2x16 LCD 2 satır 16 karakterden oluşur.
Resim 3: Proteus elektronik programındaki 2x16 LCD’nin genel görüntüsü
LCD PİNLERİNİ TANIYALIM
1 Vss, Toprak (Ground), Logic Vss, Logic Ground
2 Vcc, +5 Volt, Logic Vcc, Logic Power
3 VLc, VBias,Bias,Contrast (Kontrast)
4 RS, Register Select
5 R/W, Read/Write(Okuma yada Yazma Modu)
6 E, Enable, Strobe
7-14 D0-D7 (DATA girisleri)
15* Led+, A, Backlight+, Backlight Anode (LCD Panel ısıgı (+5 Volt))
16* Led-, K, Backlight-, Backlight Cathode (Toprak (Ground))
*15 ve 16. bacaklar bazı displaylerde yoktur. Bu uçlar paneli aydınlatmak icin kullanılırlar.
Resim 4: 2x16 LCD’nin arkadan görüntüsü
PİCBASİC’te kullanılan LCD komutlarını tanıyalım
$FE,1 Ekranı siler.
$FE,2 Satir basına donülür.
$FE,$0C Kursörün görüntüsünü yok eder
$FE,$0E Kursörü alt çizgi biçimine getirir
$FE,$0F Kursörü yanıp/Soner yapar
$FE,$10 Kursörü 1 pozisyon sola getirir
$FE,$14 Kursörü 1 pozisyon saga getirir
$FE,$C0 Kursörü ikinci satirin başına getirir
$FE,$94 Kursörü üçüncü satirin başına getirir
$FE,$D4 Kursörü dördüncü satirin başına getirir
PİCBASİC’te LCD’veri göndermek için kullanılan komut; LCDOUT komutudur
PİCBASİC’te kullanılan LCD_DEFINE TANIMLAMALARI
DEFINE LCD_DREG PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI
DEFINE LCD_DBIT 4 LCD DATA BITLERI HANGİ BITTEN BASLIYOR
DEFINE LCD_EREG PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI
DEFINE LCD_EBIT 3 LCD ENABLE BITI HANGI PORTA BAGLI
DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI
DEFINE LCD_RWBIT 2 LCD RW BACAGI HANGI BITE BAGLI
DEFINE LCD_RSREG PORTB 'LCD RS BACAGI HANGI PORTA BAGLI
DEFINE LCD_RSBIT 1 LCD RS BACAGI HANGI BITE BAGLI
DEFINE LCD_BITS 4 LCD 4 BIT BAGLI
DEFINE LCD_LINES 2 LCD KAC SIRADAN OLUSUYOR
ÖNEMLİ BİR NOT:
DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI
DEFINE LCD_RWBIT 2 LCD RW BACAGI HANGI BITE BAGLI
Yukardaki defıne tanımlaması kullanıldığı zaman aşağıdaki kodun programa eklenmesi gerekir.
LOW PORTB.2 RW BACAGI EKRANA YAZMAYA IMKAN VERMEK ICIN LOW YAPILDI
ÖNEMLİ BİR NOT:
Diğer bir çözüm ise yukarıdaki notta bulunan komutları kullanmayıp RW pinini direkt toprağa bağladığımız zaman sorunu çözeriz iki şekilde program çalışacaktır.
ÖNEMLİ BİR NOT:
LCD_DEFINE tanımlamalarından sonra pause 500 komutunun yazılması gerekiyor çünkü bu komut LCD’nin açılması için gerekli olan süre
Uygulama1; Bu uygulamada LCD’de sabit yazı yazdıralım ilk önce devremizi verelim
Şemayı büyük görmek için tıklayınız.
PİCBASİC kodu
'*****LCD_DEFINE TANIMLAMALARI***** DEFINE LCD_DREG PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI DEFINE LCD_DBIT 4 'LCD DATA BITLERI HANGİ BITTEN BASLIYOR DEFINE LCD_EREG PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI DEFINE LCD_EBIT 3 'LCD ENABLE BITI HANGI PORTA BAGLI DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI DEFINE LCD_RWBIT 2 'LCD RW BACAGI HANGI BITE BAGLI DEFINE LCD_RSREG PORTB 'LCD RS BACAGI HANGI PORTA BAGLI DEFINE LCD_RSBIT 1 'LCD RS BACAGI HANGI BITE BAGLI DEFINE LCD_BITS 4 'LCD 4 BIT BAGLI DEFINE LCD_LINES 2 'LCD KAC SIRADAN OLUSUYOR TRISB=0 LOW PORTB.2 'RW BACAGI EKRANA YAZMAYA IMKAN VERMEK ICIN LOW YAPILDI PAUSE 200 '200 ms BEKLEME YAP LCDOUT $FE,1,"PiC BASiC PRO" 'ILK SATIRA YAZ LCDOUT $FE,$C2,"OGRENIYORUM" 'IKINCI SATIRA YAZ END
LCD’de simgesel olmayan karakterler yapmak
LCD’ler 5x7 dotmatrix tablodan oluşur. LCD’lerde Türkçe olmayan
karakterler (ı,ö,ç,ş,ğ) harfleri kullanılamaz ancak gerekli ayarlamalar
yapılırsa (ı,ö,ç,ş,ğ) harfleri kullanılabilinir. LCD’lerde
tanımlayabileceğimiz 8 ayrı karakter vardır ve her bir karakter için 8
ayrı data vardır.
Her bir karakterin yerleştirilme adresi vardır bunlar;
0.karakter $40 4.karakter $60 1.karakter $48 5.karakter $68 2.karakter $50 6.karakter $70 3.karakter $58 7.karakter $78Bu adreslerden hangisine karakter dataları yazılırsa program içinde ona ait karakter numarasını kullanılarak ilgili karakter ekrana yazdırılabilinir.
Türkçe karakterlere ait data numaraları ;
LCDOUT $FE,$40,$0A,$00,$11,$11,$11,$11,$0E,$00 'Ü LCDOUT $FE,$48,$0E,$11,$10,$10,$11,$0E,$04,$00 'Ç LCDOUT $FE,$50,$00,$0E,$04,$04,$04,$04,$0E,$00 'I LCDOUT $FE,$58,$0A,$00,$0E,$11,$11,$11,$0E,$00 'Ö LCDOUT $FE,$60,$0E,$00,$1F,$10,$13,$11,$1F,$00 'Ğ LCDOUT $FE,$68,$0E,$11,$10,$0E,$01,$15,$0E,$04 'ŞÖrnek verecek olursak;
LCDOUT $FE,$58,$0E,$10,$10,$0E,$01,$05,$1E,$04 'Ş dataları
Bu ifade Ş harfine ait dataları içermektedir. Adres olarak da $58 kullanılmış. O halde bu karekteri kullanmak için programda 3 rakamını kullanacaksın demektir. Yani AŞIK yazdırabilmen için şöyle yapman gerekli;
LCDOUT $FE,1,"A",3,"IK"
Diyelimki Ş harfine ait dataları 0 nolu karektere ait olan $40 adresine koyduk;
LCDOUT $FE,$40,$0E,$10,$10,$0E,$01,$05,$1E,$04 'Ş dataları
Bu durumda AŞIK yazdırabilmen için şöyle yapman gerek;
LCDOUT $FE,1,"A",0,"IK"
hepsi bu kadar. Yalnızca Ş harfini yazdırman için LCDOUT $fe,1,0 yazman yeterli oluyor. Demekki karekter numarasını yazarsan o karekteri ekrana getirebiliyorsun. Yalnızca dikkat etmen gereken husus karekterin yazılacağı yeri iyi tayin etmek olacaktır.
Devre şekli yukardaki devre şeması ile aynıdır
PİCBASİC kodu
'*****LCD_DEFINE TANIMLAMALARI***** DEFINE LCD_DREG PORTB 'LCD DATA BACAKLARI PORTB'YE BAGLI DEFINE LCD_DBIT 4 'LCD DATA BITLERI HANGİ BITTEN BASLIYOR DEFINE LCD_EREG PORTB 'LCD ENABLE BACAGI HANGI PORTA BAGLI DEFINE LCD_EBIT 3 'LCD ENABLE BITI HANGI PORTA BAGLI DEFINE LCD_RWREG PORTB 'LCD RW BACAGI HANGI PORTA BAGLI DEFINE LCD_RWBIT 2 'LCD RW BACAGI HANGI BITE BAGLI DEFINE LCD_RSREG PORTB 'LCD RS BACAGI HANGI PORTA BAGLI DEFINE LCD_RSBIT 1 'LCD RS BACAGI HANGI BITE BAGLI DEFINE LCD_BITS 4 'LCD 4 BIT BAGLI DEFINE LCD_LINES 2 'LCD KAC SIRADAN OLUSUYOR TRISB=0 LOW PORTB.2 'RW BACAGI EKRANA YAZMAYA IMKAN VERMEK ICIN LOW YAPILDI PAUSE 200 '200 ms BEKLEME YAP 'TÜRKÇE KARAKTERLİ SABİT YAZI' LCDOUT $FE,$40,$0A,$00,$11,$11,$11,$11,$0E,$00 'Ü LCDOUT $FE,$48,$0E,$11,$10,$10,$11,$0E,$04,$00 'Ç LCDOUT $FE,$50,$00,$0E,$04,$04,$04,$04,$0E,$00 'I LCDOUT $FE,$58,$0A,$00,$0E,$11,$11,$11,$0E,$00 'Ö LCDOUT $FE,$60,$0E,$00,$1F,$10,$13,$11,$1F,$00 'Ğ LCDOUT $FE,$68,$0E,$11,$10,$0E,$01,$15,$0E,$04 'Ş LCDOUT $FE,1,"T",0,"RK",1,"E HARFLER" LCDOUT $FE,$C5,0,1,2,3,4,5 ENDPic Basic ile yapılmış devre uygulamalarını indirmek için tıklayınız.
Yorumlarınız
kolay gelsin
KOMUTU NIYE 2 TAN E2 YAZILMI? cvb yazarsanız çok i olur ihtiyacım var salun
lcdout $fe,$84,\"merhaba\",\" \",5 karakter adresi.ekranda cıkıyor.son satıra birkarekter daha koymak istiyorum.
lcdout $fe,$89,\"x\" bisey denedim son satıta gitmedi
uardımcı olursanız sevinirim.
Bir yorum ekleyin
İzin verilen html etiketler (tag): <p><div><b><strong><i><u><del><hr><sup><sub><br>