电子密码锁控制系统设计(编辑修改稿)内容摘要:
设计中各按键对应键值如表 41 所示。 表 41 按键键值表 按键名称 键值 按键名称 键值 1 0x7e 9 0x7d 2 0xbe 0 0xbb 3 0xde A 0xdb 4 0xee B 0xeb 5 0x7d C 0x77 6 0xbd D 0xb7 7 0xdd E 0xd7 8 0xed F 0xe7 键盘扫描子程序的流程图如图 42 所示: 盐城工学院课程设计说明书( 2020) 17 图 42 键盘扫描程序流程图 从流程图可以看出,此键盘识别程序是通过逐行扫描来确定是否有键按下,当确定某一行有键按下时,再在该行中确定被按下的是哪 一个按键。 在本设计中, ~ 为行输出口, ~ 为列输出口。 初始时将~ 值赋为 0, ~ 赋为 1, CPU 始终扫描 P1 端口,当 P1 值不为0xf0 时,有按键被按下,否责没有按键被按下。 在实际应用中,为了防止因为按键的抖动而使得一次按键按下被当做 2 次或者 2 次以上处理,应该进行按键消抖程序设计,只要方法是当有键闭合时,延时一段时间再确定是否还有键闭合,若有,则为键有效闭合,若无则为键无效闭合,返回重新扫描。 图 43 为 CPU 扫描第一行键盘的程序流程图。 单行键盘 扫描能够准确确定被按下键所在的位置。 Y N 确定被按下的键 在第二行。 Y N 确定被按下的键 在第三行。 Y N 确定被按下的键 在第四行中确定被按下的键 返回对应的按键号 在第一行。 开始 扫描键盘 有键按下。 Y N 盐城工学院课程设计说明书( 2020) 18 图 43 单行键盘扫描流程图 在本设计中, 各按键的功能与图 35 一样 详见图 显示模块子程序 由于设计中要求能够显示密码输入界面、密码输入信息、密码正确后提示界面、密码错误后提示界面和修改密码相关界面等信息,故要用到很多个显示子程序来显示不同的内容。 虽然显示子程序很多,但是由于其显示原理都一样,所以我就不一一介绍各个子程序了,只要能够熟练使用 LCD1602 各个指令,这些大同小异的子程序也就不在话下了。 以下是 LCD1602 从第一行第一列开始显示 N( 0N≤16)个字符的程序流程图。 开始 扫描端口 Y N 有键闭合。 延时 有键闭合。 查表确定按键 Y N I/O 口初始化 返回按键值 结束 盐城工学院课程设计说明书( 2020) 19 图 44 显示字符程序流程图 显示模块子程序主要指根据 LCD1602 的命令和引脚功能来编写,程序逻辑相当简单。 掉电存储子程序 掉电存储子程序就是将初始密码写进 AT24C04,单片机每次复位后从AT24C04 中读取密码用来和输入的密码进行比较,以判断输入的密码的正确性。 当密码修改成功后,将新密码写入 AT24C04,以便单片机下次复位后使用。 掉电存 储模块子程序主要涉及 AT24C04 的写操作方式和读操作方式。 AT24C04 有 2 种不同的写操作形式和 3 种不同的读操作方式。 写操作方式 两种写操作方式为:字节写和页写。 (1)字节写。 字节写模式下,主机发送( R/W——位置为 0)起始命令和器件地址信息,主机在收到 AT24C04 的应答信号后,发送 1~8 位字节地址,写入 AT24C04的地址指针中。 对于高于 8 位的 地址,主机连续发送两个 8 位字节地址写入AT24C04 中,主机在收到 AT24C04 的另外一个应答信号后再发送数据到被寻址的存储单元, AT24C04 再次应答,并在主机发出停止信号后开始内部数据的擦写。 AT24C04 在内部擦写过程中不响应主机的任何请求,因此在两次写操作之间应该留有足够的反应时间。 字节写的时序是这样的: 开始 调用写数据函数 Y N 显示 N 个字符了吗。 LCD 初始化 结束 盐城工学院课程设计说明书( 2020) 20 地址只有 8 位:开始 → 器件地址 → 响应 →8 位字节地址 → 响应 → 数据 → 响应→ 停止 地址高于 8 位:开始 → 器件地址 → 响应 → 高 8 位字节地址 → 响应 → 低 8 位字节地址 → 响应 → 数据 → 响应 → 停止 ( 2)页写。 页写和 字节写所不同的是:字节写一次只能写入一个字节数据,页写一次可以写入 8 个或 16 个字节数据。 页写的时序是这样的: 地址只有 8 位:开始 → 器件地址 → 响应 →8 位字节地址 → 响应 → 数据 1→ 响应 →……→ 数据 N→ 响应 → 停止。 地址高于 8 位:开始 → 器件地址 → 响应 → 高 8 位字节地址 → 响应 → 低 8 位字节地址 → 响应 → 数据 1→ 响应 →……→ 数据 N→ 响应 → 停止。 三种不同的读操作方式为:读当前地址内容(立即地址读取)、读随机地址内容(随机地址读取)和读顺序地址内容(顺序地址读取)。 读操作方式 (1)读当前地址内容。 AT24C04 的地址计数器内容为最后操作字节的地址加1,所有如果上次读写操作的地址为 N,采用读当前地址内容方式读地址应该从N+1 地址处开始。 AT24C04 接收到器件地址信号并且 I2C 总线允许接收数据( R/W——=1),则首先发送一个应答信号然后输出数据。 数据输出完毕后,主机发送停止信号,读操作完毕。 (2)读随机地址内容。 这种读操作方式允许主机读出 AT24C04 的任意字节。 主机 置通过 R/W——位为 0,发送开始信号、 AT24C04 地址和欲读取的字节数据地址来执行一次伪操作,在 AT24C04 应答后,主机再一次发送开始信号和 AT24C04的地址,此时 R/W——位置 1, AT24C04 响应并应答信号,然后输出字节数据,最后主机以一 个停止信号结束数据的读取。 (3)读顺序地址内容。 读顺序地址内容操作方式通过立即读或随机地址读操作来启动,主机在 AT24C04 发送完一个 8 位数据后产生一个应答信号,告知AT24C04 主机要求更多数据。 AT24C04 收到主机的应答信号后继续发送数据,直到主机不发送应答信号响应而发送停止信号后操作结束。 下面是三种不同的读操作方式时序对比: 读当前地址内容:开始 → 读器件地址 → 响应 → 数据 → 无响应 → 停止。 读随机地址内容:开始 → 写器件地址 → 响应 → 要读的字节地址 → 响应 → 开始→ 读器件地址 → 响应 → 数据 → 无响应 → 停 止。 读顺序地址内容:开始 → 写器件地址 → 响应 → 要读的字节地址 → 响应 → 开始 → 读器件地址 → 响应 → 数据 1→ 响应 →……→ 数据 N→ 无响应 → 停止。 本次设计中采用的是读随机地址内容操作方式。 盐城工学院课程设计说明书( 2020) 21 定时器中断子程序 为了防止户主以外的 “借用 ”户主的密码,当没有任何按键被按下的状态持续一段时间后(比如 20S 内),应该马上关闭显示器屏幕,同时禁止按键的输入。 这样做可以避免因为户主忘记退出系统而使他人有机可乘。 程序中,使定时器 0 每 50 毫秒产生一次中断,因此中断每产生 20 次为 1 秒,当秒数为 20 时(每次有键输 入时都执行 50 毫秒数和秒数清 0 操作),关闭屏幕,并禁止键盘输入。 当定时 /计数器工作在定时方式时,定时时间的计算公式为: 定时时间 =( 216 —计数初值) 定时周期 晶振频率为 12MHz 时,定时 /计数器的定时周期为 1181。 s,所以定时 50ms 的定时 /计数器初值为: 计数初值 =216 —50000 密码输入子程序 当从键盘输入密码时,应当将输入的密码存放, 以便 用做密码的相关操作(判断,修改和保存等),同时每输入一位密码应相应地在显示器上显示一个 “*”号。 图 48 是密码输入子程序的流程图。 盐城工学院课程设计说明书( 2020) 22 图 45 密码输入程序流程图 输入密码时,当输入的密码位数小于 6 位的时候,每按下一次数字键,就将此数字存入数组。 当输入的密码位数不小于 6 位时,再次按下数字键,程序就不进行任何处理,继续扫描键盘,此时只有按下确定键或者取消键程序才做出相应反应。 取消键的功能是退格。 当不小心输错密码时,可以退格将输错的位清除,退格一次密码的位数减一位,同时显示器上的 “*”个数也减 1。 当输入的密码位数变为 0 时,取消键不再起作用。 开始 N 有键输入。 扫描键盘 Y 是数字键。 输入的密码长度小于 6。 将输入的数放入数组 在显示器上显示 “ *” 是取消键。 输入的密长度大于 0。 清除数组中的最后一位数 清除显示器上的最后一个“ *” 是确认键。 结束 Y N N N N Y Y Y N Y 盐城工学院课程设计说明书( 2020) 23 报警子程序 报警子程 序的原理很简单,即当输入密码错误次数超过规定的最高允许次数时,不断给蜂鸣器脉冲,使其不断发音。 同时,由于 CPU 一直在给蜂鸣器提供脉冲,故无暇处理诸如密码扫描等事件,也就是说,在蜂鸣器报警的同时也屏蔽了键盘的输入。 开 始错 误 3 次。 显 示给 蜂 鸣 器 一 个 脉 冲结 束YN 图 46 学校 报警子程序流程图 本次设计中,密码输入错误次数不得高于 3 次。 5 课程设计总结 本系统由单片机系统、矩阵键盘、 LCD 显示和报警系统组成。 系统能完成开锁、错误报警,超次锁定、修改用户密码,恢复初始密码基本的密码锁的功能。 除上述基本的密码锁功能外,还有 声音提示等功能,依据实际的情况还可以添加遥控功能。 本系统利用单片机控制, LCD 显示,配合蜂鸣器提示,系统成本低廉,功能强大实用。 但是在系统调试过程中,还是发现一些问题,系统不稳定情况时有发生,经过反复调试发现下列问题: 按键效果不好,产生较大状况的抖动,使软件消抖不完全;另外一个就是单片机本身不问题,引起系统跑飞或者卡死;还有就是由于电路板制作盐城工学院课程设计说明书( 2020) 24 的原因,线路之间产生干扰,系统发生错误,比如液晶显示错误等等。 经过反复调试和修改,最好终于达到一个比较满意的水平。 本系统设计还做的不是太人性化,比如说能够加上语音 提示和遥控开锁功能,将可能会更加有生命力。 盐城工学院课程设计说明书( 2020) 25 6 参考文献 [1] 张天凡 . 完全手册 51单片机 C语言开发详解 [M].电子工业出版社, 2020 [2] 李群芳 . 单片微型计算机与接口技术 [M].北京:电子工业出版社, 2020 [3] 彭伟 单片机 C语言程序设计实训 100 例 — 基于 8051+Proteus 仿真 [M] 北京:电子工业出版社 [4] 张大明 . 单片机控制实训指导及综合应用实例 [M].北京:清华大学出版社, 2020 [5] 张齐,朱宁西 . 单片机应用系统设计技术 — 基于 C51 的 Proteus 仿真 [M].北京:化学工业出版社, 2020. [6] 沈光斌,刘冬,姚志成 .单片机系统实用抗干扰设计 .[M].北京:人民邮电出版社,2020 [7] 冯育长 .单片机系统设计与实例分析 .[M].西安:西安电子科技大学出版社, 2020 [8] 晁阳 . 单片机 MCS51 原理及应用开发教程 [M].北京:清华大学出版社, 2020. [9] 黄惟公 , 邓成中 , 王燕 . 单片机原理与应用技术 [M]. 西安:西安电子科技大学出版社, 2020 [10] 张萌 , 和湘 , 姜斌 . 单片机应用系统开发综合实例 [M]. 北京 :清华大学出版社, 2020 盐城工学院课程设计说明书( 2020) 26 7 附 录 附录一 总电路原理图。电子密码锁控制系统设计(编辑修改稿)
相关推荐
123456共 6 位密码。 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。 在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所 有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。 进入密码的判断比较处理状态并给出相应的处理过程。 各子程序设计 1. 键盘扫描子程序 键盘扫描流程图如图 7 图 键盘扫描流程图
在设计的时候,需要注意电路不能出现短路,以免损坏电脑的 USB 接口。 图 USB 接口 太原工业学院毕业设计 (论文 ) 9 单片机振荡电路设计 单片机的运行需要一个时钟频率,类似我们的计算机的 CPU 主频的高低,现在计算机的 CPU 一般用 GHz 来左单位。 而我们的 51 单片机常用到 的时钟频率有 12MHz,这些时钟频率都是依靠外部晶振产生的。 晶振连接到单片机的 XTAL
礼县、 天水 秦城区 接壤。 行政区域 面积为 1861平方公里。 境内地形由西北向南倾斜,南部为土石质山原峡谷区,北部为沟壑梁峁区,平均海拔 1692 米。 二、地形、地貌条件 拟建场地位于 XXX 县。 地貌单元属沟谷地段地貌。 地势南高北低向黄河盆地倾斜,西高东低,地形较平坦,绝对高程介于 1535. 84~1536. 99m之间,最大高差约 1. 15m。
数据保留时间: 10 年 全静态工作: 0Hz24Hz 三级程序存储器锁定 闽西职业技术学院毕业论 文 12 1288 位内部 RAM 32 可编程 I/O 线 两个 16 位定时器 /计数器 5 个中断源 1 可编程串行通道 1 低功耗的闲置和掉电模式 1 片内振荡器和时钟电路 STC89C52RC 单机的电源线有以下两种: ( 1) VCC: +5V 电源线。 电源线 ( 2) GND
帮助检查出许多开发早期出现的错误。 Java 自己操纵内存减少了内存出错的可能性。 Java 还实现了真数组,避免了覆盖数据的可能。 这些功能特征大大提高了开发 Java 应用程序的周期。 Java 提供: Null 指针检测、 数组边界检测、 异常出口、 Byte code 校验。 Javabean 是一种 JAVA 语言写成的可重用组件。 为写成 Javabean,类必须是具体的和公共的
道, 扩大再投资,同时能够不断完善自身,为消费者带来更多价值体验。 ( 二 ) 电商行业并购的财务效应分析 早在前几年,电商行业 并购 就狂潮 迭起, 20xx 年 的时候 苏宁 以 亿 美元 将昔日 B2C 行业 老大红孩子 收购之后 ,电商行业并购竞争更是群雄争霸。 可以预测,未来几年的业务领域将出现更多的并购案例,马云和马化腾 —— 双马与业务为核心产业,大企业之间将更加直接和频繁的碰撞。