APP下载

智能密码锁的软件设计与开发

2022-02-28燕秀秀

山西电子技术 2022年1期
关键词:密码锁数码管蜂鸣器

燕秀秀

(山西工程职业学院,山西 太原 030009)

0 引言

随着科技的发展和进步,各类先进新科技技术被应用到实际生活当中,给生活增加了不少便利。比如,针对安全加密锁,就出现了智能密码锁,它相对传统的弹子锁和机械锁,解决了锁距的行程距离短,容易被技术开启,钥匙可随意配置等缺点,它只需要设置几位数字密码就可完成安全锁的功能,让出行更加安全便捷,在实际生活中得到了广泛的应用。综合便捷和安全因素的考虑,本文使用STC15W4K32S430I作为核心芯片,结合其他外围器件设计了一款具有修改密码功能的智能密码锁。

1 软件需求分析

智能密码锁能够实现按键输入密码、自动开关锁、修改密码、指示灯状态显示等功能。智能密码锁各个组成部分包括STC15W4K32S430I主控制芯片、矩阵键盘、蜂鸣器、LED指示灯、继电器、数码管等,如图1所示。STC15W4K32S430I芯片实现整个系统的控制和数据处理;矩阵键盘可以进行密码的输入、清除或修改操作;蜂鸣器和LED信号灯实现声光报警指示,直观给出结果;继电器实现门锁的开关控制,数码管模块进行智能密码锁的状态指示以及实时的数字密码显示,STC15W4K32S430I主控芯片内部含有E2PROM,实现预设密码的存储。

关于智能密码锁的需求分析如下:

1) LED状态指示灯有红、黄、绿三种颜色,分别对应“密码错误”、“密码修改”、“密码输入”三种状态;

2) 数码管能够实时显示输入的数值和状态;

3) E2PROM中存储预设密码,可被单片机读写,实现数据交换;

4) 4×4矩阵按键上分布有数字键0~9、“输入”键、“清除”键、“修改”键,以及三个备用按键,支持扩展功能;

5) I/O口连接三极管驱动继电器开合,实现智能密码锁开关功能。

图1 智能密码锁系统结构框图

2 软件设计

根据需求分析,能得到智能密码锁的主要7个状态:初始状态、密码输入状态、密码验证状态、密码验证正确状态、密码验证错误状态、密码修改状态以及等待5 s无操作状态。在这7种不同状态下,分别有不同的响应,如表1所示,将各个状态使用变量标号Mode来表示,每个状态使用一个从0到6中确定的数字表示。

表1 智能密码锁状态表

初始状态下,继电器关闭、LED灯和蜂鸣器关闭;在密码输入过程当中,由矩阵按键输入密码,数码管显示“H”样字母以及按键数字,同时绿色LED灯点亮;在密码验证状态下,从单片机中E2PROM中读取预设密码进行验证;如果密码输入正确,也就是密码验证正确状态时,数码管显示0pen字样,同时继电器打开;如果密码验证错误状态则继电器关闭,同时红灯亮,蜂鸣器发出声音进行提醒,数码管显示Error字样;最后要求智能密码锁支持密码修改,密码修改的前提必须是要在密码输入正确的状态下进行,同时黄灯亮,数码管显示“C”样字母及按键新密码,然后进行密码保存到E2PROM,方便下次进行密码验证,同时要求在密码输入过程中允许进行密码输入的清除;为了能够更加地安全,我们规定无任何操作大于5 s则进入待机状态,也就是初始状态。

2.1 按键设计

采用4×4的矩阵键盘,对应的功能名称如图2所示。在软件设计中采用矩阵键盘行列式扫描确定按下的按键。

图2 矩阵键盘功能名称图

2.2 声光报警软件设计

在电子产品中,蜂鸣器是非常常见的一种元器件,广泛应用于计算机、打印机、报警器、电子玩具等等,通常作为发声装置。当密码输入错误时,采用无源蜂鸣器进行三次间断的发声报警。其软件流程图和软件设计如图3所示,其中BUZZ为硬件上单片机控制蜂鸣器所使用的控制端口,且输出PWM信号驱动蜂鸣器发出声音,当驱动输出为低电平,且不是PWM信号时,表示蜂鸣器没有触发,蜂鸣器处于关闭状态,初始化蜂鸣器为低电平0。具体的发声频率由for循环中的延时长短控制,间隔时长由for循环外部的延时时长控制。

图3 蜂鸣器软件流程图、蜂鸣器软件设计图

LED灯组包括红、黄、绿色,为了区分智能密码锁的不同工作状态,绿灯点亮表示智能密码锁正在输入密码按键值,黄灯点亮表示正在进行密码修改工作,红灯点亮表示密码输入错误。可以设置不同的位变量给三个LED灯。

根据需要配置对应的单片机端口,当对应的LED灯要被点亮时,设置对应的位变量值为0或者1来控制LED灯的亮灭。

2.3 继电器软件设计

继电器的软件设置类似于LED灯的设置,都是配置对应的单片机端口,通过单片机输出高低电平控制继电器的打开和关闭,实现门锁的开关。

2.4 密码显示软件设计

采用8位数码管3641AS和74HC595实现密码显示和状态字样的显示。74HC595是一个功能非常强大的移位缓存器,由SCK信号脚控制数据信号输入的脉冲,信号输入的0或者1都是SDL脚决定的。由SCK与SDL共同控制信号的输入[1]。单片机向74HC595发送一个字节数据[2]。

首先是对3个数据端作引脚定义。

然后是单片机向74HC595发送一个字节的函数Send_595(u8 dat),形参为dat。

最后是输出位码Send_595(T_COM[display_index])和段码Send_595(t_display[LED8[display_index]]),位码数组依次为0x01,0x02,0x03,0x04,0x05,0x06,0x07,分别表示8位数码管,段码数组t_display位标准的单个数码管的字符显示集合。

2.5 E2PROM的软件设计

STC15W4K32S430I芯片内部包含E2PROM,可以完成对预设密码的读写操作。也就是智能密码锁的密码验证时对预设密码的读以及密码修改时对密码的保存。使用IAP技术进行对E2PROM读写操作,假设预设密码为6位数字,使用E2PROM的几个相关寄存器相关位。首先是控制寄存器IAP_CONTR,相关读写位是第0、第1、第2和第7位,第7位为使能位,只有当它是1的时候,允许IAP读写E2PROM,否则是禁止对E2PROM读写。而第0、第1和第2位是设置CPU等待多长时间。然后是设置命令寄存器IAP_CMD,相关位是第0位和第1位,MS1和MS0为00时候,E2PROM是待机模式,不进行操作。当为01时,对E2PROM区进行字节读取;当为10时,对E2PROM区进行字节编程;当为11时,对E2PROM区进行扇区擦除。其次,是设置操作的E2PROM的地址寄存器IAP_ADDRH和IAP_ADDRL,分别是高位地址寄存器,用来指定地址的高8位,低位寄存器用来指定地址的低8位。最后,数据操作寄存器IAP_DATA,是对相关数据进行的操作,将要写入E2PROM中的数据放在数据寄存器中,或者从E2PROM中读出来的数据也在此寄存器中。需要特别注意的是,使用IAP技术操作时,都要对命令触发寄存器先写入5AH,再写入A5H,那么IPA命令才会生效。这样就可以对智能密码锁的密码读取判断和密码修改进行操作了。

3 软件测试验证

假设智能密码锁初始预设密码是6个1。测试步骤如表2所示。

表2 智能密码锁软件测试表

4 结束语

本文结合智能密码锁的实际需求,以STC15W4K32S430I为主控芯片,应用矩阵键盘、数码管、LED灯、蜂鸣器等,设计了一款智能密码锁系统。后续的发展可以考虑采用无线传播红外或者蓝牙等技术,进行远程控制实现智能密码锁物联网功能。

猜你喜欢

密码锁数码管蜂鸣器
电动自行车产品车速提示音检测现状和整改技术研究(2)
基于51单片机的分数计数器设计
微课教学设计之“数码管动态显示”
掌控板制作简易钢琴
本尼丢了蜂鸣器
Arduino编程
MC9S08FL16单片机数码管静态显示分析
开启密码锁
数字密码锁的逻辑实现
丰田凯美瑞240V车间隙警告蜂鸣器异常鸣响