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