数字密码锁课程设计报告
- 格式:doc
- 大小:204.00 KB
- 文档页数:30
1 嵌入式系统课程设计报告
数字密码锁
摘 要
电子数字密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,我们采取的是单片机,它具有超大规模集成电路技术,有极强的数据处理功能,I/O口多。以它为核心设计的密码锁,结构小,功能强,现在很多单位甚至家里的各个家用电器,还有保险箱都需要它。
目 录
1设计内容及要求„„„„„„„„„„„„„„„„„ 3
2系统的设计„„„„„„„„„„„„„„„„„„„„3
2.1系统设计结构图„„„„„„„„„„„„„„„„„3
2.2系统的工作原理说明„„„„„„„„„„„„„„„4
3系统硬件设计„„„„„„„„„„„„„„„„„„„4
3.1使用到的元器件列表„„„„„„„„„„„„„„„5
3.2系统各模块简介„„„„„„„„„„„„„„„„„5
4电路程序设计„„„„„„„„„„„„„„„„„„„6
4.1软件总设计流程图„„„„„„„„„„„„„„„6
4.2各模块具体实现„„„„„„„„„„„„„„„„7
附录1设计总体电路图„„„„„„„„„„„„„„„12
附录2数字密码锁源程序„„„„„„„„„„„„„„13
2
1设计内容及要求
1、任务
设计一多位电子密码锁
2、要求
1)设计一多位电子密码锁,输入密码用“F”表示,输入密码正确,绿灯亮(或显示其他标志、蜂鸣器替代),输入密码错误,红灯亮(或显示其他标志、蜂鸣器替代)
2)具有确定键和取消键,在未确定之前可以取消,重新输入
3)连续输入三次错误密码,红灯闪烁,报警电路动作,键盘锁定
4)具有密码重置功能
5)具有等待操作时间限制功能,超过限定时间报警
6)显示北京时间
2系统的设计
2.1系统设计结构图
如下图所示,本设计的真题原理框图如下所示:
ADuc848 驱动电路
报警电路
振荡电路 LCD1602显示
4×4键盘输入
复位电路 时钟模块 3 图1 硬件系统的总体结构图
2.2系统的工作原理说明
本系统采用ADuc848单片机为核心的系统,加以4×4矩阵键盘、LED、蜂鸣器等。矩阵键盘分别为0、1、2、3、4、5、6、7、8、9、Enter、Change、Conform、delete。系统开始显示北京时间,按Enter后提示输入密码lcd显示“Enterplease”;输入密码过程中每输入一个密码屏幕上显示一个“*”,当密码输入完毕按下“confirm”键时,若输入密码与设定的密码相同,即密码正确,液晶屏显示为“OK!”提示锁打开,同时蜂鸣器响;若密码不正确,LED显示电路显示提示“wrong”,蜂鸣器响,若连续3次输入不正确,则发出警报声同时锁定键盘。
若在输入过程中发现输入错误的数字,可以通过“delete”键删除输入的数字后重新输入。
若需要修改预先设定的密码,可以先输入一次正确的密码,然后按下“change”键
Lcd显示“change number”,输入完新密码后,按确认键,密码修改完成。
为了防止恶意尝试,若连续输入3次密码输入错误则键盘被锁定不能再进行输入操作并发出报警声。
3系统硬件设计
如图1所示,本系统的硬件部分主要由单片机ADuc848、4×4矩阵键盘、LCD1602、报警电路和驱动电路组成;其中报警电路使用蜂鸣器。总的来说,数字密码锁主要由微处理器模块、键盘模块、声光提示模块和显示模块构成。
3.1 使用到的元器件列表
4
元器件 规格/型号 数量
单片机 ADuc848 1
三极管 8550 1
稳压管 7805 1
液晶显示器 LCD1602 1
晶振 12M 1
电阻 10K/1K/100 4/6/1
排阻 10K 1
电容 104/30Pf4.7uF 3/2/1
蜂鸣器 1
时钟芯片 1
表1 元器件列表
3.2 系统各模块简介
1.微处理器模块,也就是ADuc848单片机,因为本系统要实现密码检测、密码设定、声光提示等功能,要求微处理器必须能提供很多I/O口,而且由于系统体积限制,很难扩展I/O口和使用外部程序存储器,所以选用ADuc848单片机。
2.声光提示模块,由发光二极管LED和蜂鸣器组成,由单片机控制。发光二极管LED有绿色和红色两种,绿色LED亮表示密码输入正确,驱动开锁电路;相反,红色LED亮就表示输入密码错误。蜂鸣器采用5V驱动蜂鸣器,作为报警电路。当输入密码错误次数超 过3次后就发出声音警报。
3.显示模块,考虑到友好的人机界面,采用LCD1602液晶显示。显示模块的作用主要是显示提示信息和输入的密码,以方便用户使用。
4.键盘模块,键盘模块的作用是让用户输入密码和修改密码。考虑到本系统 5 需要用到大量的按键,键盘模块采用4×4的16矩阵键盘模式。
4软件程序设计
4.1软件总设计流程图
软件总设计流程图如图12所示。 6
图12 软件设计流程图
4.2 具体功能软件实现
4.2.1 4×4矩阵键盘扫描程序 开始
LCD初始化
时钟显示
检测命令键 S2
S3 设置时间
S4
密码锁界面
检测命令键 Return键
输入密码 N
密码正确
Y
开锁 N
红色LED亮
N+1
N>3
报警 Y N 修改密码 修改密码键 7 当键盘中按键数量较多时,为了减少对I/O口的占用,通常将按键排列成矩阵形式,也称为行列键盘,这是一种常见的连接方式。矩阵式键盘接口见图13所示,它由行线和列线组成,按键位于行、列的交叉点上。当键被按下时,其交点的行线和列线接通,相应的行线或列线上的电平发生变化,MCU通过检测行或列线上的电平变化可以确定哪个按键被按下。
图13 4×4矩阵键盘
图13为一个4×4行列结构,可以构成16个键的键盘。很明显,在按键数量多的场合,矩阵键盘与独立式按键键盘相比可以节省很多的I/O口线。
矩阵键盘不仅在连接上比单独式按键复杂,它的按键识别方法也比单独式按键复杂。在矩阵键盘的软件接口程序中,常使用的按键识别方法有行扫描法和线反转法。这两种方法的基本思路是采用循环查循的方法,反复查询按键的状态,因此会大量占用MCU的时间,所以较好的方式是采用状态机的方法来设计,尽量减少键盘查询过程对MCU的占用时间。
图13中,lie0、lie1、lie2、lie3、为4根列线工作于输入方式hang0、hang1、hang2、hang3为4根行线,工作于输出方式,由MCU(扫描)控制其输出的电平值。
行扫描法也称为逐行扫描查询法,其按键识别的过程如下: 8 (1)将全部行线lie0-lie3置低电平输出,然后读hang0-hang3四根输入列线中有无低电平出现。只要有低电平出现,则说明有键按下(实际编程时,还要考虑按键的消抖)。如读到的都是高电平,则表示无键按下。
(2)在确认有键按下后,需要进入确定具体哪一个键闭合的过程。其思路是:依次将行线置为低电平,并检测列线的输入(扫描),进而确认具体的按键位置。如当hang0输出低电平时,测到lie2的输入为低电平,则可确认按键S3处于闭合状态。通过以上分析可以看出,MCU对矩阵键盘的按键识别,是采用扫描方式控制行线的输出和检测列线输入的信号相配合实现的。
(3)矩阵按键的识别仅仅是确认和定位了行和列的交叉点上的按键,接下来还要考虑键盘的编码,即对各个按键进行编号。在软件中常通过计算的方法或查表的方法对按键进行具体的定义和编号
4x4矩阵键盘扫描函数见附件源程序
4.2.2 显示程序
本系统使用LCD1602实现显示,只要参照LCD1602的使用手册进行初始化和程序编写就可以显示,即在程序编写中添加LCD1602的驱动程序。这里的驱动程序主要包括:初始化函数、设置显示坐标、写字符函数及写字符串函数。在时钟界面时显示时间的运行,在密码锁界面时主要显示提示信息和输入的密码,当然,当输入密码数字时,输出不是显示数字,而是用“*”显示代替。LCD1602的部分读写控制时序程序如下所示:
9 4.2.3 时钟运行子程序
当系统开始后,LCD1602初始化,然后显示时钟界面,程序在T0中断,进入时钟运行子程序,其流程图如图14所示。
图14 时钟运行流程图
T0中断入口
显示时钟数据
秒计数加1
秒计数=0
SECOND加1
SECOND=0,并MINITE加1
MINITE=0,并HOUR加1
HOUR=0
显示数据处理
中断返回 N Y Y
N N
Y =500?
=60?
=60?
=24? 10 4.2.4密码比较子程序
当输入密码后,调用AT24C02中的密码进行比较,若密码一致,就驱动开锁电路,即绿色发光二极管LED亮,若不一致,红色发光二极管LED亮,如果超过3次输入的密码不正确,此时报警电路就会响应,蜂鸣器响,以及锁住系统。其程序流程图如图18所示。
图18 密码比较流程图
4.2.5 密码修改子程序
修改密码时,先输入旧密码,如果输入的密码正确,再输入新密码,否则返回;输入新密码后要求再次输入新密码,当两次输入的新密码一致时,然后存储到AT24C02中,否则重新输入新密码。修改密码时,如果连续三次输入的旧密码都不正确,报警电路响应。其程序流程图如图19所示。 输入密码
密码正确
N+1
N>3
报警 开锁
Y Y N
N