基于单片机电子密码锁设计毕业论文设计(编辑修改稿)内容摘要:

六位数码管显示 直流稳压电源 声光报警 12 第三章 系统的硬件设计与实现 系统硬件概述 本系统是通过键盘扫描模块,既能够显示数据并且还能修改密码,开锁密码 , 具有强大的功能,通过键 盘扫描模块输入到单片机控制系统 AT89S52 中。 然后通过数码显示模块来显示我们所要有数据,还有一个就是报警模块,当输入的密码相同时,则显示模块的灯点亮,当输入的密码是错误时,绿灯点亮,报警模块立刻发出声音报警。 为了达到设定的功能,本装置键盘扫描模块、单片机控制模块、数码管显示模块,声光报警模块等 4 模块组成。 如图 所示,本模块的作用是进行键盘的扫描,首先判定有没有键被按下,然后再判定被按键的位置,因为键盘矩阵有键被按下时,被按键处的行线和列线被接通,使得开关之间接通。 当扫描表明有按键被按下之后,紧接着应是进行去抖动处理,一般我们采用的是软件来去抖动,软件方法则是采用时间延迟以躲过抖动,待行线上状态稳定之后,再进行行状态输入。 图 键盘扫描模块 13 单片机作为本装置的核心器件,在系统中起到控制声光报警、以及数码动态显示的作用,其中采用的是 AT89S51, AT89S51 是标准的 40 引脚双列直插式集成电路芯片,有 4 个八位的并行双向 I/O 端口,分别记作 P0、 P P P3。 第20 引脚为接地端 ;第 40 引脚为电源端;第 31 引脚需要接高电位使单片机选用内部程序存储器;第 1 19 脚之间接上一个 12MHz 的晶振为单片机提供时钟信号;第 9 脚为复位脚,当其接高电位时,单片机停止工作。 P0 口接两个发光二极管和一个蜂鸣器以实现声光报警功能, P2 口连接一片七段译码器和一片 38 译码器以动态扫描方式同时驱动六个数码管, P1 口与 16 个阵列式按键相连实现对键盘的扫描。 通过编程既能识别从译码器来驱动数码管来显示数据,同时也通过运行指令来达到完成声光报警及动态显示数码管等功能。 如图 所示 图 单片机控制模块 14 图 声光报警模块 如图 所示,本模块的作用是当开锁按钮被按下时,如果数码管当前显示值相同,则绿灯点亮,当输入的数与密码不同时,则红灯点亮并且蜂鸣器立刻发出声音报警。 如图 所示,该模块主要由 74LS47 译码器, 74LS138 译码器和 6 个 8 段数码显示管组成,如图所示,从编码器输送过来的数据经过两片 74LS47 芯片和74LS138 蕊片译码 后,传送到 8 段数码显示管,显示管根据接收到数据电平的高低来显示不同的数据。 图 数码显示模块 15 从图中可以看到单片机 P2 口低 4 位连接一片 74LS47 七段译码器,由于74LS47 是共阳极数码管的七段译码器,因此要选用共阳极的数码管。 单片机 的输出信号经过 74LS47 译码后就可以驱动数码管的段码显示相应的数字,另外在 74LS47 的输出与数码管之间还要接上 7 个 470 欧姆的限流电阻,以防止有过大的电流流过时烧坏数码管。 口接于 38 译码 器74LS138 的三个输入端,而 74LS138 的输出端通过三极管分别接于八个数码管的公共极。 通过由 口的输出量来控制 74LS138 选择点亮某一个数码管。 由于 74LS138 是低电位有效,所以应该采用 PNP 型的三极管来驱动数码管,在此三极管相当于一个开关的作用依靠这两块芯片就可以控制数码管实现动态扫描显示。 例如:使六个数码管显示 123456。 在第一时刻输出“ 0001”给 74LS47,让数码管显示“ 1”,同时输出“ 000” 给 74LS138,选择第一个数码管工作,其余数码管不 工作,这样第一时刻就只有第一个数码管显示“ 1”,其余数码管均不显示。 同理第二时刻也只有第二个数码管显示“ 2”,依次类推第 N 时刻就只有第 N 个数码管显示“ N”。 人的肉眼只能分辨 秒内的变化,所以如果以每一时刻 秒的频率循环变化,看起来就感觉每一个数码管都被点亮了,显示“ 123456”。 16 第 4章 系统的软件设计 系统软件的概述 本系统的工作流程为:通过键盘扫描来实现三种不同的功能,刚开始是设置的初始密码 123456 通过数码管来显示,用 10 个按键来输入 0 到 9 这从右到左依次输入,还用三个按键来显示密码,修改密码,开锁等。 当开锁按钮被按下时,如果数码管与当前显示值相同,则点亮 LED1;当数码管值不同时,则点亮 LED2,并且立刻发出报警声音。 主程序流程图 图 主程序流程图 开始 初始化 自检子程序 键盘扫描子程序 有按键按下 显示子程序 循环 相应子程序 17 主程序说明: 单 片机 复位后进入初始化把初始密码“ 123456”依次存放到40H 到 45H 六个单元中,把 30H 到 35H 六个单设置为六位数码管显示数据的存放地址,设置完毕调用自检子程序进入自检状态,自检完毕调用扫描子程序对键盘进行扫描,如果有按键被 按下则跳转到相应的子程序,再调用显示子程序把30H 到 35H 六个单元的数据给六个数码管显示出来。 显示完毕就跳加扫描子程序继续对键盘进行扫描,如此循环。 子程序的设计 18 图 自检子程序流程图 自检子程序说明:进入自检子程序后先把循环次数 30 赋给 38H 单元,把移位次数 6 赋给 R0,再把 08H 赋给 P2 口显示,把 08H 移位后再赋给 P2 口,循环 6 次完成一次显示,循环显示完 30 次完成自检。 开始 30H→ 38H 移位次数 6→ R0 08H→ P1 显示 移位 R0=0? ( 38H) =0? 关闭自检 返回 NO NO YES YES 19 图 键盘扫描子程序流程图 开始 初始化 输入扫描码 第一列按键 第二列按键 第三列按键 第四列按键 下一行 超过四行 防抖 取出键值 跳转相应子程序 YES YES YES YES YES NO NO NO NO NO 20 图 移位子程序流程图 移位程序说明:进入移位子后就把 30H 到 35H 六个单元里的数据向右移一位,移位完毕后把 35H 单元里的数据推出去,把 30H 单元空出。 开锁程序说明 :判断 30H 到 35H 单元里的数据与 40H 到 45H 单元里的数据是否相同 ,如果相同 ,开锁 成功绿灯亮;如果不相同,开锁不成功报警红灯亮且蜂鸣器响。 如图 所示 开始 ( 34H)→ (35H) ( 33H)→ (34H) ( 32H)→ (33H) ( 31H)→ (32H) ( 30H)→ (31H) 相应数据→( 30H) 返回 21 图 开锁子程程序流程图 图 修改密码子程序流程图 开始 ( 30H)~ (35H) = (40H ) ~ (45H) ? 开锁 返回 报警 YES NO 开始 成功开锁 修改密码 不修改 返回 YES NO 22 修改密码程序说明:判断绿灯是否已点亮,点亮则说明已开锁成功可修改密码,否则不修改。 23 第 5章 系统仿真与调试 系统仿真过程 开始时的数码管显示“ ”,等待输入密码。 如图 所示: 图 数码 管显示 密码输入时显示 F 并依次左移,如密码输入错误可以使用“ clr”键进行清除,然后可以从新输入。 如图 所示: 图 数码管显示 F 密码输入正确时,数码管显示简单的便是“ pass”,同时绿色指示灯亮起,开锁电路运行,锁被打开。 如图 所示: 图 数码管显 pass 密码是输入错误时,数码管提示“ error 1”,如果继续输入第二次、第三次错误的时,数码管将提示“ error 2”和“ error 3”,同时报警器报警提示,红色指示灯闪烁,键盘锁死,防止继续操作。 如图 所 示: 图 数码管显示 当需要关闭密码锁的时候,直接按下键盘上的“ lock”键即可锁定。 数码管恢复初始“ ”,黄色指示灯亮起。 如图 所示: 24 图 仿真调试中遇到的困难及解决方法 (1)问题描述:密码在未输入 6 位的情况下,摁下“ enter”键, 数码管显示“ false”,无法返回初始输入界面“ ”。 解决办法:“ ente。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。