馮美艷 宋志陽(yáng)
(安陽(yáng)學(xué)院航空工程學(xué)院,河南 安陽(yáng) 455000)
單片機(jī)控制的電子密碼鎖不僅操作簡(jiǎn)單、成本低而且準(zhǔn)確性高,正常情況下可以通過(guò)指紋開(kāi)鎖,安全性高。在鑰匙管理員請(qǐng)假或不在工作崗位時(shí),可以通過(guò)密碼來(lái)開(kāi)鎖,使用之后可以及時(shí)零成本的更換密碼[1],極大的方便租房、實(shí)驗(yàn)室和買(mǎi)賣(mài)看房等業(yè)務(wù),同時(shí)也解決了傳統(tǒng)機(jī)械鑰匙和IC 容易丟失的問(wèn)題。
系統(tǒng)如圖1 所示:由STC89C52 單片機(jī)系統(tǒng)、LCD 顯示系統(tǒng)、ZFM-60 指紋識(shí)別系統(tǒng)、FLASH 系統(tǒng)、按鍵系統(tǒng)、報(bào)警系統(tǒng)、電子鎖系統(tǒng)和電源系統(tǒng)組成[2]。
圖1 系統(tǒng)總體設(shè)計(jì)圖
系統(tǒng)由設(shè)置模式和開(kāi)鎖模式兩部分組成。系統(tǒng)上電,若設(shè)置按鍵按下,系統(tǒng)進(jìn)入設(shè)置模式。設(shè)置模式中,需要先輸入一次密碼確認(rèn)。確認(rèn)密碼后,選擇設(shè)置指紋或設(shè)置密碼。設(shè)置指紋系統(tǒng)中可以選擇錄入指紋和刪除指紋。設(shè)置密碼模式中可以選擇注冊(cè)、更新和刪除密碼。設(shè)置模式完成后,系統(tǒng)保存新數(shù)據(jù)。系統(tǒng)上電,若沒(méi)有設(shè)置按鍵按下,則進(jìn)入開(kāi)鎖模式。如果識(shí)別到指紋,則進(jìn)入指紋開(kāi)鎖模式,指紋識(shí)別系統(tǒng)將識(shí)別到的指紋特征文件通過(guò)UART 傳到單片機(jī),單片機(jī)將接受到的指紋特征文件同F(xiàn)LASH 中保存的指紋特征文件進(jìn)行比對(duì),比對(duì)成功則亮綠燈開(kāi)鎖。反之不開(kāi)鎖,示警。若按鍵按下的不是設(shè)置鍵則進(jìn)入密碼開(kāi)鎖模式,輸入六個(gè)數(shù)字,通過(guò)串口送入單片機(jī)模塊。單片機(jī)模塊將輸入的密碼同F(xiàn)LASH 中存儲(chǔ)的密碼相比對(duì),比對(duì)成功亮綠燈開(kāi)鎖,反之示警[3]。
STC89C52 單片機(jī)有40 個(gè)管腳,32 個(gè)I/O 口,3 個(gè)定時(shí)器和4 路中斷。連接正確的復(fù)位系統(tǒng)、晶振系統(tǒng)和電源系統(tǒng)就可以讓單片機(jī)運(yùn)行。
復(fù)位系統(tǒng)連接在單片機(jī)的RST 接口處,作用為:系統(tǒng)上電,復(fù)位系統(tǒng)將單片機(jī)寄存器和存儲(chǔ)系統(tǒng)恢復(fù)初始值或整定值。同時(shí)復(fù)位系統(tǒng)配置有一個(gè)機(jī)械開(kāi)關(guān)。如果需要人為復(fù)位時(shí),可以按下按鍵實(shí)現(xiàn)強(qiáng)制復(fù)位。本設(shè)計(jì)中選用了10μF 的電容以及10kΩ 的電阻作為復(fù)位電路的電容與電阻[4]。
晶振系統(tǒng)和單片機(jī)的XTAL1 和XTAL2 連接。作用為:產(chǎn)生時(shí)鐘信號(hào),提供合適的時(shí)鐘頻率。
電源系統(tǒng)采用5V 轉(zhuǎn)3.3V 模塊實(shí)現(xiàn),可以為單片機(jī)提供3.3V 電壓或5V 電壓[5]。
指紋識(shí)別系統(tǒng)采用ZFM-60 模塊。模塊可以實(shí)現(xiàn)指紋采集、強(qiáng)化、生成特征文件。系統(tǒng)在FLASH 中配有指紋緩沖區(qū)或指紋庫(kù)用于存儲(chǔ)指紋特征文件。模塊的通信方式可以為UART 或USB。本次設(shè)計(jì)采用的將模塊是4 和5 管腳與單片機(jī)系統(tǒng)與單片機(jī)的P3.0(第10 管腳RXD)和P3.1(第11 管腳TXD)連接進(jìn)行UART 通信。系統(tǒng)上電后,指紋識(shí)別系統(tǒng)向單片機(jī)發(fā)送一個(gè)握手信號(hào)0x55,握手成功后可以進(jìn)行通信。
LCD 顯示系統(tǒng)如圖2 所示,主要采用LCD12864 模塊。該設(shè)計(jì)將LCD 顯示系統(tǒng)的第4~6 管腳和單片機(jī)的P0.5~P0.7 管腳(第32~34 管腳)相連接、LCD 顯示系統(tǒng)的7~14 管腳和單片機(jī)的P2 口(第21~27 管腳)連接。作用為:
圖2 LCD 顯示系統(tǒng)原理圖
(1)顯示當(dāng)前密碼鎖的狀態(tài)。系統(tǒng)上電,顯示請(qǐng)輸入密碼或刷指紋。
(2)在進(jìn)行指紋的錄入、刪除、保存和密碼的注冊(cè)、更新、刪除和保存時(shí),起提示下一步和顯示作用。
(3)開(kāi)鎖成功時(shí),顯示歡迎光臨,開(kāi)鎖成功。開(kāi)鎖不成功時(shí),顯示密碼錯(cuò)誤/指紋錯(cuò)誤,請(qǐng)輸入密碼或刷指紋。三次開(kāi)鎖不成功時(shí),顯示系統(tǒng)鎖定,請(qǐng)三分鐘后再試。
按鍵系統(tǒng)如圖3 所示:由矩陣鍵盤(pán)組成。8 個(gè)接口同與單片機(jī)最小系統(tǒng)的P1 口(第10~17 管腳)連接,優(yōu)點(diǎn)是可以提高I/O的利用率。它用4 條I/O 線作為行線,4 條I/O 線作為列線組成的鍵盤(pán)。在行線和列線的每一個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤(pán)中按鍵個(gè)數(shù)是4×4 個(gè)。分別表示數(shù)字0~9、返回上一步、確定、設(shè)置、向上鍵和向下鍵。當(dāng)有按鍵按下時(shí)且為按下數(shù)字鍵時(shí),進(jìn)入密碼開(kāi)鎖模式,密碼正確,綠燈亮開(kāi)鎖。當(dāng)按下設(shè)置鍵時(shí)進(jìn)入設(shè)置模式。向上鍵和向下鍵為在系統(tǒng)做選擇時(shí)使用。
圖3 按鍵系統(tǒng)原理圖
報(bào)警系統(tǒng)主要由蜂鳴器系統(tǒng)和燈光顯示系統(tǒng)組成。蜂鳴器系統(tǒng)與單片機(jī)系統(tǒng)的P0.3 接口(第36 管腳)連接。蜂鳴器報(bào)警系統(tǒng)主要由一個(gè)1K 電阻、蜂鳴器和三極管組成。燈光顯示系統(tǒng)與單片機(jī)系統(tǒng)的P0.4 接口(第35 管腳)連接。燈光顯示系統(tǒng)由一個(gè)1K 電阻和紅色發(fā)光二極管D1 組成。當(dāng)輸入正確的密碼或指紋時(shí),單片機(jī)向蜂鳴器和發(fā)光二極管D1 發(fā)送一個(gè)高電平,示警系統(tǒng)不工作。當(dāng)輸入錯(cuò)誤的密碼或指紋時(shí),單片機(jī)向蜂鳴器和發(fā)光二極管D1 發(fā)送一個(gè)低電平,D1 亮紅燈和蜂鳴器滴滴5s示警。
電子鎖系統(tǒng)如圖4 所示:?jiǎn)纹瑱C(jī)系統(tǒng)的P3.0 接口(第10 管腳)接電子鎖系統(tǒng),控制電子鎖的打開(kāi)和關(guān)閉。電子鎖系統(tǒng)如圖4 所示由2 個(gè)1K 電阻,1 個(gè)綠色發(fā)光二極管D3、1 個(gè)接觸器線圈、1 個(gè)繼電器和電源組成。作用為:當(dāng)輸入正確的指紋或密碼時(shí),單片機(jī)向電子鎖系統(tǒng)發(fā)送一個(gè)低電平,三極管導(dǎo)通,接觸器線圈帶電,繼電器吸合,綠色發(fā)光二極管D3 亮,鎖打開(kāi)。反之發(fā)送一個(gè)高電平,發(fā)光二極管D3 不亮,繼電器斷開(kāi),鎖閉合。接觸器外反解一個(gè)穩(wěn)壓二極管,其保護(hù)接觸器的作用。當(dāng)門(mén)鎖沒(méi)電時(shí),可以通過(guò)在J3 接電源強(qiáng)制門(mén)鎖打開(kāi)。
圖4 電子鎖系統(tǒng)原理圖
存儲(chǔ)系統(tǒng)電路圖如圖5 所示??梢源鎯?chǔ)100 枚指紋,系統(tǒng)采用AT24C02 存儲(chǔ)指紋特征文件。存儲(chǔ)系統(tǒng)的第12347 管腳接地,第8 管腳直接接地,第56 管腳和單片機(jī)系統(tǒng)的P3.1 和P3.2管腳(第11 和第12 管腳)連接用于讀寫(xiě)指紋特征文件。
圖5 存儲(chǔ)系統(tǒng)原理圖
系統(tǒng)軟件設(shè)計(jì)采用KEIL 軟件編譯。KEIL 軟件采用C 語(yǔ)言進(jìn)行編譯,相對(duì)于匯編代碼來(lái)說(shuō)在結(jié)構(gòu)上、可讀性上、功能性和可維護(hù)性上由明顯的進(jìn)步。
系統(tǒng)軟件流程主要分為設(shè)置模式流程和開(kāi)鎖模式流程。系統(tǒng)的優(yōu)先級(jí)為設(shè)置模式大于開(kāi)鎖模式。開(kāi)鎖模式中指紋開(kāi)鎖模式大于密碼開(kāi)鎖模式。系統(tǒng)上電,系統(tǒng)就不斷掃描是否有設(shè)置按鍵按下,有則進(jìn)入設(shè)置模式,無(wú)則進(jìn)入開(kāi)鎖模式。如圖6 所示,設(shè)置模式中需要確定系統(tǒng)密碼,確定后可以選擇設(shè)置指紋還是設(shè)置密碼。設(shè)置指紋中可以進(jìn)行指紋的錄入、增加和刪除。設(shè)置密碼中可以進(jìn)行密碼的更改和刪除。設(shè)置完成后,將最新信息存入FLASH。
圖6 設(shè)置模式流程圖
開(kāi)鎖模式中,如圖7 所示,系統(tǒng)不斷掃描是否有指紋輸入,若有則進(jìn)入指紋開(kāi)鎖模式,將輸入的指紋的特征文件同系統(tǒng)中存儲(chǔ)的特征文件進(jìn)行比對(duì),比對(duì)成功則開(kāi)鎖,反之示警。若無(wú)指紋輸入但有0~9 的按鍵按下,則進(jìn)入密碼開(kāi)鎖模式。密碼正確開(kāi)鎖,密碼不正確示警。電子鎖開(kāi)鎖后倒計(jì)時(shí)120s 后自動(dòng)閉合。連續(xù)示警三次后,電子鎖鎖定三分鐘,不允許任何形式的開(kāi)鎖。
圖7 開(kāi)鎖模式流程圖
設(shè)置模式中如果要錄入新的指紋,要先與單片機(jī)進(jìn)行握手,握手成功后,采集兩次指紋,生成一個(gè)指紋特征文件,存入FLASH 中。
LCD 顯示系統(tǒng)程序主要實(shí)現(xiàn)上電顯示歡迎光臨,請(qǐng)刷指紋或輸入密碼。在設(shè)置模式時(shí)顯示,請(qǐng)輸入密碼,分兩行顯示指紋模式和密碼模式。進(jìn)入指紋模式后上下顯示錄入新指紋和刪除指紋。進(jìn)入密碼模式顯示更換密碼和刪除密碼。完成后顯示返回和保存,保存后返回首頁(yè)。
LCD12864_pos(1,2);
LCD12864_writebyte("歡迎光臨,請(qǐng)刷指紋或輸入密碼");//上電顯示
LCD12864_pos(0,1);
LCD12864_writebyte("指紋模式");
LCD12864_pos(1,1);
LCD12864_writebyte("密碼模式");//顯示選擇模式界面
16 個(gè)按鍵對(duì)應(yīng)的信息不同。有按鍵按下且進(jìn)入開(kāi)鎖模式時(shí),輸入六個(gè)數(shù)字開(kāi)鎖。如果為設(shè)置模式且為密碼模式時(shí),對(duì)比新舊密碼,將新密碼存入密碼數(shù)組。當(dāng)按下返回鍵時(shí),系統(tǒng)返回初始界面。
本文設(shè)計(jì)的電子密碼鎖能夠?qū)崿F(xiàn)指紋開(kāi)鎖和密碼開(kāi)鎖兩種開(kāi)鎖方式。指紋密碼鎖系統(tǒng)能有效地完成指紋錄入、指紋搜索、指紋比對(duì)和刪除指紋開(kāi)鎖方式安全、便捷。密碼開(kāi)鎖模式可以實(shí)現(xiàn)密碼注冊(cè)、更新和刪除開(kāi)鎖方式方便,不需要特定人群就可以開(kāi)鎖。