隨著世界變得越來越依賴數字化,現在甚至可以將門設計成安全可靠的。鎖和鑰匙的數字版本具有許多有前途的功能。數字門鎖用密碼安全放置。但是,這也可能會吸引不道德的駭客,因此,還需要額外的安全層。
在這篇基於電子專案的文章中,我們建立了一個使用基本控制器 8051 微控制器控制的數字門鎖。本文的目的是瞭解數字門鎖背後的基本工作原理。
什麼是數字門鎖?
數字門鎖一般是一種基於密碼的電子密碼鎖。在這個專案中,我們使用 8051 微控制器、鍵盤和 12 伏直流繼電器設計了數字門鎖。在本文中,我們設計了一個使用 8051 的簡單數字門鎖——它可以用作安全檢查系統,以限制只有某些具有密碼的個人才能進入某個區域/房間。因此,我們的數字門鎖專案可以使用非常廣泛的名稱來呼叫,例如使用 8051 的數字密碼鎖或使用 8051 微控制器的數字安全密碼鎖或使用 8051 的密碼安全系統或使用的電子密碼鎖或數字密碼鎖8051. 人們稱這種“安全系統”有不同的名稱,儘管它們的意思都是建立一個基本的基於密碼的安全系統,使用 8051 或 AVR 或 PIC 或 Arduino(選擇的控制器)等微控制器,具有自動門鎖/開門設施、聲音警報、基於 GSM 的簡訊警報等額外功能。
數字門鎖 - 專案摘要
我們的數字密碼鎖專案 - 是一個簡單的電子數字鎖系統或使用 8051 的電子密碼鎖 -在程式中儲存了一個預設的5 位密碼。系統採集5位使用者輸入,將使用者輸入與程式內部預設密碼進行比較,如果使用者輸入和儲存的密碼匹配,則允許進入(透過繼電器開啟門幾秒鐘然後關閉)它在規定的時間後自動)。如果使用者輸入和儲存的密碼不匹配,訪問將被拒絕(透過不開啟關閉的門 - 即透過將繼電器保持在關閉位置)
注意:-我們有一個精彩的 8051 專案集合,這些專案是我們之前設計和釋出的。看看如果您有興趣自己構建基於 8051 的應用程式和系統!學習和構建新的東西很有趣。
現在讓我們開始構建基於密碼的數字門鎖。下面給出數字密碼鎖的電路圖。如圖所示組裝電路。
基於密碼的數字門鎖/電子密碼鎖 - 電路圖
使用的元件
8051 – AT89S51 – 1
16×2 LCD 模組 – 1
4X4 鍵盤 – 1
10K 電阻網路 – 1
12V 繼電器 – 1
電晶體 – BC548 – 1
二極體 – 1N4007 – 1
按鈕開關 – 1
水晶 – 11.059Mhz – 1
電容器
33pF -2
0.1uF -1
10uF -1
1
電阻器
10K 歐姆 – 1
100 歐姆 -1
8.2K 歐姆 – 1
330 歐姆 -1
4.7K 歐姆 – 1
連線解釋
如電路圖所示進行數字密碼鎖專案的連線。我們已經解釋了下面的連線。
8051 的鍵盤——在這個特殊的電子密碼鎖專案中,我們將一個 4×4 鍵盤連線到 8051 微控制器的埠 3。行引腳從 P3.0 連線到 P3.3,而列引腳從 P3.4 連線到 P3.7。閱讀我們關於將鍵盤連線到 8051 的教程——瞭解如何將鍵盤連線到 8051 以及如何識別和顯示按鍵。
16×2 LCD 模組到 8051 – 我們使用 16×2 lcd 模組來顯示專案的狀態訊息。我們已經以 8 位模式連線了這個 LCD 模組(使用 8 條資料線)。8 條資料線連線到 8051 的埠 0。在埠 0 使用 10K 電阻網路(有 8 個引腳)連線外部上拉電阻,以連線 LCD 的 8 條資料線。LCD 控制引腳 RS、R/W 和 E 分別連線到埠 2 引腳 P2.7、P2.6 和 P2.5。閱讀我們關於將 LCD 連線到 8051 的教程——瞭解如何將 LCD 模組正確連線到 8051,以及如何在 LCD 模組上完美顯示文字訊息。
按鈕開關——用於設定 8051 的復位電路,Crystal用於為 8051 提供必要的時鐘。
繼電器- 一個 12V SPDT 繼電器用於數字門鎖專案並連線到 P2.0。電晶體 (BC548) – 用於以必要的電流驅動繼電器。
數字門鎖電路的工作
數字門鎖專案的目標是允許正確輸入 5 位密碼的人訪問,並且不允許輸入錯誤密碼的人訪問。我們使用4×4 鍵盤向微控制器輸入數字,並使用12V 繼電器來控制門的電子電磁鎖(電路圖中未顯示)。密碼儲存在 8051 程式(程式儲存器)中。在下面給出的示例程式中,我們使用密碼12345並以標籤 - PASSW 儲存在程式記憶體位置。
PASSW: DB 49D,50D,51D,52D,53D,0 // Decimal equivalent of 1,2,3,4,5 is stored in address label PASSW
當我們開啟電源時,系統將開啟並在 LCD 螢幕上顯示一條訊息——“基於密碼的安全系統”。啟動過程完成後,系統將要求“輸入 5 位數字”。此資訊出現在 LCD 螢幕上後,使用者必須連續輸入 5 位數字。一旦輸入 5 位數字,系統將開始檢查密碼(透過將輸入的 5 位數字與儲存的密碼進行比較)。在檢查密碼子程式(比較子程式 - 帶有標籤 - CHECK_PASSWORD)開始之前,LCD 模組上會顯示一條狀態資訊“Checking Password”。密碼檢查子程式將比較每個輸入的數字 - 一個一個,如果所有 5 個數字都輸入正確(i. e 每個輸入的數字按順序與儲存的密碼匹配)系統將透過開啟繼電器開始允許使用者訪問的過程(透過程式中的SETB P2.0命令實現)。LCD 螢幕上將顯示兩條訊息——“Access Granted”和“Door Opens”。幾秒鐘後,繼電器將透過命令 CLR P2.0 關閉(即在 MAIN 程式命令的下一次迭代中) 如果輸入的密碼錯誤,系統將不會開啟繼電器並顯示“密碼錯誤”訊息” – LCD 螢幕上將顯示“拒絕訪問”。
程式/程式碼 - 基於密碼的安全系統
RS EQU P2.7
RW EQU P2.6
E EQU P2.5
SEL EQU 41H
ORG 000H
CLR P2.0
MOV TMOD,#00100001B
MOV TH1,#253D
MOV SCON,#50H
SETB TR1
ACALL LCD_INIT
MOV DPTR,#TEXT1
ACALL LCD_OUT
ACALL LINE2
MOV DPTR,#TEXT2
ACALL LCD_OUT
MAIN:ACALL LCD_INIT
MOV DPTR,#TEXT1
ACALL LCD_OUT
ACALL LINE2
MOV DPTR,#TEXT2
CLR P2.0
ACALL LCD_OUT
ACALL DELAY1
ACALL DELAY1
ACALL READ_KEYPRESS
ACALL LINE1
MOV DPTR,#CHKMSG
ACALL LCD_OUT
ACALL DELAY1
ACALL CHECK_PASSWORD
SJMP MAIN
LCD_INIT: MOV DPTR,#INIT_COMMANDS
SETB SEL
ACALL LCD_OUT
CLR SEL
RET
LCD_OUT: CLR A
MOVC A,@A+DPTR
JZ EXIT
INC DPTR
JB SEL,CMD
ACALL DATA_WRITE
SJMP LCD_OUT
CMD: ACALL CMD_WRITE
SJMP LCD_OUT
EXIT: RET
LINE2:MOV A,#0C0H
ACALL CMD_WRITE
RET
LINE1: MOV A,#80H
ACALL CMD_WRITE
RET
CLRSCR: MOV A,#01H
ACALL CMD_WRITE
RET
CMD_WRITE: MOV P0,A
CLR RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET
DATA_WRITE:MOV P0,A
SETB RS
CLR RW
SETB E
CLR E
ACALL DELAY
RET
DELAY: CLR E
CLR RS
SETB RW
MOV P0,#0FFh
SETB E
MOV A,P0
JB ACC.7,DELAY
CLR E
CLR RW
RET
DELAY1:MOV R3,#46D
BACK: MOV TH0,#00000000B
MOV TL0,#00000000B
SETB TR0
HERE1: JNB TF0,HERE1
CLR TR0
CLR TF0
DJNZ R3,BACK
RET
DELAY2: MOV R3,#250D
BACK2: MOV TH0,#0FCH
MOV TL0,#018H
SETB TR0
HERE2: JNB TF0,HERE2
CLR TR0
CLR TF0
DJNZ R3,BACK2
RET
READ_KEYPRESS: ACALL CLRSCR
ACALL LINE1
MOV DPTR,#IPMSG
ACALL LCD_OUT
ACALL LINE2
MOV R0,#5D
MOV R1,#160D
ROTATE:ACALL KEY_SCAN
MOV @R1,A
ACALL DATA_WRITE
ACALL DELAY2
INC R1
DJNZ R0,ROTATE
RET
CHECK_PASSWORD:MOV R0,#5D
MOV R1,#160D
MOV DPTR,#PASSW
RPT:CLR A
MOVC A,@A+DPTR
XRL A,@R1
JNZ FAIL
INC R1
INC DPTR
DJNZ R0,RPT
ACALL CLRSCR
ACALL LINE1
MOV DPTR,#TEXT_S1
ACALL LCD_OUT
ACALL LINE2
ACALL DELAY1
SETB P2.0
MOV DPTR,#TEXT_S2
ACALL LCD_OUT
ACALL DELAY1
SJMP GOBACK
FAIL:ACALL CLRSCR
ACALL LINE1
MOV DPTR,#TEXT_F1
ACALL LCD_OUT
ACALL DELAY1
ACALL LINE2
MOV DPTR,#TEXT_F2
ACALL LCD_OUT
ACALL DELAY1
GOBACK:RET
KEY_SCAN:MOV P3,#11111111B
CLR P3.0
JB P3.4, NEXT1
MOV A,#49D
RET
NEXT1:JB P3.5,NEXT2
MOV A,#50D
RET
NEXT2: JB P3.6,NEXT3
MOV A,#51D
RET
NEXT3: JB P3.7,NEXT4
MOV A,#65D
RET
NEXT4:SETB P3.0
CLR P3.1
JB P3.4, NEXT5
MOV A,#52D
RET
NEXT5:JB P3.5,NEXT6
MOV A,#53D
RET
NEXT6: JB P3.6,NEXT7
MOV A,#54D
RET
NEXT7: JB P3.7,NEXT8
MOV A,#66D
RET
NEXT8:SETB P3.1
CLR P3.2
JB P3.4, NEXT9
MOV A,#55D
RET
NEXT9:JB P3.5,NEXT10
MOV A,#56D
RET
NEXT10: JB P3.6,NEXT11
MOV A,#57D
RET
NEXT11: JB P3.7,NEXT12
MOV A,#67D
RET
NEXT12:SETB P3.2
CLR P3.3
JB P3.4, NEXT13
MOV A,#42D
RET
NEXT13:JB P3.5,NEXT14
MOV A,#48D
RET
NEXT14: JB P3.6,NEXT15
MOV A,#35D
RET
NEXT15: JB P3.7,NEXT16
MOV A,#68D
RET
NEXT16:LJMP KEY_SCAN
INIT_COMMANDS: DB 0CH,01H,06H,80H,3CH,0
TEXT1: DB "PASSWORD BASED",0
TEXT2: DB "SECURITY SYSTEM",0
IPMSG: DB "INPUT 5 DIGITS",0
CHKMSG: DB "CHECKING PASSWORD",0
TEXT_S1: DB "ACCESS - GRANTED",0
TEXT_S2: DB "DOOR OPENED",0
TEXT_F1: DB "WRONG PASSWORD",0
TEXT_F2: DB "ACCESS DENIED",0
PASSW: DB 49D,50D,51D,52D,53D,0
END
該程式是用匯編語言編寫的。下面解釋程式的重要方面和子程式。
KEY_SCAN – 是識別按鍵的子程式。識別按鍵採用列掃描的方法。被按下的鍵被識別並被分配一個被按下的鍵的十進位制等效值(ASCII 值)。您可以閱讀8051 鍵盤上的教程- 介面以瞭解有關程式設計的更多資訊。
READ_KEYPRESS – 是收集使用者輸入的子程式。使用暫存器 R0 設定一個計數器來計數 5 次(這會將使用者輸入集合限制為前 5 次按鍵)。暫存器 R1 被分配地址單元 160D。收集的使用者輸入儲存在從 160D 開始的地址位置。該位置使用 INC R1 – 命令 8051 連續遞增。因此,第一個使用者輸入儲存在 160D 中,第二個使用者輸入儲存在 161D 中,第三個使用者輸入儲存在 162D 中,第四個儲存在 163D 中,第五個使用者輸入儲存在 164D 中。這些地址位置是透過間接定址方法使用暫存器 R1 訪問的。
注意:-程式中編寫了兩個延遲例程。DELAY1 – 用作在 LCD 模組上正確輸出資訊的延遲。向 LCD 模組傳送訊息/資料後,呼叫 DELAY1,以便訊息在 LCD 螢幕上停留規定的延遲時間。DELAY2(延遲 2.5 秒)用於為鍵盤提供必要的去抖效果。(按鈕開關或任何型別的機械開關具有彈跳效應。必須透過電容器或軟體內部的一些調整來消除這種效應 - 例如 - 掃描按鍵後的 1 或 2 秒延遲)
CHECK_PASSWORD – 是將使用者輸入的密碼(5 位)與程式中實際儲存的密碼進行比較的子程式。透過在 DPTR 的幫助下從儲存的密碼中選擇每個數字並將其載入到累加器(使用 MOVC A,@A+DPTR),逐位進行比較。然後將載入到累加器的每個數字與作為使用者輸入儲存的相應數字(在地址位置 16D 到 164D 中)進行比較,方法是將它們一一載入到暫存器 R1。數字透過 X-OR 與命令 XRL A,@R1 進行比較。根據比較的結果,該子程式寫入了允許訪問(並開啟繼電器)或不允許訪問並在 LCD 螢幕上顯示“訪問被拒絕”訊息的命令。
結論
以上就是使用 8051 的基於密碼的安全系統的全部內容。我們希望您已經瞭解電路,它正在工作,並且程式非常好。如果您有任何疑問,請在評論部分提出。如果您想了解更多有趣和類似的電子密碼鎖專案,請檢視以下安全系統/鎖專案。
使用 8051 的基於 RFID 的安全系統 – 是一種在概念上與數字門鎖或電子密碼鎖非常相似的安全系統。該專案的主要區別在於唯一的 RFID 標籤用於識別授權人員(而不是鍵盤和密碼)。一個 RFID 閱讀器連線到 8051 以讀取 RFID 標籤。
數字密碼鎖 - 高階 - 使用 Arduino - 是使用鍵盤和 Arduino 構建的數字密碼鎖專案的一個非常有趣和高階的版本。這個專案最有趣的部分是“使用者定義密碼”選項,使用者可以在安裝系統時自己設定密碼。安裝時的這個 SET 密碼可以稍後透過按“編輯密碼”鍵來更改/編輯。
