资源描述
基于STC89C52单片机电子密码锁
学生姓名: xx
学生学号: xxxxx
院(系): 电气信息工程学院
年级专业: 级电子信息工程2班
指导老师: 陶文英
二〇一三年六月
摘 要
伴随大家生活水平提升,怎样实现家庭防盗这一问题也变尤其突出,传统机械锁因为其结构简单,被撬事情屡见不鲜,电子密码锁含有安全性能高,成本低,功耗低,操作简单等优点使其作为防盗卫士角色越来越关键。
从经济实用角度出发,采取51系列单片机,设计一款可更改密码,LCD1602显示,含有报警功效,该电子密码锁体积小,易于开发,成本较低,安全性高,能将其存放现场历史数据立即上报给上位机系统,实现网络实时监控,方便管理人员立即分析和处理数据。其性能和安全性已大大超出了机械锁,特点有保密性好,编码量多,远远大于弹子锁,随机开锁成功率几乎为零;密码可变, 用户能够常常更改密码,预防密码被盗,同时也能够避免因人员更替而使锁密级下降;误码输入保护。当输入密码数次错误时,报警系统自动开启;电子密码锁操作简单易行,受到广大用户亲睐。
关键词 单片机, 密码锁, 更改密码, LCD1602
目 录
摘要……………………………………………………………………………………I
1 绪论
1.1电子密码锁介绍……………………………………………………………………………1
1.2 电子密码锁发展趋势…………………………………………………………………1
2 设计方案……………………………………………………………………………………3
3 关键元器件…………………………………………………………………………………4
3.1 主控芯片STC89C52………………………………………………………………………4
3.2 晶体振荡器………………………………………………………………………………8
3.3 LCD显示密码模块设计………………………………………………………………9
3.3.1 LCD1602介绍………………………………………………………………………9
3.3.2 LCD1602液晶显示模块和单片机连接电路………………………………………11
4 硬件系统设计……………………………………………………………………………12
4.1 设计原理…………………………………………………………………………………12
4.2 电源输入电路……………………………………………………………………………12
4.3 矩阵键盘…………………………………………………………………………………13
4.4 复位电路…………………………………………………………………………………14
4.5 晶振电路…………………………………………………………………………………14
4.6 报警电路…………………………………………………………………………………15
4.7 显示电路…………………………………………………………………………………15
4.8 开锁电路…………………………………………………………………………………16
4.9 电路总体组成……………………………………………………………………………16
5 软件程序设计……………………………………………………………………………18
5.1 主程序步骤介绍…………………………………………………………………………18
5.2 键盘模块步骤图…………………………………………………………………………19
5.3 显示模块步骤图…………………………………………………………………………21
5.4 修改密码步骤图…………………………………………………………………………22
5.5 开锁和报警模块步骤图………………………………………………………………23
6 电子密码锁系统调试及仿真………………………………………………………25
6.1硬件电路调试及结果分析………………………………………………………………25
6.2软件调试及功效分析……………………………………………………………………25
6.2.1调试过程……………………………………………………………………………25
6.2.2 仿真结果分…………………………………………………………………………26
6.3 仿真全图…………………………………………………………………………………28
7 结论…………………………………………………………………………………………29
参考文件………………………………………………………………………………………30
附录:……………………………………………………………………………………………31
1 绪论
1.1电子密码锁介绍
电子密码锁是一个经过密码输入来控制电路或是芯片工作,从而控制机械开关闭合,完成开锁、闭锁任务电子产品。它种类很多,有简易电路产品,也有基于芯片性价比较高产品。现在应用较广电子密码锁是以芯片为关键,经过编程来实现。其性能和安全性已大大超出了机械锁。其特点以下:
1) 保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。
2) 密码可变,用户能够随时更改密码,预防密码被盗,同时也能够避免因
人员更替而使锁密级下降。
3) 误码输入保护,当输入密码数次错误时,报警系统自动开启。
4) 无活动零件,不会磨损,寿命长。
5) 使用灵活性好,不像机械锁必需佩带钥匙才能开锁。
6) 电子密码锁操作简单易行,一学即会。
1.2 电子密码锁发展趋势
日常生活和工作中,住宅和部门安全防范、单位文件档案、财务报表和部分个人资料保留多以加锁措施来处理。现在门锁关键用弹子锁,其钥匙轻易丢失;保险箱关键用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,大家常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。针对这些锁具给大家带来不便若使用机械式钥匙开锁,为满足大家对锁使用要求,增加其安全性,用密码替换钥匙密码锁应运而生。因为电子器件所限,以前开发电子密码锁,其种类不多,保密性差,最基础就是只依靠最简单模拟电子开关来实现,制作简单但很不安全,在后为多是基于EDA来实现,其电路结构复杂,电子元件繁多,也有使用早先20引角2051系列单片机来实现,但密码简单,易破解。伴随电子元件深入发展,电子密码锁也出现了很多种类,功效日益强大,使用愈加方便,安全保密性更强,由以前单密码输入发展到现在,密码加感应元件,实现了真真电子加密,用户只有密码或电子钥匙中一样,是打不开锁,伴随电子元件发展及大家对保密性需求提升出现了越来越多电子密码锁。出于安全、方便等方面需要很多电子密码锁已相继问世。但这类产品特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适适用于保密要求高且供个人使用箱、柜、房间等。因为数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙电子信息,组合使用这些信息能够使电子防盗锁取得高度保密性,如防范森严金库,需要使用复合信息密码电子防盗锁,组合使用信息也能够使电子防盗锁取得无穷扩展可能,使产品多样化,对用户而言是“千挑百选、自得其所”。能够看出组合使用电子信息是电子密码锁以后发展趋势。
2 设计方案
采取以单片机为关键控制方案
因为单片机种类繁多,多种型号全部有其一定应用环境,所以在选择时要多加比较,合理选择,以期取得最好性价比。通常来说在选择单片机时从下面多个方面考虑:性能、存放器、运行速度、I/O口、定时/计数器、串行接口、模拟电路功效、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上部分还有部分最基础比如:中止源数量和优先级、工作温度范围、有没有低电压检测功效、单片机内有没有时钟振荡器、有没有上电复位功效等。在开发过程中单片机还受到:开发工具、编程器、开发成本、开发人员适应性、技术支持和服务等等原因。基于以上原因本设计选择单片机STC89C52作为本设计关键元件,利用单片灵巧活编程设计和丰富I/O端口,及其控制正确性,实现基础密码锁功效。在单片机外围电路外接输入键盘用于密码输入和部分功效控制,外接LCD1602液晶显示器用于显示作用。当用户需要开锁时,先按键盘开锁键以后按键盘数字键0-9输入密码。密码输完后按下确定键,假如密码输入正确则开锁,不正确则重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来密码,只有当输入原密码正确开锁后才能设置新密码。新密码输入无误后按确定键使新密码将得到存放,密码修改成功。
3 关键元器件
3.1 主控芯片STC89C52
1)STC89C52单片机关键特征以下:
Stc89c52是一个带8K字节闪烁可编程可擦除只读存放器(FPEROM—Falsh Programmable and Erasable Read Only Memory)低电压,高性能CMOS8位微处理器,俗称单片机。该器件采取ATMEL高密度非易失存放器制造技术制造,和工业标准MCS-51指令集和输出管脚相兼容。因为将多功效8位CPU和闪烁存放器组合在单个芯片中,stcstc89c52是一个高效微控制器,为很多嵌入式控制系统提供了一个灵活性高且价廉方案,stc89c52芯片引脚图图3-1所表示。
图3-1 stc89c52芯片引脚图
关键特征:
·和MCS-51 兼容
·8K字节可编程闪烁存放器
·寿命:1000写/擦循环
·数据保留时间:
·全静态工作:0Hz-24Hz
·三级程序存放器锁定
·128*8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·6个中止源
·可编程串行通道
·低功耗闲置和掉电模式
·片内振荡器和时钟电路
2)STC89C52RC 引脚功效说明:
1、主电源引脚VSS和VSS
STC89C52芯片引脚图
VSS——(40脚)接+5V电压;
VSS——(20脚)接地。
2、外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体一个引脚。在单片机内部,它是一个反相放大器输入端,这个放大器组成了片内振荡器。当采取外部振荡器时,对HMOS单片机,此引脚应接地;对SHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体另一端。在单片机内部,接至上述振荡器反相放大器输出端。采取外部振荡器时,对HMOS单片机,该引脚接外部振荡器信号,即把外部振荡器信号直接接到内部时钟发生器输入端;对XHMOS,此引脚应悬浮。
3、控制或和其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期高电平将使单片机复位。推荐在此引脚和VSS引脚之间连接一个约8.2k下拉电阻,和VSS引脚之间连接一个约10μF电容,以确保可靠地复位。
VSS掉电期间,此引脚可接上备用电源,以确保内部RAM数据不丢失。当VSS主电源下掉到低于要求电平,而VPD在其要求电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。
②ALE/PROG(30脚):当访问外部存贮器时,ALE(许可地址锁存)输出用于锁存地址低位字节。即使不访问外部存放器,ALE端仍以不变频率周期性地出现正脉冲信号,此频率为振荡器频率1/6。所以,它可用作对外输出时钟,或用于定时目标。然而要注意是,每当访问外部数据存放器时,将跳过一个ALE脉冲。ALE端能够驱动(吸收或输出电流)8个LS型TTL输入电路。 对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
③PSEN(29脚):此脚输出是外部程序存放器读选通信号。在从外部程序存放器取指令(或常数)期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存放器时,这两次有效PSEN信号将不出现。PSEN一样能够驱动(吸收或输出)8个LS型TTL输入。
④EA/VPP(引脚):当EA端保持高电平时,访问内部程序存放器,但在PS(程序计数器)值超出0FFFH(对851/8751/80S51)或1FFFH(对8052)时,将自动转向实施外部程序存放器内程序。当EA保持低电平时,则只访问外部程序存放器,不管是否有内部程序存放器。对于常见8031来说,无内部程序存放器,所以EA脚须常接地,这么才能只选择外部程序存放器。
对于EPROM型单片机(如8751),在EPROM编程期间,此引脚也用于施加21V编程电源(VPP)。
4.控制或和其它电源复用引脚 RST/Vpd,ALE/PROG,PSEN 和EA/Vpp。
RST/Vpd 当振荡器运行时。在此引脚上出现两个机器同期高电平(由低到高跳变),将使单片机复位。
在 VSS掉电期间,此引脚可接上备用电源,由 Vpd向内部 RAM提供备用电源,以保持内部RAM中数据。
ALE/PROG 正常操作时为ALE功效(许可地址钱存),提供把地址低字节锁存到外部锁存器。ALE引脚以不变频率(振荡周期1/6)周期性地发出正脉冲信号。所以,它可用作对外输出时钟,或用于定时目标。但要注意,每当访问外部数据存放器时,将跳过一个 ALE脉冲。 ALE端能够驱动(吸收或输出电流)八个 LSTTL电路。
对于 EPROM型单片机,在 EPROM编程期间,此引脚接收编程脉冲(PROG功效)。
PSEN 外部程序存放器读选通信号输出端。在从外部程序存放器取指令(或数据)期间;PSEN 在每个机器周期内两次有效。 PSEN 一样能够驱动八个LSTTL输入。
EA/Vpp EA为内部程序存放器和外部程序存放器选择端。当EA为高电平时,访问内部程序存放器(PS值小于4K)。当EA为低电平时,则访问外部程序存放器。对于EPROM型单片机,在EPROM编程期间,此引脚上加21VEPROM编程电源(Vpp)。
5、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)
①P0口(39脚至32脚):是双向8位三态I/O口,在外接存放器时,和地址总线低8位及数据总线复用,能以吸收电流方法驱动8个LS型TTL负载。
②P1口(1脚至8脚):是准双向8位I/O口。因为这种接口输出没有高阻状态,输入也不能锁存,故不是真正双向I/O口。P1口能驱动(吸收或输出电流)4个LS型TTL负载。对8052、8032,P1.0引脚第二功效为T2定时/计数器外部输入,P1.1引脚第二功效为T2EX捕捉、重装触发,即T2外部控制端。对EPROM编程和程序验证时,它接收低8位地址。
③P2口(21脚至28脚):是准双向8位I/O口。在访问外部存放器时,它能够作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2能够驱动(吸收或输出电流)4个LS型TTL负载。
④P3口(10脚至17脚):是准双向8位I/O口,在MSS-51中,这8个引脚还用于专门功效,是复用双功效口。P3能驱动(吸收或输出电流)4个LS型TTL负载。
作为第一功效使用时,就作为一般I/O口用,功效和操作方法和P1口相同。作为第二功效使用时,各引脚定义如表所表示。
值得强调是,P3口每一条引脚均可独立定义为第一功效输入输出或第二功效。如表3-1。
表3-1 P3口管脚备选功效
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
/INT0(外部中止0)
P3.3
/INT1(外部中止1)
P3.4
T0(记时器0外部输入)
P3.5
T1(记时器1外部输入)
P3.6
/WR(外部数据存放器写选通)
P3.7
/RD(外部数据存放器读选通)
3.2 晶体振荡器
晶体振荡器,简称晶振,其作用在于产生原始时钟频率,这个频率经过频率发生器放大或缩小后就成了电脑中多种不一样总线频率。以声卡为例,要实现对模拟信号44.1kHz或48kHz采样,频率发生器就必需提供一个44.1kHz或48kHz时钟频率。假如需要对这两种音频同时支持话,声卡就需要有两颗晶振。不过现在娱乐级声卡为了降低成本,通常全部采取SCR将输出采样频率固定在48kHz,不过SRC会对音质带来损害,而且现在娱乐级声卡全部没有很好地处理这个问题。现在应用最广泛是石英晶体振荡器。
石英晶体振荡器是一个高精度和高稳定度振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一个能够替换LC谐振回路晶体谐振元件。石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。为数据处理设备产生时钟信号和为特定系统提供基准信号。在单片机中为其提供时钟频率。
石英晶体振荡器是利用石英晶体(二氧化硅结晶体)压电效应制成一个谐振器件,它基础组成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它能够是正方形、矩形或圆形等),在它两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就组成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品通常见金属外壳封装,也有用玻璃壳、陶瓷或塑料封装。只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。当外加电压频率等于晶体谐振器固有频率时,就会发生压电谐振,从而造成机械变形振幅忽然增大。
时钟信号用来提供单片机片内多种微操作时间基准,时钟信号通常见两种电路形式得到:内部振荡和外部振荡。MCS-51单片机内部有一个用于组成振荡器高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器输入端和输出端,因为采取内部方法时,电路简单,所得时钟信号比较稳定,实际使用中常采取这种方法,外接晶体振荡器(简称晶振)或陶瓷谐振器就组成了内部振荡方法,片内高增益反向放大器和作为反馈元件片外石英晶体或陶瓷谐振器一起可组成一个自激振荡器并产生振荡时钟脉冲。外接晶体和电容C2和C3组成并联谐振电路,它们起稳定振荡频率、快速起振作用,其值为30pF左右,晶振频率选11.0592MHz
3.3 LCD显示密码模块设计
显示模块关键由LCD1602显示器组成,她显示是键盘输入密码,和密码正确和错误提醒。当输入密码时,出于安全性考虑,显示密码是有*号替换,为暗密。当输入六位密码后按下确定键,系统会和存于ROM密码对比, 若密码错误,显示器会显示Error,若密码正确,显示器会显示Right。
3.3.1 LCD1602介绍
1) 1602功效介绍
1602液晶也叫1602字符型液晶它是一个专门用来显示字母、数字、符号等点阵型液晶模块它有若干个5X7或5X11等点阵字符位组成,每个点阵字符位全部能够显示一个字符。每位之间有一个点距间隔每行之间也有间隔起到了字符间距和行间距作用,正因为如此所以她不能显示图形。1602LCD是指显示内容为16X2,即能够显示两行,每行16个字符液晶模块(显示字符和数字)。
2) 1602LCD 采取标准 14脚(无背光)或 16脚(带背光)接口,各引脚接口说明以下表3-2所表示:
表3-2 引脚功效说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
数据
3
VL
液晶显示偏压
11
D4
数据
4
RS
数据/命令选择
12
D5
数据
5
R/W
读/写选择
13
D6
数据
6
E
使能信号
14
D7
数据
7
D0
数据
15
BLA
背光源正极
8
D1
数据
16
BLK
背光源负极
其引脚图以下图3-2所表示:
图3-2 LCD1602引脚图
3) LCD寄存器选择
表3-3 LCD寄存器选择
E
R/W
RS
功效说明
1
1
0
写入命令寄存器
1
1
1
写入数据寄存器
1
1
0
读取忙碌标志及RAM地址
1
1
1
读取RAM数据
0
X
1
不动作
3.3.2 LCD1602液晶显示模块和单片机连接电路
图3-3 LCD1602液晶显示模块和单片机连接电路
4 硬件系统设计
4.1 设计原理
本设计关键由单片机、矩阵键盘、液晶显示器和密码存放等部分组成。其中矩阵键盘用于输入数字密码和进行多种功效实现。由用户经过连接单片机矩阵键盘输入密码,后经过单片机对用户输入密码和自己保留密码进行对比,从而判定密码是否正确,然后控制引脚高低电平传到开锁电路或报警电路控制开锁还是报警,实际使用时只要将单片机负载由继电器换成电子密码锁电磁铁吸合线圈即可,当然也能够用继电器常开触点去控制电磁铁吸合线圈。
本系统共有两部分组成,即硬件部分和软件部分。其中硬件部分由电源输入部分、键盘输入部分、密码存放部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应由主程序、初始化程序、LCD显示程序、键盘扫描程序、开启程序、关闭程序、建功效程序、密码设置程序、EEPROM读写程序和延时程序等组成。
复位电路
振荡电路
键盘电路
开锁电路
STC89C52
单片机
显示电路
报警电路
图4-1 组成原理
4.2 电源输入电路
三端集成稳压器LM7805和LM7905是作为固定输出电压经典应用。正常工作时,输入、输出电压差为2--3V。电容C为输入稳定电容,其作用是减小纹波,消振、抑制高频和脉冲干扰,它通常为0.1--1uF。电容C为输出稳定电容,其作用是改善负载瞬态响应,它通常为1uF。使用三端稳压器时要依据输出电流大小选择加散热器,不然会因为过热而无法工作到额定电流。
图4-2 电源输入电路
4.3 矩阵键盘
因为本设计所用到按键数量较多而不适适用独立按键式键盘。采取是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键在行列交叉点上,密码锁密码由键盘输入完成,和独立式按键键盘相比,要节省很多I/O口。本设计中使用这个4*4键盘不仅能完成密码输入还能作尤其功效键使用,比如清空显示功效等。键盘每个按键功效在程序设计中设置 。其大致功效(看键盘按键上标识)及和单片机引脚接法。
图4-3 矩阵键盘
4.4 复位电路
单片机复位是使CPU和系统中其它功效部件全部处于一个确定初始状态,并从这个状态开始工作,比如复位后PC=0000H,使单片机从第—个单元取指令。不管是在单片机刚开始接上电源时,还是断电后或发生故障后全部要复位。在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存放器读选通信号PSEN无效。地址锁存信号ALE也为高电平。依据实际情况选择图2-8所表示复位电路。该电路在最简单复位电路下增加了手动复位按键,在接通电源瞬间,电容C1上电压很小,复位下拉电阻上电压靠近电源电压,即RST为高电平,在电容充电过程中RST端电压逐步下降,当RST端电压小于某一数值后,CPU脱离复位状态,因为电容C1足够大,能够确保RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1经过R5放电。当电容C1放电结束后,RST端电位由R11和R15分压比决定。因为R11<<R15 所以RST为高电平,CPU处于复位状态,松手后,电容C1充电,RST端电位下降,CPU脱离复位状态。R11作用在于限制按键按下瞬间电容C1放电电流,避免产生火花,以保护按键触电 。
图4-4 复位电路
4.5 晶振电路
STC89C52引脚XTAL1和XTAL2和晶体振荡器及电容C2、C1按下图所表示方法连接。晶振、电容C2/C3及片内和非门(作为反馈、放大元件)组成了电容三点式振荡器,振荡信号频率和晶振频率及电容C1、C2容量相关,但关键由晶振频率决定,范围在0~33MHz之间,电容C2、C3取值范围在30pF左右。依据实际情况,本设计中采取11.0592MHZ做系统外部晶振。电容取值为33pF。
图4-5 晶振电路
4.6 报警电路
报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,不发声直接开锁,当密码输入错误时,单片机P3.3引脚为低电平,三极管T3导喇叭发出噪鸣声报警。
图4-6 报警电路
4.7 显示电路
LCD1602液晶显示器显示。
图4-7 显示电路
4.8 开锁电路
经过单片机开锁实施机构,发光二极管D1发光以替换达成开锁目标。
图4-8 开锁电路
开锁原理:
LED发光
单片机
微控制器
STC89C52
P1.0低电平
返回
N
Y
密码正确?
图4-9 开锁原理
4.9 电路总体组成
在确定了选择什么型号单片机后,就要确定在外围电路,其外围电路包含电源输入部分、键盘输入部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,依据实际情况键盘输入部分选择4*4矩阵键盘,显示部分选择LCD1602液晶显示器来完成。此次设计各大模块在上述章节中已仔细介绍了,将各大模块融合在一起后组成电子密码锁硬件电路,键盘输入模块和LCD1602液晶显示器显示模块是最关键两大模块,键盘关键是完成密码输入、修改密码、消除密码等等任务。而显示模块则是关键完成输入密码显示和密码输入正确或错误提醒。而剩下就是报警模块、开锁模块和单片机最小系统。开锁顾名思义就是密码输入正确后打开大门,而报警关键是为安全着想,当有些人非法入侵时便于抓住犯人。单片机最小系统则是单片机正常运行保障。总硬件电路图4-10。
图4-10 总电路图
5 软件程序设计
电子密码锁软件设计是整个电子密码锁可靠安全运行关键,密码锁软件程序分为主程序、延时程序、LCD1602液晶显示器显示程序、修改密码程序、扫描键盘输入程序、报警程序。密码经过矩阵键盘输入,而且在LCD1602液晶显示器上显示,假如输入密码正确,则能够直接开锁。假如不正确,而且3次以上输入不正确,则开启报警系统,触发蜂鸣器发声。假如要修改密码,则需要在输入基础密码判别正确后,输入修改后密码,经过系统确定后方可修改密码。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。而此次设计分为四大模块,分别是键盘输入模块、LCD1602液晶显示器显示模块、开锁和报警模块和修改密码模块,经过主程序来实现控制。
5.1主程序步骤介绍
主程序关键内容是各程序模块调用,并利用各模块进行电子密码锁功效实现,即是键盘输入密码并在LCD1602液晶显示器显示密码,当密码输入完成后,单片机会将输入进密码和原单片机内部所储存密码进行对比,如若密码正确,则代表电磁吸合器发光二极管会发光,同时LCD1602液晶显示器会显示出正确密码;如若密码错误,会开启计数器计数,当错误次数超出三次时,报警系统会开启即是蜂鸣器会发出报警声,以提醒保安。步骤图图5-1所表示。
开始
初始化
次数加1
输入密码
密码正确?
返回
N
Y
Y
开锁程序
开锁?
N
修改密码码?
次数>3?
报警程序
修改程序
Y
N
N
Y
图5-1 主程序步骤
5.2 键盘模块步骤图
键盘输入模块关键包含键盘扫描、延时去抖、找到键值和返回键值。键盘扫描时循环,程序编写是会使其进入是循环,这么能够检验出是否有按键按下,假如无按键按下就会进入等候有按键按下状态,假如有按键按下话就进入延时去抖步骤,这么能够肯定确实定扫描到按键是否被按下。经过去抖以后就是确定按键位置即是第几行和第几列,找到按键后,就是确定键值并返回按键值,每一次扫描到有键按下后,最终全部要有释放闭合按键步骤,这是为了避免影响下一次键盘扫描和按键值读取。步骤图图5-2所表示
键盘扫描
返回键值
闭合键释放
计算键值
找到闭合键
延时去抖
有键闭合?
Y
N
图5-2 键盘模块步骤
按键消抖子程序所表示:
if(press_on!=0XF0)//--按键消抖---(时间自定)
{
delay(50);
press_on=KEY_IO;
}
确定键值子程序以下所表示:
switch(row)
{
case 0xe0:row=0;break;
case 0xd0:row=1;break;
case 0xb0:row=2;break;
case 0x70:row=3;break;
}
switch(col)
{
case 0x07:col=0;break;
case 0x0b:col=1;break;
case 0x0d:col=2;break;
case 0x0e:col=3;break;
}
recieve=key_value[row][col];
}
5.3显示模块步骤图
LCD显示模块软件设计关键包含开始、初始化LCD、清除LCD、写LCD四个过程。其中写包含写数据和写字符。
写数据部分程序:
//写数 (5位数据)
void printf_data(uchar row,uchar col,uchar count,uint dat)
{
uchar sh1,sh2,sh3,sh4,sh5;
sh5=dat/10000;
sh4=dat%10000/1000;
sh3=dat%1000/100;
sh2=dat%100/10;
sh1=dat%10;
write_adr(0x0c);
switch(row)
{
case 1:row=0x80;break;
case 2:row=0xc0;break;
default:break;
}
write_adr(row+col-1);
delay(500);
if(count>=5)
write_data(sh5+48);
if(count>=4)
write_data(sh4+48);
if(count>=3)
write_data(sh3+48);
if(count>=2)
write_data(sh2+48);
if(count>=1)
write_data(sh1+48);
写字符小程序为:
//写一段字符
void printf_char(uchar row,uchar col,uchar Inbuffer[31])
{
uchar i;
write_adr(0x0c);
switch(row)
{
case 1:row=0x80;break;
}
步骤图5-3以下:
初始化LCD
开始
清除LCD
写LCD
结束
图5-3 显示模块步骤图
5.4修改密码步骤图
修改密码模块关键是在输入密码正确以后,按下14键即是修改密码键就能进入修改密码界面,其步骤分为四个步骤,分别为按下14键并开启定时、输入修改密码、按下确定键11键、LCD显示。修改密码部分程序以下:
//改密码
void ch_word(void)
{
unsigned char recieve=0xff,b[10],j=0;
LCD_CLR();
printf_char(1,1,"new_password%d");
while(recieve!=11)
{
recieve=keypad();
delay(10000);
if(recieve<=9&&recieve>=0)
{
b[j]=recieve;
printf_data(2,j+1,1,recieve);
j++;
}
else if(recieve==12)
{
if(j!=0)
{
a[j]='\0';
printf_char(2,j," %d");
j--;
}
}
步骤图图5-4所表示:
按下14键
开启定时
输入密码
存入缓冲
按下确定1111键
比较密码
调用LED
调用显示
图5-4 修改密码步骤图
5.5开锁和报警模块步骤图
开锁和报警模块关键任务是把从键盘输入到单片机密码和本身保留在单片机中密码进行对比,假如正确就开锁,假如错误话就进行计数并显示在LCD液晶显示器上,当输入密码错误次数达成3次就进入报警模式,开启蜂鸣器报警。其步骤图图5-5所表示。
图5-5 报警步骤图
6 电子密码锁系统调试及仿真
6.1硬件电路调试及结果分析
硬件调试首先检验电路板焊接是否有误,检验有是否出现虚焊、漏焊、线路短接、元器件引脚是否错误焊接等等问题,然后检验电路中一些元器件是否起作用,最终利用部分小程序测试LCD1602是否完好无损。
检测单片机是否工作可经过观察示波器显示波形是否衰减,或利用万用表测一下18,19脚电压,应该有个2-3V就说明起振了,另外,ALE假如有信号或有电压也说明单片机工作了。我采取利用万用表侧18、19脚电压,其结果显示为2.3V。
检测电路有没有虚焊可用万用表二极管档来检测,当把万用表红黑两表笔接触在焊接线路两端后,万用表发出声音,则说明没有虚焊。检验电路是否短路也是利用同一原理。
6.2软件调试及功效分析
软件调试即是把已经写好C语言程序载入到软件调试工具,检验软件是否有设法错误,再依据软件提醒对本程序进行修改,直到没有错误再生成单片机能运行机器码,再用51开发板或其它单片机写入工具把机器码写入单片机进行实际程序调试,依据实际情况再对程序不足加以修改,直到满足设计要求。本设计采取Proteus和KEIL软件进行仿真、调试,首先在在Proteus软件上进行硬件电路描绘,其次在KEIL软件编写电子密码锁源程序,源程序经过汇编后产生Hex文件,最终将生成目标文件添加到单片机中仿真调试。
6.2.1调试过程
首先打开KE
展开阅读全文