电子密码锁的设计与实现
- 格式:doc
- 大小:224.00 KB
- 文档页数:7
电子密码锁的设计与实现
一、实验目的
1.进一步掌握键盘扫描和LED显示的程序设计。
2.了解按键消抖的方法。
3.综合运用微机原理的软硬件知识。
二、实验容与要求
1.基本要求
(1)具有密码输入功能,密码最多为6位;
(2)设置退格键,以便删除输入错误的密码;
(3)在输入的密码时数码管上只显示8,并根据输入位数依次横移;
(4)设置确认键,当确认键按下后,判断输入密码是否正确;
(5)当输入密码正确时,点亮发光二极管;当输入密码不正确时,发光二极管不亮并
且蜂鸣器报警,重新输入,当三次密码输入不正确时,系统应锁定键盘10s。
2.提高要求
将用户分为管理者和使用者,管理者拥有超级密码,可以修改其他人的密码。使
用者不能修改密码。
三、实验报告要求
1.设计目的和容
2.总体设计
3.硬件设计:原理图(接线图)及简要说明
4.软件设计框图及程序清单
5.设计结果和体会(包括遇到的问题及解决的方法)
四、总体设计
电子密码锁的原理是:从键盘输入一组密码,CPU把该密码和设置密码比较,对则将
锁打开(不同锁的控制方式不一样,比如加电控制电磁铁抽回,从而打开),错则要求重新
输入,并记录错误次数,如果三次错误,则被强制锁定并报警,除非超级密码或者其他的
手段打开,比如延时一段时间。
初步设计思路如下:
1.输入密码用矩形键盘,包括数字键和功能键,功能键包括退格键和确认键。
2.LED数码管显示输入密码,但是只是输出显示符号8。采用动态扫描输出。
3.用发光二极管模拟锁的情况,锁关时发光二极管灭,打开时发光二极管亮。
4.输入密码错误时报警,3次输入错误时键盘锁定10s,键盘无法接收数据。
软件的设计主要包括矩形键盘键值的读取、LED动态扫描输出程序、密码判断程序和报
警程序。
五、硬件设计
根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台
上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电
路的设计及实现相对简单。完整系统的硬件连接如图1所示。硬件电路由LED数码管显示 模
块、按键模块、发光二极管电路和蜂鸣器模块组成。
各个模块的详细说明:
1.LED数码管模块
实验平台上提供一组六个LED数码管。插孔CS1用于数码管段选的输出选通,插孔CS2用
于数码管位选信号的输出选通。本设计用6个数码管来动态显示时分秒,动态显示的定时时
间由8253定时/计数器来实现。8253主要是实现每位显示时间1ms,由8253的计数器0来实
现。Clk0接实验平台分频电路输出Q6,f=46875hz。GATE0接8255的PA0,由8255的PA0输出
来控制计数器的起停。OUT0 接8259的IRQ2,定时完成请求中 断,进入中断服务程序。软件
在中断服务程序中LED数码管显示。
Q6
IRQ2
路
8259
图1系统硬件电路图
2.按键模块
按键模块包括有数字键和功能键。数字键包括0-9键,用于密码的输入。功能键有退格
键和确认键。具体的功能定义如下表。键盘电路和8255的连接见图2 所示。具体的功能定义
如下表。
按键 键名 功能说明
1-9 键
数字键 输入密码
A 键
退格键 取消刚才输入的密码
B 键
确认键 密码输入完成
8255 PA0 PB0
PB1
PC
数码管显示模块
键盘电路
8253 OUT0 GATE0
Clk0
地址 CS1
译码 CS2
电路 CS3
CS4
PC BUS
蜂鸣器
发光二极管
图2键盘电路和8255的连接图
3.报警模块和发光二极管模块
报警模块由蜂鸣器驱动电路和8255组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时
约需要100mA驱动电流。蜂鸣器电路如图4所示。当8255的PB0口输出为高电平时, 蜂鸣器
产生蜂鸣音,8255输出为低电平时,蜂鸣器不发声。
发光二极管也是用8255输出来驱动亮灭。
图3蜂鸣器电路
六、软件设计
1.软件设计思路
电子密码锁工作的主要过程是LED数码管提示开始输入密码,通过键盘输入密码,同
时LED显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或报警处理。当输入
密码连续输入错误3次时,锁定键盘10s。
程序将分为主程序和中断服务子程序。主程序负责键盘键值读取,密码判断和开锁或
报警处理。中断服务子程序主要是负责LED数码管显示。
根据程序功能,程序主要分为以下几部分:
a)
键盘键值读取程序
键盘键值读取程序包括键盘扫描、消除抖动、键译码等容。按键的识别主要有两种
方法:行反转法和行扫描法。因为键盘为机械开关,容易引入抖动。为了消除抖动干扰,
在程序中要加入消除抖动的部分。
b)LED 数码显示程序
LED数码显示器是一种应用很普遍的显示器。程序主要负责把要显示的数字或字母对
应的显示码送到相应的LED显示管。有多位需要同时显示时,可以采用动态刷新的方法,
就可以得到稳定的输出。在程序中用8253来定时1ms,定时时间到时请求中断服务,进入
中断服务程序输出1位显示数据。循环显示6个数码管,可以实现稳定的数字显示。中断 服
务程序只负责数据的输出显示,主程序根据所处的状态修正显示数据。
c)
密码判断程序
密码判断程序放在主程序中,有按键时读取,当确定键按下时作出判断。在程序中设
置6 字节的空间存放设定的密码和6字节存放键盘输入的数据。根据读取的键盘数据和预
先设定的密码逐位比较就可以判断输入密码的正确性。
d)
开锁和报警程序
通过8255相应位的输出数据然后延时一段时间就可以控制发光二极管的亮灭和蜂鸣器
的鸣叫。
2.程序流程图
1)
主程序
流程图
见图4
所示。
开始
提示输入密
有键按下
数字键
退格键
确认键
Y
正确
Y
退出
NN
Y
图4主程序流程图
2)
中断服
务程序
流程图
见图5
所示。
错误3次
系统初始化
码
键盘扫描
密码判断
开锁
延时10s
存储键值
字键输入
N
N
N
Y
Y
Y
刷新LED输出数据
清除上次数
报警
中断程序
获得第i位的
i==6?
N
中断返回
图5中断程序流程图
保护现场
位码和段码
输出位码
输出段码
i=0
中断恢复
i++