Konuyu Oyla:
  • Derecelendirme: 2.89/5 - 19 oy
  • 1
  • 2
  • 3
  • 4
  • 5
PIC007 - PIC16F84 İle Şifreli Kilit Uygulaması
#1

Uygulama alanı oldukça geniş olan şifreli kilitlereörnek deneysel amaçlı bir uygulama. Bu devre ile bir elektrikli kilitikumanda edebilir, bir lambayı veya herhangi bir yükü bir tuş takımı vebir şifre ile kontrol edebilirsiniz....

AÇIKLAMALAR:

PIC16F84 kullanılarak gerçekleştirilen bu uygulamada, 4 haneli bir şifreönceden belirlenmiş ve tuş takımından bu şifre girildiğinde roleye bağlıbir yükün çalıştırılması amaçlananmıştır.

Devre şöyle çalışır; İlk enerji verildiğinde kırmızı LED yanıktırve role kapalıdır. Doğru şifre girilinceye kadar devre bu durumda bekler. Tuştakımından, doğru şifre rakamları sıra ile tuşlanıp "BA"butonu (AÇ Butonu) tuşlandığında, role çeker ve YEŞİL LED yanar. Budurumun ardından herhangi bir tuşa basıldığında, role tekrar kapanırve kırmızı LED yanar.

Devre için deneysel amaçla hazırlanmış olan programkodu içerisinde, bir tuş takımının nasıl sürüleceğini, bir sayıdizisinin nasıl karşılatırılacağını bulabilirsiniz. Devre proteus 5.2ile hazırlanmıştır. Devreye ait dosyaları indirerek proteus 5.2 ilesimüle edebilirsiniz.

Devre için belirlenen şifre "1881" rakamlarıdır. Bu şifre değeriniaşağıdaki satırları değiştirerek, istediğiniz bir şifrebelirleyebilirsiniz.

	SIFRE1 EQU	D'1'
SIFRE2 EQU D'8'
SIFRE3 EQU D'8'
SIFRE4 EQU D'1'

Devrenin çalıştırılması için gerekli dosyalar pic0007.zip dosyası içerisindeyer almaktadır. Dosyayı indirmek için linke tıklayınız. (PIC0007.zip)

DEVRENİN AÇIK ŞEMASI (PROTEUS 5.2 ile çizilmiş ve simule edilmiştir.):



[Resim: ap30031ga2.gif]

DEVRENİN PROGRAMI (MPASM 5.2 ile derlemiştir ve denemiştir.):

;PIC16F84 ILE YAPILAN SIFRELI KILIT
;H.SERIMER 4/2002
DENEYSEL AMACLIDIR
;****************************************************************************
TANIMLAMALAR:
list p=16F84A ; DERLEYICIYE ISLEMCI TANITILIR
#include p16F84A.inc ; PIC16F84 TANIMLAMA DOSYASI

KEYB_DATA EQU H'0010'
KEYB_SCAN EQU H'0011'
SOFT_INT_TIMER1 EQU H'0012'
FONKSIYON EQU H'0013'
msb EQU H'0014'
lsb EQU H'0015'
SYSCON EQU H'0016'
M_TEMP0 EQU H'0017'
KEYCOUNT EQU H'0018'

KEY_BUFFER1 EQU H'0020'
KEY_BUFFER2 EQU H'0021'
KEY_BUFFER3 EQU H'0022'
KEY_BUFFER4 EQU H'0023'
KEY_BUFFER5 EQU H'0024'
KEY_BUFFER6 EQU H'0025'
KEY_BUFFER7 EQU H'0026'
KEY_BUFFER8 EQU H'0027'

; SIFRELI KILIT ICIN ISTEDIGINIZ 4 HANELI SIFREYI
; BURADA BELIRLEYIN
; SUAN SIFRE 1881 OLARAK TANIMLIDIR
SIFRE1 EQU D'1'
SIFRE2 EQU D'8'
SIFRE3 EQU D'8'
SIFRE4 EQU D'1'


;PORTB UCLARI
KEY_SCAN0 EQU H'0003'
KEY_SCAN1 EQU H'0002'
KEY_SCAN2 EQU H'0001'

;PORTA UCLARI
IRCODE EQU H'0000'
KIRMIZILED EQU H'0003'
YESILLED EQU H'0002'
ROLE EQU H'0001'
BUZZER EQU H'0004'

;SYSCON UCLARI
BUTON_BASILI EQU H'0000'
SIFRE_GECERLI EQU H'0001'
KILIT_DURUM EQU H'0002'


__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC


ORG H'0000'
GOTO BASLA

ORG H'0004'
GOTO INT_VECTOR

;****************************************************************************
;****************************************************************************
BEKLEME_DONGUSU:
NOP
clrwdt
NOP
GOTO BEKLEME_DONGUSU

;****************************************************************************
;****************************************************************************
ORG H'0010'
INT_VECTOR
;TIMER0 INTERRUPTU ?
;BORTB KEYPRESS?
GOTO BEKLEME_DONGUSU

;****************************************************************************
;****************************************************************************
BASLA:
CLRF SYSCON
CLRF KEYCOUNT

MOVLW H'FF'
MOVWF KEYB_DATA
MOVLW B'11111110'
MOVWF SOFT_INT_TIMER1

MOVLW B'11111110'
MOVWF KEYB_SCAN
CALL PORTLARI_AYARLA

ALGORITMA:
clrwdt
NOP
CALL TUS_DEGERI_HESAPLA

;KILIT DURUMU KONTROLU
BTFSC SYSCON,KILIT_DURUM
GOTO KILITDURUM1
GOTO KILITDURUM2
KILITDURUM1:
;KILITACIK
;KILIT ACIK KONUMDA ISE YESIL LED YAKILIR KIMIZI LED SONDURULUR
BSF PORTA,YESILLED
BCF PORTA,KIRMIZILED
BSF PORTA,ROLE
GOTO KILITDURUMSON
KILITDURUM2
;KILIT KAPALI:
;KILIT KAPALI KONUMDA ISE KIMIZI LED YAKILIR YESIL LED SONDURULUR
BSF PORTA,KIRMIZILED
BCF PORTA,YESILLED
BCF PORTA,ROLE
KILITDURUMSON:
;TEST ICIN

CALL SIFRE_KARSILASTIR

MOVFW KEYB_DATA
MOVWF M_TEMP0
MOVF M_TEMP0,W ;karsilatirilacak degisken onceden MTEMP'e yuklenmistir
XORLW D'11' ;W ile karsilastirilacak tamsayi xor'lanir
BTFSC STATUS,Z ;IF W=M_TEMP
CLRF KEYCOUNT

goto ALGORITMA

;****************************************************************************
;****************************************************************************
TUS_DEGERI_HESAPLA:
; MOVLW H'FF'
MOVFW KEYB_DATA
MOVWF M_TEMP0

;1.sutun 1,4,7,bk
BCF PORTB,KEY_SCAN0
BSF PORTB,KEY_SCAN1
BSF PORTB,KEY_SCAN2
CALL DLY_1MS ; BUTON TEKPI SURESI ICIN 1mS BEKLENIR
T_D_H_1:
BTFSC PORTB,4
GOTO T_D_H_4
MOVLW D'1'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_4:
BTFSC PORTB,5
GOTO T_D_H_7
MOVLW D'4'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_7:
BTFSC PORTB,6
GOTO T_D_H_K
MOVLW D'7'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_K:
BTFSC PORTB,7
GOTO T_D_H_1SON
MOVLW D'10'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_1SON:
;2.sutun 2,5,8,0
BSF PORTB,KEY_SCAN0
BCF PORTB,KEY_SCAN1
BSF PORTB,KEY_SCAN2
CALL DLY_1MS ; BUTON TEKPI SURESI ICIN 1mS BEKLENIR

T_D_H_2:
BTFSC PORTB,4
GOTO T_D_H_5
MOVLW D'2'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_5:
BTFSC PORTB,5
GOTO T_D_H_8
MOVLW D'5'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_8:
BTFSC PORTB,6
GOTO T_D_H_0
MOVLW D'8'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_0:
BTFSC PORTB,7
GOTO T_D_H_2SON
MOVLW D'0'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_2SON:
;3.sutun 3,6,9,ba
BSF PORTB,KEY_SCAN0
BSF PORTB,KEY_SCAN1
BCF PORTB,KEY_SCAN2
CALL DLY_1MS ; BUTON TEKPI SURESI ICIN 1mS BEKLENIR
T_D_H_3:
BTFSC PORTB,4
GOTO T_D_H_6
MOVLW D'3'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_6:
BTFSC PORTB,5
GOTO T_D_H_9
MOVLW D'6'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_9:
BTFSC PORTB,6
GOTO T_D_H_A
MOVLW D'9'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI

T_D_H_A:
BTFSC PORTB,7
GOTO T_D_H_3SON
MOVLW D'11'
MOVWF KEYB_DATA
GOTO T_D_H_TUSABASILDI
T_D_H_3SON:


;BUTON BASILI KALDI ISE SON TUS HAFIZADA BEKLETILIR
;DEGILSE FF DEGERI VERILIR
T_D_H_BT0:
BTFSC SYSCON,BUTON_BASILI
GOTO T_D_H_BT1
GOTO T_D_H_BT2
T_D_H_BT1:
MOVFW M_TEMP0
MOVWF KEYB_DATA
GOTO T_D_H_BT3
T_D_H_BT2:
MOVLW H'FF'
MOVWF KEYB_DATA
T_D_H_BT3:

T_D_H_TUSYOK:
BCF SYSCON,BUTON_BASILI
BCF PORTA,KIRMIZILED
GOTO T_D_H_SON

T_D_H_TUSABASILDI:
BTFSS SYSCON,BUTON_BASILI
CALL KEY_BUFFER_TAZELE
NOP

BSF SYSCON,BUTON_BASILI
BSF PORTA,KIRMIZILED

T_D_H_SON:
;TUS TARAMA KAPALI
BSF PORTB,KEY_SCAN0
BSF PORTB,KEY_SCAN1
BSF PORTB,KEY_SCAN2
RETURN
;****************************************************************************
KEY_BUFFER_TAZELE:
INCF KEYCOUNT
MOVFW KEY_BUFFER2
MOVWF KEY_BUFFER1

MOVFW KEY_BUFFER3
MOVWF KEY_BUFFER2

MOVFW KEY_BUFFER4
MOVWF KEY_BUFFER3

MOVFW KEY_BUFFER5
MOVWF KEY_BUFFER4

MOVFW KEYB_DATA
MOVWF KEY_BUFFER5

RETURN
;****************************************************************************
;****************************************************************************
SIFRE_KARSILASTIR:
S_K1:
MOVFW KEY_BUFFER1
MOVWF M_TEMP0
MOVF M_TEMP0,W ;karsilatirilacak degisken onceden MTEMP'e yuklenmistir
XORLW SIFRE1 ;W ile karsilastirilacak tamsayi xor'lanir
BTFSS STATUS,Z ;IF W=M_TEMP
GOTO S_K_YANLIS ;M_TEMP != 3 else SATIR_1 den sonraki islemler
S_K2:
MOVFW KEY_BUFFER2
MOVWF M_TEMP0
MOVF M_TEMP0,W
XORLW SIFRE2
BTFSS STATUS,Z
GOTO S_K_YANLIS
S_K3:
MOVFW KEY_BUFFER3
MOVWF M_TEMP0
MOVF M_TEMP0,W
XORLW SIFRE3
BTFSS STATUS,Z
GOTO S_K_YANLIS
S_K4:
MOVFW KEY_BUFFER4
MOVWF M_TEMP0
MOVF M_TEMP0,W
XORLW SIFRE4
BTFSS STATUS,Z
GOTO S_K_YANLIS
S_K5:
MOVFW KEY_BUFFER5
MOVWF M_TEMP0
MOVF M_TEMP0,W
XORLW D'11'
BTFSS STATUS,Z
GOTO S_K_YANLIS

S_K_DOGRU:
BSF SYSCON,KILIT_DURUM
GOTO S_K_SON
S_K_YANLIS:
BCF SYSCON,KILIT_DURUM

S_K_SON:
RETURN
;****************************************************************************
;PIC0007 SIFRELI KILIT ICIN PORT AYARLARI
;****************************************************************************
PORTLARI_AYARLA:
CLRF PORTB ; RESET portb
CLRF PORTA ; RESET portA

BSF STATUS, RP0 ; BANK 1 GECILIR
MOVLW B'11110001' ; RB0-7=CIKIS
MOVWF TRISB
MOVLW B'00010000' ; RA0-5=GIRIS
MOVWF TRISA
bcf OPTION_REG,NOT_RBPU ;PORTB pull-up
BCF STATUS, RP0 ; BANK 0 GECILIR
RETURN
;****************************************************************************
; 4MHz CLOCK ICIN BEKLETME RUTINLERI
;****************************************************************************
BEKLET_100MS:
DLY_100MS ;YAKLASIK 100 MILI SANIYE
CLRWDT
movlw D'200'
movwf msb
GOTO DLY1
DLY_10MS ;YAKLASIK 10 MILI SANIYE
CLRWDT
movlw D'20'
movwf msb
GOTO DLY1

DLY_1MS ;YAKLASIK 1 MILI SANIYE
CLRWDT
movlw D'2'
movwf msb
GOTO DLY1
DLY1
movlw D'168'
movwf lsb
DLY2 ;YAKLASIK 3 MICRO SANIYE
decfsz lsb,F ;1 INS
goto DLY2 ;2 INS
decfsz msb,F ;1 INS
goto DLY1 ;2 INS
RETURN


org h'03ff'
end




Cevapla

Konu Araçları
Konuyu Paylaş :  
Konunun Linki :  
BBKodu :  
Konu Araçları :

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi