|
Sayfa 1 Toplam: 2
Bu uygulamada LCD’ye nasıl özel karakter yazdıracağımızı göreceğiz. Bir önceki yazıda yaptığımız kayan yazıya bir de zil şekli ekleyeceğiz. Konuya ilişkin devre şemalarını buradan görebilirsiniz.
PIC Assembly Kodu
;------------------------------16x2 LCD'ye Özel Karakter Yazdırma------------------------
;---------------------------Tuna Bulut tarafından yazıldı-------------------------------------
LIST P=16F628A
INCLUDE "P16F628A.INC"
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _DATA_CP_OFF & _CP_OFF
CBLOCK H'20'
ADRES1
ADRES2
MESAJ
KRKTR
TEMP
SAYAC1
SAYAC2
ENDC
#DEFINE RS PORTA,0
#DEFINE E PORTA,1
;-------------------------BAĞLANTILAR----------------------------
;RS=RA0
;E=RA1
;D4..D7=RB0..RB3
;----------------------------------------------------------------
MOVLW H'07'
MOVWF CMCON ;COMPARATOR ÖZELLİĞİ KAPALI VE PORTA I/O İÇİN AKTİF MODDA
CLRF PORTB ;PORTB Yİ SIFIRLA
;GİRİŞ-ÇIKIŞ TANIMLAMALARI
BANKSEL TRISA ;BANK1 E GEÇİŞ YAP
CLRF TRISA ;PORTA NIN BÜTÜN PİNLERİNİ ÇIKIŞ YAP
CLRF TRISB ;PORTB NİN BÜTÜN PİNLERİNİ ÇIKIŞ YAP
MOVLW H'80'
MOVWF OPTION_REG
BANKSEL PORTB ;TEKRAR BANK0 A GEÇ
CLRF PORTB ;PORTB Yİ SIFIRLA
CLRF PORTA
MOVLW B'10000000'
MOVWF ADRES1 ;1.SATIR 1.HÜCRE
MOVLW B'11000000'
MOVWF ADRES2 ;2.SATIR 1.HÜCRE
;---------------------KOMUT GÖNDERME MAKROSU------------------------------------
KMT MACRO
CALL KISA_GECIKME
BCF RS
BSF E
NOP
BCF E
NOP
ENDM
;--------------------MESAJ GÖNDERME MAKROSU-------------------------------------
MSJ MACRO
CALL KISA_GECIKME
BSF RS
BSF E
NOP
BCF E
NOP
ENDM
;------------------KURSÖRÜ BAŞA AL------------------------------------------
MOVLW D'02'
MOVWF PORTB
KMT
;-----------------LCD'Yİ 4 BİT 2 SATIRA AYARLA, B'00101000'-----------------
CALL UZUN_GECIKME
MOVLW B'00000010' ;ÖNCE ÜST 4 BİTİ GÖNDER
MOVWF PORTB
KMT
MOVLW B'00001000' ;SONRA ALT 4 BİTİ
MOVWF PORTB
KMT
;------------------EKRANI AÇ VE KURSÖRÜ KAPAT-------------------------------------
CALL UZUN_GECIKME
CLRF PORTB ;ÜST 4 BİTİ GÖNDER
KMT
MOVLW B'00001100' ;ALT 4 BİTİ GÖNDER
MOVWF PORTB
KMT
;-----------------ARTIŞ SAĞA DOĞRU-----------------------------------------------------
CALL UZUN_GECIKME
CLRF PORTB ;ÜST 4 BİTİ GÖNDER
KMT
MOVLW B'00000110' ;ALT 4 BİTİ GÖNDER
MOVWF PORTB
KMT
;-----------------EKRANI TEMİZLE-------------------------------------------
TEMIZLE MACRO
CALL UZUN_GECIKME
CLRF PORTB ;ÜST 4 BİTİ GÖNDER
KMT
MOVLW B'00000001' ;ALT 4 BİTİ GÖNDER
MOVWF PORTB
KMT
CALL UZUN_GECIKME
ENDM
;-------------------ÖZEL KARAKTERİ CGRAM'E YÜKLE-------------------------------------
OZEL_KRKTR
CLRF KRKTR
MOVLW B'00000100' ;ÜST 4 BİTİ GÖNDER
MOVWF PORTB
KMT
CLRF PORTB ;ALT 4 BİTİ GÖNDER
KMT
KARAKTER
MOVF KRKTR,W
CALL KRKTR_TABLO1 ;TABLOYU ÇAĞIR
MOVWF TEMP ;KARAKTERİ DEĞİŞKENE AT
XORLW H'08' ;8 İLE XOR İŞLEMİ YAP
BTFSC STATUS,Z ;İŞLEM SONUCU 1 SE BASLA'YA GİT
GOTO BASLA
SWAPF TEMP,F ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
MOVF TEMP,W
MOVWF PORTB
MSJ
SWAPF TEMP,F ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
MOVF TEMP,W
MOVWF PORTB
MSJ
INCF KRKTR,F ;KRKTR DEĞİŞKENİNİ 1 ARTIR
GOTO KARAKTER
;-----------------BİRİNCİ MESAJI GÖNDER-------------------------------------------
BASLA
CALL ADRESE_GIT1
CLRF KRKTR
MSJ_GONDER
MOVF KRKTR,W
CALL MESAJ1 ;MESAJI ÇAĞIR
MOVWF TEMP ;KARAKTERİ DEĞİŞKENE AT
XORLW H'08' ;8 İLE XOR İŞLEMİ YAP
BTFSC STATUS,Z ;İŞLEM SONUCU 1 SE 2. MESAJI YAZ
GOTO M_DEVAM
SWAPF TEMP,F ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
MOVF TEMP,W
MOVWF PORTB
MSJ
SWAPF TEMP,F ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
MOVF TEMP,W
MOVWF PORTB
MSJ
INCF KRKTR,F ;KRKTR DEĞİŞKENİNİ 1 ARTIR
GOTO MSJ_GONDER
;----------------İKİNCİ MESAJI GÖNDER---------------------------------------------
M_DEVAM
CALL ADRESE_GIT2
CLRF KRKTR
MSJ_GONDER2
MOVF KRKTR,W
CALL MESAJ2 ;MESAJI ÇAĞIR
MOVWF TEMP ;KARAKTERİ DEĞİŞKENE AT
XORLW H'08' ;8 İLE XOR İŞLEMİ YAP
BTFSC STATUS,Z ;İŞLEM SONUCU 1 SE SONSUZ DÖNGÜYE GİR
GOTO KAYDIR
SWAPF TEMP,F ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
MOVF TEMP,W
MOVWF PORTB
MSJ
SWAPF TEMP,F ;DEĞİŞKENİN ALT 4 BİTİYLE ÜST 4 BİTİNİ ARALARINDA DEĞİŞTİR
MOVF TEMP,W
MOVWF PORTB
MSJ
INCF KRKTR,F ;KRKTR DEĞİŞKENİNİ 1 ARTIR
GOTO MSJ_GONDER2
;----------------------------------------------------------------------------------
MESAJ1
ADDWF PCL,F
DT "www.t-robot.info",8 ;Tırnak içindeki karakterleri ve 8 rakamını döndürür
MOVF PCL,W
RETURN
MESAJ2
ADDWF PCL,F
DT 0,"LCD UYGULAMASI",0,8 ;Tırnak içindeki karakterleri ve belirtilen rakamları sırasıyla döndürür
MOVF PCL,W
RETURN
;---------------------------ZİL ŞEKLİ-------------------------------------------------
KRKTR_TABLO1
ADDWF PCL,F
RETLW H'04'
RETLW H'0E'
RETLW H'0E'
RETLW H'0E'
RETLW H'1F'
RETLW H'00'
RETLW H'04'
RETLW 8
;----------------1.SATIRDA BELİRTİLEN ADRESE GİT-------------------------------------
ADRESE_GIT1
SWAPF ADRES1,F
MOVF ADRES1,W
MOVWF PORTB
KMT
SWAPF ADRES1,F
MOVF ADRES1,W
MOVWF PORTB
KMT
RETURN
;----------------2.SATIRDA BELİRTİLEN ADRESE GİT---------------------------
ADRESE_GIT2
SWAPF ADRES2,F
MOVF ADRES2,W
MOVWF PORTB
KMT |