河南理工大學電氣工程與自動化學院 尚博陽
帶手機控制功能的記憶密碼鎖
河南理工大學電氣工程與自動化學院 尚博陽
介紹一款基于STC10F08XE單片機的帶手機控制功能的記憶密碼鎖。該系統(tǒng)可通過自帶鍵盤進行加鎖、密碼解鎖、修改密碼等功能,且具有相應的指示。此外還可使用配套APP通過藍牙連接遙控密碼鎖進行加鎖、解鎖及修改密碼。此外,修改后的密碼會自動存儲到EEPROM中進行保存,保證掉電重啟后新密碼不會丟失。
單片機;密碼鎖;藍牙
隨著人們生活水平的提高,如何實現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機械鎖由于其構(gòu)造的簡單,安全性能低,無法滿足人們的需要。隨著電子產(chǎn)品向智能化和微型化的不斷發(fā)展,單片機已成為電子產(chǎn)品研制和開發(fā)中首選的控制器。
本文從經(jīng)濟實用的角度出發(fā),采用宏晶科技STC10F08XE單片機作為主控芯片,結(jié)合外圍的鍵盤輸入、顯示等電路,用C51語言編寫主控芯片的控制程序,設(shè)計了一款具有更改密碼及密碼記憶功能,且可以通過手機進行控制的電子密碼鎖。
經(jīng)實驗證明,該密碼鎖具有設(shè)計方法合理,簡單易行、成本低、安全實用等特點,符合住宅、辦公室用鎖要求,具有推廣價值。
電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關(guān)的閉合,完成開鎖、閉鎖任務(wù)的電子產(chǎn)品。目前應用較廣的電子密碼鎖大多是以單片機為核心,通過編程來實現(xiàn)的。其性能和安全性已大大超過了機械鎖。
本系統(tǒng)采用STC10F08XE單片機作為微處理器,采用HC-05藍牙模塊作為無線通訊裝置,以及3*2矩陣鍵盤、LCD1602顯示電路、LED指示燈等外圍設(shè)備構(gòu)成。利用矩陣鍵盤,用戶可以輸入由1-4組成的四位數(shù)字密碼,并帶有“確認鍵”及“清除鍵”。當用戶輸入密碼后,按下確認鍵,系統(tǒng)將進行密碼校驗:若密碼正確,將解鎖密碼鎖;若密碼錯誤,LED指示燈將閃爍報警。在密碼驗證通過后,連按兩次確認鍵可進入密碼修改程序。用戶重復輸入兩次新密碼后,若兩次輸入的密碼相同,修改密碼成功,密碼將被寫入EEPROM中,即使系統(tǒng)掉電后重啟,密碼也不會丟失。在用戶輸入密碼的過程中,按下“清除鍵”均可撤銷一次輸入。
使用配套的手機APP,可以對密碼鎖進行解鎖、加鎖以及密碼修改操作。按下APP中相應的按鍵即可進行相對應的操作。
圖1 系統(tǒng)工作流程圖
目前市場中的顯示方法有數(shù)碼管顯示與LCD屏顯示。為了使得使用者可以簡單明了的看到時間日期的信息,本系統(tǒng)采用LCD顯示方式。LCD1602是一個能夠顯示16*2個字符的液晶顯示屏,其引腳可直接與單片機I/O口相連接進行并行通訊,省去驅(qū)動電路,提高電路的可靠性。LCD顯示電路圖,單片機的P0口經(jīng)接上拉電阻后接到LCD屏的八個數(shù)據(jù)端,同時LCD1602的三個控制端RS、WR和E分別與單片機的P2.0、P2.1和P2.2口相連。
為了節(jié)省單片機IO口資源,系統(tǒng)將3*2鍵盤利用矩陣鍵盤的形式進行連接。在掃描程序中,利用程序先將H1置于低電平,H2置于高電平,掃描L1、L2、L3的電平是否為低電平,即可檢測1、2、3按鍵是否被按下;再利用程序先將H1置于高電平,H2置于低電平,掃描L1、L2、L3的電平是否為低電平,即可檢測4、5、6按鍵是否被按下。
由于按鍵的硬件特性,用戶在按下按鍵的時候回產(chǎn)生高低電平抖動的情況??紤]到成本問題,系統(tǒng)在硬件上沒有進行相應的處理,而是使用軟件進行按鍵消除抖動。程序中利用Key_Buff最作為按鍵掃描的存儲區(qū),若每次掃描所檢測到的按鍵相同,將向Key_ Buff寫入一位“1”。如果Key_Buff達到0xFF,即連續(xù)8次掃描到相同的按鍵被按下, 則程序確認該鍵已經(jīng)被按下。這樣就實現(xiàn)了軟件按鍵消抖的功能。
系統(tǒng)利用51單片機的定時器0進行定時工作。利用定時器的中斷功能,在中斷服務(wù)程序中分別調(diào)用數(shù)碼管掃描程序及按鍵掃描、按鍵處理程序。
我們將定時器設(shè)定為1ms定時。由于系統(tǒng)采用11.0592的晶振,根據(jù)公式:
X=M-計數(shù)值=M-(TC×fOSC)/12
計算可得,將定時器初值賦為TL0 = 0x66,TH0 = 0xFC時,定時器即可實現(xiàn)1ms定時。
在定時器0的中斷服務(wù)程序中,系統(tǒng)進行了定時器的重新賦值、LED燈閃爍狀態(tài)更新、數(shù)碼管動態(tài)掃描及矩陣按鍵的掃描工作。其中,數(shù)碼管顯示我們設(shè)定為1毫秒掃描一次,LED燈的掃描設(shè)定為100毫秒更新一次,矩陣按鍵設(shè)置為5毫秒掃描一次。程序利用變量cnt的加減即可實現(xiàn)上述功能。
在系統(tǒng)實際工作的時候,密碼鎖的密碼驗證程序是最重要的一個環(huán)節(jié)。我們需要確保系統(tǒng)密碼驗證的功能穩(wěn)定有效。當輸入的密碼完全匹配,才能觸發(fā)解鎖,否則系統(tǒng)將控制LED燈進行閃爍報警。
只有在正確輸入密碼后,連續(xù)點擊兩次確認按鈕,系統(tǒng)才會進入密碼修改程序。進入程序后,系統(tǒng)會提示用戶輸入兩次新密碼,若兩次輸入的密碼不同,系統(tǒng)不保存新密碼,而是控制LED燈進行閃爍提示;若兩次輸入的新密碼完全一致,系統(tǒng)將更新密碼,并將其寫入到EEPROM中,以供下次開機時讀取。
系統(tǒng)使用HC-05串口藍牙芯片作為無線通訊模塊。通過該模塊,系統(tǒng)能與手機APP進行無線通信。
使用串口藍牙模塊之前,我們需要先對單片機串口進行波特率配置。利用單片機定時器1作為波特率發(fā)生器。經(jīng)過計算之后,程序能將定時器1配置成115200波特率的發(fā)生器,該波特率與串口藍牙模塊的波特率一致,能夠穩(wěn)定通信。
系統(tǒng)利用串口的中斷服務(wù)進行接收信息檢驗。在手機APP上,解鎖功能對應的命令為“K”,加鎖的命令為“J”,通過檢測SBUF寄存器接收到的字符,即可實現(xiàn)上述兩個功能。APP中的密碼修改指令為“C+[四位密碼]”,程序中利用變量count來進行密碼接收檢測。當接收到上述指令時,系統(tǒng)能準確無誤地將收到的密碼進行更新,并將其寫入EEPROM中進行鎖存。
本系統(tǒng)是基于STC10F08XE單片機的帶手機控制功能的記憶密碼鎖,意在代替目前市面上安全性較低、使用較不方便的機械式密碼鎖。該系統(tǒng)有健全的密碼判斷機制,程序邏輯清晰且不存在漏洞,難以被破解。系統(tǒng)還可方便地更改密碼,使其安全性更上一層。另外,還創(chuàng)造性地將智能手機與其相結(jié)合,提供配套的APP,可使用手機進行無線控制及密碼修改,成為本系統(tǒng)的一大特色。
[1]余發(fā)山,王福忠.單片機原理及應用技術(shù)[M].中國礦業(yè)大學出版社,2011.
[2]宋雪松,李東明,崔長勝.手把手教你學51單片機[M].清華大學出版社,2014.
尚博陽(1996-),男,河南洛陽人,河南理工大學本科生,研究方向:電氣工程及其自動化。
基金課題:河南理工大學青年基金項目(Q2015-2A)。