單片機電子密碼鎖的設計 密碼鎖是鎖的一種,開啟時用的是一系列的數字或符號。密碼鎖的密碼通常都只是排列而非真正的組合。部分密碼鎖只使用一個轉盤,把鎖內的數個碟片或凸輪轉動;亦有些密碼鎖是轉動一組數個刻有數字的撥輪圈,直接帶動鎖內部的機械。 1.實驗任務 根據設定好的密碼,採用二個按鍵實現密碼的輸入功能,當密碼輸入正確之後,鎖就打開,如果輸入的三次的密碼不正確,就鎖定按鍵3秒鐘,同時發現報警聲,直到沒有按鍵按下3種后,才打開按鍵鎖定功能;否則在3秒鐘內仍有按鍵按下,就重新鎖定按鍵3秒時奸哀報警。 2.電路原理圖 3.系統板上硬體連線 (1).把“單片機系統”區域中的P0.0/AD0用導線連接到“音頻放大模塊”區域中的SPK IN端子上; (2).把“音頻放大模塊”區域中的SPK OUT端子接喇叭和; (3).把“單片機系統”區域中的P2.0/A8-P2.7/A15用8芯排線連接到“四路靜態數碼顯示”區域中的任一個ABCDEFGH端子上; (4). 把“單片機系統“區域中的P1.0用導線連接到“八路發光二極體模塊”區域中的L1端子上; (5). 把“單片機系統”區域中的P3.6/WR、P3.7/RD用導線連接到“獨立式鍵盤”區域中的SP1和SP2端子上; 4.程序設計內容 (1). 密碼的設定,在此程序中密碼是固定在程序存儲器ROM中,假設預設的密碼為“12345”共5位密碼。 (2). 密碼的輸入問題: 由於採用兩個按鍵來完成密碼的輸入,那麼其中一個按鍵為功能鍵,另一個按鍵為數字鍵。在輸入過程中,首先輸入密碼的長度,接著根據密碼的長度輸入密碼的位數,直到所有長度的密碼都已經輸入完畢;或者輸入確認功能鍵之後,才能完成密碼的輸入過程。進入密碼的判斷比較處理狀態並給出相應的處理過程。 (3).按鍵禁止功能:初始化時,是允許按鍵輸入密碼,當有按鍵按下並開始進入按鍵識別狀態時,按鍵禁止功能被激活,但啟動的狀態在3次密碼輸入不正確的情況下發生的。 5.C語言源程序 #include unsigned char code ps[]={1,2,3,4,5}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; unsigned char pslen=9; unsigned char templen; unsigned char digit; unsigned char funcount; unsigned char digitcount; unsigned char psbuf[9]; bit cmpflag; bit hibitflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa; unsigned int bb; bit alarmflag; bit exchangeflag; unsigned int cc; unsigned int dd; bit okflag; unsigned char oka; unsigned char okb; void main(void) { unsigned char i,j; P2=dispcode[digitcount]; TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%6; TR0=1; ET0=1; EA=1; while(1) { if(cmpflag==0) { if(P3_6==0) //function key { for(i=10;i>0;i--) for(j=248;j>0;j--); if(P3_6==0) { if(hibitflag==0) { funcount++; if(funcount==pslen+2) { funcount=0; cmpflag=1; } P1=dispcode[funcount]; } else { second3=0; } while(P3_6==0); } } if(P3_7==0) //digit key { for(i=10;i>0;i--) for(j=248;j>0;j--); if(P3_7==0) { if(hibitflag==0) { digitcount++; if(digitcount==10) { digitcount=0; } P2=dispcode[digitcount]; if(funcount==1) { pslen=digitcount; templen=pslen; } else if(funcount>1) { psbuf[funcount-2]=digitcount; } } else { second3=0; } while(P3_7==0); } } } else { cmpflag=0; for(i=0;i { if(ps!=psbuf) { hibitflag=1; i=pslen; errorflag=1; rightflag=0; cmpflag=0; second3=0; goto a; } } cc=0; errorflag=0; rightflag=1; hibitflag=0; a: cmpflag=0; } } } void t0(void) interrupt 1 using 0 { TH0=(65536-500)/256; TL0=(65536-500)%6; if((errorflag==1) && (rightflag==0)) { bb++; if(bb==800) { bb=0; alarmflag=~alarmflag; } if(alarmflag==1) { P0_0=~P0_0; } aa++; if(aa==800) { aa=0; P0_1=~P0_1; } second3++; if(second3==6400) { second3=0; hibitflag=0; errorflag=0; rightflag=0; cmpflag=0; P0_1=1; alarmflag=0; bb=0; aa=0; } } if((errorflag==0) && (rightflag==1)) { P0_1=0; cc++; if(cc 電子密碼鎖的性能特點 1.保密性好: 編碼量多,遠遠大於彈子鎖。隨機開鎖成功率幾乎為零。 2.密碼可變: 用戶可以經常更改密碼,防止密碼被盜,同時也可以避免因人員的更替而使鎖的密級下降。 3.誤碼輸入保護: 當輸入密碼多次錯誤時,報警系統自動啟動。 4. 電子密碼鎖操作: 簡單易行,一學即會。 5. 干擾碼功能: 在輸入正確密碼前可輸入任意碼。 6. 安保功能: 如果連續輸錯4次密碼將會自動斷電3分鐘。 7. 緊急開啟功能: 出門時無需其他操作,只需一次的把手動作,可機械的開啟門,所以遇到火災等應急狀況下也迅速,安全的開啟門。 8. 入侵感應功能: 在門上鎖的狀態下,有人破鎖而入時,會發出強力的報警音。 9. 火災報警功能: 在室內如果溫度達到75°左右,將會發出強力的報警音,同時鎖會自動開啟。 10. 雙重鎖定功能: 外部強制鎖定,在內部不能開啟,適用於外出時,防止有人入侵。 內部強制鎖定,在外部不能開啟,讓您在家時更安心、安全。 11. 弱電提醒當電量不足時: 在啟動開門時,會有美妙的音樂提示您及時更換電池。 12. 自動上鎖功能: 採用全自動鎖芯,門關后6秒內自動上鎖,外出更加安全。 13. 外部顯示功能: 當密碼輸入錯誤,鎖舌沒正常鎖到位,室內反鎖,弱電等情況下,外部都有提示功能。 |