電子密碼鎖是一種通過密碼輸入來控制電路或是芯片工作,從而控制機械開關的閉合,完成開鎖、閉鎖任務的電子產品。它的種類很多,有簡易的電路產品,也有基于芯片的性價比較高的產品。應用較廣的電子密碼鎖是以芯片為核心,通過編程來實現的。
設計實現的功能
輸入密碼:
(1)、開始執行時數碼管每一位都顯示“米”,點輸入密碼數碼管只有第一位顯示“米”,點擊數字鍵進行數字選擇;
(2)、按下“確認”鍵后跳到第二個數字,操作同第一步;
(3)、當四個密碼選中完畢,按下“確認輸入”鍵,顯示輸入的密碼;
(4)、按下“開鎖”鍵,若密碼正確,同時顯示*YES,密碼鎖打開;
(5)、按下“開鎖”鍵,若密碼錯誤,則顯示ERRO,密碼鎖不能打開,按下“輸入密碼”鍵,即可重新輸入密碼。
更改密碼:
(1)、在顯示*YES時,按下“更改密碼”鍵后,輸入新的四位密碼;
(2)、按下“確認輸入”鍵,顯示新密碼,按下“確認”鍵,即可設定新密碼。
錯誤警報:
若輸入錯誤密碼超過5次,警報會自動響起,只有再次輸入正確密碼后方可解除警報。
硬件電路設計
相關芯片簡介
1. 8255
第一片8255
定義A.B.C口都為輸出狀態,A.B口控制數碼管的輸入口,對應相應的段碼表,來顯示。C口的PC0,PC1經過2-4譯碼器,來激活數碼管1,2,3,4通道,并采用00,01,10,11,循環輸出的方式,使數碼管通道循環激活,實現動態顯示。
第二片8255
定義A,B,C口都為輸入狀態,對應輸入相應的按鈕狀態,對應相應的程序,實現相應功能。
2. 8253
使用0通道,方式3,對輸入的始終信號分頻,當輸入密碼次數大于5次時,初始化8253,并發出警報提示聲。當輸入密碼正確后,激活1通道,警報提示聲接觸。
3. 2-4譯碼器
由于8086運行速度過快,數碼管動態顯示出現顯示不全的現象,因此PC0,PC1輸出經過2-4譯碼器之后,再激活數碼管,起到緩沖作用。
4. 16位數碼管
16位數碼管的數碼管,由16個引腳控制,低電平有效,其中A-H控制外圈0, K-M控制內部*
S1-s4是通道控制,高電平有效。
仿真電路總體設計
本實驗設計中,硬件部分涉及到了8086CPU、可編程并行接口8255A,并配合74LS373鎖存器、74LS245緩沖器、74LS138譯碼器等基本元器件,實現了設想的電子密碼鎖。
8255A:如圖,8255A的D0~D7端口與CPU數據線ADO~AD7相接,CPU通過控制線的片選、讀、寫信號接口對8255A進行讀、寫與片選操作。外設接口端的A0-A7八個開關連接245的A0-A7端口,將外設信息傳送到245中,鍵入密碼輸入、密碼確定、修改密碼等多種功能。
開關功能
如圖,A口的PA0-PA7端口通過鎖存器與數碼管相連用于外圈顯示,B口的PB0-PB7端口通過74LS373鎖存器與數碼管進行連接用于內部“米”字格的顯示。
軟件編程設計
按鍵控制
(1)、控制字
給8255A輸入端口控制字: void fun82531()
{
__asm
{
mov dx, 0x8006
mov al, 0x37
out dx, al
}
outp(GATE0,0x02);
outp(GATE0,0x00);
}
void fun82532()
{
__asm
{
mov dx, 0x8006
mov al, 0x77
out dx, al
}
outp(GATE0,0x99); outp(GATE0,0x99); }
(2)、密碼鍵入控制
整個過程中主要是對是否有按鍵信息輸入進行掃描判斷,并將所得信息與燈管編號進行比對,確定所選擇要鍵入數字的燈管。當目前的燈管數字被選出后,自動跳到下一個燈管,直到四位數字全部選擇完畢。
字符動態顯示
四位密碼選出后,顯示四位選定數字,然后檢測密碼正確性,8255A通過端口A、B、C讀取指令,根據檢測結果,密碼正確則輸出代碼顯示*YES,錯誤則顯示ERRO。
更改密碼,鍵入“更改密碼”控制字后,與輸入密碼的流程相同,先選擇燈管,待選定數字后跳至下一個,直到四位數字全部選定,然后鍵入“確認更改”指令,則密碼更改成功。
系統實現
proteus仿真實驗
如圖,為本實驗的Proteus仿真模擬圖,整個實驗共用到8086CPU一個、74LS245一個、可編程并行接口8255A一個,74LS273鎖存器三個、74LS138譯碼器一個、數碼管一個、與非門兩個、開關八個、電阻八個。
評論
查看更多