張 萍, 馬樹軍, 史可福
(銀川能源學院,寧夏 銀川 750105)
隨著科技的飛速發(fā)展,傳統(tǒng)的安全防盜系統(tǒng)面臨極大的挑戰(zhàn),密碼鎖被廣泛應用于各種場所。又因為指紋具有惟一性,且終身不變、隨身攜帶[1],還方便管理,省去了使用卡、鑰匙開鎖的麻煩,因此成為了密碼鎖的首選[2]。加之當今時代單片機控制器技術的發(fā)展非常成熟,其控制性能穩(wěn)定、可靠,使得電子產品的應用幾乎與單片機的控制密不可分。本項目是在學生學習了單片機基礎知識及相應的實驗以后,提出申請立項的,并希望項目成果能應用于實際生活中。項目組結合指紋識別技術和單片機原理,設計并實現了一款指紋電子密碼鎖,可以將其應用于實驗室的門禁系統(tǒng),使得實驗室的管理更加安全、可靠,也可以用于學生宿舍的門禁系統(tǒng),無需反復換鎖、配鑰匙,節(jié)省開支、節(jié)約資源。
指紋是人類手指上的條狀紋路,指紋識別技術就是將一個具體的人同他的指紋對應起來,通過把他的指紋和預先采集保存起來的指紋進行比較,就能夠驗證他的真實身份[3]。它主要利用特殊的光電轉換設備及圖像處理技術,通過對指紋進行采集及進一步的分析和比對,從而迅速、準確地鑒別出個人身份。
指紋識別系統(tǒng)主要包括對指紋圖像的采集與處理、特征數據的提取與保存、特征值的比對與匹配等過程。具體操作步驟是:首先,通過指紋采集設備采集到人體指紋的圖像,之后對原始圖像進行初步的處理,使之更清晰[4];然后,利用指紋辨識軟件建立指紋的數字表示也就是指紋的特征數據,并將其保存起來;最后,利用計算機進行模糊比較,將當前指紋與先前采集保存起來的兩個指紋的模板進行比較并計算出相似度,最終得到兩個指紋的匹配結果[5-6]。
本項目是一個基于51單片機的指紋電子密碼鎖系統(tǒng)的設計,選用STC89C52單片機作為主控芯片,利用串口通信的方式實時地接收并處理來自指紋模塊與鍵盤模塊傳送過來的數據,并在液晶顯示的提示下進行操作,從而實現開鎖。系統(tǒng)包含有兩種模式,即一般模式和管理員模式。在一般模式下,分為兩種情況:若是指紋識別成功,則指示燈亮、繼電器動作開鎖,人員能夠進入;反之,則人員不能進入。管理員模式下,主要完成指紋的錄入與刪除、緊急開鎖及密碼修改等功能:錄入指紋時,指紋模塊綠燈點亮,把手指放到指紋頭上,錄入同一個手指的指紋兩次,正確后液晶顯示“指紋采集成功”;刪除指紋時,液晶顯示“輸入刪去的指紋號”,輸入后按確認鍵完成指定指紋的刪除,同時液晶顯示“刪指紋號成功”;非正常的情況下,比如指紋模塊識別不了,亦或是緊急情況下,開啟緊急開鎖功能;密碼修改功能能夠修改并保存進入管理員模式中的6位密碼。
本系統(tǒng)的整體操作過程是:首先,設定密碼,利用4×4矩陣鍵盤實現數字密碼的輸入功能,若數字密碼輸入正確,即可進入管理員模式,準備進行其他開鎖人員指紋的錄入工作,收錄完后退出管理員模式。然后,再次進入開始解鎖頁面,利用指紋模塊輸入指紋,開始驗證指紋,若指紋與先前錄入指紋比對相同則鎖打開。開鎖時3次輸入指紋錯誤后,報警電路進行報警。也可以使用紅外遙控鍵盤輸入密碼,正確后方可開鎖。
本系統(tǒng)的硬件電路部分主要由單片機、指紋識別模塊、4×4矩陣鍵盤、液晶屏幕顯示模塊、紅外遙控模塊、密碼儲存和報警系統(tǒng)等組成[7]。在設計中指紋識別模塊用于指紋的錄入與識別;紅外遙控模塊可以通過紅外遙控器進行數字密碼的鍵入操作,從而實現開鎖功能;密碼儲存芯片可以把先前所存儲的密碼和指紋掉電保存;液晶顯示屏用于顯示輸入信息及提示要執(zhí)行的操作。本裝置可以使用指紋與密碼對應開鎖,采用軟件與硬件相結合的方法來實現,使得身份識別能夠更加安全可靠。系統(tǒng)可以實現本機開鎖、錯誤報警、修改用戶密碼等功能。
該系統(tǒng)原理框圖如圖1所示。
圖1 系統(tǒng)原理框圖
3.1.1單片機
單片機,亦稱單片微型計算機,它將主要的計算機功能部件,如中央處理器(CPU)、隨機存取存儲器(RAM)、只讀存儲器(ROM)、輸入/輸出端口(I/O)等都集成在一塊電路芯片上,來實現控制功能[8]。
本系統(tǒng)采用STC89C52RC新一代高速單片機。具有功耗低、抗干擾性強的優(yōu)點,且指令代碼完全兼容傳統(tǒng)8051單片機,還可以任意選擇12時鐘/機器周期或6時鐘/機器周期工作[9]。具體結構組成有8 KByte Flash,256 KByte RAM,32個可編程的I/O口,可編程的串行USART等。詳細使用方法可查閱芯片資料,作為常用芯片,此處不再贅述。
3.1.2單片機最小系統(tǒng)
單片機最小系統(tǒng)是利用最少的外圍器件而使單片機工作的電路組織形式,包含單片機、時鐘電路、復位電路和電源[10]。其電路圖如圖2所示。
圖2 單片機最小系統(tǒng)原理圖
時鐘電路負責為單片機提供工作信號脈沖,這個脈沖便是單片機的工作速度。時鐘電路提供的時鐘頻率越高,單片機運行速度就越快。當然,單片機的工作頻率也是有范圍的,不能太大,否則系統(tǒng)不穩(wěn)定。
STC89C52單片機的時鐘電路使用11.059 2 MHz的晶體振蕩器作為振蕩源,該電路通過單片機的XTAL1、XTAL2引腳再在外部連接一個晶振和兩個電容即可。電容容量一般在15~50 pF之間,本系統(tǒng)取30 pF。晶體振蕩器與C1和C2構成了并聯諧振電路,產生自激振蕩,為單片機提供工作脈沖。具體的接法如圖2中的時鐘電路部分所示。
單片機復位電路用于系統(tǒng)在受到外部環(huán)境干擾時會出現程序跑飛的現象,此時按下復位按鈕,內部的程序自動地從頭開始執(zhí)行。其工作原理是在單片機復位引腳RST上外接電阻和電容,實現上電復位,要求復位電平的持續(xù)時間必須大于單片機的兩個機器周期以上,復位才有效,具體數值可以由RC電路計算出時間常數?;蛘呖梢栽趶臀浑娙萆喜⒙撘粋€按鍵,按下按鍵電容被放電、RST引腳也被拉到高電平,此時由于電容的充電特性,會保持一段時間的高電平,從而使得單片機完成復位。本系統(tǒng)采用按鍵復位的方式。
本系統(tǒng)采用的指紋識別模塊是ZFM608,接口電路如圖3所示。其工作流程是掃描指紋、生成指紋特征、合成模板。首先掃描指紋,然后對指紋信息進行模糊處理,生成0和1的指紋信息,完成后存入到ZFM608里的FLASH芯片,這就完成了指紋信息的錄入。實際電子密碼鎖在進入指紋識別模式時,指紋模塊就開始閃爍綠色光。通常就會錄入自己的指紋,這時指紋模塊采集的指紋信息,再與之前存儲的指紋數據進行比對,看是否與之前所錄入的指紋信息一致[11]。如果比對成功,液晶屏就會顯示指紋的編號,同時繼電器吸合,鎖就被打開。
圖3 指紋模塊ZFM608接口電路圖
由于本設計中的按鍵較多,考慮系統(tǒng)可靠性和鍵盤設計的簡單、合理,所以采用矩陣按鍵。按鍵電路如圖4所示。按鍵按下時呈低電平,系統(tǒng)采用軟件消抖法消除抖動,防止按鍵過程中干擾信號的影響[12]。
矩陣式鍵盤由4根行線、4根列線組成,按鍵位于行、列的交叉點上,行線和列線分別接到按鍵的兩端。按鍵被按下,其交點的行線和列線接通,相應的行線或列線上的電平發(fā)生變化,單片機通過檢測行或列線上的電平變化可以確定哪個按鍵被按下。
圖4 矩陣鍵盤的按鍵電路
矩陣鍵盤的檢測方式有多種,常見的有:逐點掃描法、逐行掃描法、全局掃描法等。在本系統(tǒng)中采用逐行掃描法來實現按鍵檢測,其中P1.0-P1.3為行線,P1.4-P1.7為列線。識別過程如下:
(1) 判斷鍵盤上有無按鍵按下。由單片機向所有行線發(fā)出低電平信號,如果該行線所連接的鍵沒有按下,則連線所連接的輸出口端得到的是全1信號;如果有鍵按下,則得到的是非全1信號[13]。
(2) 判斷被按下按鍵所在的位置。確認有鍵按下后,再具體確定是哪個按鍵被按下,采用方法:順次將每根行線設置為輸出口,并輸出低電平(同時剩余行線輸出高電平),然后逐列檢查每根列線的電平狀態(tài),若某列為低電平,則該列線與設置為輸出低電平的行線交叉處的按鍵就是被按下的按鍵。
(3) 鍵碼計算。程序設計中常用計算法或查表法對按鍵進行編碼,本系統(tǒng)采用計算法編碼。
本系統(tǒng)設計采用AT24C02存儲芯片,這款存儲芯片在其內部含有256個8位字節(jié)。它還有專門的寫保護功能,僅當WP引腳接高電平時才能進入寫保護狀態(tài)。工作電壓從1.8~6 V之間。如圖5所示。其中A0、A1、A2引腳用于選擇器件地址,SDA是串行數據/地址引腳,SCL是串行時鐘引腳,WP是寫保護引腳。
圖5 AT24C02存儲芯片連接圖
開鎖電路由繼電器、三極管、電阻、發(fā)光二極管等組成,當指紋輸入并比對正確后,開鎖繼電器就會吸合。密碼錯誤,則鎖無法打開,且伴隨有蜂鳴器長鳴,以引起他人注意。開鎖電路如圖6所示。
圖6 開鎖電路圖
本系統(tǒng)液晶顯示部分選用常用的LCD12864液晶顯示屏,能顯示8×4行16×16點陣的漢字,也能完成圖形顯示[14]。由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,有較強的優(yōu)勢,如硬件電路結構簡單,顯示程序編寫容易,而且成本和功耗也低、易于操作。系統(tǒng)中主要完成相關數據及內容的顯示功能。
系統(tǒng)報警電路是蜂鳴器和外圍電路組成的,在上電以后蜂鳴器不會發(fā)出報警聲,但當指紋密碼連續(xù)3次輸入都錯誤時,進行報警。報警聲可以引起周圍人的注意,如果是竊賊就很容易會被發(fā)現,報警電路的設計使這類電子密碼鎖安全性能大大提高。報警電路如圖7所示。
圖7 報警電路設計
另外,為了保證還沒有錄入指紋的新入職教師或者業(yè)余時間開放實驗教學等情況時能按時打開實驗室門鎖,本系統(tǒng)還擴展附加了紅外遙控功能,即采用了一個紅外遙控器來進行紅外信號的發(fā)射,實現密碼的鍵入和相關功能的實現。系統(tǒng)選用1838紅外接收頭,主要原因是它除了能完成系統(tǒng)所需功能外,而且功耗低、靈敏度高、抗干擾特性強,應用十分廣泛。其電路圖如圖8所示。
系統(tǒng)微處理器采用STC89C52單片機,編程采用模塊化設計,系統(tǒng)程序由主程序和一系列的子程序構成。主程序負責系統(tǒng)的初始化及各子程序的調用。各子程序包含有串口初始化、密碼檢測、鍵盤掃描、指紋的錄入比對、指紋密碼的增加和刪除、修改密碼、管理員和密碼開鎖等程序。由于篇幅原因,下面給出刷指紋和密碼開鎖兩個子程序。
圖8 1838紅外遙控電路圖
刷指紋子程序如下:
void Shuazhiwen()
{
uchar IDs1,IDs2,IDs3;
LcmClearTXT();
PutStr(1,1,"請按手指開鎖:");
SFG_identify();
while(querenma==2)
SFG_identify();
if(querenma==0)
{
LcmClearTXT();
PutStr(1,2,"門已打開!");
IDs1=PageID/100;
IDs2=PageID/10%10;
IDs3=PageID%10;
PutStr(2,1,"編號為:");
WriteCommand(0x8D);
WriteData(0x30+IDs1);
WriteData(0x30+IDs2);
WriteData(0x30+IDs3);
ErrorCount=0;
Feng=1;
jidianqi=0;
delay(2 500);
jidianqi=1;
}
else if(querenma==9)
{
LcmClearTXT();
PutStr(1,1,"沒搜索到指紋!");
PutStr(2,1,"請重新按手指!");
ErrorCount=3;
Feng=0;
}
else
{
LcmClearTXT();
PutStr(1,1,"接收包出錯");
}
delay(2000);
}
系統(tǒng)密碼開鎖的子程序如下[15-16]:
void mimakaisuo()
{
uchar i,j=0,x=1;
uchar Right_flag;
LcmClearTXT();
PutStr(1,0,"請輸入密碼開鎖:");
for(i=0;i<6;i++)mima[i]=0;
Key=Keycan();
while(Key!=queren)
{
Key=Keycan();
KeyDeal(Key);
delay(30);
if(Key==0)K=10;
if((K>=0)&&(K<=9))
{
mima[j]=K;
if(j<6)
{
WriteCommand(0x89+j);
WriteData(0x0f); }
++j;
if(j==7)
j=6; } // LCD12864并行顯示
if(K==34) //按下刪除鍵
{
if(j==0)
{WriteCommand(0x89);
WriteData(0x20); }
else
{ --j;
WriteCommand(0x89+j);
WriteData(0x20); }
}
}
LcmClearTXT();
for(i=0;i<6;i++)
{ UserPassword[i]=mima[i]+0x30; }
if(j==6) { Right_flag=PassWord_Chack(); }
if (Right_flag==1&&ErrorCount<3)
{
Right_flag=0;
zhu();ErrorCount=0;
Feng=1;
for(i=0;i<6;i++)mima[i]=0;
}
else
{
if(ErrorCount<3)
ErrorCount++;
if(ErrorCount==3)
Feng=0;
PutStr(1,2,"密碼錯誤!");
PutStr(2,0,"還有 次機會");
PutStr(3,0,"按任意鍵繼續(xù)");
WriteCommand(0x8a);
WriteData(′ ′);
WriteData(3-ErrorCount+0x30);
delay(1 000);
}
Key=0;
LcmClearTXT();
}
系統(tǒng)聯調需要用軟件Keil uVision5編程并錄入后進行,需要聯調的程序主要有指紋、鍵盤和液晶顯示等模塊。系統(tǒng)聯調實物圖如圖9所示。
圖9 遙控指紋密碼鎖實物聯調圖
本文介紹了應用單片機進行指紋解鎖和遙控解鎖方式來實現開鎖,具有防多次試探鍵入密碼、成本低等特點。系統(tǒng)以STC89C52單片機為主控制器,使用指紋識別模塊裝設在單片機的串口上,控制指紋的錄入及相應數據的存儲,當開門輸入指紋時通過 LCD12864 液晶顯示密碼或指紋比對結果,指紋正確開鎖,錯誤3次后鎖無法打開并報警。紅外遙控部分采用紅外通信實現。輔助電路以直流繼電器和發(fā)光二極管模擬開鎖的動作。系統(tǒng)由電池供電,并且24 h待機,因此解決系統(tǒng)功耗是一個重要問題。在查閱大量資料和做了相關試驗后,對系統(tǒng)的軟、硬件做了多次改動,從各個方面去降低功耗。經過多次測量,本項目組設計的指紋電子密碼鎖的功耗為150~350mA,達到了較理想的效果,可以應用于實際實驗室或學生宿舍的管理中,既安全可靠,又節(jié)約成本、節(jié)省資源,還可以在硬件及軟件方面進行擴展,增加新的功能,具有一定的推廣價值。