陳新芬,邱小華,金琦淳
(1.無錫城市職業技術學院,江蘇 無錫 214153;2.無錫市宏源彈性器材有限公司,江蘇 無錫 214161)
隨著科學技術的發展,安全、高效、便捷的指紋密碼鎖已經在市場上逐漸普及。設計中,以STC89C52單片機為控制核心的密碼鎖能實現友好的人機交互,實現密碼開鎖和指紋開鎖2種功能。指紋密碼鎖合理利用人類指紋個體差異,采用新型安全可靠的指紋識別技術,實現指紋開鎖的同時,外加豐富的輔助功能,實現更加安全智能化開鎖[1]。
開機待機狀態:按下電源鍵,電源指示燈點亮,液晶屏待機初始界面顯示“指紋密碼鎖”“編號”“狀態”3行字樣,密碼鎖處于待機等待開鎖狀態。待機狀態時,單片機主機循環掃描按鍵,達到實時檢測按鍵動作的目的。
密碼開鎖功能:在密碼鎖處于待機狀態時,用戶輸入6位開鎖密碼數字,液晶屏同步加密顯示“*”,按下鍵盤上的“確認”鍵,密碼輸入結束。密碼正確,則電磁鎖得電,鎖頭打開。開鎖的同時,系統啟動內部定時器進入倒計時定時,達到定時時長,電磁鎖自動斷電上鎖。輸入密碼錯誤,液晶屏提示“密碼錯誤”字樣,蜂鳴器報警器發出“滴滴滴”報警3次,鎖頭保持關鎖狀態。
指紋開鎖功能:在密碼鎖處于待機狀態時,按壓AS608指紋模塊,如果當前采集的指紋是系統存儲的開鎖指紋,則液晶屏顯示當前指紋對應指紋庫中的3位數字ID編號,同時液晶屏顯示開鎖字樣“指紋解鎖”,電磁鎖得電,鎖頭打開。AS608指紋集成模塊,內部的指紋模板存儲容量可以達到1000枚指紋,設計中用3位數字ID編號即可滿足最大容量指紋模板存儲要求。如果當前采集到的指紋不是系統存儲的開鎖指紋,則液晶屏提示“無效指紋”,蜂鳴器發出“滴滴滴”報警3次,鎖頭保持關鎖狀態。
管理員模式:在開機待機狀態下,按下鍵盤上的“管理”鍵,液晶提示“請輸入管理員密碼”。當用戶繼續輸入6位數字管理員密碼時,系統進入管理員界面模式,此時液晶屏顯示提示字符“管理系統界面”“錄入指紋”“刪除指紋”“修改密碼”。在管理員界面,通過鍵盤上的“上一項”或“下一項”功能按鍵選擇,實現系統錄入指紋、刪除指紋或者更改開鎖密碼功能。在錄入、刪除指紋子系統中,液晶屏提示用戶輸入3位數字指紋ID編號,同時啟動AS608指紋模塊,實現開鎖指紋的新增、刪除功能。在更改開鎖密碼子系統中,液晶屏提示用戶連續輸入2次新密碼,如果2次新密碼一致,則系統順利實現開鎖密碼更新,液晶屏提示用戶“密碼修改成功”。系統自動退出返回到開機待機狀態,等待用戶開鎖。
在管理員界面或密碼輸入過程中,直接選擇鍵盤上的“返回”鍵,則系統退回到開機待機狀態。密碼輸入過程或者指紋編號ID輸入過程中,如果發現輸入數字錯誤,則利用矩陣鍵盤上的“退格”按鍵,實現清除最近一次的數值輸入。
硬件電路設計原理如圖1所示。
單片機最小系統包含以下幾個部分:+5 V直流穩壓電源;STC89C52單片機芯片;C1、R1復位按鍵,電源構成的復位電路;石英晶體振蕩器,C2、C3構成的晶振電路[2]。單片機與AS608指紋模塊通過串行口實現通信控制,11.0592 MHz的晶振可以產生零誤差9600 bit/s的波特率。在設計中,晶振頻率選用11.0592 MHz,2個并聯的頻率微調電容選用30 pF陶瓷電容。
LCD12864[3]是一種有4 位/8 位并行、2 線或3 線串行多種接口方式,含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;它的顯示分辨率為128×64,內置8192個16×16點漢字和128個16×8點ASCII字符集。設計采用單片機P2口與液晶顯示器的8位數據線連接,進行8位并行通信實現字符信息顯示。
AS608[4]是功能完整的獨立指紋處理模塊,無需掛接任何外圍器件。在指紋密碼鎖設計中,該模塊一直處于從機地位,單片機主機需要通過指定格式的指令驅動該模塊實現各種指紋處理功能。主機的指令、模塊的應答以及數據交換都是按照規定格式的數據包來進行的。
指紋模塊內部包含:光學鏡頭、通信連接線、DSP芯片、型號為AS6084的穩壓芯片、Flash芯片、外面的CMOS傳感器芯片。模塊處理指紋的主要工作過程分為以下幾個步驟:掃描指紋、生成特征、合成模板、成功錄入指紋。CMOS芯片負責對指紋進行“照相”,然后進行模糊處理生成0和1模式的2種記錄信息,進而生成指紋特征。成功錄入2次相同的指紋特征能生成一個指紋模板,通過單片機主機命令,將指紋模板信息存入模塊的Flash芯片。
當指紋模塊切換到識別模式時,CMOS傳感芯片先完成一次指紋圖像采集,然后將采集的指紋信息與Flash芯片里已經存儲的指紋模板數據進行對比。當前采集的指紋圖像如果與之前的指紋模板匹配,則返回指紋編號,如果匹配不成功,則識別為非法指紋。如此,可以通過單片機來進行指紋的識別與登記。
設計需要有密碼輸入以及指紋輸入管理,為減少單片機的I/O口占用,將按鍵電路設計成4×4矩陣鍵盤。矩陣鍵盤的檢測方法有多種,常見的有:逐點掃描法、逐行掃描法、全局掃描法[5]。設計采用逐行掃描法實現按鍵檢測。其中,P1.0-P1.3作為行線,P1.4-P1.7作為列線。4×4矩陣鍵盤的16個按鍵對應的功能如表1所示。

表1 矩陣鍵盤對應功能
繼電器是一個通過輸入小電流來控制大電流輸出的一個“自動開關”[6]。當使用51單片機進行控制繼電器時,由于單片機I/O口輸出電流在4~20 mA,而繼電器工作電流大約在40 mA,所以采用直接控制是無法驅動的,需要添加一個電流放大電路。本設計采用S8550三極管進行電流放大。
軟件設計采用C語言程序[7]。在C程序中,主函數void main()是程序的入口函數,一個完整的程序必須包含該函數。設計中,主程序利用無限循環實時檢測矩陣鍵盤動作,利用按鍵處理子程序,控制變量mode的數值,確定指紋密碼鎖的當前執行功能。mode=0時,實現指紋或者密碼2種方式解鎖功能;mode=1時,實現管理員界面功能;mode=2時,實現指紋錄入功能;mode=3時,實現指紋刪除功能;mode=4時,在鍵值處理子程序內部,實現密碼修改功能。主程序流程如圖2所示。

圖2 主程序流程
錄入指紋子程序如圖3所示。在管理員界面,通過按鍵選擇錄入指紋功能,進入錄入指紋子程序。錄入指紋子程序開始,液晶提示目前為“錄入指紋”狀態,主程序中的鍵盤掃描以及鍵值處理子程序,輸入即將存儲指紋模板的ID值。用戶將指紋圖像按壓在AS608指紋采集模塊上,接著對即將準備儲存的指紋模板編號ID值進行預判斷,如果指紋編號ID的值在程序預設范圍內,則啟動指紋采集子程序,實現指紋圖像2次錄入生成指紋特征[8],將指紋特征合并生成指紋模板,指紋模板存入子程序開頭指定的指紋模板編號ID中。指紋模板采集錄入成功,則ID變量清零,方便下一個指紋模板錄入,同時利用二進制開關變量,關閉密碼鎖當前指紋檢測功能,子程序返回到主程序中。在主程序中,只有流程檢測到mode=2或者mode=3時,才能再次開啟指紋檢測功能,以便于密碼鎖區分何時進行普通密碼開鎖以及何時進行指紋圖像開鎖。

圖3 錄入指紋流程
AS608用串口通信協議與單片機進行通信,單片機主機通過串口發送對應的指令數據包來控制指紋模塊實現對應的功能。主機必須按照規定格式封裝發送指令或數據,也必須按規定格式解析收到的數據包。指令/數據包共分為3類:(1)包標識=01 命令包;(2)包標識=02 數據包,且有后續包;(3)包標識=08 最后一個數據包,即結束包。所有的數據包都要加包頭:0xEF0。
在控制AS608指紋模塊采取指紋時,先發送采集指紋圖像命令,等待指紋圖像生成指紋特征,然后指紋特征與指紋模塊庫中的指紋特征進行逐一比對,當前采集的指紋圖像如果與指紋庫中已經錄入的模板一致,則返回當前采集指紋所在庫的指紋編號,如果比對不成功,則新采集的指紋圖像不是指紋庫中的已有指紋,則判斷為非法指紋,取消該指紋開鎖功能。指紋解鎖子程序流程如圖4所示。

圖4 指紋解鎖流程
設備通過USB提供+5 V的電源,打開系統的設備開關,設備進入開鎖待機狀態,液晶顯示屏提示開機初始界面。此時密碼鎖接收2種方式解鎖:直接輸入6位數字密碼或者直接在AS608指紋模塊按下解鎖指紋,系統實現正確解鎖。對于解鎖指紋的管理,系統的實現方法非常簡單,通過進入管理系統界面,選擇“錄入指紋”子菜單,進入管理系統界面,此時預先輸入3位數字指紋ID編號,接著按壓指紋模塊,當解鎖指紋采集成功,系統提示“錄入成功”。指紋錄入及解鎖實物運行如圖5所示。

圖5 指紋錄入及解鎖實物運行
本文實現了一款單片機指紋密碼鎖的設計及制作。系統由硬件電路以及軟件程序2部分結構組成。硬件電路主要包括單片機最小系統、矩陣鍵盤輸入電路、電磁繼電器控制模塊、AS608指紋識別模塊、LCD12864液晶顯示模塊、AT24C02密碼存儲模塊等。密碼鎖液晶顯示界面實現友好人機交互,功能齊全,簡單易操作。