燕秀秀
(山西工程職業(yè)學(xué)院,山西 太原 030009)
隨著科技的發(fā)展和進(jìn)步,各類先進(jìn)新科技技術(shù)被應(yīng)用到實(shí)際生活當(dāng)中,給生活增加了不少便利。比如,針對(duì)安全加密鎖,就出現(xiàn)了智能密碼鎖,它相對(duì)傳統(tǒng)的彈子鎖和機(jī)械鎖,解決了鎖距的行程距離短,容易被技術(shù)開啟,鑰匙可隨意配置等缺點(diǎn),它只需要設(shè)置幾位數(shù)字密碼就可完成安全鎖的功能,讓出行更加安全便捷,在實(shí)際生活中得到了廣泛的應(yīng)用。綜合便捷和安全因素的考慮,本文使用STC15W4K32S430I作為核心芯片,結(jié)合其他外圍器件設(shè)計(jì)了一款具有修改密碼功能的智能密碼鎖。
智能密碼鎖能夠?qū)崿F(xiàn)按鍵輸入密碼、自動(dòng)開關(guān)鎖、修改密碼、指示燈狀態(tài)顯示等功能。智能密碼鎖各個(gè)組成部分包括STC15W4K32S430I主控制芯片、矩陣鍵盤、蜂鳴器、LED指示燈、繼電器、數(shù)碼管等,如圖1所示。STC15W4K32S430I芯片實(shí)現(xiàn)整個(gè)系統(tǒng)的控制和數(shù)據(jù)處理;矩陣鍵盤可以進(jìn)行密碼的輸入、清除或修改操作;蜂鳴器和LED信號(hào)燈實(shí)現(xiàn)聲光報(bào)警指示,直觀給出結(jié)果;繼電器實(shí)現(xiàn)門鎖的開關(guān)控制,數(shù)碼管模塊進(jìn)行智能密碼鎖的狀態(tài)指示以及實(shí)時(shí)的數(shù)字密碼顯示,STC15W4K32S430I主控芯片內(nèi)部含有E2PROM,實(shí)現(xiàn)預(yù)設(shè)密碼的存儲(chǔ)。
關(guān)于智能密碼鎖的需求分析如下:
1) LED狀態(tài)指示燈有紅、黃、綠三種顏色,分別對(duì)應(yīng)“密碼錯(cuò)誤”、“密碼修改”、“密碼輸入”三種狀態(tài);
2) 數(shù)碼管能夠?qū)崟r(shí)顯示輸入的數(shù)值和狀態(tài);
3) E2PROM中存儲(chǔ)預(yù)設(shè)密碼,可被單片機(jī)讀寫,實(shí)現(xiàn)數(shù)據(jù)交換;
4) 4×4矩陣按鍵上分布有數(shù)字鍵0~9、“輸入”鍵、“清除”鍵、“修改”鍵,以及三個(gè)備用按鍵,支持?jǐn)U展功能;
5) I/O口連接三極管驅(qū)動(dòng)繼電器開合,實(shí)現(xiàn)智能密碼鎖開關(guān)功能。
圖1 智能密碼鎖系統(tǒng)結(jié)構(gòu)框圖
根據(jù)需求分析,能得到智能密碼鎖的主要7個(gè)狀態(tài):初始狀態(tài)、密碼輸入狀態(tài)、密碼驗(yàn)證狀態(tài)、密碼驗(yàn)證正確狀態(tài)、密碼驗(yàn)證錯(cuò)誤狀態(tài)、密碼修改狀態(tài)以及等待5 s無操作狀態(tài)。在這7種不同狀態(tài)下,分別有不同的響應(yīng),如表1所示,將各個(gè)狀態(tài)使用變量標(biāo)號(hào)Mode來表示,每個(gè)狀態(tài)使用一個(gè)從0到6中確定的數(shù)字表示。
表1 智能密碼鎖狀態(tài)表
初始狀態(tài)下,繼電器關(guān)閉、LED燈和蜂鳴器關(guān)閉;在密碼輸入過程當(dāng)中,由矩陣按鍵輸入密碼,數(shù)碼管顯示“H”樣字母以及按鍵數(shù)字,同時(shí)綠色LED燈點(diǎn)亮;在密碼驗(yàn)證狀態(tài)下,從單片機(jī)中E2PROM中讀取預(yù)設(shè)密碼進(jìn)行驗(yàn)證;如果密碼輸入正確,也就是密碼驗(yàn)證正確狀態(tài)時(shí),數(shù)碼管顯示0pen字樣,同時(shí)繼電器打開;如果密碼驗(yàn)證錯(cuò)誤狀態(tài)則繼電器關(guān)閉,同時(shí)紅燈亮,蜂鳴器發(fā)出聲音進(jìn)行提醒,數(shù)碼管顯示Error字樣;最后要求智能密碼鎖支持密碼修改,密碼修改的前提必須是要在密碼輸入正確的狀態(tài)下進(jìn)行,同時(shí)黃燈亮,數(shù)碼管顯示“C”樣字母及按鍵新密碼,然后進(jìn)行密碼保存到E2PROM,方便下次進(jìn)行密碼驗(yàn)證,同時(shí)要求在密碼輸入過程中允許進(jìn)行密碼輸入的清除;為了能夠更加地安全,我們規(guī)定無任何操作大于5 s則進(jìn)入待機(jī)狀態(tài),也就是初始狀態(tài)。
采用4×4的矩陣鍵盤,對(duì)應(yīng)的功能名稱如圖2所示。在軟件設(shè)計(jì)中采用矩陣鍵盤行列式掃描確定按下的按鍵。
圖2 矩陣鍵盤功能名稱圖
在電子產(chǎn)品中,蜂鳴器是非常常見的一種元器件,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、報(bào)警器、電子玩具等等,通常作為發(fā)聲裝置。當(dāng)密碼輸入錯(cuò)誤時(shí),采用無源蜂鳴器進(jìn)行三次間斷的發(fā)聲報(bào)警。其軟件流程圖和軟件設(shè)計(jì)如圖3所示,其中BUZZ為硬件上單片機(jī)控制蜂鳴器所使用的控制端口,且輸出PWM信號(hào)驅(qū)動(dòng)蜂鳴器發(fā)出聲音,當(dāng)驅(qū)動(dòng)輸出為低電平,且不是PWM信號(hào)時(shí),表示蜂鳴器沒有觸發(fā),蜂鳴器處于關(guān)閉狀態(tài),初始化蜂鳴器為低電平0。具體的發(fā)聲頻率由for循環(huán)中的延時(shí)長(zhǎng)短控制,間隔時(shí)長(zhǎng)由for循環(huán)外部的延時(shí)時(shí)長(zhǎng)控制。
圖3 蜂鳴器軟件流程圖、蜂鳴器軟件設(shè)計(jì)圖
LED燈組包括紅、黃、綠色,為了區(qū)分智能密碼鎖的不同工作狀態(tài),綠燈點(diǎn)亮表示智能密碼鎖正在輸入密碼按鍵值,黃燈點(diǎn)亮表示正在進(jìn)行密碼修改工作,紅燈點(diǎn)亮表示密碼輸入錯(cuò)誤??梢栽O(shè)置不同的位變量給三個(gè)LED燈。
根據(jù)需要配置對(duì)應(yīng)的單片機(jī)端口,當(dāng)對(duì)應(yīng)的LED燈要被點(diǎn)亮?xí)r,設(shè)置對(duì)應(yīng)的位變量值為0或者1來控制LED燈的亮滅。
繼電器的軟件設(shè)置類似于LED燈的設(shè)置,都是配置對(duì)應(yīng)的單片機(jī)端口,通過單片機(jī)輸出高低電平控制繼電器的打開和關(guān)閉,實(shí)現(xiàn)門鎖的開關(guān)。
采用8位數(shù)碼管3641AS和74HC595實(shí)現(xiàn)密碼顯示和狀態(tài)字樣的顯示。74HC595是一個(gè)功能非常強(qiáng)大的移位緩存器,由SCK信號(hào)腳控制數(shù)據(jù)信號(hào)輸入的脈沖,信號(hào)輸入的0或者1都是SDL腳決定的。由SCK與SDL共同控制信號(hào)的輸入[1]。單片機(jī)向74HC595發(fā)送一個(gè)字節(jié)數(shù)據(jù)[2]。
首先是對(duì)3個(gè)數(shù)據(jù)端作引腳定義。
然后是單片機(jī)向74HC595發(fā)送一個(gè)字節(jié)的函數(shù)Send_595(u8 dat),形參為dat。
最后是輸出位碼Send_595(T_COM[display_index])和段碼Send_595(t_display[LED8[display_index]]),位碼數(shù)組依次為0x01,0x02,0x03,0x04,0x05,0x06,0x07,分別表示8位數(shù)碼管,段碼數(shù)組t_display位標(biāo)準(zhǔn)的單個(gè)數(shù)碼管的字符顯示集合。
STC15W4K32S430I芯片內(nèi)部包含E2PROM,可以完成對(duì)預(yù)設(shè)密碼的讀寫操作。也就是智能密碼鎖的密碼驗(yàn)證時(shí)對(duì)預(yù)設(shè)密碼的讀以及密碼修改時(shí)對(duì)密碼的保存。使用IAP技術(shù)進(jìn)行對(duì)E2PROM讀寫操作,假設(shè)預(yù)設(shè)密碼為6位數(shù)字,使用E2PROM的幾個(gè)相關(guān)寄存器相關(guān)位。首先是控制寄存器IAP_CONTR,相關(guān)讀寫位是第0、第1、第2和第7位,第7位為使能位,只有當(dāng)它是1的時(shí)候,允許IAP讀寫E2PROM,否則是禁止對(duì)E2PROM讀寫。而第0、第1和第2位是設(shè)置CPU等待多長(zhǎng)時(shí)間。然后是設(shè)置命令寄存器IAP_CMD,相關(guān)位是第0位和第1位,MS1和MS0為00時(shí)候,E2PROM是待機(jī)模式,不進(jìn)行操作。當(dāng)為01時(shí),對(duì)E2PROM區(qū)進(jìn)行字節(jié)讀?。划?dāng)為10時(shí),對(duì)E2PROM區(qū)進(jìn)行字節(jié)編程;當(dāng)為11時(shí),對(duì)E2PROM區(qū)進(jìn)行扇區(qū)擦除。其次,是設(shè)置操作的E2PROM的地址寄存器IAP_ADDRH和IAP_ADDRL,分別是高位地址寄存器,用來指定地址的高8位,低位寄存器用來指定地址的低8位。最后,數(shù)據(jù)操作寄存器IAP_DATA,是對(duì)相關(guān)數(shù)據(jù)進(jìn)行的操作,將要寫入E2PROM中的數(shù)據(jù)放在數(shù)據(jù)寄存器中,或者從E2PROM中讀出來的數(shù)據(jù)也在此寄存器中。需要特別注意的是,使用IAP技術(shù)操作時(shí),都要對(duì)命令觸發(fā)寄存器先寫入5AH,再寫入A5H,那么IPA命令才會(huì)生效。這樣就可以對(duì)智能密碼鎖的密碼讀取判斷和密碼修改進(jìn)行操作了。
假設(shè)智能密碼鎖初始預(yù)設(shè)密碼是6個(gè)1。測(cè)試步驟如表2所示。
表2 智能密碼鎖軟件測(cè)試表
本文結(jié)合智能密碼鎖的實(shí)際需求,以STC15W4K32S430I為主控芯片,應(yīng)用矩陣鍵盤、數(shù)碼管、LED燈、蜂鳴器等,設(shè)計(jì)了一款智能密碼鎖系統(tǒng)。后續(xù)的發(fā)展可以考慮采用無線傳播紅外或者藍(lán)牙等技術(shù),進(jìn)行遠(yuǎn)程控制實(shí)現(xiàn)智能密碼鎖物聯(lián)網(wǎng)功能。