Teknikim

Üye Girişi

Önemli! Foruma yazılmayan sorulara cevap verilmeyecektir. Lütfen sorularınızı foruma yazın!
PIC Uygulamaları 9-LCD'ye Özel Karakter Yazdırma
 

Yazan: Tuna BULUT, Tarih: 25-06-2008 11:35

Okunma Sayısı : 924

Beğenilme : 15

Yayınlama yeri : Dersler, PIC Dersleri

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

            SWAPF   ADRES2,F

            MOVF    ADRES2,W

            MOVWF   PORTB

            KMT

            RETURN

KAYDIR

            INCF    ADRES1,F

            MOVF    ADRES1,W

            ANDLW   B'10001111'

            MOVWF   ADRES1

            INCF    ADRES2,F

            MOVF    ADRES2,W

            ANDLW   B'11001111'

            MOVWF   ADRES2

            CALL    UPUZUN_GECIKME

            CALL    UPUZUN_GECIKME

            CALL    UPUZUN_GECIKME

            TEMIZLE

            GOTO     BASLA

;-------------------195 MS'LİK GECIKME-----------------------------------

UPUZUN_GECIKME

            MOVLW  H'FF'

            MOVWF   SAYAC1

DONGU4

            MOVLW   H'FF'

            MOVWF   SAYAC2

DONGU5

            DECFSZ  SAYAC2,F

            GOTO    DONGU5     

            DECFSZ  SAYAC1,F

            GOTO    DONGU4

            RETURN

;-------------------25 MS'LİK GECIKME-----------------------------------

UZUN_GECIKME

            MOVLW   H'FF'

            MOVWF   SAYAC1

DONGU1

            MOVLW   D'33'

            MOVWF   SAYAC2

DONGU2

            DECFSZ  SAYAC2,F

            GOTO    DONGU2

            DECFSZ  SAYAC1,F

            GOTO    DONGU1

            RETURN

;------------------255 US'LİK GECİKME-----------------------------------

KISA_GECIKME

            MOVLW   H'FF'

            MOVWF   SAYAC1

DONGU3

            DECFSZ  SAYAC1,F

            GOTO    DONGU3

            RETURN

            END



   
Beğenilme
E-mail olarak gönder
İlgili makaleler
Teknikim'e kaydet

Okuyucu yorumları  RSS feed Yorum
 

Ortalama Üye Değerlendirmesi

   (0 Oylama)

 


Yorumunuzu ekleyin
Sadece kayitli kullanicilar bir Makaleyi yorumlayabilir. Lütfen ücretsiz üye olun veya giriş yapın.

Gönderilen yeni yorum yok



mXcomment 1.0.8 © 2007-2009 - visualclinic.fr
License Creative Commons - Some rights reserved