《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于STC89C52的電子密碼鎖設(shè)計(jì)與仿真
基于STC89C52的電子密碼鎖設(shè)計(jì)與仿真
電子發(fā)燒友
摘要: 本系統(tǒng)以STC89C52單片機(jī)為核心,使用4×4矩陣鍵盤作為數(shù)據(jù)輸入方式,驅(qū)動1602顯示器提示程序運(yùn)行過程和開鎖的步驟,。
Abstract:
Key words :

  電子密碼鎖通常使用ARM和單片機(jī)控制,,單片機(jī)相對ARM實(shí)現(xiàn)較為簡單,,功能較為完善,因此使用單片機(jī)控制較多。用單片機(jī)控制的密碼鎖常使用匯編語言編寫程序,顯示器多數(shù)用數(shù)碼管,。而本文所介紹的電子密碼鎖使用移植性及可讀性強(qiáng)的高級語言C語言編寫,便于修改和增減功能;同時(shí)采用顯示清楚,,功率消耗小而且壽命長的1602液晶顯示器,,顯示更加直觀,,使用更加方便。從經(jīng)濟(jì)實(shí)用的角度出發(fā),,采用STC8 9C52單片機(jī)設(shè)計(jì)出一種具有密碼設(shè)置,、報(bào)警和防止多次試探密碼功能的電子密碼鎖,通過Protues軟件成功地進(jìn)行了仿真,。

  1 系統(tǒng)工作原理

  本系統(tǒng)以STC89C52單片機(jī)為核心,,使用4×4矩陣鍵盤作為數(shù)據(jù)輸入方式,驅(qū)動1602顯示器提示程序運(yùn)行過程和開鎖的步驟,。本系統(tǒng)的密碼判斷過程如下:

  當(dāng)使用者輸入6位密碼后按下BESURE鍵,,單片機(jī)通過密碼逐個(gè)比較,,如果輸入的6位密碼和設(shè)定的密碼完全相同,,那么能成功驅(qū)動開鎖模擬燈將鎖打開。若輸入6位密碼與設(shè)定的密碼不相同,,按下BESURE鍵后,,模擬燈不亮,可以按BACK鍵重新輸入,。由于輸入密碼過程中難免輸入失誤,,如果密碼輸錯(cuò),可直接按下BACK鍵重新輸入,,但是系統(tǒng)不允許無限次地按BACK鍵,,以免密碼被套用,當(dāng)3次密碼輸入都錯(cuò)誤,,單片機(jī)將驅(qū)動蜂鳴器報(bào)警,。并且本系統(tǒng)輸入密碼還有時(shí)間限制,若在規(guī)定的時(shí)間內(nèi)沒有將正確密碼輸入也會報(bào)警,。

  修改密碼功能如下:當(dāng)密碼輸入正確后,,按下SET鍵可新設(shè)置密碼。每設(shè)定一位新密碼,,單片機(jī)將其送給E2PROM,,當(dāng)6位新密碼都輸入完畢,系統(tǒng)將自動回到程序開始,,重新讀取密碼并保存,,使用者需輸入新的密碼才能將鎖打開。

  2 系統(tǒng)設(shè)計(jì)

  2.1 硬件支持

  使用的元器件有:核心芯片STC89C52,、存儲芯片AT24C02,、液晶顯示1602、矩陣鍵盤,、報(bào)警蜂鳴器,、獨(dú)立按鍵(模擬門的開關(guān)),、發(fā)光二極管(模擬鎖的開關(guān))和三極管(放大電流)。

  2.2 軟件設(shè)計(jì)

  本系統(tǒng)軟件包括主程序模塊,、密碼比較判斷模塊,、修改密碼模塊、鍵盤掃描模塊,、液晶顯示模塊及定時(shí)程序等模塊,。系統(tǒng)程序流程如圖1所示。

  

電子密碼鎖設(shè)計(jì)程序流程圖 www.elecfans.com

 

  2.2.1 主程序模塊

  主程序主要用于定義全局變量,,給全局變量賦初值,,初始化E2PROM,啟動定時(shí)器以及從AT24C02中讀取密碼,,為整個(gè)程序提供數(shù)據(jù),。

  2.2.2 密碼比較判斷模塊

  該模塊的功能是將鍵盤輸入的密碼利用if語句與設(shè)定的密碼進(jìn)行逐個(gè)比較,若密碼完全正確則開鎖;若不正確,,則按下BACK鍵,,重新輸入密碼,每按下BACK鍵一次,,輸入次數(shù)將自加1,,當(dāng)3次都出錯(cuò)則報(bào)警。

  2.2.3 密碼修改模塊

  在密碼輸入正確情況下,,可以按下SET對密碼進(jìn)行重新設(shè)置,,每設(shè)定一位就將密碼送給AT24C02存儲起來,當(dāng)設(shè)置6位密碼完畢后,,系統(tǒng)將自動跳到程序開始,,調(diào)用新設(shè)置的密碼。

  STC89C52向AT24C02寫入密碼子程序:

  

密碼子程序

 

  2.2.4 鍵盤掃描模塊

  該模塊具備功能有:逐列掃描鍵盤確定被按鍵的具體位置,、判斷鍵盤上有無鍵按下,、消除去抖動、判斷閉合的鍵是否釋放等功能,。

  2.2.5 定時(shí)模塊

  本模塊用于對密碼輸入時(shí)間控制,。在程序開始運(yùn)行時(shí)首先對定時(shí)器進(jìn)行了初始化,從按下PUT IN鍵開始,,系統(tǒng)開始計(jì)時(shí),,當(dāng)輸入的時(shí)間達(dá)到規(guī)定的時(shí)間將立即報(bào)警。

  2.2.6 液晶顯示模塊

  此模塊包括液晶初始化,、命令的輸入,、顯示數(shù)據(jù)的輸入。其中命令是用于控制液晶狀態(tài)是否顯示光標(biāo),,光標(biāo)是否閃爍,,是否清除原來數(shù)據(jù)以及顯示的具體位置,。數(shù)據(jù)顯示主要是將要顯示的信息按需要準(zhǔn)時(shí)顯示出來。

  3 系統(tǒng)仿真

  為了方便程序調(diào)試,,本文采用了Proteus仿真,,仿真圖如圖2所示。

  

仿真圖

 

  3.1 系統(tǒng)介紹

  圖2中U1為STC89C52是整個(gè)系統(tǒng)的核心,,編寫的程序以二進(jìn)制的文件導(dǎo)入其中;U2為AT24C02,,第5和第6個(gè)引腳分別與單片機(jī)的P1.2和 P1.3相連;LCD1為1602液晶顯示器,引腳連接如圖2所示;獨(dú)立按鍵DOOR,,當(dāng)門關(guān)上為鍵按下狀態(tài);D1為模擬開鎖燈,,當(dāng)密碼正確,按下BE- SURE鍵D1將亮;BUZ1為蜂鳴器報(bào)警,。當(dāng)程序編寫好并導(dǎo)入到單片機(jī)里后,,按下圖2最下面的開始按鈕,1602液晶顯示器將提示密碼鎖的運(yùn)行狀態(tài),,系統(tǒng)開始工作,。

  3.2 開鎖功能

  當(dāng)電源開啟時(shí),1602液晶顯示W(wǎng)elcome歡迎界面,,當(dāng)按下PUT IN鍵后,顯示器顯示PUT IN CODES提示使用者輸入密碼,,如圖3所示,。幾秒后液晶顯示器上提示將自動消失。此時(shí)可輸入正確密碼,,且密碼輸入時(shí)顯示*而不會將輸入的數(shù)據(jù)顯示出來,。當(dāng)輸入密碼完畢后,按下BESURE鍵,,如果輸入的密碼正確D1將亮(D1作為開鎖的模擬開關(guān)),。若密碼錯(cuò)誤,可以按下BACK鍵,,程序?qū)⑻絣oop(開始界面),,重新輸入密碼,同時(shí)輸入次數(shù)將增加一次,。當(dāng)3次都輸入錯(cuò)誤則自動報(bào)警,,并且輸入密碼的時(shí)間必須在規(guī)定的時(shí)間完成,否則也會報(bào)警,。

  

開鎖功能

 

  3.3 密碼設(shè)定

  在密碼輸入正確后,,按下SET鍵可對密碼進(jìn)行重新設(shè)置,液晶顯示器顯示SET CODS,。同樣幾秒后提示信息將自動消失,,此時(shí)開始重設(shè)密碼,。在密碼設(shè)定過程中會將設(shè)定的數(shù)字顯示出來,每輸入一位密碼需按下YES鍵確定,,當(dāng)設(shè)置的密碼達(dá)到6位將自動回到啟動界面,。

  4 結(jié)論

  (1)成功仿真實(shí)現(xiàn)了1602液晶顯示,密碼開鎖,,密碼設(shè)置,,防止多次試探,報(bào)警等功能,。

  (2)采用C語言編寫程序,,具有很強(qiáng)的移植性,為系統(tǒng)增減和修改功能帶來了方便,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。