電子密碼鎖通常使用ARM和單片機控制,,單片機相對ARM實現(xiàn)較為簡單,,功能較為完善,因此使用單片機控制較多,。用單片機控制的密碼鎖常使用匯編語言編寫程序,,顯示器多數(shù)用數(shù)碼管。而本文所介紹的電子密碼鎖使用移植性及可讀性強的高級語言C語言編寫,,便于修改和增減功能;同時采用顯示清楚,,功率消耗小而且壽命長的1602液晶顯示器,,顯示更加直觀,,使用更加方便。從經(jīng)濟實用的角度出發(fā),,采用STC8 9C52單片機設計出一種具有密碼設置,、報警和防止多次試探密碼功能的電子密碼鎖,通過Protues軟件成功地進行了仿真,。
1 系統(tǒng)工作原理
本系統(tǒng)以STC89C52單片機為核心,,使用4×4矩陣鍵盤作為數(shù)據(jù)輸入方式,驅動1602顯示器提示程序運行過程和開鎖的步驟,。本系統(tǒng)的密碼判斷過程如下:
當使用者輸入6位密碼后按下BESURE鍵,,單片機通過密碼逐個比較,如果輸入的6位密碼和設定的密碼完全相同,,那么能成功驅動開鎖模擬燈將鎖打開,。若輸入6位密碼與設定的密碼不相同,按下BESURE鍵后,模擬燈不亮,,可以按BACK鍵重新輸入,。由于輸入密碼過程中難免輸入失誤,如果密碼輸錯,,可直接按下BACK鍵重新輸入,,但是系統(tǒng)不允許無限次地按BACK鍵,以免密碼被套用,,當3次密碼輸入都錯誤,,單片機將驅動蜂鳴器報警。并且本系統(tǒng)輸入密碼還有時間限制,,若在規(guī)定的時間內(nèi)沒有將正確密碼輸入也會報警,。
修改密碼功能如下:當密碼輸入正確后,按下SET鍵可新設置密碼,。每設定一位新密碼,,單片機將其送給E2PROM,當6位新密碼都輸入完畢,,系統(tǒng)將自動回到程序開始,,重新讀取密碼并保存,使用者需輸入新的密碼才能將鎖打開,。
2 系統(tǒng)設計
2.1 硬件支持
使用的元器件有:核心芯片STC89C52,、存儲芯片AT24C02、液晶顯示1602,、矩陣鍵盤,、報警蜂鳴器、獨立按鍵(模擬門的開關),、發(fā)光二極管(模擬鎖的開關)和三極管(放大電流),。
2.2 軟件設計
本系統(tǒng)軟件包括主程序模塊、密碼比較判斷模塊,、修改密碼模塊,、鍵盤掃描模塊、液晶顯示模塊及定時程序等模塊,。系統(tǒng)程序流程如圖1所示,。
2.2.1 主程序模塊
主程序主要用于定義全局變量,給全局變量賦初值,,初始化E2PROM,,啟動定時器以及從AT24C02中讀取密碼,為整個程序提供數(shù)據(jù),。
2.2.2 密碼比較判斷模塊
該模塊的功能是將鍵盤輸入的密碼利用if語句與設定的密碼進行逐個比較,,若密碼完全正確則開鎖;若不正確,,則按下BACK鍵,重新輸入密碼,,每按下BACK鍵一次,,輸入次數(shù)將自加1,當3次都出錯則報警,。
2.2.3 密碼修改模塊
在密碼輸入正確情況下,,可以按下SET對密碼進行重新設置,每設定一位就將密碼送給AT24C02存儲起來,,當設置6位密碼完畢后,,系統(tǒng)將自動跳到程序開始,調(diào)用新設置的密碼,。
STC89C52向AT24C02寫入密碼子程序:
2.2.4 鍵盤掃描模塊
該模塊具備功能有:逐列掃描鍵盤確定被按鍵的具體位置,、判斷鍵盤上有無鍵按下、消除去抖動,、判斷閉合的鍵是否釋放等功能,。
2.2.5 定時模塊
本模塊用于對密碼輸入時間控制。在程序開始運行時首先對定時器進行了初始化,,從按下PUT IN鍵開始,,系統(tǒng)開始計時,當輸入的時間達到規(guī)定的時間將立即報警,。
2.2.6 液晶顯示模塊
此模塊包括液晶初始化,、命令的輸入、顯示數(shù)據(jù)的輸入,。其中命令是用于控制液晶狀態(tài)是否顯示光標,,光標是否閃爍,是否清除原來數(shù)據(jù)以及顯示的具體位置,。數(shù)據(jù)顯示主要是將要顯示的信息按需要準時顯示出來,。
3 系統(tǒng)仿真
為了方便程序調(diào)試,本文采用了Proteus仿真,,仿真圖如圖2所示,。
3.1 系統(tǒng)介紹
圖2中U1為STC89C52是整個系統(tǒng)的核心,編寫的程序以二進制的文件導入其中;U2為AT24C02,,第5和第6個引腳分別與單片機的P1.2和 P1.3相連;LCD1為1602液晶顯示器,引腳連接如圖2所示;獨立按鍵DOOR,,當門關上為鍵按下狀態(tài);D1為模擬開鎖燈,,當密碼正確,按下BE- SURE鍵D1將亮;BUZ1為蜂鳴器報警,。當程序編寫好并導入到單片機里后,,按下圖2最下面的開始按鈕,,1602液晶顯示器將提示密碼鎖的運行狀態(tài),系統(tǒng)開始工作,。
3.2 開鎖功能
當電源開啟時,,1602液晶顯示W(wǎng)elcome歡迎界面,當按下PUT IN鍵后,,顯示器顯示PUT IN CODES提示使用者輸入密碼,,如圖3所示。幾秒后液晶顯示器上提示將自動消失,。此時可輸入正確密碼,,且密碼輸入時顯示*而不會將輸入的數(shù)據(jù)顯示出來。當輸入密碼完畢后,,按下BESURE鍵,,如果輸入的密碼正確D1將亮(D1作為開鎖的模擬開關)。若密碼錯誤,,可以按下BACK鍵,,程序將跳到loop(開始界面),重新輸入密碼,,同時輸入次數(shù)將增加一次,。當3次都輸入錯誤則自動報警,并且輸入密碼的時間必須在規(guī)定的時間完成,,否則也會報警,。
3.3 密碼設定
在密碼輸入正確后,按下SET鍵可對密碼進行重新設置,,液晶顯示器顯示SET CODS,。同樣幾秒后提示信息將自動消失,此時開始重設密碼,。在密碼設定過程中會將設定的數(shù)字顯示出來,,每輸入一位密碼需按下YES鍵確定,當設置的密碼達到6位將自動回到啟動界面,。
4 結論
(1)成功仿真實現(xiàn)了1602液晶顯示,,密碼開鎖,密碼設置,,防止多次試探,,報警等功能。
(2)采用C語言編寫程序,,具有很強的移植性,,為系統(tǒng)增減和修改功能帶來了方便。