LCD Deneyi Raporu
-
Upload
xcekaxnet1666 -
Category
Documents
-
view
15 -
download
3
Transcript of LCD Deneyi Raporu
Abdullah H. Özcan03102414
_________________________LCD: Otomatik Kayan Yazı___________________________
LCD kullanılırken belli bir işlem sırası takip edilmelidir. LCD ' nin çalışması aşağıdaki işlem sırasına göre olmaktadır:1)Resetlenir.2)Data uzunluğu, satır adedi, karakter fontu belirtilir.3)Display ON/OFF yapılır.4)Kursör ayarlanır.5)Verilerin sağa doğru mu, yoksa sola doğru mu kayacağı belirtilir.6)Display data RAM 'a istenilen karakterler yazılır.
Entegrede, RS pini komut yada data bilgisini bildirir.Eğer bu pin;lojik-0 ise gelen bilgilerin komut,lojik-1 ise display'e yazılmasını istediğimiz verilerin olduğunu bildirir. RW pini displayden
veri okumak ya da display'e veri yazmak için kullanılır.Eğer bu pin;lojik-0 ise display'e veri yazılır.lojik-1 ise displayden veri okunur.
E pini veri yada komut kabul etmesini sağlar.Fakat bu pin düşen kenarda tetiklenir.Display'e bir karakter gönderirken , okurken yada onu programlarken önce bu ucun lojik-1 ardından da lojik-0 yapılması gerekir.
D0--D7 hatları program yada karakter bilgilerini tutar.
Sonuç olarak LCD, E ucu tetiklendiğinde RS,RW ve data hatlarının durumlarına bakarak o anki bilgilerin ne anlama geldiğini anlar.
HD44780U kendisine verilen komutları icra ederken belli bir zaman harcar.Pic'in doğru olarak programlanması için kendisine verilen bir önceki işlemin bitmesini beklemek gerekir. Bu işlem iki şekilde olur.Ya delay macroları hazırlayarak yapılan işin zamanını hesaplarız yada pic'in BF bitini kontrol ederek yapılır. Bizim programımızda bu işlem Delay makroları ile yapılmıştır.
;------------------------------------------------------------; OTO_KAY.ASM;------------------------------------------------------------
Title "Otomatik kayan yazı"list p=18f452
#include <P18F452.INC>;__CONFIG _PWRTE_ON&_WDT_OFF&_XT_OSC&_LVP_OFF
;------------------------------------------------------------; Değişkenler (yazmaç);------------------------------------------------------------
cblock 0x020
SAYACLCDADRES
endc
;------------------------------------------------------------; Değişkenler (bit);------------------------------------------------------------
RS PORTE,0 ;"Register Select",Karakter(1), ;Komut(0), ÇIKIŞ, dijital I/O
EN PORTE,1 ;"Enable", ÇIKIŞ, dijital I/ORW PORTE,2 ;Read (1) / Write (0), ÇIKIŞ,
;dijital I/O
;------------------------------------------------------------
org 0x0000 ;Reset vektörügoto Start
org 0x0020 ;Kod başlangıcı
;------------------------------------------------------------
;Burada PCL in içerigi kaç ise o RETLW komutuna sapar ve geri döner. Sonuçta W ;saklayicisinin içerigi, sapilan karakter olur. PCL adres yazmaci ise INCLUDE ;ettigimiz dosya içerisinde tanimlanmistir. Return, Retfie ve Retlw komutlari yiginin ;en tepesindeki elemaninin içerigini PCL' ye aktarir. Sonuçta kullanilan yöntem, PCL ;degeri kaç ise o karakteri W ye yükleyip geri dönmektir.
CharacterTableaddwf PCL,Fretlw 'G'retlw '.'retlw 'Y'retlw '.'retlw 'T'retlw '.'retlw 'E'retlw '.'
#include <LCD.INC> ; LCD rutinleri!!!
;;;;;___________________________________
;DELAY Makroları
DELAY_5WREGplus5_usec_in_4Mhz
decf WREG,W,ACCESSbc DELAY_5WREGplus5_usec_in_4Mhzreturn
DELAY_10WREGplus10_usec_in_4Mhz
decf WREG,W,ACCESSbc DELAY_10WREGplus10_usec_in_4Mhzreturn
DELAY_10WREG1plus10_usec_in_4Mhz
decf WREG,W,ACCESSbtfss STATUS,C,ACCESSdecf WREG1,F,ACCESSbc DELAY_10WREG1plus10_usec_in_4Mhzreturn
;;;;;___________________________________
;_______________________________________;Alt Programlar
read_modebsf RWsetf TRISDreturn
write_modebcf RWclrf TRISDreturn
data_modebsf RSreturn
ctrl_modewrite_mode
bcf RSreturn
lcd_enablebsf ENbcf ENreturn
lcd_clearctrl_mode
MOV1_reg H'01', LATDlcd_anable
CALLw d'163', DELAY_10WREGplus10_usec_in_4Mhzreturn
put_commandctrl_mode
movf LATDlcd_enable
CALLw d'7', DELAY_5WREGplus5_usec_in_4Mhzreturn
put_addressctrl_mode
iorlw H'80'movf LATD
lcd_enableCALLw d'7', DELAY_5WREGplus5_usec_in_4Mhzreturn
;__________________________________________
Start
movlw B'00000010'movwf ADCON1clrf TRISD ;D ve E portları sıfırlanıyorclrf TRISE ;Yani D ve E portları çıkış yapılıyor.clrf LCDADRES ;Burada LCDADRES bir değişkendir.
;Temel yapılandırma. ;Bu yapılandırma yapılmazsa, temel yapılandırma ön-değerleri geçerli;(8-bit veri arayüzü, karakterler 5X7 noktalı, 1 satır) olacaktır.;Yapılandırma: 8-bit veri arayüzü, karakterler 5X7 noktalı, 2 satır.
CALLw H'38', put_command
;Gösterge ve imleç yapılandırması.;Yapılandırma yapılmazsa,imleç ve gösterge yapılandırma ön-değerleri ;geçerli (gösterge KAPALI, imleç altçizgisi YOK, imleç yanıp-sönmesi ;YOK) olacaktır.;Yapılandırma:Gösterge AÇIK, imleç yanar-söner, imleç alt çizgisi VAR.
CALLw H'0F', put_command
;Karakter girişinin yapılandırılması.İmleç adresi her karakter ;girişinden sonra bir artar, gösterge kayması ;yok.(Daktilo modu)
CALLw H'06', put_command
;------------------------------------------------------------;Ana program:;------------------------------------------------------------
_Program
call lcd_clear ;LCD temizleniyormovf LCDADRES,W ;İlk hanenin adresi LCD'yecall put_address ;gönderiliyor.clrf SAYAC ;sayaç sıfırlandıincf LCDADRES,F ;Sonraki çevrim için hane adresi
;bir artırılıyor.
Tekrarlamovf SAYAC,W ;Yazılacak yazının karakter sayısı
;ve sırasının tutulduğu yazmaç.SUBLW .16btfsc STATUS,Z ;"G.Y.T.E." 8 haneli olduğu için,goto _Program ;SAYAC yazmacının içeriği her movf SAYAC,W ;seferinde 8'den çıkarılmakta, call CharacterTable ;farklıysa SAYAC yazmacındaki sayının call put_char ;işaret ettiği karakter tablodan çağırılamaktadır.
movlw HIGH(d'10000')movf WREG1,ACCESSmovlw LOW(d'10000')
DELAY_10WREG1plus10_usec_in_4MhzMOVLW 2ADDWF SAYAC,F
goto Tekrarla ;SAYAC yazmacının içeriği ;Eşitse LCDADRES artırılmakta ve;süreç baştan tekrarlanmaktadır.
end
;------------------------------------------------------------