器件名称 | 型号 | 大小 | 个数 | 封装 | 说明 |
电阻 | R5 R6 R7 | 1K | 3 | AXIAL-0.4 | |
R1 R2 R3 R4 R10 | 10K | 5 | AXIAL-0.3 | ||
R11 | 10K | 1 | SIP-3 | 滑动变阻器 | |
电容 | C1 C2 | 20pF | 2 | RAD-0.1 | |
C3 C4 C5 C6 C8 C9 | 104 | 6 | RAD0.1 | ||
C7 C10 | 100uF | 2 | RAD0.1 | 极性电容 | |
C11 | 10uF | 1 | RAD-0.1 | ||
晶振 | 11.0592MHZ | 1 | CRYSTAL | ||
单片机 | STC89C52 | 1 | DIP-40 | ||
转化芯片 | MAX232 | 1 | DIP16 | ||
并口 | DB9 | 1 | DB9 | ||
二极管 | IN4007 | D7 D8 D9 D10 | 4 | DIODE0.4 | 整流二极管 |
J2 | 1 | DIANYUAN | 电源接口 | ||
稳压芯片 | LM7805CT | 1 | TO-126 | ||
三极管 | 1 | SANJIGUAN | |||
蜂鸣器 | 1 | FENGMINGQI | |||
发光二极管 | D1 D3 D4 | <5mA | 3 | LED | 2红1绿 |
液晶显示屏 | SMC1602A | 1 | |||
电源 | 9V | 1 | |||
接口线 | 1 | ||||
P1 | 1 | 液晶接口 | |||
按钮 | S1~S14 | 14 | SW-PB1-15 |
随着科技的不断发展,人们越来越重视对具有私密、重要物质的场所的安全性,所以具有报警功能的电子密码锁在日常生活中用的越来越多,因此研究与设计单片机为主要控制器的电子密码锁具有工程意义和解决日常应用需求的价值。 本电子密码锁的设计采用以单片机STC89C52RC为主控制器,应用矩阵键盘、SMC1602A液晶显示器、STC89C52RC内部的EEPROM等器件进行设计了键盘电路、液晶显示电路、UART串口电路、电源(5V)电路、指示(LED)电路、报警(蜂鸣器)电路等电路设计;应用protel软件设计了硬件原理图和PCB图;应用C51语言设计了显示时间和校对时间、输入密码和修改密码、控制EEPROM等软件模块;最后焊接PCB并调试电路。最终设计出一个具有等待状态显示时间(可以对时间进行校准)、输入密码、修改密码、密码正确与否指示、报警、密码保护、一键还原初始密码等功能的密码锁。设计此系统具有较高的安全性和科学性。
|
目 次
(图片请下载附件中的word版本)
随着科技的不断发展,人们越来越重视对具有私密、重要物质的场所的安全性,所以具有报警功能的电子密码锁在日常生活中用的越来越多,因此研究与设计单片机为主要控制器的电子密码锁具有工程意义和解决日常应用需求的价值。本文主要介绍的是以单片机STC89C52型号为主要控制器的电子密码锁的设计并介绍其设计方法和设计的成果。
随着科技的不断进步和发展,人类已经步入了一个高科技的新时代。在这日新月异的时代中,人们对住宅、部门等具有私密、重要物质的场所的安全性要求不断提高。旧社会中,由于科技不发达,人们常常用机械锁来保护个人的财产,以这种方法来确保它们的安全性。这种用钥匙开锁式的机械锁常常会给人们带来不少的烦恼,比如:开锁的钥匙不慎丢了或者锁门的锁坏了。同时,平时携带一大窜钥匙也给人们带来不少的麻烦。从安全的角度来看,一种具有报警和高实用性的密码锁将取代人们所熟知的机械锁,这种电子密码锁安全可靠,具有较高的安全性和科学性。
1.2.1 电子密码锁技术的发展历史
电子密码锁从电子科技技术发展以来经历了由大型到小型、由复杂到简单、由原始到智能的发展经历。尤其是近年来不同型号的微处理器出现,为电子密码锁不断的改进与创新提供了新的发展契机:比如如今的微处理器会做的很小,这样小巧的处理器能为电子密码锁节省更多的硬件空间达到节省成本;再比如说老版本的8051单片机它内部是不提供EEPROM的,这如果想实现数据储存就需要用I2C总线来外接存储器来保存数据,如今单片机内部有EEPROM,数据掉电不会丢失。
说到识别密码方式,国内外大致经历了由早期的矩阵键盘输入操作到红外遥控控制操作再到智能IC卡再到如今指纹识别等多种实现方法。红外遥控控制密码锁会更加的方便快捷,通过密码锁的内部芯片对红外接收头接受到的信号进行解码然后通过对比密码来判定输入密码是否正确;IC卡密码锁设计是基于一个AT24C01A卡进行设计的,IC卡的核心是电可擦除的EEPROM。指纹密码锁设计是西门子公司研制的一种指纹感应片,这种芯片面积只有130mm,大小和人的指甲盖差不多,在这么小的芯片上却覆盖着有6.5万个微小型敏感元件,每个感应片有很高的灵敏度和测量精度,如此多的敏感细致元件完全可以非常详细和精准的将人手上的各种纹路信息拾取下来,将指纹数据存于电脑数据库中,这种具有人体特征标志的人体密码不仅可以大大增加了私人财产的安全性而且其操作简便、快捷具有很高的可靠性,于是这种指纹人体密码芯片将逐渐的被用于日常生活中具有重要物质的场所和设备比如银行、仓库等。
还有显示方面,早期显示使用的led灯、后来有了7段数码管、再后来大多数用的是lcd显示器。所以,随着科技的进步和创新,设计密码锁的技术也不甘落后,也在朝着智能化,通用化,人性化等富有创新的方向发展。
1.2.2 电子密码锁技术的研究现状
针对电子密码锁系统设计经过翻阅资料和对学术的学习和研究,提出多种实现方案,其中比较典型的有以下几种。文献中应用矩阵式键盘作为密码输入,用单片机的IO口控制键盘,通过编写程序用单片机对键盘进行扫描,然后用7段数码管显示系统状态和信息、门开门关提示信息是由LED灯进行提示。还有,应用红外遥控器和红外接收头来代替上面的矩阵式键盘,采用现成的遥控器,应用单片机编程对红外接收头接受的信号进行解码,显示应用的是型号为1602A的液晶显示,开关门指示信息是由led灯提示的,设计的优势是应用了I2C总线来控制外接的EEPEOM,来实现输入密码的数据保存功能。还有,应用STC89C52单片机,这个单片机和AT系列的单片机最大区别就是这类单片机有内部集成了4kb大小的EEPROM,利用ISP/API功能能应用编程来控制内部的EEPROM的读写而不需要外接存储器来进行数据保护。再有,应用单片机来完成以下的工作,第一个工作是对连接在单片机IO口上的键盘进行编码来制作一个远红外遥控器,将序列码经过发送头发送到单片机连接的接收头上,第二个工作是将接受到的数据经过红外接收头解码将数据交给单片机来处理来实现各个码的功能。目前,电子密码锁的功能的得到实现的新方法真是别出心裁,展现科技的发展和进步,比如:IC卡和指纹识别,IC卡密码锁设计是基于一个AT24C01A卡进行设计的,IC卡的核心是EEPROM。应用指纹设计出的密码锁主要应用的是传感器是西门子公司研制,这种传感器有很高的测量精度和灵敏度,所以这种人体密码大大提高了家庭、个人、公共的具有重要性的财产的安全性,这是科技发展和人类不断创新的结果,所以我们要好好利用科技带给我们生活的每一种便捷。
1.2.3 总结:
通过对以上各种实现电子密码锁的方法的学习、研究和比较,下面来谈一谈各种方法的优缺点,对于采用矩阵键盘来进行输入的这种方法生产成本低、操作方便,在如今也是很受欢迎的,但是他寿命不长;而用7段数码显示比较落后,显示不出科技的进步;对于采用遥控方式,优点是输入电路换成了红外遥控控制输入,这样来操作密码更加方便,缺点是成本比较高,外接EEPROM增加了硬件成本和操作强度。对于采用STC单片机,这种设计方法很合理,充分利用了单片机内部集成的EEPROM,只需通过编写控制它的程序就能实现数据保护功能,而不需外接储存器所以就降低了生产成本,不仅如此,这样设计的系统可行性好。而目前,密码锁设计和实现的新方法是现在流行的高科技手段来对密码锁进行更进一步的智能化,技术含量高。由此可见密码锁的发展的方向是不断的满足人们生活中的要求,功能更加齐全,更加人性,更加智能,更加方便的方向发展。
上面对电子密码锁的研究背景意义、发展进行了简要的介绍,在下面的章节中,将对系统的设计方案;以及系统的硬件设计;还有系统的软件设计;最后对系统的测试按照任务书和设计的功能要求来一一测试。
第2章主要说明系统的功能要求、系统的工作原理及最终实行的方案。
第3章主要介绍供5V直流电源设计,lcd显示电路的设计等系统硬件部分的设计,这部分工作为画原理图和PCB版图提供能基础,所以是系统重要的部分。
第4章主要介绍系统软件部分的设计,比如输入密码怎么实现,修改密码怎么实现等等,可以说这一章是第三章的灵魂,它的地位与第三章一样重要。
第5章主要是进行系统的测试与调试;主要对系统按设计的功能要求来一一进行验证。
对本系统设计任务书要求的功能罗列如下:
1、系统的液晶显示屏具有指示功能。
2、系统在空闲状态显示当前时间并可以对时间进行校准。
3、系统在输入密码状态用键盘(0~9)来输入系统设定的当前密码,如果密码输入正确在屏幕上有欢迎信息提示和开门信息提示;如果输入密码错误在屏幕上会有密码错误信息提示,如果输入密码错误三次将会有报警提示。
4.系统在修改密码状态,要求输入当前密码,如果密码输入正确则进入修改密码状态;如果输入当前密码错误则有错误信息提示。
5.系统有存储数据功能,当断电后会保存当前的密码不会丢失。
6.系统在按了输入密码键或修改密码健后如果30秒内没有对系统进行任何操作的话,系统将自动切换到显示时钟状态。
7.系统具有一键还原出厂密码功能,如果对密码管理不善可以使用本功能进行密码还原。
本课题设计用的主要芯片有两个:一个是STC89C52单片机,一个是SMC1602A液晶显示器。STC89C52单片机作为系统的总控制核心,SMC1602A 为主要的外围电路。下面对STC89C52和SMC1602A做一下简单的介绍。
2.2.1 STC89C52概述
STC89C52系列单片机的封装形式共分为DIP、PLCC及PQEP 3中形式,常用的是DIP封装方式。
STC89C52单片机共40个引脚,大致可分为4类:
(1)电源引脚
Vcc(40脚):电源端,+5V
Vss(20脚):接地端(GND)
(2)时钟电路引脚
XTAL1(19脚):外部接晶振输入端
XTAL2(18脚):外部接晶振输出端
(3) I/O引脚
P0口 (39~32脚):P0口是一组8位的漏极开路型双向I/O口,也是地址和数据的总线复用口
P1口 (1 ~ 8脚):P1口是一组带内部上拉电阻的8位准双向I/O口,可驱动4个TTL门电路
P2口(21~28脚):P2口是一组带内部上拉电阻的8位准双向I/O口,可驱动4个TTL门电路
P3口(10~17脚):P3口是一组带内部上拉电阻的8位准双向I/O口,该端口的每个引脚都有第二功能
(4) 控制线引脚
RST(9脚):复位端
EA/VPP(31脚):片外的存储器选择端/Flash存储器编程电源
ALE/PROG(30脚):地址锁存允许端/编程脉冲输入端
PSEN(29脚):读片外程序存储器选通信号输入端
STC89C52单片机最大的特点就是有ISP/IAP功能,它具有4K字节的EEPROM。其内部集成的EEPROM是与程序空间分开的,内部寄存器和功能描述如下:
名称 | 地址 | 功能描述 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 复位值 |
ISP_DATA | E2h | Flash数据寄存器 | 1111 1111 | ||||||||
ISP_ADDRH | E3h | Flash高字节地址寄存器 | 0000 0000 | ||||||||
ISP_ADDRL | E4h | Flash低字节地址寄存器 | 0000 0000 | ||||||||
ISP_CMD | E5h | Flash命令模式寄存器 | -- | -- | -- | -- | -- | MS2 | MS1 | MS0 | xxxx x000 |
ISP_TRIG | E6h | Flash命令触发寄存器 | xxxx xxxx | ||||||||
ISP_CONTR | E7h | ISP/IAP 控制寄存器 | ISPEN | SWBS | SWRST | -- | -- | WT2 | WT1 | WT0 | 000x x000 |
ISP_DATA:ISP/IAP操作时的数据寄存器。
ISP/IAP从Flash读出的数据放在此处,向Flash写入的数据也需放在此处。
ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位。
ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位。
ISP_CMD:ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。命令模式如表2.2所示。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 模式选择 |
保留 | 命令选择 | |||||||
-- | -- | -- | -- | -- | 0 | 0 | 0 | 待机模式,无ISP操作 |
-- | -- | -- | -- | -- | 0 | 0 | 1 | 对用户的应用程序flash区及数据flash区字节读 |
-- | -- | -- | -- | -- | 0 | 1 | 0 | 对用户的应用程序flash区及数据flash区字节编程 |
-- | -- | -- | -- | -- | 0 | 1 | 1 | 对用户的应用程序flash区及数据flash区扇区擦除 |
程序在系统ISP程序区时可以对用户应用程序区/数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除;程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除。STC89C51RC/RD+系列单片机出厂时已经固化有ISP引导码,并设置为上电复位进入ISP程序区,并且出厂时就已完全加密。
ISP_TRIG:ISP/IAP操作时的命令触发寄存器。
在ISPEN(ISP_CONTR.7)=1时,对ISP_TRIG 先写入46h,再写入B9h,ISP/IAP命令才会生效。
STC89C52RC,STC89LE52RC单片机内部可用Data Flash(EEPROM)的地址如表2.3所示
第一扇区 | 第二扇区 | 第三扇区 | 第四扇区 | ||||
起始地址 | 结束地址 | 起始地址 | 结束地址 | 起始地址 | 结束地址 | 起始地址 | 结束地址 |
2000H | 21FFH | 2200H | 23FFH | 2400H | 25FFH | 2600H | 27FFH |
第五扇区 | 第六扇区 | 第七扇区 | 第八扇区 | ||||
起始地址 | 结束地址 | 起始地址 | 结束地址 | 起始地址 | 结束地址 | 起始地址 | 结束地址 |
2800H | 29FFH | 2A00H | 2BFFH | 2C00H | 2DFFH | 2E00H | 2FFFH |
2.2.2 SMC1602A概述
SMC1602A 标准字符点阵型液晶显示模块(LCM),采用点阵型液晶显示器(LCD),可显示16 个字符X2 行西文字符,
字符尺寸为2.95X4.35(WXH)mm,内置HD44780 接口型液晶显示控制器,可与MCU 单片机直接连接,广泛应用于各类仪器仪表及电子设备。
◆控制器接口说明(HD44780 及兼容芯片):
1) 基本操作时序:
1.1 读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字
1.2 写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:无
1.3 读数据:输入:RS=H,RW=H,E=H 输出:D0~D7=数据
1.4 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲输出:无
2) RAM 地址映射图控制器内部带有80X8 位(80字节)的RAM缓冲区,对应关系如右图所示:
3) 指令说明
控制器内部设有一个数据地址指针,用户可通过它们来访问内部的全部 80 字节RAM。
4) 初始化过程(复位过程)
2.2.3 系统框图
本系统的核心部分是STC89C52单片机,利用MAX232芯片实现将hex文件下载到单片机运行的功能;利用SMC1602液晶显示屏实现电子密码锁所需的提示信息输出功能;利用键盘实现对密码操作的各项的功能比如输入密码或者修改密码等;采用蜂鸣器实现系统在输入密码错误三次后的自动报警功能;LED灯来指示密码输入是否正确和指示状态的功能;利用STC单片机内部的EEPROM实现密码数据保存功能;用电源电路为系统提供5V的稳定电源电源;用12MHZ的晶振电路为系统的单片机提供内部时钟。
系统的框图如下图所示:
图2.9 系统结构框图
单片机中P1.0~P1.6连接10个独立按键来组成一个矩阵键盘,实现键盘扫描并对按键进行编码,从而实现输入密码和修改密码的功能;P1.7通过NPN型三极管来驱动蜂鸣器,当输入密码错误三次后自动实现报警功能;P2.0~P2.7连接液晶显示器的8位数据线,实现从单片机向液晶显示器传输数据;P3.0连接液晶的RS端和max232的out端、P3.1连接液晶的RW端和max232的in端、P3.2连接液晶的EN端,实现单片机控制液晶显示器和连接串口的功能;P3.3连接独立按键,按键后进入输入密码状态;单片机的P3.4、P3.5、P3.6都连接了独立按键,这些独立键盘都是功能键盘他们是:输入密码功能键,按下系统会进入输入密码状态;修改密码功能键,按下系统会进入修改密码状态;还有一个确定功能键,按下系统会实现确定功能;P3.6和 P3.7分别连接红色LED灯和绿色的LED灯,实现密码输入是否正确指示的功能。
根据设计的要求和系统中所用到的元件的原理特征,确定了设计的总体方案即:以STC89C52为主控制器,SMC1602A液晶显示为提示器件,矩阵键盘为输入器件,蜂鸣器为报警器件,STC89C52内部的EEPROM为存储数据器件,LED灯为指示器件,MAX232和上位机实现异步通信的器件等。这些器件与单片机的连接方式将在下面的内容进行说明。
本设计包括8个电路模块,其中包括:指示灯电路模块、5V电源电路模块、晶振电路模块、复位电路模块、LCD显示电路模块、报警电路模块、键盘电路模块、串口电路模块。
指示电路分为两个部分:电源指示和密码输入状态指示,设计电路如下图所示:
3.2.1 电源指示灯电路设计
当电源接通后指示灯亮,表示系统供电正常。
图3.1 电源指示灯电路
3.2.2 密码输入状态指示电路设计
P3.6连接红色LED1,LED1亮表示当前密码输入错误;P3.7连接绿色LED2,LED2亮表示当前密码输入正确,LED1、LED2全亮表示系统在修改密码状态。
图3.2 密码输入状态指示电路
设计电路如下图所示:
图3.3 电源电路接法电路
晶振电路这里采用的是内部振荡器接法,晶振的频率为12MHZ,它为单片机提供内部时钟源,设计电路如下图所示:
图3.4 晶振电路
3.4 复位电路设计
单片机的复位本设计手动复位,复位的作用是防止程序由于某些原因跑飞,通过此键来保证单片机运行的可靠性,设计电路如下图所示:
图3.5 复位电路
3.5 LCD显示电路设计
单片机的P2.0~P2.7连接液晶显示器的7~14脚(8位数据),实现从单片机向液晶显示器传输数据的功能;P3.0连接液晶4脚(RS端),从而实现单片机向其发送命令或数据功能;P3.1连接液晶的5脚(RW端),从而实现单片机对其读写的功能;P3.2连接液晶的6脚(EN端),这个引脚是用来编程控制lcd使能的。还有lcd显示器的3引脚连接10K欧姆的可变电阻器,当改变它的阻值大小时可以改变lcd显示的对比度如,设计电路下图所示:
图3.6 液晶显示电路
蜂鸣器的连接到单片机的P1.7端。当编程给P1.7一个高电平的话,三极管的源极和集电极导通,蜂鸣器将要通电,通过设置蜂鸣器的通电的时间来实现报警的声音,设计电路如下图所示:
图3.7 报警电路
键盘电路分为两种:矩阵式输入键盘和独立按键,矩阵式输入键盘是(0~9)10个数输入键,独立按键共3个为功能键:输入密码键、修改密码键、确定键,设计电路如下图所示:
3.7.1 矩阵式键盘
矩阵键盘与单片机的引脚连接如下图,其中的P1.0~P1.2是行扫描,P1.3~P1.6列扫描。
图3.8 矩阵键盘电路
3.7.2 独立式功能键
以下三个独立按键是密码锁的功能键,S12连接P3.3实现进入输入密码状态的功能;S13连接P3.4实现按键后进入修改密码状态的功能;S14连接P3.5实现确定功能。
图3.9 功能键盘电路
串口电路的作用是将TTL电平转换为CMOS电平,从而将PC机产生的hex文件拷贝到单片机中,设计电路如下图所示:
图3.10 串口电路
3.9 本章小结
根据设计的设计要求完成了以上所述的各个硬件部分的设计。系统硬件设计共分为8个部分:指示电路设计的作用是指示电源与密码输入状态的指示作用;5V电源电路设计的作用是为系统提供稳定的电压;晶振电路设计的作用是为单片机的运行提供内部的时钟脉冲;复位电路设计的作用是防止程序跑飞回复运行的作用;液晶显示电路设计的作用是提示与指示操作的作用;报警电路设计的作用是当密码输入错误三次以上能够报警;键盘电路设计的作用是向系统输入数据和进入各种功能状态;串口电路设计的作用是将hex文件拷贝到单片机内部rom。
本系统软件主要包括10个软件程序模块:主程序、键盘扫描程序、输入密码程序、修改密码、时间显示程序、时间调整程序、报警程序、对EEPROM操作程序、还原出厂设置程序、密码校验函数等函数模块的设计。
主程序流程图如下图所示:
(图片请下载附件中的word版本)
系统上电后,系统将对硬件中的寄存器进行初始化设置,初始化的寄存器主要是初始化单片机的内部定时器用哪个定时器就要使能该定时器然后设置它的定时初值;初始化液晶,主要是初始化lcd的显示方式等;初始化单片机的IO端口等。当初始化完成后系统进入了显示当前时间的等待状态,在显示时间的同时系统在主函数中也不断的调用以下几个功能函数:输入密码子函数,修改时间子函数,报警子函数,一键还原子函数等。当系统检测到有功能键按下的时候,系统就调用相应的子函数去执行,来实现相应子程序的预设功能。
下面对主要的函数模块的流程简要的说明。
键盘扫描程序流程图如下图所示:
(图片请下载附件中的word版本)
当系统用到键盘时就要对键盘进行扫描。键盘有10个数字键和3个功能键,数字键盘的连接方式见图3.8和图3.9。当系统检测到有键按下的时候,这时系统将这个按下的键对应的键值传递给函数告诉主函数是哪个键按下,实现的方法是将按下键的序号付给一个变量,然后将这个变量的值返回给主函数。
为了实现在输入密码状态和修改密码2个状态之间的自由切换,在键盘扫描电路的程序中又添加了两个工作状态的判断程序,比如我现在是输入密码状态,现在我又想修改密码。这时按一下对应的功能键就能进入想要进入的状态。
输入密码程序流程图如下图所示:
(图片请下载附件中的word版本)
图4.3 输入密码程序流程图
当按了输入密码键后,密码锁进入输入密码状态,首先系统将调用键盘扫描函数进行密码的输入,当6位密码输入完成后,此时需要按一下确认键,此时如果输入的6位密码全部正确,密码锁将会通过lcd提示密码正确信息的提示,同时绿色的led灯亮表示输入的密码正确;当6位密码输入错误,密码锁将会有通过lcd提示密码错误的提示同时红色的led指示灯亮表示输入的密码错误,此时错误次数加一,如输错的次数到达系统设置的要求的话密码锁将自动产生报警信号。如果在输入密码状态没有对系统进行任何的操作的话,30秒后系统将自动的跳到等待状态。
修改密码程序流程图如下图所示:
(图片请下载附件中的word版本)
图4.4 修改密码程序流程图
当按下修改密码键后,密码锁将进入修改密码状态,此时的红色和绿色的指示灯都亮表示当前的状态是修改密码状态,系统调用键盘扫描函数进行密码的输入,当6位密码输入完成后需要按一下确认键,此时如果输入的6位密码全部正确,密码锁进入修改密码状态;当6位密码输入错误那么会有密码输入错误的提示;进入修改密码状态后,系统将再一次的调用键盘扫描函数进行新的密码输入,要求输入新的6位密码,输完后按确认键后,系统会有修改密码成功的提示;如果按了修改密码功能键后没有对系统进行任何的操作的话,30秒后系统将自动的跳到等待状态。
报警程序流程图如下图所示:
(图片请下载附件中的word版本)
图4.5 报警程序流程图
在报警函数主要设置了报警声音的频率,当报警条件满足时,系统将由蜂鸣器进行十次报警。和蜂鸣器连接的是NPN型号的三极管,当给驱动引脚送一个高电平则蜂鸣器通路,开始报警,当给驱动引脚送一个低电平则蜂鸣器不通,停止报警。
(图片请下载附件中的word版本)
系统上电后,将初始化定时器,然后系统向液晶的第一行送入now time数据,然后向液晶的第二行送入时间数组的值。
(图片请下载附件中的word版本)
图4.7 时钟设置流程图
当按下修改时间功能键后,系统将停止定时并记录按下此键的次数,按下的次数为1的时候将对秒的个位进行校准;按下的次数为2的时候将对秒的十位进行校准等等,当按下的次数为7时候,系统将开启定时,这时时钟将按照设置好的时间值进行计时。
EEPROM操作(读、写、擦除)程序流程图如下图所示:
(图片请下载附件中的word版本)
图4.8 对EEPROM进行读操作流程图
(图片请下载附件中的word版本)
图4.9 对EEPROM进行读操作流程图
(图片请下载附件中的word版本)
图4.10 对EEPROM进行擦除操作流程图
本章介绍的主要是基于硬件平台的软件的流程,通过keil uvision3软件的编程来实现任务书中要求的各个功能。本系统共设计了10个功能模块,每个功能模块的实现都是是经过不断的编写、不断的调试、不断的改进实现的。对编写好的电子密码锁的代码进行编译、链接生成了hex文件,最后下载到焊接好的硬件平台上,在下面的章节中将对测试系统功能进行详细介绍。
在设计完硬件和软件后对系统也进行仿真,这里用的仿真软件是protues。仿真运行结果没什么问题,可以满足设计要求。将hex文件拷贝到实际的硬件电路上的单片机上,然后进行测试设计要求的各种功能。通过测试和调试不断的提高系统的可靠性与可执行性。
5.1系统仿真测试与调试
系统调试用到的软件是keil uvision3和protues,将keil uvision3和protues仿真软件结合起来,仿真实现各种功能能否实现,然后再将软件加载到硬件上。调试过程很重要,因为在代码编写的过程中,调试能够清楚的了解程序运行的顺序和各个函数之间的调用情况,更重要的是调试能够帮助找到程序中遇到的不可理解的错误。经过多次对代码的调试,系统的软件部分可以满足系统的设计要求,使设计合理、完美。
下面对protues仿真结果进行简要的说明:
图5.1 KC51调试界面
通过以上一步一步的调试和仿真,说明设计的软件部分可以满足系统设计的要求,接下来对系统的硬件电路进行调试。当把所有的元器件都有序的焊接到电路板上后,主要应用万用表来检查焊接好的电路电压是否正常,检查焊接的节点有没有虚焊、漏焊、短接等情况。
如果软件与硬件调试都没什么问题的话,应用STC系列单片机的程序下载工具,将软件编写好后生成的hex文件拷贝到单片机内部,然后按复位键,开始测试系统的各项功能。
5.2系统测试及结果分析
下面主要按照第三章第一小节中功能要求来对密码锁系统所要求的功能来进行一一测试。
5.2.1 测试液晶显示屏的提示与指示操作功能。
空闲显示时间和提示操作信息等。测试结果如下图所示:
图5.6 液晶显示屏的提示功能
5.2.2 测试系统在空闲状态显示时间并校对时间功能。
空闲状态时显示当前时间。测试结果如下图所示:
图5.7 空闲状态显示当前时间
当按下校对时间功能键后进入时间校准状态。测试结果如下图所示:
对秒的个位校准 对秒的十位进行校准
对分的个位进行校准 对分的十位进行校准
对时的个位进行校准 对时的十位进行校准
图5.8 校对时间状态
5.2.3 测试系统在输入密码和报警功能
系统初始密码为528825,当按下输入密码功能键后屏幕会显示输入密码提示信息。测试结果如下图所示:
图5.9 输入密码状态
输入密码后结果为:
图5.10 输入6位密码
按确认键后:
如果密码输入正确结果提示信息为:hello 请关门;密码输入正确绿灯亮表示输入密码正确。测试结果如下图所示:
图5.11 密码输入正确
如果密码输入错误,lcd1602a上的提示信息内容为:密码输入错误,请按输入密码键进行重输入密码;红色的led亮表示输入密码错误。测试结果如下图所示:
图5.12 密码输入错误
如果密码输入错误达到三次液晶显示会有报警提示,蜂鸣器将进行报警。测试结果如下图所示:
图5.13 报警状态
5.2.4 测试系统修改密码功能
初始密码为528825;按下修改密码功能键后,红色的led和绿色的led亮(当修改密码时这两个灯都亮)。测试结果如下图所示:
图5.14 修改密码状态
输入密码锁系统的6位密码正确则进入修改密码状态,密码正确后要求设置新密码,当按了确定键后新密码设置成功。测试结果如下图所示:
图5.15 输入新密码
图5.16 设置新密码
图5.17 测试新密码输入正确
当初始密码输入错误,测试结果如下图所示:(提示信息为:对不起 密码错误,修改密码错误)
图5.18 测试新密码输入错误
5.2.5 测试系统密码数据保护功能
比如说电子密码锁初始的密码为528825,现在将它改为123123。这时突然掉电,当系统再次接上电后,现在可以用123123来进行输入密码。测试结果如下图所示:
图5.19 测试密码数据保护
5.2.6 测试30秒到切换状态功能
比如按下修改密码功能键或输入密码功能键,按下此键后如果没有对系统做任何操作,30秒后将回到等待状态。测试结果如下图所示:
图5.20 30秒到状态切换功能
5.2.7 测试一键还原初始密码功能
当按下一键还原功能键后,(此时系统提示信息意思为:初始化密码完成)之后就可以用初始密码进行开锁了。测试结果如下图所示:
图5.21 一键还原出厂密码
结 论
设计的基于单片机的电子密码锁实现了密码锁的常用功能和技术指标。在指导老师精心指导和自己的不懈努力下完成了软件和硬件的各项工作,现在系统各项功能运行正常,基本上完成了任务书中的要求和任务。
系统中用LCD1602A来显示提示信息,使系统更加实用。
电子密码锁最重要的方面就是具有较高的可靠性,本文设计的密码锁具有密码数据保护功能和备用电源等措施来增加系统的可靠性。在数据保护方面,应用单片机内部的eeprom,这样使硬件资源利用率大大提高。
由单片机控制器系统控制密码锁在空闲状态显示当前时间的同时不断的检测那几个功能键是否被按下,如果有功能键按下,之后系统就马上进入相应的功能状态。
附录A 系统总电路图
windylc000 发表于 2017-12-28 14:53
**** 作者被禁止或删除 内容自动屏蔽 ****
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |