Jdi na obsah Jdi na menu
Reklama
Založte webové stránky zdarma - eStránky.cz
 


Kódový zámek s PIC16F84A


Tento kódový zámek sem udělal kvůli tomu, když jdu ze školy a zapomenu si klíče, tak čekam před barákem, ono by se to dalo přelízt, ale to je jedno. A také když něco dělam v dílně nebo na PC a zazvoní návšěva (babička děda) , musel bych seběhnout schody dolu, otevřít jim a pak poslouchat tys nám ale vyrost..... :-) A taky když táta chodí k sousedovi, dělají v garáži auta apod, přebíhaji knám a zase knim, to by si táta musel nosit klíče, je jednoduší naklepat kód, zámek zavrčí a jeto. Nic složitýho.

Ale teď už k samotnému zapojení.
Srdce tohoto zámku je mikroprocesor PIC16F84A, dá se běžně sehnat. Napájení 5V je stabilizováno stabilizátorem 7805 , jako oscilátor je použit odpor a kondenzátor, krystal je na to zbytečný. U toho odporu budete muset experimentovat, už nevim jakej sem tam dával, a rozebírat to opravdu neudu :-) ale měl by se pohybovat kolem 10k. Na port B je připojena klávesnice, na portu A je tranzistor, který spíná relé, potom LED diody, červená na signalizaci špatně zadaného kódu, zelená na otevření zámku a bílá na podsvícení klávesnice. Dále je připojen piezo reproduktorek, které při mačkání tlačítek pípá a když se zadá špatný kód, tak asi 3 vteřiny pípne. Kmitočet a délka pípání se nastaví rovnou v procesoru.


Soubory DPS do eaglu ke stažení zde




Obrazek

Schéma


Obrazek

Takhle to dopadlo


Obrazek

Klávesnice


Obrazek

Podsvícení



Obrazek

Otevřeno





Obrazek

Špatně!! :-)



Obrazek

Celek


Obrazek




Obrazek

Zezadu




Program pro PIC16F84A v .asm

___________________________________________________________________________


#include p16f84a.inc

__config _RC_OSC & _WDT_OFF

;piny, které vedou na klávesnici -> s1 až s3 jsou sloupce, r1 až r4 jsou řádky na portu B
s1 equ 2
s2 equ 1
s3 equ 0
r1 equ 6
r2 equ 5
r3 equ 4
r4 equ 3
;číslice kódu
c1 equ 1
c2 equ 2
c3 equ 3
c4 equ 4
c5 equ 0x0a

;registry, do kterých se ukládá kód při zadávání
p1 equ 0x0c
p2 equ 0x0d
p3 equ 0x0e
p4 equ 0x0f
p5 equ 0x1a

;výstup pro piezo na portu B
piezo equ 7

;zámek na portu A
rele equ 0

;časovače pro piezo
cas0 equ 0x10
cas1 equ 0x11

;časovače pro zámek
cas2 equ 0x12
cas3 equ 0x13
cas4 equ 0x14

;flagy
flag equ 0x15
flag0 equ 0 ;začalo se zadávat číslo

;výstup pro LED
LED_chyba equ 2
LED_rele equ 3
LED_podsvit equ 1

org 0
clrf INTCON
bsf STATUS, RP0

bsf TRISB, r1
bsf TRISB, r2
bsf TRISB, r3
bsf TRISB, r4
bcf TRISB, s1
bcf TRISB, s2
bcf TRISB, s3
bcf TRISB, piezo
bcf OPTION_REG, 7 ;aktivace pull-up odporů na portu B

bcf TRISA, rele
bcf TRISA, LED_chyba
bcf TRISA, LED_rele
bcf TRISA, LED_podsvit
bcf STATUS, RP0

bcf PORTA, rele
bcf PORTA, LED_chyba
bcf PORTA, LED_rele
bcf PORTA, LED_podsvit

clrf cas0
clrf cas1
clrf cas2
clrf cas3

BEGIN
bcf PORTA, LED_podsvit
bcf flag, flag0
call BZUCAK

call DEJCISLO
movwf p1
call BZUCAK
bsf flag, flag0
bsf PORTA, LED_podsvit

call DEJCISLO
movwf p2
call BZUCAK

call DEJCISLO
movwf p3
call BZUCAK

call DEJCISLO
movwf p4
call BZUCAK

call DEJCISLO
movwf p5
call BZUCAK

movf p1, W
xorlw c1
btfss STATUS, Z
goto CHYBA

movf p2, W
xorlw c2
btfss STATUS, Z
goto CHYBA

movf p3, W
xorlw c3
btfss STATUS, Z
goto CHYBA

movf p4, W
xorlw c4
btfss STATUS, Z
goto CHYBA

movf p5, W
xorlw c5
btfss STATUS, Z
goto CHYBA

call ZAMEK
goto BEGIN

DEJCISLO


bcf PORTB, s1
bcf PORTB, s2
bcf PORTB, s3

DEJCISLO1
btfss PORTB, r1
goto DEJCISLO1
btfss PORTB, r2
goto DEJCISLO1
btfss PORTB, r3
goto DEJCISLO1
btfss PORTB, r4
goto DEJCISLO1

movlw D'4'
movwf cas2
clrf cas3
clrf cas4

DEJCISLO2
bcf PORTB, s1
bsf PORTB, s2
bsf PORTB, s3
btfss PORTB, r1
retlw 7
btfss PORTB, r2
retlw 4
btfss PORTB, r3
retlw 1
btfss PORTB, r4
retlw 0x0a

bsf PORTB, s1
bcf PORTB, s2
bsf PORTB, s3
btfss PORTB, r1
retlw 8
btfss PORTB, r2
retlw 5
btfss PORTB, r3
retlw 2
btfss PORTB, r4
retlw 0

bsf PORTB, s1
bsf PORTB, s2
bcf PORTB, s3
btfss PORTB, r1
retlw 9
btfss PORTB, r2
retlw 6
btfss PORTB, r3
retlw 3
btfss PORTB, r4
; retlw 0x0b
goto BEGIN

btfss flag, flag0
goto DEJCISLO2
decfsz cas4
goto DEJCISLO2
decfsz cas3
goto DEJCISLO2
decfsz cas2
goto DEJCISLO2

goto BEGIN


ZAMEK
movlw D'30'
movwf cas2
bsf PORTA, rele
bsf PORTA, LED_rele

ZAMEK1
decfsz cas4
goto ZAMEK1
decfsz cas3
goto ZAMEK1
decfsz cas2
goto ZAMEK1
bcf PORTA, rele
bcf PORTA, LED_rele

return

BZUCAK

bsf PORTB, piezo
BZUCAK1
decfsz cas0, 1
goto BZUCAK1

bcf PORTB, piezo
BZUCAK2
decfsz cas0, 1
goto BZUCAK2

decfsz cas1, 1
goto BZUCAK

return


CHYBA
bsf PORTA, LED_chyba
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
call BZUCAK
bcf PORTA, LED_chyba
goto BEGIN

END


 

Komentáře

Přidat komentář

Přehled komentářů

DPS

(Lukis, 17. 2. 2009 0:40)

Dal sem zde odkaz na DPS do eaglu

nazdar

(magor-ghost, 16. 2. 2009 22:42)

Zdarvim,
a nebyl by třeba soubor přímo z eagle, dík