密码锁里面的数字都是什么意思(密码锁是啥意思)

  • 生活
  • 2023-04-26 13:34

随着世界变得越来越依赖数字化,现在甚至可以将门设计成安全可靠的。锁和钥匙的数字版本具有许多有前途的功能。数字门锁用密码安全放置。但是,这也可能会吸引不道德的***,因此,还需要额外的安全层。

在这篇基于电子项目的文章中,我们创建了一个使用基本控制器8051微控制器控制的数字门锁。本文的目的是了解数字门锁背后的基本工作原理。

什么是数字门锁?

数字门锁一般是一种基于密码的电子密码锁。在这个项目中,我们使用8051微控制器、键盘和12伏直流继电器设计了数字门锁。在本文中,我们设计了一个使用8051的简单数字门锁——它可以用作安全检查系统,以限制只有某些具有密码的个人才能进入某个区域/房间。因此,我们的数字门锁项目可以使用非常广泛的名称来调用,例如使用8051的数字密码锁或使用8051微控制器的数字安全密码锁或使用8051的密码安全系统或使用的电子密码锁或数字密码锁8051.人们称这种“安全系统”有不同的名称,尽管它们的意思都是建立一个基本的基于密码的安全系统,使用8051或AVR或PIC或Arduino(选择的控制器)等微控制器,具有自动门锁/开门设施、声音警报、基于GSM的短信警报等额外功能。

数字门锁-项目摘要

我们的数字密码锁项目-是一个简单的电子数字锁系统或使用8051的电子密码锁-在程序中存储了一个预设的5位密码。系统采集5位用户输入,将用户输入与程序内部预设密码进行比较,如果用户输入和存储的密码匹配,则允许进入(通过继电器打开门几秒钟然后关闭)它在规定的时间后自动)。如果用户输入和存储的密码不匹配,访问将被拒绝(通过不打开关闭的门-即通过将继电器保持在关闭位置)

注意:-我们有一个精彩的8051项目***,这些项目是我们之前设计和发布的。看看如果您有兴趣自己构建基于8051的应用程序和系统!学习和构建新的东西很有趣。

现在让我们开始构建基于密码的数字门锁。下面给出数字密码锁的电路图。如图所示组装电路。

基于密码的数字门锁/电子密码锁-电路图

使用的组件

8051–AT89S51–1

16×2LCD模块–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×2LCD模块到8051–我们使用16×2lcd模块来显示项目的状态消息。我们已经以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提供必要的时钟。

继电器-一个12VSPDT继电器用于数字门锁项目并连接到P2.0。晶体管(BC548)–用于以必要的电流驱动继电器。

数字门锁电路的工作

数字门锁项目的目标是允许正确输入5位密码的人访问,并且不允许输入错误密码的人访问。我们使用4×4键盘向微控制器输入数字,并使用12V继电器来控制门的电子电磁锁(电路图中未显示)。密码存储在8051程序(程序存储器)中。在下面给出的示例程序中,我们使用密码12345并以标签-PASSW存储在程序内存位置。

PASSW:DB49D,50D,51D,52D,53D,0//Decimalequivalentof1,2,3,4,5isstoredinaddresslabelPASSW

当我们打开电源时,系统将打开并在LCD屏幕上显示一条消息——“基于密码的安全系统”。启动过程完成后,系统将要求“输入5位数字”。此信息出现在LCD屏幕上后,用户必须连续输入5位数字。一旦输入5位数字,系统将开始检查密码(通过将输入的5位数字与存储的密码进行比较)。在检查密码子程序(比较子程序-带有标签-CHECK_PASSWORD)开始之前,LCD模块上会显示一条状态信息“CheckingPassword”。密码检查子程序将比较每个输入的数字-一个一个,如果所有5个数字都输入正确(i.e每个输入的数字按顺序与存储的密码匹配)系统将通过打开继电器开始允许用户访问的过程(通过程序中的SETBP2.0命令实现)。LCD屏幕上将显示两条消息——“AccessGranted”和“DoorOpens”。几秒钟后,继电器将通过命令CLRP2.0关闭(即在MAIN程序命令的下一次迭代中)如果输入的密码错误,系统将不会打开继电器并显示“密码错误”消息”–LCD屏幕上将显示“拒绝访问”。

程序/代码-基于密码的安全系统

RSEQUP2.7

RWEQUP2.6

EEQUP2.5

SELEQU41H

ORG000H

CLRP2.0

MOVTMOD,#00100001B

MOVTH1,#253D

MOVSCON,#50H

SETBTR1

ACALLLCD_INIT

MOVDPTR,#TEXT1

ACALLLCD_OUT

ACALLLINE2

MOVDPTR,#TEXT2

ACALLLCD_OUT

MAIN:ACALLLCD_INIT

MOVDPTR,#TEXT1

ACALLLCD_OUT

ACALLLINE2

MOVDPTR,#TEXT2

CLRP2.0

ACALLLCD_OUT

ACALLDELAY1

ACALLDELAY1

ACALLREAD_KEYPRESS

ACALLLINE1

MOVDPTR,#CHKMSG

ACALLLCD_OUT

ACALLDELAY1

ACALLCHECK_PASSWORD

SJMPMAIN

LCD_INIT:MOVDPTR,#INIT_COMMANDS

SETBSEL

ACALLLCD_OUT

CLRSEL

RET

LCD_OUT:CLRA

MOVCA,@A+DPTR

JZEXIT

INCDPTR

JBSEL,CMD

ACALLDATA_WRITE

SJMPLCD_OUT

CMD:ACALLCMD_WRITE

SJMPLCD_OUT

EXIT:RET

LINE2:MOVA,#0C0H

ACALLCMD_WRITE

RET

LINE1:MOVA,#80H

ACALLCMD_WRITE

RET

CLRSCR:MOVA,#01H

ACALLCMD_WRITE

RET

CMD_WRITE:MOVP0,A

CLRRS

CLRRW

SETBE

CLRE

ACALLDELAY

RET

DATA_WRITE:MOVP0,A

SETBRS

CLRRW

SETBE

CLRE

ACALLDELAY

RET

DELAY:CLRE

CLRRS

SETBRW

MOVP0,#0FFh

SETBE

MOVA,P0

JBACC.7,DELAY

CLRE

CLRRW

RET

DELAY1:MOVR3,#46D

BACK:MOVTH0,#00000000B

MOVTL0,#00000000B

SETBTR0

HERE1:JNBTF0,HERE1

CLRTR0

CLRTF0

DJNZR3,BACK

RET

DELAY2:MOVR3,#250D

BACK2:MOVTH0,#0FCH

MOVTL0,#018H

SETBTR0

HERE2:JNBTF0,HERE2

CLRTR0

CLRTF0

DJNZR3,BACK2

RET

READ_KEYPRESS:ACALLCLRSCR

ACALLLINE1

MOVDPTR,#IPMSG

ACALLLCD_OUT

ACALLLINE2

MOVR0,#5D

MOVR1,#160D

ROTATE:ACALLKEY_SCAN

MOV@R1,A

ACALLDATA_WRITE

ACALLDELAY2

INCR1

DJNZR0,ROTATE

RET

CHECK_PASSWORD:MOVR0,#5D

MOVR1,#160D

MOVDPTR,#PASSW

RPT:CLRA

MOVCA,@A+DPTR

XRLA,@R1

JNZFAIL

INCR1

INCDPTR

DJNZR0,RPT

ACALLCLRSCR

ACALLLINE1

MOVDPTR,#TEXT_S1

ACALLLCD_OUT

ACALLLINE2

ACALLDELAY1

SETBP2.0

MOVDPTR,#TEXT_S2

ACALLLCD_OUT

ACALLDELAY1

SJMPGOBACK

FAIL:ACALLCLRSCR

ACALLLINE1

MOVDPTR,#TEXT_F1

ACALLLCD_OUT

ACALLDELAY1

ACALLLINE2

MOVDPTR,#TEXT_F2

ACALLLCD_OUT

ACALLDELAY1

GOBACK:RET

KEY_SCAN:MOVP3,#11111111B

CLRP3.0

JBP3.4,NEXT1

MOVA,#49D

RET

NEXT1:JBP3.5,NEXT2

MOVA,#50D

RET

NEXT2:JBP3.6,NEXT3

MOVA,#51D

RET

NEXT3:JBP3.7,NEXT4

MOVA,#65D

RET

NEXT4:SETBP3.0

CLRP3.1

JBP3.4,NEXT5

MOVA,#52D

RET

NEXT5:JBP3.5,NEXT6

MOVA,#53D

RET

NEXT6:JBP3.6,NEXT7

MOVA,#54D

RET

NEXT7:JBP3.7,NEXT8

MOVA,#66D

RET

NEXT8:SETBP3.1

CLRP3.2

JBP3.4,NEXT9

MOVA,#55D

RET

NEXT9:JBP3.5,NEXT10

MOVA,#56D

RET

NEXT10:JBP3.6,NEXT11

MOVA,#57D

RET

NEXT11:JBP3.7,NEXT12

MOVA,#67D

RET

NEXT12:SETBP3.2

CLRP3.3

JBP3.4,NEXT13

MOVA,#42D

RET

NEXT13:JBP3.5,NEXT14

MOVA,#48D

RET

NEXT14:JBP3.6,NEXT15

MOVA,#35D

RET

NEXT15:JBP3.7,NEXT16

MOVA,#68D

RET

NEXT16:LJMPKEY_SCAN

INIT_COMMANDS:DB0CH,01H,06H,80H,3CH,0

TEXT1:DB"PASSWORDBASED",0

TEXT2:DB"SECURITYSYSTEM",0

IPMSG:DB"INPUT5DIGITS",0

CHKMSG:DB"CHECKINGPASSWORD",0

TEXT_S1:DB"ACCESS-GRANTED",0

TEXT_S2:DB"DOOROPENED",0

TEXT_F1:DB"WRONGPASSWORD",0

TEXT_F2:DB"ACCESSDENIED",0

PASSW:DB49D,50D,51D,52D,53D,0

END

该程序是用汇编语言编写的。下面解释程序的重要方面和子程序。

KEY_SCAN–是识别按键的子程序。识别按键采用列扫描的***。被按下的键被识别并被分配一个被按下的键的十进制等效值(ASCII值)。您可以阅读8051键盘上的教程-接口以了解有关编程的更多信息。

READ_KEYPRESS–是收集用户输入的子程序。使用寄存器R0设置一个计数器来计数5次(这会将用户输入***限制为前5次按键)。寄存器R1被分配地址单元160D。收集的用户输入保存在从160D开始的地址位置。该位置使用INCR1–命令8051连续递增。因此,第一个用户输入存储在160D中,第二个用户输入存储在161D中,第三个用户输入存储在162D中,第四个存储在163D中,第五个用户输入存储在164D中。这些地址位置是通过间接寻址***使用寄存器R1访问的。

注意:-程序中编写了两个延迟例程。DELAY1–用作在LCD模块上正确输出信息的延迟。向LCD模块发送消息/数据后,调用DELAY1,以便消息在LCD屏幕上停留规定的延迟时间。DELAY2(延迟2.5秒)用于为键盘提供必要的去抖效果。(按钮开关或任何类型的机械开关具有弹跳效应。必须通过电容器或软件内部的一些调整来消除这种效应-例如-扫描按键后的1或2秒延迟)

CHECK_PASSWORD–是将用户输入的密码(5位)与程序中实际存储的密码进行比较的子程序。通过在DPTR的帮助下从存储的密码中选择每个数字并将其加载到累加器(使用MOVCA,@A+DPTR),逐位进行比较。然后将加载到累加器的每个数字与作为用户输入存储的相应数字(在地址位置16D到164D中)进行比较,***是将它们一一加载到寄存器R1。数字通过X-OR与命令XRLA,@R1进行比较。根据比较的结果,该子程序写入了允许访问(并打开继电器)或不允许访问并在LCD屏幕上显示“访问被拒绝”消息的命令。

结论

以上就是使用8051的基于密码的安全系统的全部内容。我们希望您已经了解电路,它正在工作,并且程序非常好。如果您有任何疑问,请在评论部分提出。如果您想了解更多有趣和类似的电子密码锁项目,请查看以下安全系统/锁项目。

使用8051的基于RFID的安全系统 –是一种在概念上与数字门锁或电子密码锁非常相似的安全系统。该项目的主要区别在于唯一的RFID标签用于识别授权人员(而不是键盘和密码)。一个RFID阅读器连接到8051以读取RFID标签。

数字密码锁-高级-使用Arduino-是使用键盘和Arduino构建的数字密码锁项目的一个非常有趣和高级的版本。这个项目最有趣的部分是“用户定义密码”选项,用户可以在安装系统时自己设置密码。安装时的这个SET密码可以稍后通过按“编辑密码”键来更改/编辑。

猜你喜欢