




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
杭州职业技术学院 毕业设计 论文 毕业设计 论文 2009 届 题 目 基于 AT89S51 的六位电子密码锁 系 别 友嘉机电学院 专 业 数控技术 班 级 数控 0611 姓 名 张晓斌 指导教师 吴晓苏 2009 年 5 月 20 日 摘摘 要 要 3 3 前前 言言 4 4 第一章第一章 方案论证方案论证 5 5 1 11 1 开发意义开发意义 5 5 1 21 2 功能说明功能说明 5 5 第二章第二章 硬件电路硬件电路 6 6 2 12 1 单片机概述单片机概述 6 6 2 22 2 AT89S51AT89S51 的芯片概述的芯片概述 6 6 2 32 3 LEDLED 数码管显示器概述数码管显示器概述 8 8 2 42 4 单片机最小系统与复位电路设计单片机最小系统与复位电路设计 9 9 第三章第三章 软硬件设计软硬件设计 1212 3 13 1 电路功能单元设计电路功能单元设计 1212 1 1 开锁机构 开锁机构 1212 2 2 按键电路设计 按键电路设计 1313 3 3 显示电路设计 显示电路设计 1414 3 23 2 程序设计程序设计 1919 2 2 程序流程图程序流程图 1919 1 1 主程序流程图如图 主程序流程图如图 3 3 1 1 所示 所示 1919 第四章第四章 总结总结 4040 参考文献参考文献 4141 摘摘 要 要 单片机即单片微型计算机 Single Chip Microcomputer 是集 CPU RAM ROM 定 时 计数和多种接口于一体的微控制器 近年来随着计算机在社会领域的渗透 单片 机的应用正在不断地走向深入 很多行业的许多地方都需要密码锁 但普通密码锁的 密码容易被多次试探而破译 要求设计一种能防止多次试探密码的密码锁 从而有效 地克服了上述缺点 基于上述考虑 采用 AT89S51 为核心设计一种能防止多次试探密 码的密码锁 用户可以自行设定和修改密码 若键入的 6 位开锁密码不完全正确 则 报警 秒钟 以提醒他人注意 密码在规定的时间内输入错误次数超过 3 次后的锁定 状态 关键词 AT89S51 单片机 自行设定 报警 锁定 前前 言言 在生活和生产的各领域中 凡是有自动控制要求的地方都会有单片机的身影出现 从简单到复杂 从空中 地面到地下 凡是能想像到的地方几乎都有使用单片的需求 现在尽管单片机的应用已经很普遍了 但仍有许多可以用单片机控制而尚未实现的项 目 因此 单片机的应用大有想像和拓展空间 单片机的应用有利于产品的小型化 多功能化和智能化 有助于提高劳动效率 减轻劳动强度 提高产品质量 改善劳动 环境 减少能源和材料消耗 保证安全等 但是 单片机应用的意义绝不仅限于它的 广阔范围以及所带来的经济效益上 更重要的意义还在于 单片机的应用正从根本上 改变着传统的控制系统设计思想和设计方法 从前必须有模拟电路或数字电路实现的 大部分功能 现在已能使用单片机通过软件 编程序 方法实现了 这种以软件取代 硬件并提高系统性能的控制系统 软化 技术 称之为微控制技术 微控制技术是一 种全新的概念 是对传统控制技术的一次革命 随着单片机应用的推广普及 微控制 技术必将不断发展 日益完善和更加充实 第一章第一章 方案论证方案论证 1 1 开发意义开发意义 随着人们生活水平的提高 如何实现家庭防盗这一问题也变的尤其的突出 传统 的机械锁由于其构造的简单 被撬的事件屡见不鲜 电子锁由于其保密性高 使用灵 活性好 安全系数高 受到了广大用户的亲呢 1 2 功能说明功能说明 采用以 AT89S51 为核心的单片机控制方案 利用单片机灵活的编程设计和丰富的 IO 端口 及其控制的准确性 不但能完成开锁 超时报警 超次锁定 管理员解密 修改用户密码基本的密码锁的功能 还能添加调电存储 声光提示甚至添加遥控控制 功能 其原理如图 1 2 所示 图 1 单片机控制方案 89S51 单片机单片机 矩阵矩阵 键盘键盘 控制控制 输入错误锁定键盘输入错误锁定键盘 延时报警控制电路延时报警控制电路 AT24C02 掉电存储掉电存储 开锁控制电路开锁控制电路 指示电路指示电路 串口显示电路串口显示电路 第二章第二章 硬件电路硬件电路 2 1 单片机概述单片机概述 单片机因将其主要组成部分集成在一个芯片上而得名 具体说就是把中央处理器 CPU Central processing unit 随机存储器 RAM Random access memory 只读存 储器 ROM Read only memory 中断系统 定时器 计数器以及 I O Input output 接口电路等主要微型机部件集成在一个芯片上 虽然单片机只是 一个芯片 但从组成和功能上看 它已具有了计算机系统的属性 为此 称它为单片 微型计算机 SCMC Single chip micro computer 简称单片机 单片机主要应用与控制领域 在国际上 微控制器 的叫法似乎更通用一些 而 在我国则比较习惯与 单片机 这一名称 单片机在应用时 通常是处于控制系统的 核心地位并融入其中 即以嵌入的方式进行使用 为了强调其 嵌入 的特点 也常 常将单片机称为嵌入式微控制器 EMCU Embedded micro controller unit 在单片机 的电路和结构中 有许多嵌入式应用的特点 2 2 AT89S51 的芯片概述的芯片概述 AT89S51 是一个低功耗 高性能 CMOS 8 位单片机 片内含 4k Bytes ISP In system programmable 的可反复擦写 1000 次的 Flash 只读程序存储器 器件采用 ATMEL 公司的高密度 非易失性存储技术制造 兼容标准 MCS 51 指令系统及 80C51 引 脚结构 芯片内集成了通用 8 位中央处理器和 ISP Flash 存储单元 功能强大的微型 计算机的 AT89S51 可为许多嵌入式控制应用系统提供高性价比的解决方案 AT89S51 具有如下特点 40 个引脚 4k Bytes Flash 片内程序存储器 128bytes 的随机存取数 据存储器 RAM 32 个外部双向输入 输出 I O 口 4 个中断优先级 2 层中断嵌套 中断 2 个 16 位可编程定时计数器 2 个全双工串行通信口 内部集成看门狗计时器片 内时钟振荡器 其工作电压在 4 5 V 一般我们选用 5V 电压 89S51 相对于 89C51 增加的新 功能包括 新增加很多功能 性能有了较大提升 价格基本不变 甚至比 89C51 更低 ISP 在线编程功能 这个功能的优势在于改写单片机存储器内的程序不需要 把芯片从工作环境中剥离 是一个强大易用的功能 最高工作频率为 33MHz 大家 都知道 89C51 的极限工作频率是 24M 就是说 S51 具有更高工作频率 从而具有了更快 的计算速度 具有双工 UART 串行通道 内部集成看门狗计时器 不再需要像 89C51 那样外接看门狗计时器单元电路 双数据指示器 电源关闭标识 全新的加密算法 这使得对于 89S51 的解密变为不可能 程序的保密性大大加强 这样就可以有效的保护知识产权不被侵犯 兼容性方面 向下完全兼容 51 全部字 系列产品 比如 8051 89C51 等等早期 MCS 51 兼容产品 也就是说所有教科书 网络 教程上的程序 不论教科书上采用的单片机是 8051 还是 89C51 还是 MCS 51 等等 在 89S51 上一样可以照常运行 这就是所谓的向下兼容 因此我们选用 AT89S51 单片机 来作为本系统的核心部分 下图为 89s51 的核心电路框图 2 3 LED 数码管显示器概述数码管显示器概述 1 LED 数码显示器的结构与显示段码 1 LED 数码显示器的结构 LED 数码显示器是一种有 LED 发光二极管组合显示字符的显示器 件 它使用了 8 个 LED 发光二极管 其中 7 个用于显示字符 一个用于显示小数点 故通常称之为 7 段发光二极管数码器 其内部结构如下图所示 LED 数码显示器有两种连接方法如下 共阳极接法 把发光二极管的阳极连在一起构成公共阳极 使用时公共阳极接 5V 每 个发光二极管的阴极通过电阻与输入端相连 共阴极接法 把发光二极管的阴极连在一起构成公共阴极 使用时公共阴极接地 每 个发光二极管的阳极通过电阻与输入端相连 2 LED 数码显示器的显示段码 为了显示字符 要为 LED 显示器段码 或称字形代码 组成一个 8 字形字符的 7 段 再加上 1 个小数点位 共计 8 段 因此提供给 LED 显示器的显示段码为 1 个字节 各段码位的对应关系如下表所示 十六进制数及空白字符与 P 的显示段码 段码位 D7 D6 D5 D4 D6 D2 D1 D0 显示段 pd g f e d e b a 2 LED 数码显示器的接口方法与电路 1 LED 数码显示的接口方法 单片机与 LED 数码显示器有以硬件为主和以软件 为主的两种接口方法 以硬件为主的接口方法 这种接口方法的电路如图所示 2 LED 数码显示器的接口电路 实际使用的 LED 数码显示器位数较多 为降低成本 大部分以软件为主的接口方法对于多位 LED 数码管显示器 通常采用动态扫描显示方 法 即逐个循环点亮各位显示器 这样虽然在任一时期只有一位显示器被点亮 但是 由于人眼有视觉残留效应 看起来与全部显示持续点亮的效果基本一样 在亮度上要 有差别 3 驱动器 LED 显示是单片机控制产品中常见的应用 使用 LED 模块 这种 模块中带有 LED 显示管和 LED 驱动电路 用起来较方便 一般用户直接采用单片机 LED 驱动器 LED 显示管的方式 现在我们向大家推荐一种经常使用的 LED 驱动器 8550 它作为共阳数码管的驱动器 而共阴数码管的驱动器则是 A1015 它们都是三极 管 2 4 单片机最小系统与复位电路设计单片机最小系统与复位电路设计 1 单片机最小系统 最小系统就是单片机在发挥具体测控功能时所必须的组成部分 如下图所示为最小系统方框图 2 复位电路 复位电路产生复位信号 复位信号送入 RST 后还要送至片内的施密特触发器 由片内 复位电路在每个机器周器的 S5P2 时刻对触发器输出采样信号 然后由内部复位电路产 生复位操作所要的信号 一般的复位电路可分为上电自动复位和按键复位 我们在此 选用的是上电复位 上电自动复位原理 RST 引脚是复位信号的输入端 只要高 电平的复位信号持续两个机器周期以上的有效时间 就可以使单片机上电复位 上电 自动复位是通过电容充电实现的 上电瞬间 RST 端电位与 Vcc 相同 随充电电流的减 少 RST 的电位逐渐下降 直到复位信号无效 按键复位在此不在作过多的介绍 其原 理和上电复位是相同的 但其采用的是脉冲复位电路和电平复位电路两种 复位电路 和单片机最小系统如下图所示 第三章第三章 软硬件设计软硬件设计 3 1 电路功能单元设计电路功能单元设计 1 开锁机构 通过单片机送给开锁执行机构 电路驱动电磁锁吸合 从而达到开锁的目的 其 原理如图 2 1 所示 单片机微控单片机微控 制器制器 开锁驱动电路开锁驱动电路 电磁锁电磁锁 密码正密码正 确 确 Y 返回返回 N 图 3 1 密码锁开锁机构示意图 当用户输入的密码正确而且是在规定的时间 普通用户要求在 12s 内输入正确的 密码 管理员要求在 5s 输入正确的密码 输入的话 单片机便输出开门信号 送到开 锁驱动电路 然后驱动电磁锁 达到开门的目的 其实际电路如图 2 2 所示 电路驱动和开锁两级组成 由 D5 R1 T10 组成驱动电路 其中 T10 可以选择普 通的小功率三极管如 9014 9018 都可以满足要求 D5 作为开锁的提示 由 D6 C24 T11 组成 其中 D6 C24 是为了消除电磁锁可能产生的反向高电压以及可能 产生的电磁干扰 T11 可选用中功率的三极管如 8050 电磁锁的选用要视情况而定 但是吸合力要足够且由一定的余量 在本次设计中 基于节省材料的原则 暂时用发光二极管代替电磁锁 发光管亮 表示开锁 灭 表示没有开锁 T1 0 T1 1 D5 GN D R1 3 3 K 电磁锁 C2 4 VC C 串串串串串串串串 D6 图 3 2 密码锁开锁机构电路图 2 按键电路设计 由于设计要求使用矩阵键盘 所以本设计就采用行列式键盘 同时也能减少键盘 与单片机接口时所占用的 I O 线的数目 在按键比较多的时候 通常采用这样方法 其原理如图 2 3 所示 89s51 D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 5 1K X 4 5 1K X 4 VCC 图 3 3 行列式键盘原理电路图 每一条水平 行线 与垂直线 列线 的交叉处不相通 而是通过一个按键来连 通 利用这种行列式矩阵结构只需要 N 条行线和 M 条列线 即可组成具有 N M 个按键 的键盘 在这种行列式矩阵键盘非键盘编码的单片机系统中 键盘处理程序首先执行等待按键 并确认有无按键按下的程序段 当确认有按键按下后 下一步就要识别哪一个按键按下 对键的识别通常有两种 方法 一种是常用的逐行扫描查询法 另一种是速度较快的线反转法 对照图 2 3 所示的 44 键盘 说明线反转个工作原理 首先辨别键盘中有无键按下 有单片机 I O 口向键盘送全扫描字 然后读入行线状态 来判断 方法是 向行线输出全扫描字 00H 把全部列线置为低电平 然后将列线的电 平状态读入累加器 A 中 如果有按键按下 总会有一根行线电平被拉至低电平从而使 行线不全为 1 判断键盘中哪一个键被按下使通过将列线逐列置低电平后 检查行输入状态来实 现的 方法是 依次给列线送低电平 然后查所有行线状态 如果全为 1 则所按下的 键不在此列 如果不全为 1 则所按下的键必在此列 而且是在与零电平行线相交的交 点上的那个键 按键的操作面板如图图 2 3 所示 共计数字键 10 个 功能键 6 个 键盘上还有 3 个指示灯和一个蜂鸣器 0 D1 C1 B1 A1 9 6 3 8 5 2 7 4 1 L1 L2L3 图 3 4 按键操作面板示意图 10 个数字键用来输入密码 另外 6 个功能键分别是 A1 B1 C1 D1 其 中 键的功能是当输入密码错误的时候 清除前面已经输入的数据 重新输入 键的 功能是确认输入的密码 D1 是管理模式切换键 当用户不小心三次输入密码都没有正 确 键盘被锁定 这个时候就可以启动管理模式 使用管理员的密码来开门 A1 是用 来进入修改密码的状态 B1 用来关闭显示器 一来可以节省电量 另外也可以防止不 法分子偷窥密码 C1 用来作电铃 上面的 3 个指示灯 L1 L2 L3 是用来指示操作的状态 L1 锁定及输入指示状态灯 正常的情况下显示红色 L2 开门指示灯 当用户在规定的时间内正确的输入了密码 此灯转变为绿色 表示开门 否则不显示 L3 是管理员状态指示灯 当按下 D1 后 指 示灯自动点亮 面板上还有一个蜂鸣器 其中一个功能是用来指示操作的按键是否在成功的按下 另外一个功能是当用户输入密码错误的次数超过了 3 次 鸣笛以示报警 3 显示电路设计 本系统设计的显示电路是为了给使用者以提示而设置的 采用 8155 扩展 I O 口设计 显示器主显示几个字符 给用户提供指示见图 3 6 所示 图 3 6 a 关闭状态 OFF 2 888 1 图 3 6 b 开锁状态 图 3 6 c 密码输入及修改状态 图 3 6 d 密码输入错误后的提示 图 3 6 e 密码在规定的时间内输入错误次数超过 3 次后的锁定状态 4 AT24C02 掉电存储单元的设计 掉电存储单元的作用是在电源断开的时候 存储当前设定的单价信息 AT24C02 是 ATMEL 公司的 2KB 字节的电可擦除存储芯片 采用两线串行的总线和单片机通讯 电压最低可以到 2 5V 额定电流为 1mA 静态电流 10Ua 5 5V 芯片内的资料可以在 断电的情况下保存 40 年以上 而且采用 8 脚的 DIP 封装 使用方便 其电路如图 2 5 所示 NC 1 NC 2 NC 3 GND 4 SDA 5 SCL 6 WP 7 VCC 8 U4 AT24C02A GND VCC 串串串串串串 R8 5 1k R10 5 1k 串P2 5 串P2 6 图 3 7 掉电存储电路原理图 图中 R8 R10 是上拉电阻 其作用是减少 AT24C02 的静态功耗 由于 AT24C02 的 数据线和地址线是复用的 采用串口的方式传送数据 所以只用两根线 SCL 移位脉冲 和 SDA 数据 地址 与单片机传送数据 每当设定一次单价 系统就自动调用存储程序 将单价信息保存在芯片内 当系 统重新上电的时候 自动调用读存储器程序 将存储器内的单价等信息 读到缓存单 ERRORS LOCK 元中 供主程序使用 5 密码锁的电源电路设计 为了防止停电情况的发生 本电路后备了 UPS 电源 它包括市电供电电路 停电 检测电路 电子开关切换电路 蓄电池充电电路和蓄电池组成 电源电路图如图 2 8 所示 1 2 JP1 1 2 JP2 D1 D2D3 D4D5 R1 1K C1 33 00 C2 0 1 C3 33 00 1 2 3 78 05 图 3 8 市电供电电路 220V 市电通过变压器降压成 12V 的交流电 再经过整流桥整流 7805 稳压到 5V 送 往电子切换电路 由于本电路功耗较少 所以选用 10W 的小型变压器 由 R8 R9 R6 R7 及 IC14 构成电压比较器 正常情况下 V V IC14 输出高电平 由 T3 T4 构成的达林顿管使继电器 J 开启 将其常开触电将蓄电池和电路相连 实现市电和蓄 电池供电的切换 保证电子密码锁的正常工作 视电池容量而定持续时间 其电路图 如下图 6 所示 R8 50K R9 40K R7 30K R6 20K T3 9018 R10 5 1K T4 9014 1 2 3 IC14 741 5V A1 A2 5V A1 A2 VCC 图 3 9 停电检测及电子开关切换电路 T1 T2 构成的蓄电池自动充电电路 它在电池充满后自动停止充电 其中 D1 亮为 正在充电 D2 为工作指示 由 R4 R5 T1 构成电压检测电路 蓄电池电压低 则 T1 T2 导通 实现对其充电 充满后 T1 T2 截止 停止充电 同时 D1 熄灭 电路 中 C4 的作用是滤除干扰信号 其电路图如图 7 所示 R5 470 R2 3K R1 3K T1 9014D2D1 C4 0 1U 3CG21 R4 3K 6V A26V 图 3 10 蓄电池自动充电电路 6 设计总框图 图 3 11 总体设计框图 7 元器件清单 AT89S51 8155 AT14C02 LED 显示器 蜂鸣器 16 位键盘 电阻 电容若干 发光管 8 设计总体电路 开锁控制电路开锁控制电路 89S51 单片机单片机 AT24C02 掉电存储掉电存储 串口显示电路串口显示电路 矩阵矩阵 键盘键盘 控制控制 指示电路指示电路 输入错误锁定键盘输入错误锁定键盘 延时报警控制电路延时报警控制电路电源电路及电源电路及 UPS 电路电路 图 3 12 总体电路图 3 2 程序设计程序设计 1 模块介绍 该计程计价系统的软件设计分为以下几个模块 1 主程序模块 主程序主要完成初始化 设置中断向量 检查有无按键按下 以及调用显示等等 2 键盘扫描及识别子程序 键盘采用查询的方式 放在主程序中 当没有按键按下的时候 单片机循环主程 序 一旦有按键按下 便转向相应的子程序处理 处理结束再返回 3 调电存储服务程序 当比较密码的时候 需要读 AT24C02 程序 将存储在芯片内的数据读到 RAM 中 然后和输入的密码相比较 当修改密码的时候 需要把输入的密码保存到 AT24C02 中 4 显示子程序 五种状态分别是 关闭状态显示子程序 开锁状态显示子程序 密码输入及修改状 态显示子程序 密码输入错误后的提示子程序 密码在规定的时间内输入错误次数超 过 3 次后的锁定状态显示子程序 2 程序流程图 1 主程序流程图如图 3 1 所示 2 程序 电子密码锁 显示缓冲区 LED1 EQU 6FH BUFF EQU 6EH TIMERS1 EQU 6DH 输入回车的次数 TIMERS2 EQU 6CH 报警的次数 TIMERS EQU 6BH 输入数字的位数 LED6 EQU 6AH 密码缓冲区 PS1 EQU 69H PS2 EQU 68H PS3 EQU 67H PS4 EQU 66H PS5 EQU 65H PS6 EQU 64H AT24C02 读取缓冲区 AT1 EQU 63H AT2 EQU 62H AT3 EQU 61H AT4 EQU 60H AT5 EQU 5FH AT6 EQU 5EH 按键标志位 A 1 BIT 20H B 1 BIT 21H C 1 BIT 22H D 1 BIT 23H BUF FULL BIT 24H 密码已经够六位的标志位 为 1 表示满 CH STATE BIT 25H 系统更改的状态标志位 为 1 表示 busy FLAG1 BIT 26H 功能键标志位 为 1 表示功能按键 F F1 BIT 27H F F2 BIT 28H PSW F BIT 29H 密码是否正确的标志位 口资源定义 SPK BIT P2 2 JDQ BIT P2 1 SDA BIT P2 5 定义串口数据端 SCL BIT P2 6 发光二极管灯 L1 BIT P3 0 L2 BIT P3 1 L3 BIT P3 2 ORG 0000H AJMP MAIN ORG 000BH AJMP TIMER0 ORG 001BH AJMP TIMER1 ORG 0030H MAIN MOV SP 70H MOV IE 8AH MOV TMOD 11H MOV TH0 0D8H MOV TL0 0F0H MOV TH1 3CH MOV TL1 0B0H CLR A 1 清除标志位 CLR B 1 CLR C 1 CLR D 1 CLR BUF FULL CLR CH STATE CLR FLAG1 CLR F F1 CLR F F2 CLR PSW F MOV BUFF 00H 调用 LCALL INITPS 初始化环境 LCALL INITAT LCALL XSA 调用默认显示 MOV TIMERS1 00H NOP MOV PS1 11H 初始化密码 830620 MOV PS2 0AH MOV PS3 02H MOV PS4 13H MOV PS5 0BH MOV PS6 02H SETB TR0 START NOP 程序开始 LCALL CH KEY 检查键盘 AJMP START 返回 CH KEY LCALL KS 检查有没有按键按下 JNZ LK1 AJMP CH KEY LK1 LCALL T12MS ACALL KS JNZ LK2 RET LK2 NOP LCALL SBIE 按键识别子程序 MOV BUFF A 送缓冲区以识别是数字键还是功能键 LCALL CH KF 判断按键功能 JB FLAG1 KEY FUN 标志为 1 则为功能键 数字按键输入并且存放到缓冲区内等待比较 KEY DIG NOP 设一标志 辨别输入是否满 SETB TR0 INC TIMERS 输入数字的位数 MOV A TIMERS CLR C SUBB A 01H JNZ PS 2 MOV PS1 BUFF 依照顺序存放密码 AJMP NEXT PS 2 MOV A TIMERS SUBB A 02H CLR C JNZ PS 3 MOV PS2 BUFF AJMP NEXT PS 3 MOV A TIMERS CLR C SUBB A 03H JNZ PS 4 MOV PS3 BUFF AJMP NEXT PS 4 MOV A TIMERS CLR C SUBB A 04 JNZ PS 5 MOV PS4 BUFF AJMP NEXT PS 5 MOV A TIMERS CLR C SUBB A 05 JNZ PS 6 MOV PS5 BUFF AJMP NEXT PS 6 MOV A TIMERS CLR C SUBB A 06H JNZ CH KEY MOV PS6 BUFF NEXT LCALL XSC MOV R7 TIMERS 比较输入的次数 CJNE R7 06H FULL FULL JC NEXT9 SETB BUF FULL MOV TIMERS 06H CLR L3 NOP CLR P2 1 LCALL T100MSD SETB P2 1 NOP AJMP CH KEY NEXT9 CLR P2 1 密码输入一位 鸣叫一声 CLR L3 LCALL T100MSD 延时 100ms SETB L3 SETB P2 1 AJMP CH KEY 功能按键比较并且跳转 KEY FUN CLR FLAG1 CLR C MOV A BUFF SUBB A 03H 按键 CL 跳转 JNZ EN C AJMP CL EN C CLR C MOV A BUFF 按键 EN 跳转 SUBB A 00H JNZ F1 C AJMP EN F1 C CLR C MOV A BUFF SUBB A 1BH JNZ F2 C AJMP FU1 F2 C CLR C MOV A BUFF SUBB A 1AH JNZ F3 C AJMP FU2 F3 C CLR C MOV A BUFF SUBB A 19H JNZ F4 C AJMP FU3 F4 C CLR C MOV A BUFF SUBB A 18H JZ FU4 EXIT8 NOP LJMP CH KEY 开门子程序 CL NOP SETB L3 MOV BUFF 00H 消密码缓冲 MOV TIMERS 00H LCALL INITPS 消除 AT 缓冲 加调电存储后一定要加上 LCALL XSC LCALL BP LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH KEY FU4 NOP LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP LCALL T100MSD LCALL BP CLR FLAG1 AJMP CH KEY FU3 NOP LCALL BP LCALL T100MSD LCALL BP LCALL KILLXS 关闭显示 CLR FLAG1 AJMP CH KEY FU1 NOP LCALL XSC JB F F1 NEXT F1 CLR L1 LCALL BP SETB F F1 AJMP CH KEY NEXT F1 SETB L1 LCALL BP CLR F F1 LCALL CH STATE 查看现在的状态以防误按 SETB TR1 报警限制暂时不开 INC F F1 CLR FLAG1 AJMP CH KEY FU2 NOP JB F F2 NEXT F2 CLR L2 LCALL BP SETB F F2 AJMP CH KEY NEXT F2 SETB L2 LCALL BP CLR F F2 CLR FLAG1 AJMP CH KEY 按键的功能描述 EN NOP JB BUF FULL GOON AJMP EXIT GOON CLR BUF FULL JB F F2 AT WRON F2 按键标志 若为 1 则调用修改密码 子程序 LCALL AT RADE LCALL C PSW 比较密码子程序 JB PSW F OPEN 密码比较正确 则调用开锁子程序 LCALL XSD INC TIMERS2 MOV R7 TIMERS2 密码错误 调入输入密码输入次数 准备锁 定键盘 CJNE R7 03H D0 D0 JC NEXT1 错误次数小 3 次 LCALL XSE 锁定 5 分钟 LCALL WARN2S LCALL LOCK 1M NEXT1 LCALL WARN2S 报警 2 分钟 LCALL XSA EXIT LCALL INITPS MOV BUFF 00H CLR FLAG1 MOV TIMERS 00H AJMP CH KEY 跳出 AT WRON LCALL AT WR LCALL XSF LCALL BP LCALL T100MSD LCALL BP LCALL T500MSD LCALL KILLXS LCALL T500MSD LCALL XSF LCALL T500MSD LCALL KILLXS LCALL T500MSD LCALL XSF LCALL T500MSD NOP NOP LCALL XSA AJMP EXIT OPEN MOV A TIMERS1 CJNE A 09H CLT1 CLT1 JC GOON1 MOV TIMERS1 00H GOON1 INC TIMERS1 输入回车的次数 MOV TIMERS2 00H SETB L3 CLR PSW F LCALL XSB CLR JDQ 开门 LCALL BP LCALL BP LCALL BP LCALL BP LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC LCALL SEC SETB JDQ LCALL XSA NOP AJMP EXIT TIMER0 DJNZ 0CH ZX 定时中断 MOV TIMERS 00H ZX MOV TH0 0D8H MOV TL0 0F0H RETI 注意清楚缓冲区时 AT1 AT6 不应在初始化中执行 以 防两缓冲区都为 0 相同开锁 CLR BUF MOV R7 06H MOV R0 6FH LOOP1 MOV A 00H MOV R0 A DEC R0 DJNZ R7 LOOP1 RET 初始化显示缓冲区以及其他缓冲区 INITPS PUSH ACC PUSH PSW MOV R7 06H MOV R1 PS1 MOV A 00H INIT PS MOV R1 A DEC R1 DJNZ R7 INIT PS POP PSW POP ACC NOP RET INITAT PUSH ACC PUSH PSW MOV R7 06H MOV R1 AT1 MOV A 00H INIT AT MOV R1 A DEC R1 DJNZ R7 INIT AT MOV TIMERS 00H 密码输入的次数清零 POP PSW POP ACC RET 按键识别子程序 SBIE MOV R2 0EFH 识别按键子程序 数据送 A 保存 课本 P146 页 MOV R4 00H LK4 MOV A R2 MOV P0 A NOP MOV A P0 JB ACC 0 LONE MOV A 00H AJMP LKP LONE JB ACC 1 LTWO MOV A 08H AJMP LKP LTWO JB ACC 2 LTHR MOV A 10H AJMP LKP LTHR JB ACC 3 NEXTT 判断下一列 MOV A 18H LKP ADD A R4 PUSH ACC LK3 ACALL KS JNZ LK3 POP ACC RET NEXTT INC R4 MOV A R2 JNB ACC 7 KND RL A MOV R2 A AJMP LK4 KND AJMP CH KEY KS MOV P0 0FH NOP MOV A P0 CPL A ANL A 0FH NOP RET CH KF CLR C MOV A BUFF 判断是数字按键还是功能按键 为 1 表示功能键 CJNE A 17H KY KY JC SET CH 假若是数字按键则标志置为 0 SETB FLAG1 假若是功能按键则标志置为 1 AJMP CHKE END SET CH CLR C MOV A BUFF SUBB A 00H JNZ EN CH SETB FLAG1 AJMP CH END EN CH MOV A BUFF SUBB A 03H JNZ DIG SETB FLAG1 AJMP CH END DIG CLR FLAG1 CH END NOP CHKE END RET T12MS MOV R7 18H TM1 MOV R6 0FFH TM66 DJNZ R6 TM66 DJNZ R7 TM1 RET 检验密码正误 C PSW PUSH PSW PUSH ACC MOV R2 06H MOV R0 PS1 MOV R1 AT1 C P CLR C MOV A R0 SUBB A R1 JNZ RETURN DEC R0 DEC R1 DJNZ R2 C P NOP SETB PSW F AJMP EXIT7 RETURN CLR PSW F EXIT7 NOP POP ACC POP PSW RET 锁定 鸣笛子程序 LOCK 1M MOV R4 3CH 锁定 1 分钟 M1 LOOP LCALL SEC DJNZ R4 M1 LOOP NOP RET WARN2S PUSH PSW PUSH ACC MOV R5 14H 调用 20 次 BP 报警 2s WARN LCALL BP DJNZ R5 WARN NOP POP ACC POP PSW NOP RET BP CLR SPK 鸣笛子程序 LCALL T100MSD SETB SPK NOP RET 显示子程序 功能 分五屏幕显示数据 分别是 XSA XSB XSC XSD XSE 代表五种状态 XSA MOV R4 0DH 锁定状态显示 AJMP DIS XSB MOV R4 13H 成功开锁状态显示 AJMP DIS XSC MOV R4 19H 密码输入及修改状态 AJMP DIS XSD MOV R4 1FH 密码输入错误的提示 AJMP DIS XSE MOV R4 25H 错误锁定状态显示 DIS MOV R0 79H 显示数据缓冲区首地址送 R0 MOV R3 0FEH 使显示器最右边位亮 MOV A R3 LD0 MOV DPTR 7F01H 数据指针指向 A 口 MOVX DPTR A 送扫描值 INC DPTR 数据指针指向 B 口 MOV A R0 取欲显示的数据 ADD A R4H 加上偏移量 MOVC A A PC 取出字型码 MOVX DPTR A 送显示 ACALL DL1 调用延时子程序 INC R0 指向下一个显示段数据地址 MOV A R3 JB ACC 5 ELD1 扫描到第六个显示器否 RL A 未到 扫描码左移 1 位 MOV R3 A AJMP LD0 EDL1 RET DSEG DB 0C0H 8EH 8EH 0BFH 0BFH 0A4H DB 80H 80H 80H 0BFH 0BFH 0F9H DB 0BFH 0BFH 0BFH 0BFH 0BFH 0BFH DB 86H 88H 88H 0C0H 88H 0A4H DB 0BFH 0C7H 0C0H 0C6H 89H 0BFH DL1 MOV R7 02H 延时 1ms 子程序 DL MOV R6 0FFH DL6 DJNZ R6 DL6 DJNZ R7 DL RET 24C02 读写程序 AT RADE PUSH PSW PUSH ACC MOV R0 AT1 CPU 首地址 MOV R6 06H 8 字节 MOV R5 08H 8 位 MOV R7 00H 24C02 首地址 LCALL READ 读数据 NOP NOP POP ACC POP PSW RET AT WR PUSH PSW PUSH ACC MOV R0 PS1 CPU RAM 首地址 MOV R6 06H 8 字节 MOV R5 08H 8 BIT MOV R7 00H 24C02 RAM 首地址 LCALL WRT 先写进 NOP NOP POP ACC POP PSW RET 读串行器件 R0 RAM 的起始地址 R5 位计数器 R6 读的字节数 R7 读的起始地址 READ NOP NOP LCALLSTART0 MOV A 0A0H LCALLWRB LCALLACK JB F0 RD FAIL MOV A R7 LCALLWRB LCALLCHK JB F0 RD FAIL LCALLSTART0 MOV A 0A1H LCALLWRB LCALLCHK JB F0 RD FAIL RD N NOP NOP LCALLRDB MOV R0 A DJNZR6 GO ACK LCALLN ACK RD FAIL NOP LCALLSTOP MOV A 0FFH RET read GO ACK NOP NOP DEC R0 LCALLACK JMP RD N 写串行器件 R0 RAM 的起始地址 R5 位计数器 R6 写的字节数 页 R7 写的起始地址 WRT NOP NOP LCALLSTART0 MOV A 0A0H LCALLWRBYT LCALLCHK JB F0 WR FAIL MOV A R7 LCALLWRBYT LCALLCHK JB F0 WR FAIL WR N NOP NOP MOV A R0 LCALLWRBYT LCALLCHK JB F0 WR FAIL DEC R0 DJNZR6 WR N WR FAIL NOP LCALLSTOP MOV A 0FFH RET wrt START0 NOP NOP SETBSDA SETBSCL NOP NOP CLR SDA NOP NOP CLR SCL NOP RET STOP NOP NOP CLR SDA SETBSCL NOP NOP SETBSDA NOP NOP CLR SCL NOP RET ACK NOP NOP CLR SDA SETBSCL NOP NOP CLR SCL SETBSDA NOP RET N ACK NOP NOP SETBSDA SETBSCL NOP NOP CLR SCL CLR SDA NOP RET CHK NOP NOP SETBSDA NOP NOP SETBSCL NOP NOP MOV C SDA MOV F0 C CLR SCL NOP NOP RET RDB NOP NOP SETBSDA MOV R5 8 RD B NOP NOP CLR SCL NOP NOP SETBSCL NOP NOP MOV C SDA RLC A NOP NOP SETBSDA CLR SCL DJNZR5 RD B NOP RET 一字节数据发送子程序 WRBYT MOV R5 8 WLP RLC A JC WR1 CLR SDA SETBSCL NOP NOP CLR SCL DJNZR5 WLP RET WR1 SETB SDA SETBSCL NOP NOP CLR SCL CLR SDA DJNZR5 WLP RET WRB NOP NOP MOV R5 8 WR B NOP NOP SETBSDA RLC A JC WR 1 CLR SDA NOP WR 1 SETBSCL NOP NOP CLR SCL NOP CLR SDA NOP DJNZR5 WR B NOP RET 毫秒延时程 T10MSD SETB RS0 MOV R4 12 TM MOV R3 128 TM6 DJNZ R3 TM6 DJNZ R4 TM CLR RS0 RET T100MSD MOV R3 200 D11 MOV R4 125 D12 DJNZ R4 D12 DJNZ R3 D11 RET T500MSD LCALL T100MSD LCALL T100MSD LCALL T100MSD LCALL T100MSD LCALL T100MSD NOP RET SEC SETB RS1 MOV R7 0AH SEC LP LCALL T100MSD DJNZ R7 SEC LP NOP CLR RS1 RET END 第四章第四章 总结总结 一开始拿到这个课题确实也是一头的雾水 不知道该如何的下手 也就在毕业设 计的开始阶段 吴晓苏为我们指出了此课题的大概方向和需要查阅的相关书籍以及在 后面会遇到的主要问题 当时可谓受益颇多 接下来便是查阅相关的文献资料 学习 了相关于本次设计的知识后 便开始了实际的设计部分 在这个过程中确实也遇到了 相当的问题和困难 比如电源电路的设计具体参数的设定等 在此我也要感谢吴老师 在此过程中给与的耐心指导 参考文献参考文献 1 郭永贞主编 数字电子技术 西安电子科技大学出版社 2000 2 吴国经主编 单片机应用技术 中国电力出版社 2004 3 李全利主编 单片机原理及应用技术 高等教育出版社 2004 第二版 4 陆坤 奚大顺等编著 电子设计技术 1997 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年清洁能源行业全球市场分析与前景预测研究报告
- 固本延龄丸课件
- 2025年电子产品行业可穿戴设备市场前景报告
- 巴彦淖尔市2025内蒙古巴彦淖尔市统计局所属事业单位高层次急需紧缺人才引进测评笔试历年参考题库附带答案详解
- 2025年工业互联网技术在制造业中的发展前景研究报告
- 宜宾市2025上半年四川宜宾市屏山县事业单位考核招聘28人笔试历年参考题库附带答案详解
- 临夏市2025甘肃省临夏市教育系统引进人才28人笔试历年参考题库附带答案详解
- 2025福建移动春季校园招聘若干人笔试参考题库附带答案详解
- 2025江苏南通中国移动全资子公司中移铁通南通公司如东分公司招聘笔试参考题库附带答案详解
- 2025年燕舞集团有限公司公开招聘9人笔试参考题库附带答案详解
- 咖啡基础培训课件
- 人才服务合同书
- 2025年工会财务大赛理论题库(附答案)
- 2025-2026学年统编版八年级上册道德与法治教学计划含教学进度表
- 矿井顶板事故防治课件
- 2025年中国电力投资集团校园招聘笔试题型分析及备考策略
- 抗生素课件教学课件
- 销售法律知识培训
- 中国慢性胃炎诊治指南(2022年)解读
- 糖尿病低血糖症诊疗指南
- 直升机发动机油封课件
评论
0/150
提交评论