摘要:設計了一種以單片機AT89C51為核心的電子密碼鎖,從硬件和軟件兩方面詳細介紹了電子密碼鎖的設計方法,Proteus軟件仿真結果表明,該電子密碼鎖的設計達到了預期的目標,具有密碼正確開鎖、錯誤報警以及密碼重置等功能。本文網絡版地址:http://www.eepw.com.cn/ article/170168.htm
關鍵詞:單片機;AT89C51;電子密碼鎖;仿真
DOI: 10.3969/j.issn.1005-5517.2013.10.016
具有報警和鍵盤鎖定功能。密碼輸入錯誤時數碼顯示器會出現錯誤提示,若密碼輸入錯誤次數超過3次,蜂鳴器報警并且鎖定鍵盤。
設計原理
用戶通過連接單片機的矩陣鍵盤輸入密碼,單片機將用戶輸入的密碼與預先保存的密碼進行對比,從而判斷密碼是否正確。單片機相關引腳產生高低電平傳到開鎖電路或者報警電路控制開鎖或者報警。
硬件設計
根據設計需求,硬件設計主要包括以下幾個模塊:鍵盤輸入模塊、數碼管顯示模塊、報警模塊、密碼存儲模塊、電源模塊等。相應的硬件設計原理框圖如圖1所示。
鍵盤輸入模塊
本設計中共設置了16個按鍵,包括數字鍵0~9,以及功能鍵確認、清除等。在鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。本設計中采用了4*3的矩陣鍵盤,如圖2所示。
在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鍵加以連接。這樣,AT89C51一個端口(如P3口)就可以構成4*4=16個按鍵,與直接將P3端口接單個按鍵相比,鍵盤數目多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就可以構成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。
數碼管顯示模塊
顯示模塊采用常見的七段數碼管實現。數碼管的八個段碼輸入端由AT89C51的P0口控制,八個位碼輸入端由AT89C51的P2口控制。數碼管控制電路如圖3所示。
數碼管有靜態顯示和動態顯示兩種顯示方式,相比于靜態顯示方式,動態顯示在輪流顯示過程中,每位數碼管的點亮時間為1~2ms,由于人的視覺暫留現象及發光二極管的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示畫面,不會有閃爍感,在顯示效果上和靜態顯示是一致的,但動態顯示能節省大量的I/O口,降低硬件電路的復雜性,而且功耗更低。在本設計中采用的是動態顯示方式。
蜂鳴器報警模塊
密碼輸入錯誤次數超過3次時可通過蜂鳴器鳴叫報警。蜂鳴器報警電路如圖4所示。本設計中采用壓電式蜂鳴器,利用單片機 P1.7端口外接的三極管的電流放大作用驅動蜂鳴器實現發聲提示。
MOV VAL,A ;鍵值存入VAL中
鍵功能程序模塊
電子密碼鎖按鍵共分4大部分:0~9數字按鍵部分、開鎖按鍵部分、密碼設置按鍵部分、確認按鍵部分。鍵功能程序模塊流程圖如圖6所示。
密碼設置模塊
本設計采用單片機為主控芯片,結合外圍電路,組成電子密碼鎖,用戶想要打開鎖,必先通過提供的鍵盤輸入正確的密碼才能將鎖打開。若提示密碼輸入錯誤,為提高安全性,當密碼輸入錯誤三次將報警。密碼可由用戶自己修改設定,鎖打開后才能修改密碼。修改密碼之前必須再次輸入密碼,在輸入新密碼時需要二次確認,以防止誤操作。密碼設置模塊的流程圖如圖7所示。
基于Proteus的系統仿真
Proteus軟件不僅能仿真單片機的工作情況,還能仿真單片機外圍電路或沒有單片機參與的其他電路的工作情況。本設計經仿真后,實現了預期的電子密碼鎖的功能。
顯示模塊仿真
出于對用戶隱私的保護,密碼鎖輸入密碼時數碼管用字符“-”取代輸入的數字,每輸入一位密碼顯示一位“-”,如圖8所示。
開鎖模塊仿真
密碼鎖在輸入六位正確密碼后實現開鎖功能。仿真中單片機P1.0接發光二極管D1,輸入六位密碼,按下確定按鍵則P1.0被置零,D1點亮表示開鎖成功,如圖9所示。
密碼設置模塊仿真
在開鎖狀態下按下密碼設置鍵則進入密碼設置狀態。此時把P1.5置零,點亮發光二極管D2。D2點亮表示現在處于密碼設置狀態,如圖10所示。
進入密碼設置后按照設計要求還要再次輸入一次舊密碼提高安全性以及防止誤操作。再次輸入六位密碼,若密碼錯誤則蜂鳴器報警。若輸入的六位密碼正確則點亮發光二極管D3表示舊密碼輸入正確可以輸入新密碼,如圖11所示。
接下來輸入六位新密碼,設置密碼要輸入兩次新密碼,而且兩次輸入的密碼必須相同才能成功設置否則報錯。第一次輸入六位密碼然后按下確定鍵,第二次再一次輸入新密碼,按下確認鍵,若兩次密碼相同則點亮發光二極管D5。D5亮起表示兩次輸入的密碼相同,密碼設置成功,如圖12所示。
文中設計的基于AT89C51的電子密碼鎖具有簡單的軟硬件設計電路、低廉的開發成本、簡便的操作方法,并通過Proteus仿真實現了預期的功能,具有一定的推廣價值。