新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用AT89C2051設(shè)計(jì)的多功能密碼鎖

用AT89C2051設(shè)計(jì)的多功能密碼鎖

作者: 時(shí)間:2011-01-27 來(lái)源:網(wǎng)絡(luò) 收藏
本站介紹一種由AT89C2051編程實(shí)現(xiàn)的控制電路,具有按鍵有效指示、輸入錯(cuò)誤、解碼有效指示、控制開(kāi)鎖、定時(shí)中斷、錯(cuò)誤報(bào)警、密碼修改等功能;8位10進(jìn)制密碼,保密好使用范圍廣,特適用家庭、賓館等場(chǎng)所。

一、硬件電路:


AT89C2051是與MCS-51系列兼容的一種高性能,具有2KB片內(nèi)ROM、256字節(jié)片內(nèi)RAM,可以不需擴(kuò)展外程序、數(shù)據(jù)存儲(chǔ)器,可滿(mǎn)足一般的程序需求,從硬件組成可以看出該密碼鎖有一個(gè)3X4陣列的鍵盤(pán),只需7條I/O引腳就可以了余下的I/O引腳可以開(kāi)發(fā)其他控制功能,如:控制空調(diào)、電燈、風(fēng)扇等。

二、功能實(shí)現(xiàn)

鍵盤(pán)掃描所用引腳P1.0-P1.6,其中P1.4-P1.6這3條引腳用于輸出掃描信號(hào),P1.0-P1.3這4條引腳用于檢測(cè)按鍵的狀態(tài)。P1.0-P1.6的狀態(tài)組成的鍵碼以及對(duì)應(yīng)按鍵如表1所列。


在程序執(zhí)行中,是先從P1.6送出“0”,再判別P1.3-P1.0的輸入。所以,實(shí)質(zhì)是在P1.6-P1.4送出“011”,接收P1.3-P1.0的輸入狀態(tài),這時(shí)判別8,9,A這4個(gè)鍵。接著,在P1.6-P1.4送出“101”,接收P1.3-P1.0的輸入,這時(shí)判別4,5,6,7這4個(gè)鍵。再而,在P1.6-P1.4送出“110”,接收P1.3-P1.0的輸入,這時(shí)判別0,1,2,3這4個(gè)鍵的狀態(tài)。
開(kāi)鎖電平UNLOCK的輸出腳P3.0,當(dāng)輸入的鍵正確時(shí)則在P3.0輸出開(kāi)鎖電平UNLOCK。
報(bào)警電平DANG輸出腳P3.1。在6次誤碼輸入的條件下,進(jìn)行報(bào)警。
LOCK控制引腳P3.2,90S之后停止輸入。
有效按鍵提示EFFI引腳P3.3。
錯(cuò)誤輸入警告WARN引腳P3.4。
另外,還有引腳5,4接石英振蕩器的XTAL2,XTAL1端,組成石英振蕩器電路,在圖1中沒(méi)有畫(huà)出。引腳1用于復(fù)位。

三、密碼鎖的控制程序

密碼鎖的控制程序由延時(shí)子程序、修改密碼子程序、掃描輸入子程序、時(shí)鐘中斷子程序及主程序組成。程序框圖如圖2所示。它對(duì)輸入的8位十進(jìn)制密碼進(jìn)行判別,如果輸入密碼正確,則可以直接開(kāi)鎖或修改密碼之后開(kāi)鎖。如果不正確,并且6次以上輸入不正確,則報(bào)警并封鎖輸入口。

1.主程序:
ORG 0H
SJMP START
ORG 0BH
SJMP INT
START ;初始化
MOV SP.#70H
SETB P3.0
SETB P3.1
SETB P3.2
SETB P3.3
MOV TMOD,#01H
MOV TL0,#00H
MOV TH0,#00H
SETB TR0
SETB ET0
SETB EA
MOV R2,#0FFH
MOV 3AH,#03H
MOV R3,#06H

PASSWORD:MOV R4,#08H ;設(shè)置初始密碼
MOV R0,#40H
MOV A,#07H
MOV @R0,A
INC R0
INC A
DJNZ R4,PASSWORD

DETPW: MOV R4,#08H ;輸入密碼
MOV R0,#30H

AGAIN: ACALL INPUT
MOV A,R7
CJ R7,#08H,IN
ACALL CHPSW ;修改密碼子程序
JMP GETPW

IN: MOV @R0,A
CLR P3.3 ;按鍵有效顯示
ACALL DELAY
SETB P3.3

COMP: MOV R4,#08H ;比較密碼
MOV R0,#30H

AGAI: MOV 50H,@R0
ADD R0,#010H
MOV A,@R0
SUB R0,#010H
CJNE A,50H,ONCEMORE
INC R0
DJNZ R4,AGA1
CLR P3.0

HERE: AJMP HERE

ONCEMORE:CLR P3.4 ;錯(cuò)誤輸入警告
ACALL DELAY
SETB P3.4
DJNZ R3,GETPW
CLR P3.1 ;6次錯(cuò)誤輸入報(bào)警
THERE: AJMP THERE

2.延時(shí)子程序
DELAY: MOV R5,#30H

DELAY1: MOV A,#0FFH

LOOOP: DEC A
JNZ LOOP
DJNZ R5,DELAY1
RET

3.修改密碼子程序
CHPSW: MOV R0,#40H

ANOTHER: ACALL INPUT
MOV A,R7
MOV @R0,A
INC R0
CLR P3.3 ;按鍵有效提示
ACALL DELAY
SETB P3.3
DJNZ R4,ANOTHER
RET

4.掃描鍵盤(pán)輸入子程序
INPUT: MOV R6,#02H
MOV R1,#40H

LOP: ACALL DELAY
MOV P1,#0FFH ;掃描碼
CLR P1.6
MOV A,P1
ANL A,#0FH ;檢驗(yàn)有否按鍵
CJNE A,#0FH,INKEY
MOV P1,#0FFH
CLR P1.5
MOV A,P1
ANL A,#0FH
CJNE AA,#0FH,INKEY
MOV P1,#0FFH
CLR P1,4
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,INKEY
SJMP LOP

INKEY: MOV @R1,P1
INC R1
DJNZ R6,LOP
DEC R1
MOV A,@R1
DEC R1
CJNE A,40H,INPUT
RET

5.時(shí)鐘中斷子程序
INT: PUSH ACC
MOV TMOD,#01H
MOV TL0,#00H
MOV TH0,#00H
SETB TR0
SETB ET0
SETB EA
DJNZ R2,CONT
CONTINUE
DJNA 3AH,CONT
CLR P3.2 ;時(shí)鐘中斷控制

STOP: AJMP STOP

CONT: POP ACC
RET1



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉