Site içi Arama

Ara

PICBASIC ile LCD Kullanımı

Aykut Yılmaz - 23.04.2007

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 $78
Bu 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

END
Pic Basic ile yapılmış devre uygulamalarını indirmek için tıklayınız.


E-posta: aykut_yilmaz54@hotmail.com
Sayfa Etiketleri:16F877 (6) Lcd (8) Pic Basic (5)
İçerik Yan Blok
Konular
Tasarım: Teknimer Teknoloji
Yukarı