PICBASIC ile LCD Kullanımı

+ Yorum Gönder
Elektronik ve Elektronik Bölümü Bölümünden PICBASIC ile LCD Kullanımı ile ilgili Kısaca Bilgi
  1. 1
    Mattet
    Usta Üye
    Reklam

    PICBASIC ile LCD Kullanımı

    Reklam



    PICBASIC ile LCD Kullanımı

    Forum Alev
    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.


    [img]http://[/img]

    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



    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 http://rapidshare.com/files/71892059/lcd_devreler.zip






  2. Alev
    Özel Üye

    PICBASIC ile LCD Kullanımı Makalesine henüz yorum yazılmamış. ilk yorumu siz yapın


Sponsor Bağlantılar
+ Yorum Gönder
5 üzerinden | Toplam : 0 kişi