




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 PAGE27 / NUMPAGES27前言隨著電子技術的發(fā)展,具有防盜報警等功能的電子密碼鎖代替密碼量少、安全性差的機械式密碼鎖已是必然趨勢。電子密碼鎖與普通機械鎖相比,具有許多獨特的優(yōu)點:性好,防盜性強,可以不用鑰匙,記住密碼即可開鎖等。目前使用的電子密碼鎖大部分是基于單片機技術,以單片機為主要器件,其編碼器與解碼器的生成為軟件方式。下面就是現(xiàn)在主流電子密碼鎖:目前常見的遙控式電子防盜鎖主要有光遙控和無線電遙控兩類。鍵盤式電子密碼鎖從目前的技術水平和市場認可程度看,使用最為廣泛的是鍵盤式電子密碼鎖,該產(chǎn)品主要應用于保險箱、保險柜和金庫,還有一部分應用于保管箱和運鈔車??ㄊ诫娮臃辣I鎖使用各種
2、“卡”作為鑰匙的電子防盜鎖是當前最為活躍的產(chǎn)品,無論卡的種類如何多種多樣,按照輸入卡的操作方式,都可分為接觸式卡和非接 觸式卡兩大類。生物特征防盜鎖人的某些與生俱來的個性特征(如手、眼睛、聲音的 特征)幾乎不可重復,作為“鑰匙”就是唯一的(除非被逼迫或傷害)。因此,利用生物特征做密碼的電子防盜鎖,也特別適合金融業(yè)注重“驗明正身”的行業(yè)特點。人們生活水平的提高和安全意識的加強,對安全的要求也就越來越高。鎖自 古以來就是把守護門的鐵將軍,人們對它要求甚高,既要安全可靠的防盜,又要使用方便,這也是制鎖者長期以來研制的主題。隨著電子技術的發(fā)展,各類電子產(chǎn)品應運而生,電子密碼鎖就是其中之一。據(jù)有關資料介
3、紹,電子密碼鎖的研究從20世紀30年代就開始了,在一些特殊場所早就有所應用。這種鎖是通過鍵盤輸入一組密碼完成開鎖過程。研究這種鎖的初衷,就是為提高鎖的安全性。由于電子鎖的密鑰量(密碼 量)極大,可以與機械鎖配合使用,并且可以避免因鑰匙被仿制而留下安全隱患。電子鎖只需記住一組密碼,無需攜帶金屬鑰匙,免除了人們攜帶金屬鑰匙的煩惱,而被越來越多的人所欣賞。電子鎖的種類繁多,例如數(shù)碼鎖,指紋鎖,磁卡鎖,IC 卡鎖,生物鎖等。但較實用的還是按鍵式電子密碼鎖。20世紀80年代后,隨著電子鎖專用集成電路的出現(xiàn),電子鎖的體積縮小,可靠性提高,成本較高,是適合使用在安全性要求較高的場合,且需要有電源提供能量,使
4、用還局限在一定圍,難以普與,所以對它的研究一直沒有明顯進展。 目前,在西方發(fā)達國家,電子密碼鎖技術相對先進,種類齊全,電子密碼鎖已被 廣泛應用于智能門禁系統(tǒng)中,通過多種更加安全,更加可靠的技術實現(xiàn)大門的管理。 在我國電子鎖整體水平尚處于國際上70年代左右,電子密碼鎖的成本還很高,市場上仍以按鍵電子鎖為主,按鍵式和卡片鑰匙式電子鎖已引進國際先進水平,現(xiàn)國有幾個廠生產(chǎn)供應市場。但國自行研制開發(fā)的電子鎖,其市場結構尚未形成,應用還不廣泛。國的不少企業(yè)也引進了世界上先進的技術,發(fā)展前景非??捎^。希望通過不斷的努力,使電子密碼鎖在我國也能得到廣泛應用。作品功能:1、設置6位密碼,密碼通過鍵盤輸入,若密碼
5、正確,則將鎖打開。2、密碼可以由用戶自己修改設定(只支持6位密碼),鎖打開后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時候需要二次確認,以防止誤操作。3、報警、鎖定鍵盤功能。密碼輸入錯誤顯示器會出現(xiàn)錯誤提示,若密碼輸入錯誤次數(shù)超過3次,蜂鳴器報警并且鎖定鍵盤。4、AT24C02保存密碼,支持復位保存,掉電保存功能。二、按鍵說明按鍵定義圖如圖示:采用4X4鍵盤輸入,鍵盤對應名稱如下:1 2 3 A4 5 6 B7 8 9 C* 0 # D其中,09為數(shù)字鍵,用于輸入相應的密碼, *號鍵為取消當前操作#號鍵為確認D鍵為修改密碼 其它鍵無功能與定義三、操作說明:密碼鎖初始密碼為:000
6、000.開鎖:插上電源后,程序自動調(diào)入初始密碼,此時依次輸 入:000000,然后按#(確認)鍵,此時鎖會打開,可以看到顯示open,密碼鎖打開。退出并關鎖:按下*(取消)鍵,此時鎖關閉,所有輸入清除。修改密碼:在開鎖狀態(tài)下,再次輸入正確的密碼并按下#(確認)鍵,此時聽到兩聲提示,輸入新的六位密碼并按D(重設)鍵,再重復輸入一次新密碼并按D,會聽到兩聲提示音,表示重設密碼成功,部保存新密碼并存儲到AT24C02。(如兩次輸入的新密碼不一樣,則重設密碼失敗)。報警并鎖定鍵盤:當輸入密碼錯誤后,報警并鎖定鍵盤3秒,如3秒又有按鍵,3秒再啟動。當重置新密碼時,新密碼會保存于AT24C02存儲器里。四
7、、框圖與流程圖 1、系統(tǒng)結構框圖 AT89S52顯示模塊鍵盤輸入模塊報警電路復位電路開鎖電路密碼存儲模塊2、主程序設計流程圖初始化修改開鎖密碼正確 輸入舊密碼N原密碼一樣 Y開鎖出錯報警 N N Y設新密碼 返回3、鍵功能程序流程圖。 鍵功能程序鍵值=09?鍵值=開鎖?鍵值=確認?鍵值=設置? 返回密碼輸入程序確認程序設置程序開鎖程序YNYNYN YN4、開鎖程序流程圖LCD初始化按開鎖鍵輸入密碼確認程序開鎖N輸入密碼正確?報警程序開鎖成功返回Y5.電子密碼鎖原理圖程序(c語言)#include #include#define LCM_Data P0#define uchar unsigned
8、 char #define uint unsigned int#define w 6/定義密碼位數(shù)sbit lcd1602_rs=P25;sbit lcd1602_rw=P26;sbit lcd1602_en=P27;sbit Scl=P34;/24C02串行時鐘sbit Sda=P35;/24C02串行數(shù)據(jù)sbit ALAM = P21;/報警sbit KEY = P20;/開鎖sbit open_led=P22;/開鎖指示燈bit operation=0;/操作標志位bit pass=0;/密碼正確標志bit ReInputEn=0;/重置輸入充許標志bit s3_keydown=0;/3
9、秒按鍵標志位bit key_disable=0;/鎖定鍵盤標志unsigned char countt0,second;/t0中斷計數(shù)器,秒計數(shù)器void Delay5Ms(void);unsigned char code a=0 xFE,0 xFD,0 xFB,0 xF7; /控盤掃描控制表unsigned char code start_line= password: ;unsigned char code name = =Coded Lock=; /顯示名稱unsigned char code Correct = correct ;/輸入正確 unsigned char code Err
10、or = error ; /輸入錯誤unsigned char code codepass= pass ; unsigned char code LockOpen= open ;/OPENunsigned char code SetNew = SetNewWordEnable;unsigned char code Input = input: ;/INPUTunsigned char code ResetOK = ResetPasswordOK ;unsigned char code initword= Init password.;unsigned char code Er_try= err
11、or,try again!;unsigned char code again= input again ;unsigned char InputData6;/輸入密碼暫存區(qū)unsigned char CurrentPassword6=1,3,1,4,2,0; /當前密碼值unsigned char TempPassword6;unsigned char N=0;/密碼輸入位數(shù)記數(shù)unsigned char ErrorCont;/錯誤次數(shù)計數(shù)unsigned char CorrectCont;/正確輸入計數(shù)unsigned char ReInputCont; /重新輸入計數(shù)unsigned ch
12、ar code initpassword6=0,0,0,0,0,0;/=5ms延時=void Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/=400ms延時=void Delay400Ms(void) unsigned char TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=24C02=void mDelay(uint t) /延時 uchar i; while(t-) for(i=0;i12
13、5;i+) ; void Nop(void) /空操作 _nop_(); _nop_(); _nop_(); _nop_();/*起始條件*/void Start(void) Sda=1; Scl=1; Nop(); Sda=0; Nop(); /*停止條件*/void Stop(void) Sda=0; Scl=1; Nop(); Sda=1; Nop();/*應答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向應答位*/void NoAck(void) Sda=1; Nop(); Scl=1; Nop(); Scl=0; /*發(fā)送數(shù)據(jù)子
14、程序,Data為要求發(fā)送的數(shù)據(jù)*/void Send(uchar Data) uchar BitCounter=8; uchar temp; do temp=Data; Scl=0; Nop(); if(temp&0 x80)=0 x80) Sda=1; else Sda=0; Scl=1; temp=Data1; Data=temp; BitCounter-; while(BitCounter); Scl=0;/*讀一字節(jié)的數(shù)據(jù),并返回該字節(jié)值*/uchar Read(void) uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;doSc
15、l=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0 x01;elsetemp=temp&0 xfe;if(BitCounter-1)temp1=temp1;temp=temp1;BitCounter-;while(BitCounter);return(temp);void WrToROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;iNum;i+) Start(); Send(0 xa0); Ack(); Send(Address+i); Ack();
16、 Send(*(PData+i); Ack(); Stop(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i0;x-) for(y=110;y0;y-);/寫指令write_1602com(uchar )/*液晶寫入指令函數(shù)*lcd1602_rs=0;/數(shù)據(jù)/指令選擇置為指令lcd1602_rw=0; /讀寫選擇置為寫P0=;/送入數(shù)據(jù)delay(1);lcd1602_en=1;/拉高使能端,為制造有效的下降沿做準備dela
17、y(1);lcd1602_en=0;/en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令/寫數(shù)據(jù)write_1602dat(uchar dat)/*液晶寫入數(shù)據(jù)函數(shù)*lcd1602_rs=1;/數(shù)據(jù)/指令選擇置為數(shù)據(jù)lcd1602_rw=0; /讀寫選擇置為寫P0=dat;/送入數(shù)據(jù)delay(1);lcd1602_en=1; /en置高電平,為制造下降沿做準備delay(1);lcd1602_en=0; /en由高變低,產(chǎn)生下降沿,液晶執(zhí)行命令/初始化void lcd_init(void)write_1602com(0 x38);/設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù)write_
18、1602com(0 x0c);/開顯示不顯示光標write_1602com(0 x06);/整屏不移動,光標自動右移write_1602com(0 x01);/清顯示/=將按鍵值編碼為數(shù)值=unsigned char coding(unsigned char m) unsigned char k;switch(m)case (0 x18): k=1;break;case (0 x28): k=2;break;case (0 x48): k=3;break;case (0 x88): k=A;break;case (0 x14): k=4;break;case (0 x24): k=5;brea
19、k;case (0 x44): k=6;break;case (0 x84): k=B;break;case (0 x12): k=7;break;case (0 x22): k=8;break;case (0 x42): k=9;break;case (0 x82): k=C;break;case (0 x11): k=*;break;case (0 x21): k=0;break;case (0 x41): k=#;break;case (0 x81): k=D;break;return(k);/=按鍵檢測并返回按鍵值=unsigned char keynum(void) unsigned
20、 char row,col,i; P1=0 xf0; if(P1&0 xf0)!=0 xf0) Delay5Ms(); Delay5Ms(); if(P1&0 xf0)!=0 xf0) row=P10 xf0; /確定行線i=0;P1=ai; /精確定位while(i4) if(P1&0 xf0)!=0 xf0) col=(P1&0 xff); /確定列線 break; /已定位后提前退出 else i+; P1=ai; else return 0;while(P1&0 xf0)!=0 xf0);return (row|col); /行線與列線組合后返回 else return 0; /無鍵按
21、下時返回0/=一聲提示音,表示有效輸入=void OneAlam(void)ALAM=0;Delay5Ms(); ALAM=1;/=二聲提示音,表示操作成功=void TwoAlam(void)ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1;/=三聲提示音,表示錯誤=void ThreeAlam(void)ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1; Delay5Ms();ALAM=0;Delay5Ms(); ALAM=1;/=顯示
22、輸入的N個數(shù)字,用H代替以便隱藏=void DisplayOne(void)/DisplayOneChar(9+N,1,*);write_1602com(yi+5+N);write_1602dat(*);/=顯示提示輸入=void DisplayChar(void)unsigned char i;if(pass=1)/DisplayListChar(0,1,LockOpen);write_1602com(er);for(i=0;i16;i+)write_1602dat(LockOpeni);elseif(N=0)/DisplayListChar(0,1,Error);write_1602com
23、(er);for(i=0;i16;i+)write_1602dat(Errori);else/DisplayListChar(0,1,start_line);write_1602com(er);for(i=0;i16;i+)write_1602dat(start_linei);void DisplayInput(void)unsigned char i;if(CorrectCont=1)/DisplayListChar(0,0,Input);write_1602com(er);for(i=0;i16;i+)write_1602dat(Inputi);/=重置密碼=/=void ResetPas
24、sword(void)unsigned char i;unsigned char j;if(pass=0)pass=0;DisplayChar();ThreeAlam();else if(ReInputEn=1)if(N=6)ReInputCont+;if(ReInputCont=2)for(i=0;i6;)if(TempPasswordi=InputDatai)/將兩次輸入的新密碼作對比i+;else/DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j16;j+)write_1602dat(Errorj);ThreeAlam();/錯
25、誤提示pass=0;ReInputEn=0;/關閉重置功能,ReInputCont=0;DisplayChar();break; if(i=6)/DisplayListChar(0,1,ResetOK);write_1602com(er);for(j=0;j16;j+)write_1602dat(ResetOKj);TwoAlam();/操作成功提示 WrToROM(TempPassword,0,6);/將新密碼寫入24C02存儲ReInputEn=0;ReInputCont=0;CorrectCont=0;elseOneAlam();/DisplayListChar(0, 1, again)
26、; /顯示再次輸入一次write_1602com(er);for(j=0;j16;j+)write_1602dat(againj);for(i=0;i6;i+)TempPasswordi=InputDatai;/將第一次輸入的數(shù)據(jù)暫存起來N=0;/輸入數(shù)據(jù)位數(shù)計數(shù)器清零 /=輸入密碼錯誤超過三過,報警并鎖死鍵盤=void Alam_KeyUnable(void)P1=0 x00;ALAM=ALAM;Delay5Ms();/=取消所有操作=void Cancel(void)unsigned char i;unsigned char j;/DisplayListChar(0, 1, start_l
27、ine); write_1602com(er);for(j=0;j16;j+)write_1602dat(start_linej);TwoAlam();/提示音for(i=0;i6;i+)InputDatai=0;KEY=1;/關閉鎖ALAM=1;/報警關operation=0;/操作標志位清零pass=0;/密碼正確標志清零ReInputEn=0;/重置輸入充許標志清零ErrorCont=0;/密碼錯誤輸入次數(shù)清零CorrectCont=0;/密碼正確輸入次數(shù)清零ReInputCont=0;/重置密碼輸入次數(shù)清零 open_led=1;s3_keydown=0;key_disable=0;N
28、=0;/輸入位數(shù)計數(shù)器清零/=確認鍵,并通過相應標志位執(zhí)行相應功能=void Ensure(void)unsigned char i,j;RdFromROM(CurrentPassword,0,6); /從24C02里讀出存儲密碼 if(N=6) if(ReInputEn=0)/重置密碼功能未開啟for(i=0;i6;) if(CurrentPasswordi=InputDatai)i+;else ErrorCont+;if(ErrorCont=3)/錯誤輸入計數(shù)達三次時,報警并鎖定鍵盤write_1602com(er);for(i=0;i16;i+)write_1602dat(Errori)
29、;doAlam_KeyUnable();while(1);elseTR0=1;/開啟定時key_disable=1;/鎖定鍵盤pass=0;break;if(i=6)CorrectCont+;if(CorrectCont=1)/正確輸入計數(shù),當只有一次正確輸入時,開鎖,/DisplayListChar(0,1,LockOpen);write_1602com(er);for(j=0;j16;j+)write_1602dat(LockOpenj);TwoAlam();/操作成功提示音KEY=0;/開鎖pass=1;/置正確標志位TR0=1;/開啟定時open_led=0;/開鎖指示燈亮for(j=
30、0;j6;j+)/將輸入清除InputDatai=0;else/當兩次正確輸入時,開啟重置密碼功能/DisplayListChar(0,1,SetNew);write_1602com(er);for(j=0;j16;j+)write_1602dat(SetNewj);TwoAlam();/操作成功提示ReInputEn=1;/允許重置密碼輸入CorrectCont=0;/正確計數(shù)器清零 else/=當?shù)谝淮问褂没蛲浢艽a時可以用131420對其密碼初始化=if(InputData0=1)&(InputData1=3)&(InputData2=1)&(InputData3=4)&(InputDa
31、ta4=2)&(InputData5=0) WrToROM(initpassword,0,6); /強制將初始密碼寫入24C02存儲/DisplayListChar(0,1,initword);/顯示初始化密碼write_1602com(er);for(j=0;j16;j+)write_1602dat(initwordj);TwoAlam();Delay400Ms();TwoAlam();N=0;else/DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j16;j+)write_1602dat(Errorj); ThreeAlam();
32、/錯誤提示音pass=0;else/當已經(jīng)開啟重置密碼功能時,而按下開鎖鍵,/DisplayListChar(0,1,Er_try);write_1602com(er);for(j=0;j16;j+)write_1602dat(Er_tryj);ThreeAlam();else/DisplayListChar(0,1,Error);write_1602com(er);for(j=0;j16;j+)write_1602dat(Errorj); ThreeAlam();/錯誤提示音pass=0;N=0;/將輸入數(shù)據(jù)計數(shù)器清零,為下一次輸入作準備operation=1;/=主函數(shù)=void main
33、(void) unsigned char KEY,NUM;unsigned char i,j; P1=0 xFF; TMOD=0 x11; TL0=0 xB0; TH0=0 x3C; EA=1; ET0=1; TR0=0; Delay400Ms(); /啟動等待,等LCM講入工作狀態(tài) lcd_init(); /LCD初始化write_1602com(yi);/日歷顯示固定符號從第一行第0個位置之后開始顯示for(i=0;i16;i+)write_1602dat(namei);/向液晶屏寫日歷顯示的固定符號部分write_1602com(er);/時間顯示固定符號寫入位置,從第2個位置后開始顯示
34、for(i=0;i16;i+)write_1602dat(start_linei);/寫顯示時間固定符號,兩個冒號write_1602com(er+9);/設置光標位置write_1602com(0 x0f);/設置光標為閃爍 Delay5Ms(); /延時片刻(可不要) N=0;/初始化數(shù)據(jù)輸入位數(shù) while(1) if(key_disable=1)Alam_KeyUnable();elseALAM=1;/關報警KEY=keynum();if(KEY!=0)if(key_disable=1)second=0;elseNUM=coding(KEY);switch(NUM)case (A): ; break;case (B):; break;case (C): ; break;case (D): ResetPassword();break;/重新設置密碼case (*): Cancel();break;/取消當前輸入case (#): Ensure(); break; /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外檐保溫合同范本
- 廠房全租合同范本
- 勞務派遣合同范本南京
- 農(nóng)村煙酒供應合同范本
- 臺歷打孔合同范本
- 出售舊鋼骨架合同范本
- 前期物業(yè)管理合同范例
- 單位購買二手房合同范本
- 發(fā)票增額購銷合同范例
- 合股經(jīng)營學校合同范本
- CEO自戀及其經(jīng)濟后果研究:以格力電器為例
- 紅土鎳礦濕法冶煉技術綜述
- 六鑫伺服刀塔說明書LS系列
- 19.骨折術后內(nèi)固定取出臨床路徑
- 隧道開挖作業(yè)臺車計算書
- 水利水電工程金屬結構與機電設備安裝安全技術規(guī)程
- 腎內(nèi)科臨床診療規(guī)范(南方醫(yī)院)
- 珍愛生命 安全第一 中小學主題教育班會
- 二十八星宿(課堂PPT)
- OQC出貨檢驗報告
- 小學一年級硬筆書法入門.ppt
評論
0/150
提交評論