基于单片机的电子密码锁系统设计

拉配基于单片机的电子密码锁系统设计
作者:***
来源:《无线互联科技》2022年第05期
        摘要:电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合。单片机具有超大规模集成电路技术,有极强的数据处理能力,I/O口多。文章设计的密码锁能防止多次试探密码,该密码锁对单片机的型号选择、硬件设计、软件流程图、单片机存储单元的分配等都进行了注释,且结构小,功能强。现在很多单位甚至家里的各个家用电器,还有保险箱都需要它。
        关键词:AT89C51单片机;I/O口接线;LED显示;复位电路;焊接技术
        0引言
        随着电子技术的发展,密码锁在生活中随处可见,以往的机械锁只能通过钥匙开启,而且存在容易丢失、忘记携带钥匙的缺点,给人们的工作和生活带来不少麻烦[1]。而电子密码
锁可以通过指纹、蓝牙、卡片、密码、远程、应急钥匙等方式开锁,不用担心因钥匙遗失、忘带钥匙带来的烦恼。电子密码锁是大趋势,而且安防性能近年也有飞速提升。各种开锁方式,回归根本,锁本身也需要够坚固,材质要坚固,锁体要防爆,锁芯防盗防撬性能高才行。中消协普及的B级锁芯的概念,防撬时间等都有固定标准,市场上现在也有很多远远超过这个标准的锁芯,对应的企业标准也有超B级、C级等。而在开门方式上,卡容易被复制,密码容易被偷窥,指纹的安全性能是最高的[2]。指纹识别的技术也越来越先进,从早期的光学读头进步到现在的半导体读头,读取的已经不是表皮层的纹路而是深入真皮层,而且是活体识别,所以也适用于指纹淡的人,也杜绝被复制[3-4]。
        1设计与实现
        1.1需求分析
        根据前期对密码锁用户的调研,了解到密码锁的基本功能需求,现具体阐述如下。本设计采用AT89C51单片机电子锁系统,进行初始化设置,启动密码锁功能,密码输入显示屏幕采用了7段数码管半导体发光器件。系统控制指令通过单片机进行实现,单片机根据实际操作情况分配部件工作内容,程序操作性强、方便简洁。在用户输入密码过程中,单片
机将会采用矩阵按键布局模式记录当前输入密码,并将该密码与系统设置密码进行比对,若密码匹配则开启密码锁,若密码错误则需要用户按下删除键重新输入密码。当用户输入密码错误次数超过3次,电子密码锁将会自动锁定,需要用户切换管理员模式输入管理员密码才可解锁当前状态,并重新输入解锁密码。
        1.2总体设计
        根据设定好的密码,采用矩阵式按键实现密码的输入功能,当密码输入正确之后,锁就打开(即绿灯亮),如果输入的3次密码不正确,就锁定按键3 s,同时报警(即红灯亮)。我们将密码程序存在EPROM 中,用户通过单片机上P1.0 口上的按键进行选择。具体操作如下:首先按一下P1.0口上的按键,然后再逐渐输入密码,最后按#号确认即可。設置显示初始符号“—”,为了帮助用户确认是否有键按下,并且防止密码外泄,在输入显示时,并不是显示用户按下的数字符号,而是以一个特定的字母符号提醒用户是否有键按下。有键按下,就会显示字符“F”,没有键按下就是初始状态。首先按下P1.0口上的按键,然后输入密码,正确则绿灯亮,输入3次都不正确的则红灯亮。
        1.3硬件与软件设计
        设计思路如下:初始化从EEPROM中读取密码,单片机通电即显示首页,按任意键进入功能选择界面,可通过按键移动光标选择直接输入密码登录,或者进行修改密码操作。(1)直接输入密码登录:通过矩阵按键输入6位数字密码,并存入数组,然后通过该数组与EEPROM读取的密码进行比对,从而判断密码是否正确,如果密码正确则显示登录成功并触发流水灯反馈结果,如果密码错误则显示输入错误并触发蜂鸣器警告,当输入密码次数超过3次则直接返回首页。(2)进行修改密码操作:提示输入原密码,键入6位密码并判断,当输入密码正确时提示输入新密码,键入6位新密码后存入EEPROM,重启或重新登录时从EEPROM读取密码,此时使用为新密码。
        硬件设计主要由以下几个部分构成:AT89S52单片机最小系统、AT24C02数据存储模块、按键模块、LCD1602显示+报警模块的设计与实现,以及电路板的焊接等。主要工作包括电路图的设计、PCB图的设计、电路板的焊接与测试等。通过编写C语言程序后,将程序放入KEIL软件中进行调试,并利用该软件将C代码烧录到单片机最小控制系统中。以下为本次程序设计的编程思路:定义数值类型,调用延时程序,定义数据发送位;按键扫描程序;密码匹配及报警程序。
        1.3.1EEPROM初始化
        将51单片机的头文件和i2c.h的头文件包含进来,对24C02芯片进行读写操作,调用At24c02Write函数将变量、数据写入对应的地址,调用At24c02Read函数进行读取操作,将从对应地址内读取的值存储在变量中。
胎盘提取液
        1.3.2LCD 1602 初始化
        LCD1602驱动的底层协议中几个常用的函数:
        (1)LcdWriteCom():写命令函数,通过此函数向LCD1602 写命令。比如:清屏LcdWriteCom(0x01);设置数据指针起LcdWriteCom(0x80)。
        (2)LcdWriteData():显示函数,在写数据之前需要通过LcdWriteCom()函数告诉要写数据的地址,LCD1602 的第一行的16个显示位地址是0x80到0x8f;第二行的地址是0xc0到0xcf。比如在1602的第一行第一位显示数字8 :LcdWriteCom(0x80)或LcdWriteData('8')。
t100k
        (3)showString(unsigned char Coordinate,char * ptr):ShowString(首地址,字符串)函数在需要显示字符串时使用。比如在第二行第3位开始显示hello:ShowString
(0x13,“hello”)。其中首地址的高四位为0 则表示在第一排显示,为“1”则在第二排显示。低四位为0则在第0位显示。
        1.3.3矩阵按键扫描
光纤器件
        矩阵按键P1 口的低四位接的4x4矩阵键盘的行,高四位接的矩阵键盘的列。检测矩阵键盘是否有按键按下时:先将P1端口的低四位置1,高四位清零,检测P1端口的状态,如果高四位不为零,则表示有按键按下,并且可以知道是x0-x3哪一列有按键按下,比如P1 = 0x1f;则第一列有按键按下。此时将P1 口第四位清零,高四位置1;检测P1的状态,就知道y0-y3哪一行有按键按下。结合xy就可以知道具体是哪个按键按下。
        1.3.4输入密码
        检测按键‘0’~‘9’的按下,将键入数字信息保存至输入密码数组,+ ‘0’因为需要存入的是ASCII码,显示密码在Lcd显示屏第2行,可修改传入值m改变密码显示形式,m = 0密码以‘*’显示,m =1密码直接显示,按下return键时返回一步,按下OK键时结束输入。1.3.5 密码比对
        先判断密码长度,如果不为6位直接跳转密码错误反馈,满足密码位数,再逐位与EEPROM内存的密码进行比对,逐一对应则跳转密码成功反馈,否则跳转密码错误反馈。
        2结语
        本文设计实现的电子密码锁,基本达到了预期的功能。在整个设计和调试过程中,遇到的问题总结如下。实验调试过程中,由于数据的录入和显示会出现各种状况,在实现修改密码功能的调试过程中,由于统一使用字符型,需要与int型进行转换,可能会出现密码录入EEPROM后出现矩阵键盘无法输入的字符或其他非法字符,此时由于无法输入正确密码而需要反复调试将会增加很多麻烦,此时解决方法可以使用语句:At24c02Write(0,0);清除内存,初始化,将密码重置到888888,用于調试时可对EEPROM存入密码初始化。调试成功后可将此语句注释,恢复单片机重启后依然可以读取上次录入的新密码的功能。
        [参考文献]
        [1]王海军.一种基于单片机的教室用电子密码锁设计[J].电子世界,2020(2):166-167.
        [2]徐玉召,戴德伟,刘义,等.基于单片机的电子密码锁硬件系统设计[J].电脑知识与技术(学术版),2019(9):212-214.
提拉下水
        [3]周苗苗.基于单片机的电子密码锁设计[J].科技风,2020(12):34.
        [4]李建军,胡苗苗.基于FPGA的电子密码锁系统的设计[J].智能计算机与应用,2019(2):195-196,200.

本文发布于:2024-09-25 04:23:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/155133.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:密码   输入   单片机   密码锁   显示
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议