2x16 LCD'nin 4 Uç İle Çalıştırılması.(HC164)

Başlatan Muhittin22, 24 Aralık 2010, 14:12:34

Muhittin22

Resim
http://i54.tinypic.com/34ovuvt.jpg%22%20border=%220%22%20alt=%22Image%20and%20video%20hosting%20by%20TinyPic%22%3E%3C/a%3E

-----------------------
Device 16F877
   Xtal = 20
'Bu Kodlar Proton ID Ayrıcalığıyla Yazılmıştır
'Config WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF , CP_OFF

PortB_Pullups = 1
   Warnings  0
    Dim Y  'Satır
    Dim X  'Sütun
    Dim Say As Word     
    Dim Sil
    Dim N
    Dim Yaz[16] As Byte
    Dim Wrd1 As Word
    Warnings 1
All_Digital = 1
Symbol LCDE =PORTB.1: Symbol LCDRS=PORTB.0:Symbol SCLK = PORTC.3 :Symbol SDO = PORTC.5
      Output PORTB.1 :      Output PORTB.0:       Output PORTC.3:       Output PORTC.5

GoSub EkraniAc
DelayMS 500:Sil=1
X=1:Y=1:Str Yaz = "Deneme" , 0'Metin Yazdırma
GoSub Goster
AnaProgram:      '*****************************************
Inc Say: If Say >900 Then Say=0
X=6:Y=2: Wrd1 =Say : StrN Yaz = Str$(Dec Wrd1): GoSub Goster 'Rakam Yazdırma
DelayMS 500
GoTo AnaProgram  '*****************************************   
Return

Ekransil: '*****************************************
DelayUS 500
Low LCDRS'Komut Göndermeye hazırlan
DelayUS 500
SHOut SDO,SCLK,1,[%00000001]'EKRANI SİL KOMUTU GÖNDER
High LCDE:DelayUS 500:Low LCDE 'İşlemi Onayla

Return

Goster:'*****************************************
If Sil=1 Then GoSub Ekransil
Sil=0
   Low LCDRS'Komut Göndermeye hazırlan
   DelayUS 500
   SHOut SDO,SCLK,1,[%00001100]'PANEL AÇ, KURSORKAPA KOMUTU GÖNDER
   High LCDE:DelayUS 500:Low LCDE'İşlemi Onayla

If Y=1 Then '1. SATIRA YAZ
   DelayUS 500
   Low LCDRS'Komut Göndermeye hazırlan
   X=X+127 'Kursör 1. satırda
   DelayUS 500
   SHOut SDO,SCLK,1,[X]'KURSORU VERİLEN ADRESE TAŞI KOMUTU GÖNDER
   High LCDE:DelayUS 500 :Low LCDE'İşlemi Onayla
   
   For N=0 To 16 '16 Adet Karekteri yerleştir
   If Yaz[N]<>0 Then
   High LCDRS'Ekrana Yazamaya Hazırlan
   DelayUS 500
   SHOut SDO,SCLK,1,[Yaz[N]]'BİLGİYİ EKRANA YAZ
   High LCDE:DelayUS 500:Low LCDE  'İşlemi Onayla
 
   EndIf
   Next
   
   EndIf
   
If Y=2 Then  '2. SATIRA YAZ
   X=X+191
   
   Low LCDRS 'Komut Göndermeye hazırlan
   DelayUS 500
   SHOut SDO,SCLK,1,[X]'KURSORU VERİLEN ADRESE TAŞI KOMUTU GÖNDER
   High LCDE:DelayUS 500 :Low LCDE'İşlemi Onayla
   For N=0 To 16 '16 Adet Karekteri yerleştir
   If Yaz[N]<>0 Then
   High LCDRS'Ekrana Yazamaya Hazırlan
   DelayUS 500
   SHOut SDO,SCLK,1,[Yaz[N]]'BİLGİYİ EKRANA YAZ
   High LCDE:DelayUS 500 :Low LCDE'İşlemi Onayla
   EndIf
   Next
   EndIf
   
   For N=0 To 11:Yaz[N]=17: Next  'DEĞİŞKENİ BOŞALT
   X=0:Y=0   
   Return     

EkraniAc:  '*****************************************
Low LCDE
DelayUS 500
Low LCDRS 'Komut Göndermeye hazırlan
DelayUS 500:
SHOut SDO,SCLK,1,[%00001100]'PANEL AÇ, KURSORKAPA KOMUTU GÖNDER
High LCDE:DelayUS 500:Low LCDE'İşlemi Onayla
DelayUS 500
'Lcd Panel Tanımla
Low LCDRS'Komut Göndermeye hazırlan
DelayUS 500
SHOut SDO,SCLK,1,[%00111000]'PANEL 2 SATIR ,8 BIT  KOMUTU GÖNDER
High LCDE:DelayUS 500:Low LCDE'İşlemi Onayla
DelayUS 500:
Low LCDRS
Low LCDE
Return
End
-----------------------
Lcd Komutları Yardimci Kaynak
(http://www.elektronikhobi.com/dokuman.asp?id=94)

frederic

Paylaşımınız için çok teşekkürler,çalışmalarınızda başarılar dilerim.

SiVRiSiNEK

@Muhittin22

LCD yi 4bit modunda kullanarak RS ucunuda HC164 çıkışlarından birine bağlayıp CLOCK, DATA, LCDENABLE olarak 3 pin ile de kontrol yapabilirsin