真正的適用的電子密碼鎖
摘自張志良編著《80C51單片機實用教程—基于Keil c和Proteus》
由單片機控制的電子密碼鎖是一種智能化的電子產品,近年來得到較多應用。
⒈ 電路設計
電子密碼鎖電路如圖8-27所示,該電路具有EPROM存儲開鎖密碼、LCD顯示、4×4矩陣鍵盤輸入和聲光報警功能。 ⑴ 右半部分為4×4矩陣式鍵盤電路,與圖8-26電路相同。其中,K0~K9為密碼數字鍵,其余6鍵為功能鍵:K10為開鎖鍵Open,K11為確認鍵Enter,K12為設置鍵Set,K13為閉鎖鍵Close,K14為復位鍵Reset,K10為清除鍵Clear。
⑵ 左上部分為LED燈狀態顯示電路,VD0為閉鎖燈,VD1為開鎖燈,VD2為報警燈,分別由P2.3、P2.2、P2.1控制,開鎖燈VD1模擬開鎖機械動作。
⑶ 左中部分為LCD1602顯示屏電路,與圖8-10電路相同(控制端改為P2.5~P2.7)。
⑷ 左下部分為串行EPROM AT24C02存儲開鎖密碼電路,與圖7-28b電路相同(數據線和時鐘線分別為P3.6、P3.7)。
⑸ 蜂鳴器(警報發聲)接80C51P2.0。
⒉ 功能設計
⑴ 開機。閉鎖燈VD0亮(紅),表示閉鎖;其余燈滅。
⑵ 開鎖。
① 按開鎖鍵Open(鍵編號10),發按鍵嘟聲,LCD1602第1行顯示:inputpassword(輸入密碼)。
② 鍵入8位密碼,1602第2行依次顯示鍵入的8位隱形密碼:********。每鍵入一位密碼數字,發一次按鍵嘟聲。
③ 8位密碼輸入完畢,按確認鍵Enter(鍵編號11)后,系統核對密碼。
④ 若密碼正確,1602第1行顯示:password ok。艽a正確通過),閉鎖燈VD0滅(紅),開鎖燈VD1亮(綠),表示已開鎖。
⑤ 若鍵入密碼中途發現鍵入有誤,可按清除鍵Clear(鍵編號15)。按一次Clear鍵,已鍵入的隱形密碼“*”退一格。
⑥ 若鍵入8位密碼有誤,1602第1行顯示:error,try again(錯,再輸入一次),允許用戶輸錯3次(有error1、error2、error3提示)。
⑦ 若連續4次輸入錯誤,1602第1行顯示:inputfail!(輸入失。l出警車聲,報警燈VD2(黃)閃爍,中間不能打斷。
⑧ 開鎖操作有時限,從按下開鎖鍵后,60秒內未鍵入正確密碼,聲光報警。
⑨ 警車聲停后,仍可正常操作(為便于驗證操作演示,警車聲頻率升降循環3次,實用時可大大延長警車聲時間,用作鎖定功能)。
⑶ 設置。
本例初始密碼為12345678,由生產廠商在出廠前錄入串行EPROM AT24C02,用戶使用時,可設置新的密碼;或者用戶需要修改原用密碼,前提是先用原有效密碼打開密碼鎖。
① 按設置鍵Set(鍵編號12),1602第1行顯示:input password(輸入密碼)。
② 先按開鎖操作步驟和過程鍵入8位有效密碼,密碼驗證正確后,1602第1行顯示:password ok!(密碼正確通過),第2行顯示:set new password(設置新密碼)。
③ 若不能鍵入原有效密碼,則不能進入設置程序。并在第4次輸入錯誤后,聲光報警。
④ 系統提示設置新密碼后,鍵入8位新密碼,1602第2行依次顯示鍵入的8位隱形密碼:********。操作步驟和功能同開鎖過程。
⑤ 按Enter鍵后,1602第1行顯示:input again(再輸入一遍)。
⑥ 再次輸入第一次鍵入的8位新密碼,按Enter鍵后,若二次密碼相同,1602第1行顯示:new password ok!(新密碼設置完成)。
⑦ 若二次密碼不相同,1602第1行顯示:error,try again(錯,再輸入一次),允許用戶輸錯2次(有error1、error2提示)。若第3次輸入錯誤,1602第1行顯示:input fail!(輸入失。。
⑧ 設置操作有時限,從按下設置鍵后,60秒內未鍵入正確密碼,聲光報警。
⑷ 復位。用于用戶忘記密碼,無法開鎖時,由生產廠商高級維修人員將密碼鎖初始化。因此,復位操作的功能需要保密和隱蔽,并不對用戶和無關人員公開,以防被非法利用。
① 按復位鍵Reset(鍵編號14),1602及LED燈均無反應(對無關人員表示Reset鍵無作用),但若按下復位鍵后10秒內,不能進行正確的第二步操作,立刻聲光報警。
② 正確的第二步操作是在10秒內,按下清除鍵Clear(鍵編號15)。
③ 正確的第三步操作是鍵入8位復位密碼(81815151)。若依次鍵入密碼中,有一位出錯,1602第1行立刻顯示:error,并聲光報警。出錯后,須再次按復位鍵Reset,才能重新進入復位操作。
④ 正確鍵入8位復位密碼后,開鎖燈VD1亮(綠),1602第1行顯示:reset ok!(復位成功),第2行顯示:12345678(初始密碼)。
⑤ 復位操作進入第三步操作后,仍有時限要求,若30秒內未正確鍵入8位復位密碼,聲光報警。
⑸ 關閉。用于上述幾種操作完成后退出。
按閉鎖鍵Close(鍵編號13),停顯示、停嘟聲、滅燈。但在進入上述4種鍵操作程序或報警過程中,按閉鎖鍵無效,需待程序和報警執行完畢,才有效。
⒊ 程序設計
⑴ 程序流程圖
密碼鎖程序流程圖如圖8-28所示。
⑵ C51程序
C51程序見張志良編著《80C51單片機實用教程—基于Keil c和Proteus》(高等教育出版社ISBN 978-7-04-044532-9)P.332。
程序條例清晰,每條語句均有注釋,真實可靠可信可行,便于閱讀理解。
涉及程序如下:
void STAT ( ); //啟動信號子函數STAT,見7.4.2節
void STOP ( ); //終止信號子函數STOP,見7.4.2節
void ACK ( ); //發送應答A子函數ACK,見7.4.2節
void NACK ( ); //發送應答 子函數NACK,見 7.4.2節
bit CACK ( ); //檢查應答子函數CACK,見7.4.2節
void WR1B ( ); //寫一字節子函數WR1B,形參x:發送數據,見7.4.2節
unsigned char RD1B ( ); //讀一字節子函數RD1B,返回值:接收數據,見7.4.2節
void WRNB ( ); //寫AT24Cxx n字節子函數,見7.4.3節
void RDNB ( ); //讀AT24Cxx n字節子函數,見7.4.3節
void in1602 (unsigned char x); //并行數據輸入1602子函數,形參:輸入數據x,見例8-7
void init1602 ( ); //1602初始化設置子函數,見例8-7
void wr1602(unsigned char d[],a); //寫1602子函數,形參:寫入數組d[],地址a,見例8-7
unsignedchar k_scan ( ); //鍵掃描子函數,返回值:閉合鍵序號,見例8-11
void input ( ); //鍵入密碼子函數
void alm ( ); //警報子函數
void open (); //開鎖子函數
void set ( ); //設置子函數
void clos ( ); //閉鎖子函數
void reset ( ); //復位子函數
void main ( ); //主函數
void t1 ( ) interrupt 3 { } //T1中斷函數(50ms定時中斷)
void int0 ( ) interrupt 0{ } //外中斷0中斷函數(鍵閉合中斷)
void t0 ( ) interrupt 1 { } //T0中斷函數(警報聲中斷)
⒋Proteus仿真
⑴ 按實驗1所述Proteus仿真步驟,打開Proteus軟件,按表8-17選擇和放置元器件,并連接線路,畫出Proteus仿真電路如圖8-39所示。
⑵ 左鍵雙擊Proteus ISIS仿真電路中AT89C51,裝入Keil調試后自動生成的Hex文件。
⑶ 按8.3.3節電子密碼鎖功能設計要求,可逐條驗證開鎖、設置、復位、閉鎖、顯示、嘟聲、亮燈、出錯和超時報警等功能,此處不再重復。
4.jpg (461 Bytes, 下載次數: 34)
下載附件
2021-9-14 18:45 上傳
需要說明的是,本例初始密碼為12345678,已錄入電子密碼鎖仿真DSN文件隨帶的AT24C02片內ERROM 50H中,打開AT24C02片內Memory(左鍵單擊暫停按鈕“ ”,然后左鍵單擊主菜單“Debug”→“I2C Memory Internal Memory –U3”),可看到該AT24C02片內Memory 0x50~0x57區域已存有該初始密碼:01、02、03、04、05、06、07、08。設置新的密碼后,可再次打開AT24C02片內Memory,查看寫入AT24C02的新密碼。但是,關閉Proteus軟件時,并不能一并將新密碼留存,必須左鍵單擊主菜單“File”→“Save Design”保存,才能實際保存新密碼。這樣,下次啟動Proteus軟件,打開電子密碼鎖仿真DSN文件,隨帶的AT24C02片內ERROM 50H中,就是新密碼了,否則還是原密碼。
⑷ 終止程序運行,可按停止按鈕。
讀者可先下載Proteus ISIS仿真電路DSN文件和驅動程序Hex文件,在電腦上仿真驗證,確認有效后,再購買《80C51單片機實用教程—基于Keil c和Proteus》,查看程序。
歡迎質詢,張志良Email:zzlls@126.com,有信必復。
|