基于單片機(jī)控制的電子密碼鎖
一、 引言
隨著人們生活水平的提高,如何實現(xiàn)家庭防盜這一問題也變的尤其的突出,傳統(tǒng)的機(jī)械鎖由于其構(gòu)造的簡單,被撬的事件屢見不鮮,電子鎖由于其保密性高,使用靈活性好,安全系數(shù)高,受到了廣大用戶的親呢。
設(shè)計本課題時構(gòu)思了兩種方案:一種是用以AT89s51為核心的單片機(jī)控制方案;另一種是用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路控制方案。考慮到數(shù)字電路方案原理過于簡單,而且不能滿足現(xiàn)在的安全需求,所以本文采用前一種方案。
二、方案論證與比較
方案一:采用數(shù)字電路控制。其原理方框圖如圖1-1所示。
600)makesmallpic(this,600,1800);" border="0" />
圖2-1 數(shù)字密碼鎖電路方案
采用數(shù)字密碼鎖電路的好處就是設(shè)計簡單。用以74LS112雙JK觸發(fā)器構(gòu)成的數(shù)字邏輯電路作為密碼鎖的核心控制,共設(shè)了9個用戶輸入鍵,其中只有4個是有效的密碼按鍵,其它的都是干擾按鍵,若按下干擾鍵,鍵盤輸入電路自動清零,原先輸入的密碼無效,需要重新輸入;如果用戶輸入密碼的時間超過40秒(一般情況下,用戶不會超過40秒,若用戶覺得不便,還可以修改)電路將報警80秒,若電路連續(xù)報警三次,電路將鎖定鍵盤5分鐘,防止他人的非法操作。
電路由兩大部分組成:密碼鎖電路和備用電源(UPS),其中設(shè)置UPS電源是為了防止因為停電造成的密碼鎖電路失效,使用戶免遭麻煩。
密碼鎖電路包含:鍵盤輸入、密碼修改、密碼檢測、開鎖電路、執(zhí)行電路、報警電路、鍵盤輸入次數(shù)鎖定電路。
方案二:采用一種是用以AT89S51為核心的單片機(jī)控制方案。利用單片機(jī)靈活的編程設(shè)計和豐富的IO端口,及其控制的準(zhǔn)確性,不但能實現(xiàn)基本的密碼鎖功能,還能添加調(diào)電存儲、聲光提示甚至添加遙控控制功能。其原理如圖1-2所示。
600)makesmallpic(this,600,1800);" border="0" />
通過比較以上兩種方案,單片機(jī)方案有較大的活動空間,不但能實現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對系統(tǒng)進(jìn)行升級,所以我們采用后一種方案。
三、電路的功能單元設(shè)計
1.開鎖機(jī)構(gòu)
通過單片機(jī)送給開鎖執(zhí)行機(jī)構(gòu),電路驅(qū)動電磁鎖吸合,從而達(dá)到開鎖的目的。其原理如圖2-1所示。
600)makesmallpic(this,600,1800);" border="0" />
圖3-1密碼鎖開鎖機(jī)構(gòu)示意圖
當(dāng)用戶輸入的密碼正確而且是在規(guī)定的時間(普通用戶要求在12s內(nèi)輸入正確的密碼,管理員要求在5s輸入正確的密碼)輸入的話,單片機(jī)便輸出開門信號,送到開鎖驅(qū)動電路,然后驅(qū)動電磁鎖,達(dá)到開門的目的。其實際電路如圖2-2所示。
電路驅(qū)動和開鎖兩級組成。由D5、R1、T10組成驅(qū)動電路,其中T10可以選擇普通的小功率三極管如9014、9018都可以滿足要求。D5作為開鎖的提示;由D6、C24、T11組成。其中D6、C24是為了消除電磁鎖可能產(chǎn)生的反向高電壓以及可能產(chǎn)生的電磁干擾。T11可選用中功率的三極管如8050,電磁鎖的選用要視情況而定,但是吸合力要足夠且由一定的余量。
在本次設(shè)計中,基于節(jié)省材料的原則,暫時用發(fā)光二極管代替電磁鎖,發(fā)光管亮,表示開鎖;滅,表示沒有開鎖。
600)makesmallpic(this,600,1800);" border="0" />
2.按鍵電路設(shè)計
由于設(shè)計要求使用矩陣鍵盤,所以本設(shè)計就采用行列式鍵盤,同時也能減少鍵盤與單片機(jī)接口時所占用的I/O線的數(shù)目,在按鍵比較多的時候,通常采用這樣方法。其原理如圖2-3所示。
600)makesmallpic(this,600,1800);" border="0" />
圖3-3 行列式鍵盤原理電路圖
每一條水平(行線)與垂直線(列線)的交叉處不相通,而是通過一個按鍵來連通,利用這種行列式矩陣結(jié)構(gòu)只需要N條行線和M條列線,即可組成具有N×M個按鍵的鍵盤。
在這種行列式矩陣鍵盤非鍵盤編碼的單片機(jī)系統(tǒng)中,鍵盤處理程序首先執(zhí)行等待按鍵并確認(rèn)有無按鍵按下的程序段。
當(dāng)確認(rèn)有按鍵按下后,下一步就要識別哪一個按鍵按下。對鍵的識別通常有兩種方法:一種是常用的逐行掃描查詢法;另一種是速度較快的線反轉(zhuǎn)法。
對照圖2-3所示的44鍵盤,說明線反轉(zhuǎn)個工作原理。
首先辨別鍵盤中有無鍵按下,有單片機(jī)I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會有一根行線電平被拉至低電平從而使行線不全為1。
判斷鍵盤中哪一個鍵被按下使通過將列線逐列置低電平后,檢查行輸入狀態(tài)來實現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點(diǎn)上的那個鍵。
按鍵的操作面板如圖圖2-3所示。共計數(shù)字鍵10個,功能鍵6個。鍵盤上還有3個指示燈和一個蜂鳴器。
600)makesmallpic(this,600,1800);" border="0" />
圖3-4 按鍵操作面板示意圖
10個數(shù)字鍵用來輸入密碼,另外6個功能鍵分別是:CLR、EN、F1、F2、F3、F4。其中CLR鍵的功能是當(dāng)輸入密碼錯誤的時候,清除前面已經(jīng)輸入的數(shù)據(jù),重新輸入。EN鍵的功能是確認(rèn)輸入的密碼。F1是管理模式切換鍵,當(dāng)用戶不小心三次輸入密碼都沒有正確,鍵盤被鎖定,這個時候就可以啟動管理模式,使用管理員的密碼來開門。F2是用來進(jìn)入修改密碼的狀態(tài)。F3用來關(guān)閉顯示器,一來可以節(jié)省電量,另外也可以防止不法分子偷窺密碼。F4用來作電鈴。
上面的3個指示燈L1、L2、L3是用來指示操作的狀態(tài):L1鎖定及輸入指示狀態(tài)燈,正常的情況下顯示紅色,當(dāng)鍵盤動作的時候,L1燈開始閃動,當(dāng)鍵盤處于鎖定狀態(tài)時,指示燈也顯示紅色。L2開門指示燈,當(dāng)用戶在規(guī)定的時間內(nèi)正確的輸入了密碼,此燈轉(zhuǎn)變?yōu)榫G色,表示開門,否則不顯示。L3是管理員狀態(tài)指示燈,當(dāng)按下F1后,指示燈自動點(diǎn)亮。
面板上還有一個蜂鳴器,其中一個功能是用來指示操作的按鍵是否在成功的按下;另外一個功能是當(dāng)用戶輸入密碼錯誤的次數(shù)超過了3次,鳴笛以示報警。
3.顯示電路設(shè)計
本系統(tǒng)設(shè)計的顯示電路是為了給使用者以提示而設(shè)置的??紤]到為了節(jié)約單片機(jī)的口資源,本系統(tǒng)的顯示采用串行顯示的方式,只使用單片機(jī)的兩個串行口,就可以完成單片機(jī)的顯示功能,顯示電路的電路原理圖如圖2-5所示。
電路設(shè)定:當(dāng)程序檢測在5分鐘內(nèi)沒有按鍵操作的時候,就關(guān)閉顯示。這個功能使用程序來實現(xiàn)的,一旦沒有按鍵動作就啟動一個定時器,檢測在5分鐘內(nèi)沒有按鍵動作的時候,啟動一個程序,關(guān)閉顯示,這樣可以達(dá)到節(jié)省電能的目的。
從單片機(jī)串口輸出的信號先送到左邊的移位寄存器(74HC164),由于移位脈沖的作用,使數(shù)據(jù)向右移,達(dá)到顯示的目的。移位寄存器74HC164還兼作數(shù)碼管的驅(qū)動,插頭1(header1)接電源,插頭2(header2)接數(shù)據(jù)和脈沖輸出端。電路中的三個整流管D1~D3的作用是降低數(shù)碼管的工作電壓,增加其使用壽命。
600)makesmallpic(this,600,1800);" border="0" />
圖3-5 顯示器原理圖
4.AT24C02掉電存儲單元的設(shè)計
掉電存儲單元的作用是在電源斷開的時候,存儲當(dāng)前設(shè)定的單價信息。AT24C02是ATMEL公司的2KB字節(jié)的電可擦除存儲芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10Ua(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。其電路如圖2-5所示。
600)makesmallpic(this,600,1800);" border="0" />
圖3-7 掉電存儲電路原理圖
圖中R8、R10是上拉電阻,其作用是減少AT24C02的靜態(tài)功耗,由于AT24C02的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。
每當(dāng)設(shè)定一次單價,系統(tǒng)就自動調(diào)用存儲程序,將單價信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價等信息,讀到緩存單元中,供主程序使用。
5.密碼鎖的電源電路設(shè)計
為了防止停電情況的發(fā)生,本電路后備了UPS電源,它包括市電供電電路,停電檢測電路,電子開關(guān)切換電路,蓄電池充電電路和蓄電池組成。電源電路圖如圖2-8所示。
600)makesmallpic(this,600,1800);" border="0" />
圖3-8 市電供電電路
220V市電通過變壓器降壓成12V的交流電,再經(jīng)過整流橋整流,7805穩(wěn)壓到5V送往電子切換電路,由于本電路功耗較少,所以選用10W的小型變壓器。
由R8,R9,R6,R7及IC14構(gòu)成電壓比較器,正常情況下,V+<V- IC14輸出高電平,繼電器的常閉觸點(diǎn)和市電相連;當(dāng)市電斷開,V+>V- IC14輸出高電平,由T3,T4構(gòu)成的達(dá)林頓管使繼電器J開啟,將其常開觸電將蓄電池和電路相連,實現(xiàn)市電和蓄電池供電的切換,保證電子密碼鎖的正常工作(視電池容量而定持續(xù)時間)。其電路圖如下圖6所示:
600)makesmallpic(this,600,1800);" border="0" />
T1,T2構(gòu)成的蓄電池自動充電電路,它在電池充滿后自動停止充電,其中D1亮為正在充電,D2為工作指示。由R4,R5,T1構(gòu)成電壓檢測電路,蓄電池電壓低,則T1,T2導(dǎo)通,實現(xiàn)對其充電;充滿后,T1,T2截止,停止充電,同時D1熄滅,電路中C4的作用是濾除干擾信號。其電路圖如圖7所示:
600)makesmallpic(this,600,1800);" border="0" />
圖3-10 蓄電池自動充電電路
6.設(shè)計總框圖
600)makesmallpic(this,600,1800);" border="0" />
四、程序設(shè)計
1.模塊介紹
該計程計價系統(tǒng)的軟件設(shè)計分為以下幾個模塊:
(1)主程序模塊
主程序主要完成初始化、設(shè)置中斷向量、檢查有無按鍵按下、以及調(diào)用顯示等等。主程序的流程圖如下所示。
(2)鍵盤掃描及識別子程序
鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。其程序流程如圖 所示.
(3)調(diào)電存儲服務(wù)程序
當(dāng)比較密碼的時候,需要讀AT24C02程序,將存儲在芯片內(nèi)的數(shù)據(jù)讀到RAM中,然后和輸入的密碼相比較。當(dāng)修改密碼的時候,需要把輸入的密碼保存到AT24C02中,其程序流程如圖 所示.
(4)顯示子程序
由于是分屏顯示數(shù)據(jù),所以就要用到5個顯示子程序,分別是:關(guān)閉狀態(tài)顯示子程序(DIS_A)、開鎖狀態(tài)顯示子程序(DIS_B)、密碼輸入及修改狀態(tài)顯示子程序(DIS_C)、密碼輸入錯誤后的提示子程序(DIS_D)。密碼在規(guī)定的時間內(nèi)輸入錯誤次數(shù)超過3次后的鎖定狀態(tài)顯示子程序(DIS_E).
五、總結(jié)
由于使用的是單片機(jī)作為核心的控制元件,以及靈敏的霍爾開關(guān)型器件,是本出租車計價器具有功能強(qiáng)、性能可靠、電路簡單、成本低的特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。
但是在我們設(shè)計和調(diào)試的過程中,也發(fā)現(xiàn)了一些問題,譬如計價的金額位數(shù)有限,實際的里程可能會很遠(yuǎn),會超出我們的顯示范圍。
計價器的設(shè)計還不夠人性化,比如加上語音的提示功能,可能會更有生命力。