应用电子技术专业精品毕业论文--基于单片机的电子密码锁设计内容摘要:

图 单片机控制模块 声光报警模块电路的设计 图 声光 报警模块 如图 所示,本模块的作用是当开锁按钮被按下时,如果数码管当前显示值相同,则绿灯点亮,当输入的数与密码不同时,则红灯点亮并且蜂鸣器立刻发出声音报警。 数码显示模块电路的设计 如图 所示,该模块主要由 74LS47 译码器, 74LS138 译码器和 6 个 8 段数码显示管组成,如图所示,从编码器输送过来的数据经过两片 74LS47 芯片和 74LS138 蕊片译码后,传送到 8 段数码显示管,显示管根据接收到数据电平的高低来显示不同的数据。 图 数码显示模块 从图中可以看到单片机 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”。 第 4 章 系统的软件设计 系统软件的概述 本系统的工作流程为:通过键盘扫描来实现三种不同的功能,刚开始是设置的初 始密码 123456 通过数码管来显示,用 10 个按键来输入 0 到 9 这从右到左依次输入,还用三个按键来显示密码,修改密码,开锁等。 当开锁按钮被按下时,如果数码管与当前显示值相同,则点亮 LED1;当数码管值不同时,则点亮 LED2,并且立刻发出报警声音。 主程序流程图 图 主程序流程图 开始 初始化 自检子程序 键盘扫描子程序 有按键按下 显示子程序 循环 相应子程序 主程序说明: 单 片机 复位后进入初始化把初始密码“ 123456”依次存放到 40H 到45H 六个单元中,把 30H 到 35H 六个单设置为六位数码管显示数据的存放地址,设置完毕调用 自检子程序进入自检状态,自检完毕调用扫描子程序对键盘进行扫描,如果有按键被按下则跳转到相应的子程序,再调用显示子程序把 30H 到 35H 六个单元的数据给六个数码管显示出来。 显示完毕就跳加扫描子程序继续对键盘进行扫描,如此循环。 子程序的设计 自检子程序 图 自检子程序流程图 开始 30H→ 38H 移位次数 6→ R0 08H→ P1 显示 移位 R0=0? ( 38H) =0? 关闭自检 返回 NO NO YES YES 自检子程序说明:进入自检子程序后先把循环次数 30 赋给 38H 单元,把移位次数 6 赋给 R0,再把 08H 赋给 P2 口显示,把 08H 移位后再赋给 P2 口,循环 6 次完成一次显示,循环显示完 30 次完成自检。 键盘扫描子程序 图 键盘扫描子程序流程图 键盘扫描程序说明:给键盘所连接的 P2 口赋扫描码,例如: MOV P2, 0FEH, 则扫描最后一行按键。 写入这个扫描码后 P2 口的高 4 位写入“ 1”,被设为输入状态,低 4 位中只有 为“ 0”。 而 P2 口的高 4 位通过按键与低 4 位相连,所以此时 从P2 口的高 4 位就可以读入低 4 位的数据。 与被按下的键相连接的高位口,读入的数据开始 初始化 输入扫描码 第一列按键 第二列按键 第三列按键 第四列按键 下一行 超过四行 防抖 取出键值 跳转相应子程序 YES YES YES YES YES NO NO NO NO NO 为“ 0”,其它高位口读入的为“ 1”从而识别出是哪一个按键被按下。 随后再依次对 P2 口写入 FDH、 FBH、 07H,分别扫描第三、第二、第一行,这样交替循环便可完成对 4 4 键盘的扫描。 移位子程序 图 移位子程序流程图 移位程序说明:进入移位子后就把 30H 到 35H 六个单元里的数据向右移一位,移位完毕后 把 35H 单元里的数据推出去,把 30H 单元空出。 开锁子程序 开锁程序说明 :判断 30H 到 35H 单元里的数据与 40H 到 45H 单元里的数据是否相同 ,如果相同 ,开锁成功绿灯亮;如果不相同,开锁不成功报警红灯亮且蜂鸣器响。 如图 所示 开始 ( 34H)→ (35H) ( 33H)→ (34H) ( 32H)→ (33H) ( 31H)→ (32H) ( 30H)→ (31H) 相应数据→( 30H) 返回 图 开锁子程程序流程图 修改密码子程序 图 修改密码子程序流程图 修改密码程序说明:判断绿灯是否已点亮,点亮则说明已 开锁成功可修改密码,否则不修改。 开始 ( 30H)~ (35H) = (40H ) ~ (45H) ? 开锁 返回 报警 YES NO 开始 成功开锁 修改密码 不修改 返回 YES NO 第 5 章系统仿真与调试 系统仿真过程 开始时的数码管显示“ ”,等待输入密码。 如图 所示: 图 数码管显示 密码输入时显示 F 并依次左移,如密码输入错误可以使用“ clr”键进行清除,然后可以从新输入。 如图 所示: 图 数码管显示 F 密码输入正确时,数码管显示简单的便是“ pass”,同时绿色指示灯亮起,开锁电路运行,锁被打开。 如图 所示: 图 数码管显 pass 密码是输入错误时, 数码管提示“ error 1”,如果继续输入第二次、第三次错误的时,数码管将提示“ error 2”和“ error 3”,同时报警器报警提示,红色指示灯闪烁,键盘锁死,防止继续操作。 如图 所示: 图 当需要关闭密码锁的时候,直接按下键盘上的“ lock”键即可锁定。 数码管恢复初始“ ”,黄色指示灯亮起。 如图 所示: 图 仿真调试中遇到的困难及解决方法 (1)问题描述:密码在未输入 6 位的情况下,摁下“ enter”键, 数码管显示“ false”,无法返回初始输入界面“ ”。 解决办法:“ enter”键跳转时,跳转到开始即可。 (2)问题描述:密码正确输入,“ enter”键确认后,数码管显示“ pass”,这时直接按“ clr”键,屏幕上显示“ error 1”,并且报警,数码管无法恢复正常状态。 原因及解决办法:“ clr”的后面跳转不对,需要加一个标志位使数码管的显示恢复“ pass”。 (3)问题描述:在系统正常运行后,如果密码锁被用户打开,此时用户可以按下“ lock”键对其重新上锁,但在运行过程中,虽然系统可以重新上锁,但会在重新上锁前,出现报警,并且数码管显示“ error 1”。 原因及解决办法:因为系统运行的速度较快,按键还没有复原,键盘的检测便又一次检测到了 该按键,重复的操作了“ lock”键,系统提示错误。 所以应在检测按键时,等待按键的复原,再进。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。