|
一種能防止多次試探密碼的基于單片機的密碼鎖設計方案,根據用戶的10條總體要求,給出了該單片機密碼鎖的硬件電路和軟件程序,同時給出了單片機型號的選擇、硬件設計、軟件流程圖、單片機存儲單元的分配、匯編語言源程序及詳細注釋等內容。很多行業的許多地方都需要密碼鎖,但普通密碼鎖的密碼容易被多次試探而破譯。本文給出了一種能防止多次試探密碼的密碼鎖設計方法,從而有效地克服了上述缺點。
硬件電路 圖1所示是筆者設計的一種密碼鎖電路。該密碼鎖主要 是以下10條特點: (1)總共可以設置8位密碼,每位的取值范圍為1~8。 (2)用戶可以自行設定和修改密碼。 (3)按每個密碼鍵時都有聲音提示。 (4)若鍵入的8位開鎖密碼不完全正確,則報警5秒鐘,以提醒他人注意。 (5)開鎖密碼連續錯3次要報警1分鐘,報警期間輸入密碼無效,以防竊賊多次試探密碼。 (6)鍵入的8位開鎖密碼完全正確才能開鎖,開鎖時要有1秒的提示音。 (7)電磁鎖的電磁線圈每次通電5秒,然后恢復初態。 (8)密碼鍵盤上只允許有8個密碼按鍵。鎖內有備用電池,只有內部上電復位時才能設置或修改密碼,因此,僅在門外按鍵是不能修改或設置密碼的。
(9)密碼設定完畢后要有2秒的提示音。 (10)成本低,硬件和軟件都很簡潔可靠,易于批量生產。 根據總體要求分析,該密碼鎖電路所需要的I/O口線少于15個,若設計得當,程序不會超過200條指令,所以可選擇質優價廉的AT89C1051/2051或者GMS1051/2051,而且不需要外接程序存儲器和數據存儲器及其它擴展部件,所以成本很經濟。  圖1 電磁鎖原理圖 在圖1所示電路中,P1口連接8個密碼按鍵AN1~AN8,開鎖 信號由P3.2輸出,報警和提示音由P3.7輸出。BL是用于報警與聲音提示的喇叭,K是繼電器控制電磁線圈。
軟件設計 圖2給出了該單片機密碼鎖電路的軟件流程圖。圖中AA1~AA8以及START、SET、SAVE是程序中的標號,是為了理解程序而專門標在流程圖的對應位置的,分析程序時可以仔細對照參考。 3.1 存儲單元的分配 該密碼鎖中RAM存儲單元的分配方案如下: 31H~38H:依次存放8位設定的密碼,首位密碼存放在31H單元; R0:指向密碼地址; R2:已經鍵入密碼的位數; R3:存放允許的錯碼次數3與實際錯碼次數的差值; R4至R7:延時用; 00H:錯碼標志位。 對于ROM存儲單元的分配,由于程序比較短,而且占用的存儲空間比較少,因此,在無特殊要求時,可以從0030H單元(其它地址也可以)開始存放主程序。
 圖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 @R0A 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 00HAA6 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 DELAYMOV R7,#20 L7: MOV R6,#125 L6: DJNZ R6,L6 DJNZ R7,L7 RET END
應用說明 若按鍵AN1~AN7分別代表數碼1~7,按鍵AN0代表數碼8。在沒有鍵按下時,P1.0~P1.7全是高電平1,若某個鍵被按下,相應的口線就變為低電平0。假如設定的密碼是61234578,當按鍵AN6被按下時,P1.6變為低電平,P1端口其余口線為高電平,此時從P1端口讀入的數值為10111111,存到31H單元的密碼值就是10111111,也就是BFH。依此類推,存到32H至38H單元的密碼值分別是FDH、FBH、F7H、EFH、DFH、7FH、FEH。開鎖時必須先按AN6,使從P1口讀入的第一個密碼值與31H單元存儲的設定值相同,再順序按AN1、AN2、AN3、AN4、AN5、AN7、AN0才能開鎖。否則不能開鎖,同時開始報警。 東哥單片機學習網商城,提供單片機學習開發板,單片機實驗板,單片機編程器,仿真器,無線發射接收控制模塊,電子元器件。 購物流程:登陸 東哥單片機學習網商城 http://shop.picavr.com/ ——注冊會員——確定您購買的產品——填寫完整的收貨信息——銀行匯款或網上銀行轉賬——填寫匯款確認——通知我們發貨電話:13512767404 ——等待收貨,或者直接電話直接電話產品咨詢。 |