河南理工大学电气工程与自动化学院 尚博阳
带手机控制功能的记忆密码锁
河南理工大学电气工程与自动化学院 尚博阳
介绍一款基于STC10F08XE单片机的带手机控制功能的记忆密码锁。该系统可通过自带键盘进行加锁、密码解锁、修改密码等功能,且具有相应的指示。此外还可使用配套APP通过蓝牙连接遥控密码锁进行加锁、解锁及修改密码。此外,修改后的密码会自动存储到EEPROM中进行保存,保证掉电重启后新密码不会丢失。
单片机;密码锁;蓝牙
随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,安全性能低,无法满足人们的需要。随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。
本文从经济实用的角度出发,采用宏晶科技STC10F08XE单片机作为主控芯片,结合外围的键盘输入、显示等电路,用C51语言编写主控芯片的控制程序,设计了一款具有更改密码及密码记忆功能,且可以通过手机进行控制的电子密码锁。
经实验证明,该密码锁具有设计方法合理,简单易行、成本低、安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。目前应用较广的电子密码锁大多是以单片机为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。
本系统采用STC10F08XE单片机作为微处理器,采用HC-05蓝牙模块作为无线通讯装置,以及3*2矩阵键盘、LCD1602显示电路、LED指示灯等外围设备构成。利用矩阵键盘,用户可以输入由1-4组成的四位数字密码,并带有“确认键”及“清除键”。当用户输入密码后,按下确认键,系统将进行密码校验:若密码正确,将解锁密码锁;若密码错误,LED指示灯将闪烁报警。在密码验证通过后,连按两次确认键可进入密码修改程序。用户重复输入两次新密码后,若两次输入的密码相同,修改密码成功,密码将被写入EEPROM中,即使系统掉电后重启,密码也不会丢失。在用户输入密码的过程中,按下“清除键”均可撤销一次输入。
使用配套的手机APP,可以对密码锁进行解锁、加锁以及密码修改操作。按下APP中相应的按键即可进行相对应的操作。
图1 系统工作流程图
目前市场中的显示方法有数码管显示与LCD屏显示。为了使得使用者可以简单明了的看到时间日期的信息,本系统采用LCD显示方式。LCD1602是一个能够显示16*2个字符的液晶显示屏,其引脚可直接与单片机I/O口相连接进行并行通讯,省去驱动电路,提高电路的可靠性。LCD显示电路图,单片机的P0口经接上拉电阻后接到LCD屏的八个数据端,同时LCD1602的三个控制端RS、WR和E分别与单片机的P2.0、P2.1和P2.2口相连。
为了节省单片机IO口资源,系统将3*2键盘利用矩阵键盘的形式进行连接。在扫描程序中,利用程序先将H1置于低电平,H2置于高电平,扫描L1、L2、L3的电平是否为低电平,即可检测1、2、3按键是否被按下;再利用程序先将H1置于高电平,H2置于低电平,扫描L1、L2、L3的电平是否为低电平,即可检测4、5、6按键是否被按下。
由于按键的硬件特性,用户在按下按键的时候回产生高低电平抖动的情况。考虑到成本问题,系统在硬件上没有进行相应的处理,而是使用软件进行按键消除抖动。程序中利用Key_Buff最作为按键扫描的存储区,若每次扫描所检测到的按键相同,将向Key_ Buff写入一位“1”。如果Key_Buff达到0xFF,即连续8次扫描到相同的按键被按下, 则程序确认该键已经被按下。这样就实现了软件按键消抖的功能。
系统利用51单片机的定时器0进行定时工作。利用定时器的中断功能,在中断服务程序中分别调用数码管扫描程序及按键扫描、按键处理程序。
我们将定时器设定为1ms定时。由于系统采用11.0592的晶振,根据公式:
X=M-计数值=M-(TC×fOSC)/12
计算可得,将定时器初值赋为TL0 = 0x66,TH0 = 0xFC时,定时器即可实现1ms定时。
在定时器0的中断服务程序中,系统进行了定时器的重新赋值、LED灯闪烁状态更新、数码管动态扫描及矩阵按键的扫描工作。其中,数码管显示我们设定为1毫秒扫描一次,LED灯的扫描设定为100毫秒更新一次,矩阵按键设置为5毫秒扫描一次。程序利用变量cnt的加减即可实现上述功能。
在系统实际工作的时候,密码锁的密码验证程序是最重要的一个环节。我们需要确保系统密码验证的功能稳定有效。当输入的密码完全匹配,才能触发解锁,否则系统将控制LED灯进行闪烁报警。
只有在正确输入密码后,连续点击两次确认按钮,系统才会进入密码修改程序。进入程序后,系统会提示用户输入两次新密码,若两次输入的密码不同,系统不保存新密码,而是控制LED灯进行闪烁提示;若两次输入的新密码完全一致,系统将更新密码,并将其写入到EEPROM中,以供下次开机时读取。
系统使用HC-05串口蓝牙芯片作为无线通讯模块。通过该模块,系统能与手机APP进行无线通信。
使用串口蓝牙模块之前,我们需要先对单片机串口进行波特率配置。利用单片机定时器1作为波特率发生器。经过计算之后,程序能将定时器1配置成115200波特率的发生器,该波特率与串口蓝牙模块的波特率一致,能够稳定通信。
系统利用串口的中断服务进行接收信息检验。在手机APP上,解锁功能对应的命令为“K”,加锁的命令为“J”,通过检测SBUF寄存器接收到的字符,即可实现上述两个功能。APP中的密码修改指令为“C+[四位密码]”,程序中利用变量count来进行密码接收检测。当接收到上述指令时,系统能准确无误地将收到的密码进行更新,并将其写入EEPROM中进行锁存。
本系统是基于STC10F08XE单片机的带手机控制功能的记忆密码锁,意在代替目前市面上安全性较低、使用较不方便的机械式密码锁。该系统有健全的密码判断机制,程序逻辑清晰且不存在漏洞,难以被破解。系统还可方便地更改密码,使其安全性更上一层。另外,还创造性地将智能手机与其相结合,提供配套的APP,可使用手机进行无线控制及密码修改,成为本系统的一大特色。
[1]余发山,王福忠.单片机原理及应用技术[M].中国矿业大学出版社,2011.
[2]宋雪松,李东明,崔长胜.手把手教你学51单片机[M].清华大学出版社,2014.
尚博阳(1996-),男,河南洛阳人,河南理工大学本科生,研究方向:电气工程及其自动化。
基金课题:河南理工大学青年基金项目(Q2015-2A)。