İstanbul escort bayan sivas escort samsun escort bayan sakarya escort Muğla escort Mersin escort Escort malatya Escort konya Kocaeli Escort Kayseri Escort izmir escort bayan hatay bayan escort antep Escort bayan eskişehir escort bayan erzurum escort bayan elazığ escort diyarbakır escort escort bayan Çanakkale Bursa Escort bayan Balıkesir escort aydın Escort Antalya Escort ankara bayan escort Adana Escort bayan

Ana Sayfa Elektronik Öğrenin Dijital elektronik Assembly Dilinde LCD Örnek Programı

Assembly Dilinde LCD Örnek Programı

2

Piyasa da çok çeşitli LCD (Liquid Crystal Display) ler satılıyor.  Bu gün 2*16  satır LCD nin Assembly dilindeki örnek programını yazıp açıklamaya çalışacağım.

Öncelikle LCD nin  pin konfigrasyonunu bilmek gerekiyor. 2*16 LCD lerin  3 tane kontrol, 8 tane veri ve 3 tane Suppy pini olmak üzere toplam 14 pini bulunuyor.

VCC=+5V , VSS=GND, VEE= Contrast bacakları.  RS= Kaydedici seçme bacağı(Select Register), R/W= Okuma yazma bacağı(Read/Write),  E=Anahtar bacak(Enable). Diğerleri ise D0-D7= veri yazma ve ya veri okuma bacakları(DATA BUS).

Embedded Systems Book (Muhammed Ali Mazidi)

 

LCD ye yazı yazma mantığı kaba taslak şu şekilde oluyor; ilk önce RS yani kaydedici seçme pinini RS=1 yaparak LCD içerisindeki DATA kaydedicisi seçiyoruz. Daha sonra R/W yani okuma yazma pinini R/W=0 yaparak LCD ye veri göndereceğimizi belirtiyoruz. Bu işlemden sonra verileri DATA BUS yani D0-D7 pinlerine gönderiyoruz. Burada verileri gönderirken dikkat etmemiz gereken şey “E” pininin her yolladığımız 8 bit veri için en az 450 ns zaman içerisinde 1 ve 0 yapılması gerekiyor.  yani yükselen kenarda E pinine sinyal göndermemiz gerekiyor.

Bir de LCD den veri okuyabiliyoruz. Bu işlem için ise RS=1 yaparak yine veri kaydedicisini seçiyoruz. R/W=1 yaparak okuma yapacağımızı belirtiyoruz ve E pinine bu sefer düşen kenarda sinyal gönderiyoruz. Yani 450 ns boyunca 0 yapıp daha sonra 1 yapıyoruz.

 

LCD nin kontrol kaydedicisi LCD ye yazacağımız yazının pozisyonunu ve ya LCD üzerindeki kontrol işlemlerini yapabilmemizi sağlar. Bu yüzden LCD ye yazı göndermeden önce LCD nin kontrol kaydedicisini seçerek (RS=0) LCD yi açarız, yazacağımız yazının pozisyonunu düzenleriz ve LCD üzerinde çeşitli işlemler yapabiliriz. LCD nin kontrol kaydedicisi seçili iken LCD nin Data pinlerine(D0-D7) gönderdiğimiz bazı veriler şu LCD üzerinde şu işler yapmamıza yarar; .

Embedded Systems Book (Muhammed Ali Mazidi)

 

Şimdi assembly dilindeki lk programımızı yazalım. LCD yi Pic’imize şu şekilde bağlıyoruz;

Embedded Systems Book (Muhammed Ali Mazidi)

 

 

RS EQU RB0      ; RB0 RS olarak tanımlanıyor
RW EQU RB1      ; RB1 RW olarak tanımlanıyor
EN EQU RB2      ; RB2 EN olarak tanımlanıyor
COUNTER EQU 0X20; Sayacının Ram adresi tanımlanıyor

CLRF TRISD
CLRF TRISB
CLRF PORTD
CLRF PORTB

BASLA           ; Sonsuz döngü başlığı

MOVLW 0x38      ;  LCD 2*16 satır ve 5X7 çözünürlüğünde ayarlama komutu.
CALL KOMUTGONDER;  bu komutu gönderiyoruz.
CALL DELAY      ;  lcd komutu işlemesi için zaman tanıyoruz.

MOVLW 0x0E      ;  LCD ekranını ve cursoru açma komutu
CALL KOMUTGONDER;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW 0x01      ;  LCD ekranı temizleniyor
CALL KOMUTGONDER;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW 0x80
CALL KOMUTGONDER;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'E'     ;  E harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'L'     ;  L harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'E'     ;  E harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'K'     ;  K harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'T'     ;  T harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'R'     ;  R harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'O'     ;  O harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'N'     ;  N harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.

MOVLW D 'I'     ;  I harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.
 
MOVLW D 'K'     ;  K harfini gondermek üzere wreg'e yazıyoruz
CALL VERIGONDER ;  LCD ye komutu gönderiyoruz
CALL DELAY      ;  LCD ye komutu işlemesi için zaman tanıyoruz.
GOTO BASLA      ;  Programı en başa dönderiyoruz.

KOMUTGONDER

MOVWF PORTD     ;  Wregdeki veri PORTD ye yazılıyor
BCF PORTB,RS    ;  LCD nin RS pini 0 yapılarak komut kayedicisi seçliyor
BCF PORTB,RW    ;  LCD nin RW pini 0 yapılarak yazma işlemi yapılacağı söyleniyo
BSF PORTB,EN    ;  Yazma işlemi için En pini H-L yapılıyor
CALL DELAY
BCF PORTB,EN    
RETURN

VERIGONDER

MOVWF PORTD     ;  Wregdeki veri PORTD ye yazılıyor
BCF PORTB,RS    ;  LCD nin RS pini 1 yapılarak veri kayedicisi seçliyor
BCF PORTB,RW    ;  LCD nin RW pini 0 yapılarak yazma işlemi yapılacağı söyleniyo
BSF PORTB,EN    ;  Yazma işlemi için En pini H-L yapılıyor
CALL DELAY
BCF PORTB,EN    
RETURN

DELAY

MOVLW 0X255   ; 255 SAYISI SAYILMAK ÜZERE WREG E YAZILIYOR
MOVWF COUNTER ; bU SAYI COUNTER ADRESİNE KAYDEDİLİYOR
AGAIN         ;
NOP           ; BOŞ
DECFSZ COUNTER; counter bir azaltılıyor ve 0 olduğunda döngüden çıkılıyor.
GOTO AGAIN
RETURN

Yazma işlemi yapılırken EN pini ilk önce 1 daha sonra 0 yapılır. Bu sürenin en az 450 ns olması gerekiyor. LCD üzerinden okuma yapılırken ise EN pini ilk önce 0 daha sonra 1 yapılır. Yine 450 ns ye ihtiyaç duyuluyor.

 

 

2 YORUMLAR

CEVAP VER

Please enter your comment!
Please enter your name here

Exit mobile version