<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 能防止多次試探密碼的51單片機密碼鎖

能防止多次試探密碼的51單片機密碼鎖

作者: 時(shí)間:2011-12-28 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

很多行業(yè)的許多地方都需要,但普通容易被多次試探而破譯。本文給出了一種能防止多次試探密碼的設計方法,從而有效地克服了上述缺點(diǎn)。

2 硬件電路

圖1所示是筆者設計的一種密碼鎖電路。該密碼鎖主要是按照以下10條用戶(hù)要求進(jìn)行設計的:

(1)共8位密碼,每位的取值范圍為1~8。

(2)用戶(hù)可以自行設定和修改密碼。

(3)按每個(gè)密碼鍵時(shí)都有聲、光提示。

(4)若鍵入的8位開(kāi)鎖密碼不完全正確,則報警5秒鐘,以提醒他人注意。

(5)開(kāi)鎖密碼錯3次要報警10分鐘,報警期間輸入密碼無(wú)效,以防竊賊多次試探密碼。

(6)鍵入的8位開(kāi)鎖密碼完全正確才能開(kāi)鎖,開(kāi)鎖時(shí)要有1秒的提示音。

(7)電磁鎖的電磁線(xiàn)圈必須用脈沖驅動(dòng),每次通電時(shí)間不多于2秒,以防燒壞。

(8)密碼鍵盤(pán)上只允許有8個(gè)密碼按鍵和1個(gè)發(fā)光管。鎖內有備用電池,只有內部上電復位時(shí)才能設置或修改密碼,因此,僅在門(mén)外按鍵是不能修改或設置密碼的。

(9)密碼設定完畢后要有2秒的提示音。

(10)成本要比較低,硬件和軟件都要盡可能簡(jiǎn)潔可靠,易于批量生產(chǎn)。

根據總體要求分析,該密碼鎖電路所需要的I/O口線(xiàn)少于15個(gè),若設計得當,程序不會(huì )超過(guò)200條指令,所以可選擇質(zhì)優(yōu)價(jià)廉的AT89C1051/2051或者GMS1051/2051,而且不需要外接程序存儲器和數據存儲器及其它擴展部件。

在圖1所示電路中,P1口連接8個(gè)密碼按鍵AN1~AN8,開(kāi)鎖脈沖由P3.5輸出,報警和提示音由P3.7輸出。BL是用于報警與聲音提示的喇叭,發(fā)光管D1用于報警和提示,L是電磁鎖的電磁線(xiàn)圈。

3 軟件設計

圖2給出了該密碼鎖電路的軟件流程圖。圖中AA1~AA8以及START、SET、SAVE是程序中的標號,是為了理解程序而專(zhuān)門(mén)標在流程圖的對應位置的,分析程序時(shí)可以仔細對照參考。

3.1 存儲單元的分配

該密碼鎖中RAM存儲單元的分配方案如下:

31H~38H:依次存放8位設定的密碼,首位密碼存放在31H單元;

R0:指向密碼地址;

R2:已經(jīng)鍵入密碼的位數;

R3:存放允許的錯碼次數3與實(shí)際錯碼次數的差值;

R4至R7:延時(shí)用;

00H:錯碼標志位。

對于ROM存儲單元的分配,由于程序比較短,而且占用的存儲空間比較少,因此,在無(wú)特殊要求時(shí),可以從0030H單元(其它地址也可以)開(kāi)始存放主程序。

3.2 源程序

下面是該電子密碼鎖的軟件源程序代碼:

ORG 0000H

AJMP START

ORG 0030H

START:ACALL BP

MOV R0,#31H

MOV R2,#8

SET: MOV P1,#0FFH

MOV A,P1

CJNE A,#0FFH,L8

AJMP SET

L8: ACALL DELAY

CJNE A,#0FFH,SAVE

AJMP SET

SAVE: ACALL BP

MOV @R0A

INC R0

DJNZ R2,SET

MOV R5,#16

D2S: ACALL BP

DJNZ R5,D2S

MOV R0,#31H

MOV R3,#3

AA1: MOV R2,#8

AA2: MOV P1,#0FFH

MOV A,P1

CJNE A,#0FFH, L9

AJMP AA2

L9 ACALL DELAY

CJNE A,#0FFH,AA3

AJMP AA2

AA3: ACALL BP

CLR C

SUBB A, @R0

INC R0

CJNE A,#00H,AA4

AJMP AA5

AA4: SETB 00H

AA5: DJNZ R2,AA2

JB 00HAA6

CLR P3.5

L3 MOV R5,#8

ACALL BP

DJNZ R4,L3

MOV R3,#3

SETB P3.5

AJMP AA1

AA6: DJNZ R3,AA7

MOV R5,#24

L5: MOV R4,#200

L4: ACALL BP

DJNZ R4,L4

DJNZ R5,L5

MOV R3,#3

AA7: MOV R5,#40

ACALL BP

DJNZ R5,AA7

AA8: CLR 00H

AJMP AA1

BP: CLR P3.7

MOV R7,#250

L2: MOV R6,#124

L1: DJNZ R6,L1

CPL P3.7

DJNZ R7,L2

SETB P3.7

RET

DELAYMOV R7,#20

L7: MOV R6,#125

L6: DJNZ R6,L6

DJNZ R7,L7

RET

END

4 應用說(shuō)明

若按鍵AN1~AN7分別代表數碼1~7,按鍵AN0代表數碼8。在沒(méi)有鍵按下時(shí),P1.0~P1.7全是高電平1,若某個(gè)鍵被按下,相應的口線(xiàn)就變?yōu)榈碗娖剑?。假如設定的密碼是61234578,當按鍵AN6被按下時(shí),P1.6變?yōu)榈碗娖?,P1端口其余口線(xiàn)為高電平,此時(shí)從P1端口讀入的數值為10111111,存到31H單元的密碼值就是10111111,也就是BFH。依此類(lèi)推,存到32H至38H單元的密碼值分別是FDH、FBH、F7H、EFH、DFH、7FH、FEH。開(kāi)鎖時(shí)必須先按AN6,使從P1口讀入的第一個(gè)密碼值與31H單元存儲的設定值相同,再順序按AN1、AN2、AN3、AN4、AN5、AN7、AN0才能開(kāi)鎖。否則不能開(kāi)鎖,同時(shí)開(kāi)始報警。




關(guān)鍵詞: 單片機 密碼鎖 密碼

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>