图12 密码设置程序流程图
3.2.5 键功能程序模块
图13为键功能流程图,按键分为0-9十个数字输入键、K10、K11总共12个按键,其中K10是更改密码键,如果密码输入正确,按下K10,并输入两次新密码一致,则修改密码成功。按下K11返回。
图13 键功能流程图
3.2.6 键盘扫描模块
图14为键盘扫描模块,该模块具备的功能有:逐列扫描键盘并确定案件的具体位置、判断键盘上有没有按键按下、消除去抖动、判断闭合的键是否释放等功能。本设计的键盘扫描模块包括行扫描和列扫描,现将高四位置0放入四行,通过异或操作,判断出按下的键在第几列,然后将低四位置0放入四行,用同样的方法判断出按下的键在第几行,行与列的交叉点就是按下的键,如按下的键在第二行第三列,则按下的键为“6”。
图14 键盘扫描模块
4. 系统调试
系统调试工程可以分为三大部分:硬件调试、软件调试、软件和硬件联调。电路先按模块逐个调试,每个模块调试成功后再进行联调。软件程序调试则先在最小系统调试,通过后再进行软件和硬件联调。
4.1 硬件调试
(1) 在简单的复位电路中,干扰容易串入复位端,在却大部分情况下是不会造成单片机的错误复位,但是会引起内部一些寄存器的错误复位,所以采用在RESET引脚接上一个去耦电容。同时为了操作上的方便,我们采用了开机复位和按钮复位这两种复位方式。
(2) 同时为了节省AT89S52的引脚,本设计把一些元器件的片选端都直接接地。
4.2 软件调试
本设计的软件系统采用汇编语言编写,调试分模块进行,每个模块程序调试好后,通过采用调用子程序的方法,进行整体的程序合并,这样的程序结构明了。出错的概率比较小。
4.3 软、硬件联调
将软件和硬件电路连接好,然后把程序写入单片机,首先调试控制系统的各个模块电路,确认成功后,再进行整体调试,按照密码锁使用时的具体操作步骤执行。
4.4 仿真
Proteus仿真图显示整个电子密码锁的全部电路。
图15 密码输入错误Proteus仿真图
图16 密码输入正确Proteus仿真图
本电子密码锁的设计以AT89S52为核心,包括1602液晶显示模块、复位电路模块、开锁电路模块、振荡电路模块、报警模块、掉电存储模块、矩阵键盘模块,实物中还包括供电电源模块。用户输入密码使用矩形键盘(4×4),包括0-9十个数字键和K10、K11两个功能键。设置原始密码为“123456”,刚开始使用时输入此密码,当密码达到6位时系统会自动判断密码的正确与否,几秒钟后系统会提示是修改密码还是退出,欲重新设定密码,需要按下K10键,修改密码时,需输入两次新密码确认一致,如果两次输入的密码不一样则LCD会显示“no right”并返回初始状态,如果两次密码输入一致,则液晶显示会显示“OK”,则修改密码成功,用户下次使用时就可以使用新密码。LCD1602用来实时显示当前的各操作状态。用继电器驱动电磁阀动作将锁打开。输入密码错误超过三次,系统会自动报警,设置的密码会存储在AT24C02中。
5. 结束语
在本次毕业设计中,通过网上查阅文献与图书馆搜集到的资料,再加上指导老师的指点,结合生活中对密码锁功能特性的要求,设计出这一套电子密码锁系统。本次设计主要实现了三个功能,一是开锁功能;二是修改密码功能;三是密码输入错误三次报警功能;本次设计选用AT89S52作为主控制器,设计中利用LCD1602液晶显示实现了人机交互界面,利用蜂鸣器实现了声报警功能,利用AT24C02存储芯片实现了掉电情况下密码不丢失的功能。与传统的电子密码锁相比,具有密码更改快捷方便、电路简单实用、价格低廉、人机交互界面良好的优点。不过由于了解的专业知识尚浅,对课题的研究经验不足,使得在技术上的解决与应用上显得粗糙了一些,例如功能键的设定、程序编写的不够完整、编写的代码执行起来效率不高、子程序不够完善等缺点。 AT89S52单片机密码可更改的电子密码锁设计+源码(5):http://www.youerw.com/tongxin/lunwen_395.html