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