徐慶偉, 郭振鐸, 劉洲峰
(中原工學(xué)院 電子信息學(xué)院, 河南 鄭州 450007)
門禁系統(tǒng)是有效解決安全問題的方案之一,目前已成為生活中不可或缺的一部分。電子信息科學(xué)技術(shù)的發(fā)展推動(dòng)了門禁系統(tǒng)安全性能的飛速提升,鍵盤式電子密碼鎖、指紋特征識(shí)別系統(tǒng)、IC卡門禁系統(tǒng)等已屢見不鮮。但是,指紋特征識(shí)別系統(tǒng)和IC卡門禁系統(tǒng)在家庭生活中使用具有很大的局限性,如指紋特征識(shí)別只能應(yīng)用于保密要求高并且僅供個(gè)人使用的私密場(chǎng)合,而IC卡門禁系統(tǒng)的適用范圍大多是公共場(chǎng)所,成本高、易丟失[1]。目前的電子密碼鎖通常以單片機(jī)為核心處理單元,無論是系統(tǒng)編碼還是解碼的生成均以軟件方式進(jìn)行。相比傳統(tǒng)的機(jī)械式鎖具,電子密碼鎖有易操作、免實(shí)物鑰匙等優(yōu)勢(shì),這使得電子密碼鎖成了當(dāng)今門禁系統(tǒng)的主流[2]。
本設(shè)計(jì)以STM32F103系列CPU為主控芯片,利用矩陣鍵盤實(shí)現(xiàn)密碼的輸入,將輸入的密碼與存儲(chǔ)器中原密碼逐一比較,從而判斷是否執(zhí)行開鎖功能。當(dāng)密碼輸入不正確時(shí),發(fā)光二極管會(huì)閃爍提醒,蜂鳴器發(fā)出報(bào)警聲;連續(xù)3次錯(cuò)誤輸入或輸入開鎖密碼時(shí)間過長(zhǎng),系統(tǒng)將自動(dòng)鎖定,只有用管理員密碼方能解鎖,而且,管理員可對(duì)該系統(tǒng)隨時(shí)修改密碼。
本設(shè)計(jì)硬件系統(tǒng)的功能包括開鎖密碼與管理員密碼更換、界面顯示、聲光報(bào)警等。
1.1.1 主控芯片選型
目前常見的電子密碼鎖基于STC89C51系列芯片,價(jià)格便宜[3],但內(nèi)存較小,IO口資源有限,后續(xù)功能擴(kuò)展有很大的局限性,且功耗較高。FPGA(Field Programmable Gate Array)系列芯片針對(duì)可編程技術(shù),具有并行執(zhí)行程序的能力,速度較高[4],主要用于高速視頻圖像信號(hào)處理領(lǐng)域,但其價(jià)格昂貴,編程移植性差。MSP430系列芯片的功耗低,常用于超低功耗的工業(yè)場(chǎng)合[5],但其運(yùn)算速度一般。STM32屬于性價(jià)比較高的單片機(jī)系列,基于高性能、低成本、低功耗的Cortex-M系列內(nèi)核,工作頻率高達(dá)72 MHz,片上可集成32~512 kB的Flash存儲(chǔ)器、64 kB的SRAM存儲(chǔ)器,其IO口、定時(shí)器、串行通信接口資源豐富[6]。利用STM32自帶的強(qiáng)大庫函數(shù)進(jìn)行編程,可大大縮短開發(fā)時(shí)間,而且,該芯片的開發(fā)板帶有許多外圍電路,如晶振、24C02存儲(chǔ)器等,所以可降低硬件電路的設(shè)計(jì)成本。因此,在設(shè)計(jì)電子密碼鎖時(shí),選用STM32系列單片機(jī)作為硬件系統(tǒng)主控芯片。
1.1.2 存儲(chǔ)模塊選型
Flash存儲(chǔ)器又稱閃存,其數(shù)據(jù)刪除不以單個(gè)字節(jié)為單位而是以固定區(qū)塊為單位的。區(qū)塊大小一般為256 kB~20 MB[7]。串行EEPROM(Electrically Erasable Programmable Read Only Memory)是基于IIC-BUS 的存儲(chǔ)器件,遵循二線制協(xié)議,它具有接口方便、體積小、掉電時(shí)數(shù)據(jù)不丟失、抗干擾性強(qiáng)等特點(diǎn)[8]。在電子密碼鎖系統(tǒng)設(shè)計(jì)時(shí)不需要太大的存儲(chǔ)空間,且EEPROM存儲(chǔ)器具有100萬以上的讀寫次數(shù)。本設(shè)計(jì)根據(jù)應(yīng)用條件和要求,采用帶有寫保護(hù)功能的串行EEPROM24C02存儲(chǔ)器作為密碼存儲(chǔ)器。
1.1.3 顯示模塊選型
LCD12864顯示屏的分辨率為128×64(pixel per inch),可實(shí)現(xiàn)16×8(pixel per inch)的ASCII字符集和16×16(pixel per inch)的漢字顯示,能夠支持并行和串行兩種顯示方式。該顯示模塊的性價(jià)比高,適用性強(qiáng)。因此,在設(shè)計(jì)電子密碼鎖時(shí),考慮實(shí)際需求,選用LCD12864作為系統(tǒng)的顯示模塊。
電子密碼鎖系統(tǒng)主要由STM32控制器、4×4矩陣鍵盤、存儲(chǔ)器、LCD顯示器和報(bào)警電路等模塊組成(見圖1)。
圖1 電子密碼鎖系統(tǒng)組成示意圖
1.2.1 矩陣鍵盤
電子密碼鎖系統(tǒng)的輸入模塊采用4×4矩陣鍵盤。該鍵盤的8個(gè)引腳接在STM32的IO口上,其中行線為輸出模式,列線為輸入模式。假設(shè)4排列線(輸入)為DCBA,4排列線全部被設(shè)置成輸入為0的模式,即DCBA=0000;4排行線(輸出)為4位(dcba),將其設(shè)置為dcba=1111。每個(gè)按鍵都會(huì)對(duì)應(yīng)一個(gè)16進(jìn)制數(shù),程序設(shè)計(jì)中采用查表方式得到鍵盤的返回值,在C語言中可以采用switch語句進(jìn)行鍵盤標(biāo)號(hào)[9]。在設(shè)計(jì)中,選用STM32芯片的PA0-PA7作為鍵盤接口,并以位移循環(huán)的方式實(shí)現(xiàn)該功能。矩陣鍵盤電路原理如圖2所示。
圖2 矩陣鍵盤電路原理圖
1.2.2 存儲(chǔ)器
24C02存儲(chǔ)器屬于EEPROM存儲(chǔ)器件,其引腳如圖3所示。在圖3中,VCC接高電平(3.3 V);VSS接公共端(地);WP為保護(hù)端(低電平有效),用于防止數(shù)據(jù)丟失。在設(shè)計(jì)中,A0、A1、A2接低電平,將A0H或A1H寫入存儲(chǔ)器,便可實(shí)現(xiàn)對(duì)24C02的讀寫。
圖3 24C02存儲(chǔ)器的引腳
24C02存儲(chǔ)器的模塊電路如圖4所示。
圖4 24C02存儲(chǔ)器的模塊電路圖
1.2.3 LCD顯示器
LCD12864液晶顯示屏具有支持中文顯示、易操作、顯示內(nèi)容多等特點(diǎn)。電子密碼鎖系統(tǒng)的顯示模塊采用串行輸入模式。在該模塊CS引腳為高電平時(shí),SCLK(Scrial Clock)串行時(shí)鐘的作用使得SID(串行數(shù)據(jù)口)輸入的3個(gè)字節(jié)為一個(gè)指令或一個(gè)顯示ASCII(American Standard Code for Information Interchange)符號(hào)的周期。這3個(gè)字節(jié)輸入后,顯示屏就會(huì)執(zhí)行相應(yīng)的功能或顯示相應(yīng)的字符。為了實(shí)現(xiàn)長(zhǎng)時(shí)間無操作時(shí)關(guān)閉背光電源的功能,需要將背光電源輸出端LED_K接在NPN型三極管的集電極上,其中發(fā)射極接地,基極接單片機(jī)的輸入/輸出口。通過IO口控制LCD背光電源的電路如圖5所示。
圖5 通過IO口控制LCD背光電源的電路圖
1.2.4 報(bào)警電路
鑒于報(bào)警時(shí)聲和光的同步性,可選取單片機(jī)的一個(gè)IO口進(jìn)行并聯(lián)控制。在電子密碼鎖系統(tǒng)設(shè)計(jì)中,選取聲音頻率為1 000 Hz的蜂鳴器和小功率三級(jí)管NPN3904,在Multisim軟件上進(jìn)行仿真測(cè)試,其理論值和設(shè)計(jì)結(jié)果一致。報(bào)警指示燈(紅色LED)需要串聯(lián)一個(gè)適當(dāng)電阻進(jìn)行保護(hù)。利用Altium Designer軟件設(shè)計(jì)的聲光報(bào)警模塊電路如圖6所示。
圖6 聲光報(bào)警模塊電路圖
電子密碼鎖系統(tǒng)初始化包括延時(shí)函數(shù)、中斷優(yōu)先級(jí)分組、定時(shí)器、LCD12864模塊、IIC通信協(xié)議、EEPROM模塊、聲光模塊、鍵盤模塊等軟硬件模塊的初始化。
初始化部分代碼如下:
delay_init();//延時(shí)函數(shù)初始化
LCD12864_Init();//LCD12864初始化
AT24CXX_Init();//24C02初始化
KEY_Init();//初始化矩陣鍵盤
TIMER2_Init(4999,7199); //750 ms運(yùn)行一次,報(bào)警。
考慮到實(shí)際應(yīng)用需要,所設(shè)計(jì)電子密碼鎖具有聲光報(bào)警功能、門鈴功能、菜單功能、系統(tǒng)鎖定功能、修改管理密碼與開鎖密碼功能等。在長(zhǎng)時(shí)間無操作時(shí),系統(tǒng)應(yīng)自動(dòng)進(jìn)入待機(jī)模式,以減少功耗,更加人性化。電子密碼鎖的系統(tǒng)流程如圖7所示。
圖7 電子密碼鎖的系統(tǒng)流程
系統(tǒng)的菜單功能包括更換管理密碼、更換開鎖密碼、顯示用戶信息等功能。系統(tǒng)的菜單功能流程如圖8所示。
圖8 系統(tǒng)的菜單功能流程
系統(tǒng)的密碼錯(cuò)誤處理流程如圖9所示。
圖9 系統(tǒng)的密碼錯(cuò)誤處理流程
中斷處理機(jī)制在電子密碼鎖系統(tǒng)設(shè)計(jì)中占有舉足輕重的地位。STM32控制芯片中共有8個(gè)定時(shí)器(TIM1~TIM8),其中TIM1和TIM8是高級(jí)控制定時(shí)器,TIM6和TIM7是基本定時(shí)器,其余皆為通用定時(shí)器[10]。
定時(shí)器工作時(shí),先對(duì)主頻進(jìn)行分頻(預(yù)分頻系數(shù)為psc),然后根據(jù)計(jì)數(shù)模式(分為向上計(jì)數(shù)模式、中央計(jì)數(shù)模式、向下計(jì)數(shù)模式3種,電子密碼鎖系統(tǒng)設(shè)計(jì)采用向上計(jì)數(shù)模式)的裝載值(arr)進(jìn)行定時(shí)時(shí)長(zhǎng)的設(shè)定[9]。時(shí)長(zhǎng)T的計(jì)算公式如下:
式中,72為STM32的工作頻率(單位為MHz)。
在系統(tǒng)調(diào)試過程中,因存儲(chǔ)器24C02中數(shù)據(jù)量超過了256字節(jié),而24C02的存儲(chǔ)量為256字節(jié),地址范圍是00H~FFH,所以需將輸入地址對(duì)255取余(假設(shè)輸入地址是add,即add%255),以保證數(shù)據(jù)不丟失。軟件仿真調(diào)試的結(jié)果證明,系統(tǒng)運(yùn)行效果較好,符合設(shè)計(jì)要求。系統(tǒng)的開機(jī)界面效果如圖10所示。
圖10 系統(tǒng)的開機(jī)界面效果
為了確保系統(tǒng)的安全性,用戶第一次使用該產(chǎn)品時(shí),需要設(shè)置自己的管理密碼和開鎖密碼,這樣更加人性化。系統(tǒng)的初次設(shè)置界面如圖11所示。
(a)設(shè)置管理員密碼 (b)牢記管理員密碼圖11 系統(tǒng)的初次設(shè)置界面
在正常使用的開鎖界面中按下M鍵,就會(huì)進(jìn)入系統(tǒng)菜單,按上、下鍵可進(jìn)行相應(yīng)的功能選擇。系統(tǒng)的菜單界面如圖12所示。
圖12 系統(tǒng)的菜單界面
電子密碼鎖系統(tǒng)的菜單顯示功能僅顯示4行字符,如果有更多層的菜單內(nèi)容,只要在顯示代碼處將xx對(duì)4取余即可,即DisplayChar(xx%4,1,“√”)。
開鎖成功后,顯示特有的文字,開鎖指示綠燈亮(見圖13)。
圖13 開鎖成功的界面效果
本文基于STM32設(shè)計(jì)的電子密碼鎖系統(tǒng)具有穩(wěn)定性好、功耗較低、便于二次開發(fā)、能夠進(jìn)行功能擴(kuò)展等特點(diǎn)。在該系統(tǒng)IO口接上無線收發(fā)模塊,可實(shí)現(xiàn)遠(yuǎn)程監(jiān)控管理,安全性更強(qiáng)。