徐劍琴,李克訥,梁奇峰
新產(chǎn)品開發(fā)
基于AVR單片機(jī)的電子密碼鎖控制系統(tǒng)設(shè)計(jì)
徐劍琴1,李克訥2,梁奇峰1
(1.廣西科技大學(xué)工程訓(xùn)練中心,廣西柳州545006;2.廣西科技大學(xué)電氣與信息工程學(xué)院,廣西柳州545006)
設(shè)計(jì)一種以ATmega16L單片機(jī)為主控芯片的電子密碼鎖系統(tǒng)。該系統(tǒng)利用單片機(jī)自帶的EEPROM存儲(chǔ)器保存開鎖密碼;通過矩陣鍵盤進(jìn)行操作可以開鎖或重新設(shè)置開鎖密碼;采用UPS不間斷電源供電,保證系統(tǒng)在停電期間的正常工作;利用單片機(jī)的睡眠模式進(jìn)一步降低系統(tǒng)的功耗,有利于停電時(shí)延長UPS的供電時(shí)間;利用單片機(jī)內(nèi)部定時(shí)器進(jìn)行計(jì)時(shí)可以減輕CPU的負(fù)荷,有利于系統(tǒng)的穩(wěn)定運(yùn)行。該系統(tǒng)充分利用了單片機(jī)資源,簡化了系統(tǒng)設(shè)計(jì),提高了系統(tǒng)的安全可靠性。
電子密碼鎖;單片機(jī);鍵盤矩陣;密碼
在日常的生活和工作中,使用傳統(tǒng)的機(jī)械式鑰匙開鎖,人們常需攜帶多把鑰匙,使用極不方便,且鑰匙容易復(fù)制、丟失,其安全性大打折扣。隨著人們對(duì)家庭財(cái)產(chǎn)和人身安全保障意識(shí)的逐步提高,傳統(tǒng)的機(jī)械鎖具已經(jīng)很難滿足人們的防盜需要,因此,需要設(shè)計(jì)一種價(jià)格較低廉的安全有效的新型鎖具來代替?zhèn)鹘y(tǒng)機(jī)械鎖具。隨著大規(guī)模集成電路技術(shù)的發(fā)展,特別是單片機(jī)技術(shù)的應(yīng)用[1-7],出現(xiàn)了帶微處理器的智能密碼鎖,除具有電子密碼鎖的功能外,還引入了智能化管理、專家分析系統(tǒng)等功能,從而使密碼鎖具有很高的安全性和可靠性,可應(yīng)用于安全性要求較高的場合。
為了降低電子密碼鎖的制作成本,提高電子密碼鎖的普及率,本文設(shè)計(jì)一種基于AVR單片機(jī)的電子密碼鎖系統(tǒng),具有以下主要功能或特點(diǎn):
(1)通過鍵盤面板輸入完成開鎖或修改開鎖密碼操作;(2)當(dāng)鍵入的密碼與開鎖密碼不一致時(shí),提示密碼不對(duì),重新輸入;(3)當(dāng)鍵入錯(cuò)誤密碼的次數(shù)連續(xù)超過3次時(shí),系統(tǒng)發(fā)出長約5min的長時(shí)警報(bào);(4)報(bào)警期間不能進(jìn)行開鎖或者修改密碼等操作,以防竊賊多次試探密碼;(5)輸入結(jié)束報(bào)警代碼“000”可停止報(bào)警,該代碼可由用戶修改;(6)可設(shè)置1~16位的開鎖密碼,密碼由數(shù)字0~9、字母A~Z組成;(7)長時(shí)無操作時(shí)系統(tǒng)進(jìn)入睡眠(掉電)模式,以降低系統(tǒng)損耗;(8)設(shè)計(jì)了UPS不間斷電源,以有效保證密碼鎖在停電時(shí)能保持正常工作。
本系統(tǒng)主要由ATmega16L單片機(jī)、4×4矩陣鍵盤、1602液晶顯示器、電源模塊、開鎖控制電路和報(bào)警控制電路等部分組成,整體框圖如圖1所示。其中ATmega16L單片機(jī)為主控芯片,利用單片機(jī)自帶的EEPROM存儲(chǔ)器保存開鎖密碼;矩陣鍵盤用于輸入數(shù)字和字母組成的密碼以及實(shí)現(xiàn)其他各種輔助功能;液晶屏用于顯示輸入提示、執(zhí)行結(jié)果以及短時(shí)顯示鍵入密碼等。根據(jù)屏幕提示,從矩陣鍵盤輸入一組密碼,密碼的每一位只會(huì)在液晶屏上顯示1~2 s,然后以“*”代替,以防旁人竊取密碼,增強(qiáng)密碼鎖的安全保護(hù)性。密碼輸入完畢后,將該密碼和存儲(chǔ)在EEPROM的開鎖密碼作比較,若一致,則開鎖控制電路形成電流通路,將鎖打開。若輸入密碼與開鎖密碼不一致,則發(fā)出提示聲,屏幕顯示“Password Error”,“Enter your password”等提示語;若輸入錯(cuò)誤密碼次數(shù)連續(xù)超過3次,則報(bào)警控制電路發(fā)出警報(bào)聲,以引起周邊的注意。長時(shí)報(bào)警結(jié)束后提示“Enter your password”,方可進(jìn)行新一輪操作。
圖1 基于AVR單片機(jī)的電子密碼鎖系統(tǒng)總體結(jié)構(gòu)示意圖
根據(jù)電子密碼鎖的總體設(shè)計(jì)示意圖,系統(tǒng)以ATmega16L單片機(jī)為控制核心,其它部分以模塊化進(jìn)行設(shè)計(jì)。ATmega16L是增強(qiáng)的AVR RISC結(jié)構(gòu)的低功耗8位CMOS微控制器,且含有EEPROM,不需要另外再設(shè)計(jì)外部存儲(chǔ)器模塊來保存開鎖密碼,使系統(tǒng)硬件設(shè)計(jì)更為簡化、可靠。
2.1 4×4矩陣鍵盤的模塊設(shè)計(jì)
鍵盤分為功能鍵和密碼鍵。鍵盤面板如圖2所示。功能鍵有切換鍵、設(shè)定鍵、刪除鍵和確定鍵。密碼鍵用于輸入密碼。密碼鍵的字符為數(shù)字0~9以及字母A~Z.圖2給出了鍵盤面板示意圖,各按鍵具體的功能定義如表1所示。用戶可采用數(shù)字和字母任意組合的方式編排自己的開鎖密碼,以提高密碼的破譯難度,增強(qiáng)電子鎖的防盜性能。鍵盤電路設(shè)計(jì)[8]如圖3所示。
圖2 鍵盤面板示意圖
表1 按鍵功能
圖3 用5個(gè)I/O口實(shí)現(xiàn)4×4按鍵矩陣的原理圖
從圖3可見,鍵盤電路主要由行列式矩陣鍵盤和中斷接口電路構(gòu)成。為了降低系統(tǒng)的功耗,減少系統(tǒng)的維護(hù),且在停電期間能延長UPS的使用時(shí)間,本系統(tǒng)使用了睡眠(掉電)模式,并采用外部中斷0喚醒系統(tǒng)。當(dāng)電子鎖無操作,即無任何按鍵按下,約達(dá)10 min后,系統(tǒng)進(jìn)入掉電模式;當(dāng)有按鍵按下時(shí),系統(tǒng)即被喚醒,并在顯示屏上提示用戶做出相應(yīng)操作。矩陣鍵盤的模塊設(shè)計(jì)中,把三極管T1的集電極連接到ATmega16L單片機(jī)的PD2(INT0)復(fù)用引腳,INT0采用低電平觸發(fā)方式。
其工作過程可按如下步驟進(jìn)行[8]:(1)定義PD端口的引腳PD2為帶上拉電阻輸入模式,PD4~PD7為高電平輸出模式。當(dāng)有鍵按下時(shí),三極管T1的基極由低變高,T1導(dǎo)通,其集電極由高電平跳變成低電平,使PD2狀態(tài)為“0”,通過檢測PD2的狀態(tài)可判斷是否有鍵按下;(2)掃描按鍵碼值:從引腳PD4開始,依次將引腳PD4~PD7置“1”輸出,其余三個(gè)設(shè)置為輸入模式(如PD4置“1”時(shí),PD5~PD7為輸入)。這樣當(dāng)有按鍵按下時(shí),通過二極管D5~D8與該按鍵相連的引腳此時(shí)會(huì)為“1”.然后讀入PD端口值,根據(jù)端口值可以得到該按鍵的碼值。
值得指出的是,這是一種用N+1個(gè)I/O口實(shí)現(xiàn)N×N矩陣式鍵盤的方法[8],比如用5個(gè)I/O口實(shí)現(xiàn)4× 4按鍵矩陣,可有效節(jié)約單片機(jī)引腳資源。因此,還可以相應(yīng)增加按鍵的數(shù)量,以對(duì)鍵盤的輸入進(jìn)行擴(kuò)展,實(shí)現(xiàn)系統(tǒng)的更多功能。另外,PD2(INT0)引腳分別以查詢和中斷方式對(duì)啟動(dòng)鍵盤掃描和喚醒系統(tǒng)功能進(jìn)行復(fù)用。
2.2 備用電源控制電路設(shè)計(jì)
為了保證電子密碼鎖在任何情況下的正常供電,本電路設(shè)計(jì)了UPS后備電源,主要由市電供電電路,電壓檢測及電子開關(guān)切換電路,蓄電池充電電路和蓄電池組成。電源模塊采用變壓器降壓,經(jīng)整流濾波后,采用線性穩(wěn)壓芯片KA7805E穩(wěn)壓,以提供+5 V直流電源,給系統(tǒng)供電。當(dāng)直流電源小于4.5 V或者停電時(shí),能自動(dòng)進(jìn)行電源切換,由蓄電池供電。電壓檢測及電子開關(guān)切換電路如圖4所示。HT7044A是電壓檢測器[9],在+5 V直流電源正常供電的情況下,HT7044A輸出高電平,由T3,T4構(gòu)成的達(dá)林頓管使繼電器通電,常開觸點(diǎn)閉合與直流電源相連,常閉觸點(diǎn)斷開;當(dāng)直流電源小于4.5 V或者停電時(shí),繼電器斷電,常開觸點(diǎn)斷開,常閉觸點(diǎn)恢復(fù)閉合,將常閉觸點(diǎn)將蓄電池和電路相連,實(shí)現(xiàn)直流電源和蓄電池供電的切換,有效保證電子密碼鎖系統(tǒng)的正常工作。
圖4 電壓檢測及電子開關(guān)切換電路
2.3 開鎖控制電路
開鎖控制電路如圖5所示,單片機(jī)通過引腳PC1與該電路相連。PC1為高電平輸出時(shí),三極管T5截止,電磁鎖的電磁線圈斷電,電磁鎖為“閉鎖”狀態(tài);通過矩陣鍵盤輸入的密碼與開鎖密碼經(jīng)比較驗(yàn)證一致后,PC1輸出低電平,T5導(dǎo)通,電磁線圈通電動(dòng)作,繼而開鎖。
圖5 開鎖控制電路圖
AVR單片機(jī)程序采用ATMEL公司推薦的ICCAVR編程軟件開發(fā)[1]。電子密碼鎖系統(tǒng)程序由主程序、子程序和中斷程序組成。子程序主要負(fù)責(zé)確定按鍵按下、掃描鍵盤、輸入識(shí)別、密碼的比較、密碼設(shè)置、密碼鎖開關(guān)動(dòng)作和報(bào)警、LCD顯示等。定時(shí)器1中斷程序負(fù)責(zé)計(jì)時(shí)以進(jìn)入睡眠狀態(tài)和長報(bào)警計(jì)時(shí)等。程序的編制和仿真在計(jì)算機(jī)上完成,仿真驗(yàn)證通過后把程序下載到ATmega16L進(jìn)行調(diào)試和運(yùn)行。
3.1 系統(tǒng)主程序與子程序設(shè)計(jì)
系統(tǒng)程序采用模塊化設(shè)計(jì),主要由端口初始化程序、LCD初始化程序、定時(shí)器1設(shè)置程序void Timer1_Init()、外部中斷0設(shè)置程序void INT0_init()、按下按鍵查詢與處理程序void qdd(),鍵盤掃描程序uchar keyscan()、鍵碼識(shí)別程序void keyprocess()等構(gòu)成。其中,為了實(shí)現(xiàn)開鎖、設(shè)置密碼、密碼輸錯(cuò)報(bào)警這些重要功能,鍵碼識(shí)別程序中包含有開鎖設(shè)密及報(bào)警程序void KSSM()。主程序流程圖的設(shè)計(jì)如圖6所示。
圖6 主程序流程圖
3.1.1 系統(tǒng)初始化程序
在系統(tǒng)開始工作的時(shí)候,先要對(duì)全局變量進(jìn)行定義和初始化,再對(duì)整個(gè)系統(tǒng)的子程序進(jìn)行聲明。全局變量包括暫存鍵入代碼的數(shù)組userpsw[16]、暫存第一遍新密碼的數(shù)組Newpsw1[16]、按鍵按下標(biāo)志keyon、切換鍵按下次數(shù)qhcount、長時(shí)報(bào)警標(biāo)志alarm、輸錯(cuò)次數(shù)errcount、輸入位數(shù)inputbit、無鍵按下計(jì)數(shù)器sleepcount、長時(shí)報(bào)警計(jì)數(shù)器llarmcount、設(shè)置密碼標(biāo)志pswset、密碼錯(cuò)誤標(biāo)志pswerr等;主程序中設(shè)定有變量按鍵值keyv.
3.1.2 定時(shí)器1設(shè)置程序
電子密碼鎖系統(tǒng)要對(duì)兩種情況進(jìn)行計(jì)時(shí):一是系統(tǒng)無操作(即無按鍵按下)達(dá)10 min左右,單片機(jī)進(jìn)入睡眠模式以降低系統(tǒng)功耗;二是當(dāng)連續(xù)三次輸錯(cuò)密碼,電子鎖系統(tǒng)發(fā)出5 min左右的長時(shí)報(bào)警。為了充分利用單片機(jī)的硬件資源,不占用CPU,優(yōu)化系統(tǒng)程序運(yùn)行,設(shè)置定時(shí)器1以中斷方式計(jì)時(shí)。由于單片機(jī)采用8MHz晶振,因此,對(duì)于16位定時(shí)器1在Timer1_Init()中可配置如下:
{
SREG=0x80;
TCNT1H=0x85;
在碳水化合物不足的情況下,機(jī)體會(huì)動(dòng)用脂肪供能維持生命,但脂肪在碳水化合物不足的情況下不能被徹底氧化而產(chǎn)生酮體,如果酮體不能及時(shí)被氧化就會(huì)在體內(nèi)堆積而導(dǎo)致酮癥酸中毒,過多的酮體對(duì)寶寶的神經(jīng)發(fā)育和大腦發(fā)育不利,所以孕婦應(yīng)該保證每日的碳水化合物的攝入,以維持正常的血糖水平和預(yù)防酮體的產(chǎn)生。每日碳水化合物不能少于150克,換算成主食大約為200克。
TCNT1L=0xEE;//置計(jì)數(shù)初值,設(shè)定時(shí)時(shí)間為//1 s
TCCR1A=0x00;//普通模式
TCCR1B=0x04;//256分頻
TIMSK=0x04;//使能定時(shí)器溢出中斷
}
以使單片機(jī)每過一秒進(jìn)入定時(shí)器1中斷子程序TIMER1_OVF_interrupt(),實(shí)現(xiàn)逐秒計(jì)時(shí)功能。
3.1.3 外部中斷0設(shè)置程序和單片機(jī)睡眠模式
{
GICR&=0xBF;//關(guān)閉INT0中斷
MCUCR=0x20;//INT0低電平觸發(fā);設(shè)睡//眠模式為掉電模式
GIFR=0x40;//清除INT0中斷標(biāo)志位
SREG|=BIT(7);//開啟總中斷
}
當(dāng)無按鍵按下超過10 min,即計(jì)時(shí)時(shí)間sleepcount>=600(s)時(shí),在主程序中用GICR|=0x40使能外部中斷INT0;并置位寄存器MCUCR的SE位,即MCUCR|=0x40,然后執(zhí)行指令SLEEP()使單片機(jī)進(jìn)入睡眠狀態(tài)。當(dāng)有按鍵按下時(shí),單片機(jī)的PD2(INT0)的輸入會(huì)由“1”變“0”,使INT0低電平觸發(fā)喚醒單片機(jī)。
3.1.4 鍵碼識(shí)別程序和開鎖設(shè)密及報(bào)警程序
當(dāng)系統(tǒng)確定有鍵按下,即keyon為1時(shí),系統(tǒng)進(jìn)入鍵盤掃描子程序keyscan(),得到按鍵值keyv,再進(jìn)入鍵碼識(shí)別程序keyprocess(keyv),根據(jù)鍵值keyv調(diào)用不同的按鍵功能,見表1.鍵碼識(shí)別程序流程圖如圖7所示。在開鎖的過程中,用戶鍵入的密碼會(huì)逐位暫存在數(shù)組userpsw[]中。鍵入完密碼后,按下確認(rèn)鍵,系統(tǒng)進(jìn)入開鎖設(shè)密及報(bào)警程序KSSM(),把鍵入的密碼與保存在EEPROM的開鎖密碼進(jìn)行比較。如果密碼校驗(yàn)為正確,則給出開鎖信號(hào),同時(shí)清零密碼錯(cuò)誤標(biāo)志pswerr=0.如果鍵入代碼與開鎖密碼不一致,則系統(tǒng)發(fā)出提示。若用戶連續(xù)3次輸入不正確,即輸錯(cuò)次數(shù)errcount=3,密碼鎖將會(huì)發(fā)出約5min的長時(shí)報(bào)警聲。若在報(bào)警期間,鍵入結(jié)束報(bào)警代碼,可停止報(bào)警。電子鎖要在長時(shí)報(bào)警結(jié)束后才允許新一輪開鎖或設(shè)置新密碼操作。用戶若要設(shè)置新密碼,則按下設(shè)定鍵,此時(shí)設(shè)置密碼標(biāo)志pswset=1、密碼錯(cuò)誤標(biāo)志pswerr=1.只有在開鎖成功的情況下,即pswerr= 0、pswset=1時(shí),才允許設(shè)置新密碼;為防止誤設(shè)密碼,要求輸入兩遍一致的新密碼,密碼設(shè)置才能成功??梢姰?dāng)按下確定后,開鎖設(shè)密及報(bào)警程序根據(jù)不同的條件來分別實(shí)現(xiàn)開鎖、設(shè)置密碼、輸入密碼錯(cuò)誤報(bào)警的功能,其流程圖如圖8所示。
圖7 鍵碼識(shí)別程序流程圖
圖8 開鎖設(shè)密報(bào)警程序流程圖
3.1.5 密碼字符的切換
矩陣鍵盤上密碼鍵只有12個(gè),為了完整表示數(shù)字(0~9)和大寫字母(A~Z)共36個(gè)字符,則要求每個(gè)密碼鍵能表示3個(gè)字符(見圖2)。因此,可設(shè)計(jì)切換鍵來切換同一密碼鍵上的字符。實(shí)現(xiàn)切換的原理見圖9.其工作原理大致如下:在輸入代碼過程中,若想得到某個(gè)密碼鍵的第二或第三位代碼,可先按切換鍵,再按密碼鍵;系統(tǒng)會(huì)計(jì)算連續(xù)按下切換鍵的次數(shù)qhcount++,再對(duì)3求余,即qhcount=qhcount%3。當(dāng)qhcount為0時(shí)(或不按切換鍵),鍵入為首位字符(0~9和A~B);當(dāng)qhcount為1時(shí),鍵入為第二位字符(C~N);qhcount為2時(shí),則為第三位字符(O~Z).
圖9 密碼鍵字符切換流程圖
3.2 定時(shí)器1中斷子程序的設(shè)計(jì)
單片機(jī)每秒進(jìn)入一次定時(shí)器1中斷進(jìn)行計(jì)時(shí),在中斷程序TIMER1_OVF_interrupt()中分別對(duì)兩種情況計(jì)時(shí):一是用語句sleepcount++計(jì)時(shí)無操作時(shí)間,以控制單片機(jī)進(jìn)入睡眠模式;二是用長時(shí)報(bào)警計(jì)數(shù)器llarmcount++實(shí)現(xiàn)長時(shí)報(bào)警定時(shí),當(dāng)長時(shí)報(bào)警結(jié)束時(shí)間到,即計(jì)時(shí)到llarmcount>=300(s)時(shí),發(fā)出結(jié)束報(bào)警指令。
本文設(shè)計(jì)了一種以AVR單片機(jī)為控制核心的電子密碼鎖系統(tǒng)。單片機(jī)接受由矩陣鍵盤鍵入的密碼后,與存貯在EEPROM的開鎖密碼作比較,如果密碼輸入正確,就將鎖打開;如果密碼輸入錯(cuò)誤,只要錯(cuò)誤次數(shù)不超過三次,則允許重新輸入密碼開鎖;若錯(cuò)誤次數(shù)超過三次,則系統(tǒng)發(fā)出警報(bào)。用戶還可以自行設(shè)置新密碼。在設(shè)計(jì)中采用了UPS技術(shù),從而大大提高了電子密碼鎖的安全可靠性。經(jīng)實(shí)驗(yàn)驗(yàn)證密碼鎖系統(tǒng)設(shè)計(jì)達(dá)到了預(yù)期的效果,且成本低,易操作,可適用于家具、辦公和住宅等智能控制系統(tǒng)中。
[1]馬潮,詹衛(wèi)前,耿德根.ATmega8原理及應(yīng)用手冊[M].北京:清華大學(xué)出版社,2003.
[2]Hutter M,Schwabe P.Multiprecision multiplication on AVR revisited[J].Journal of Cryptogra-phic Engineering,2014(06):1-14.
[3]Spale J.Home Automation with a low-cost AVR-based Board[J].IFAC-PapersOnLine,2015,48(4):398-403.
[4]潘雪峰,李臘元,楊威棣.單片機(jī)電子密碼鎖加密模塊的研究與設(shè)計(jì)[J].自動(dòng)化儀表,2012,33(05):70-72,76.
[5]王國龍.基于單片機(jī)的多功能電子密碼鎖[J].信息技術(shù),2013(08):107-110.
[6]韓團(tuán)軍.基于單片機(jī)的電子密碼鎖設(shè)計(jì)[J].國外電子測量技術(shù),2010(7):58-61.
[7]陳珍軍,趙秋霞,李亞敏.基于ARM和ZigBee的智能家居系統(tǒng)研究與設(shè)計(jì)[J].中國科技論文,2015,10(5):584-587.
[8]張雪峰,李榮源,袁海文.一種用N+1個(gè)I/O口實(shí)現(xiàn)的N×N矩陣式鍵盤[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2001(11):31-33.
[9]李學(xué)海.電壓檢測器HT70XX系列及其應(yīng)用[J].現(xiàn)代通信,1999(3):24-25.
Design of an Electronic Lock Control System Based on AVR
XU Jian-qin1,LI Ke-ne2,LIANG Qi-feng1
(1.Engineering Training Center,Guangxi University of Science and Technology,Liuzhou Guangxi 545006,China;2.Guangxi University of Science and Technology,School of Electrical and Information Engineering,Liuzhou Guangxi545006,China)
The design of an electronic lock control system was presented in this article and ATmega16L was used as the main control unit for this system.This system memorized the password in the built-in EEPROM storage. With the matrix keypad operation,users could realize unlocking and password resetting functions.An UPS guaranteed the normal operation of the system even if there was a power failure.The efficiency of the system could be improved while using the sleep mode of the MCU,this would extend the working length of the UPS when it was out of power.The system could also reduce the load of the CPU by using the internal timer,and simultaneously,guarantee the stable operation of the system.The application of the MCU simplifies the design of the system and also boosts the safety of the system.
electronic lock;microcontroller;matrix keypad;password
TP368.1
A
1672-545X(2017)02-0063-05
2016-11-23
廣西高等學(xué)??蒲许?xiàng)目資助(2013YB175);廣西科技大學(xué)博士啟動(dòng)基金(院科博12Z05)
徐劍琴(1979-),女,廣西北海人,講師,碩士研究生,主要從事電工電子技術(shù)方面的教學(xué)與研究。