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