已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 学习情境三学习情境三 密码锁设计密码锁设计 学习目标 学习目标 了解并行通信的基本概念 掌握键盘的基本组成及工作原理 掌握七段 LED 显示器的基本组成及工作原理 技能目标 技能目标 能够正确在 AT89S52 外连接键盘和显示设备 能够灵活应用典型键盘 显示电路构成各种实际电路 能够利用 AT89S52 设计制作一位密码锁实用电路 能够利用 AT89S52 设计制作多位密码锁的实用电路 在数据通信与计算机领域中 有两种基本的数据传送方式 即串行数据传送方式与 并行数据传送方式 也称串行通信与并行通信 串行通信将在以后介绍 数据在多条并行传输线上各位同时传送的方式 称为并行传送方式 多用于近距离 传送 如图 3 1 a 所示 而数据在单条一位宽的传输线上按时间先后一位一位地传送 称为串行数据传送方式 常用于远距离传送 如图 3 1 b 所示 在单片机应用系统中 通常都有操作面板 操作人员通过操作面板实现与应用系统 的信息交流 包括下达命令 修改程序和参数 干预应用系统的状态 显示运行状态和 运行结果 本学习环境主要介绍人机对话通道中常用的输入设备 键盘 输出设备 LED 显示器 图 3 1 a 并行通信方式 b 串行通信方式 8 位数据低位 2 任务一任务一 字符显示字符显示 第一部分第一部分 项目要求项目要求 设计一个八位显示电路 要求 8 只数码管从左到右顺序显示 1 2 3 4 5 6 7 8 共 8 个字符 将内存 10H 11H 12H 13H 中存放的压缩 BCD 码显示出来 第二部分第二部分 相关知识相关知识 在单片机系统中 常用的显示器有 发光二极管显示器 简称 LED Light Emitting Diode 液晶显示器 简称 LCD Liquid Crystal Display 荧光管显示器 三种显示器中 以荧光管显示器亮度最高 发光二极管次之 而液晶显示器最弱 为被动显示器 必须 有外光源 一 发光二极管及一 发光二极管及 LED 显示器显示器 发光二极管是由半导体发光材料做成的 PN 结 只要在发光二极管两端通过正向电 流 5 20mA 就能达到正常发光 LED 的发光颜色通常有红 绿 黄 白 其外形和电气 图形符号如图 3 2 所示 单个 LED 通常是通过亮 灭来指示系统运行状态和用快速闪烁 来报警 通常所说的 LED 显示器由 7 个发光二极管组成 因此 也称之为七段 LED 显示器 其排列形状如图 3 3 a 所示 显示器中还有一个圆点型发光二极管 在图中以 dp 表示 用于显示小数点 通过七个发光二极管亮暗的不同组合 可以显示多种数字 字母以及其它符号 图 3 2 发光二极管 LED 显示器中的发光二极管共有两种连接方法 1 共阳极接法 共阳极接法 把发光二极管的阳极连在一起构成公共阳极 图 3 3 b 所示 使用时公共阳极接 5V 阴极端输入低电平的段发光二极管导通点亮 输入高电平的则不点亮 2 共阴极接法 共阴极接法 把发光二极管的阴极连在一起构成公共阴极 图 3 3 c 所示 使用时会共阴极接 地 阳极端输入高电平的段发光二极管导通点亮 输入低电平的则不点亮 3 图 3 3 七段 LED 显示器 用 LED 显示器显示十六进制数的字型代码如表 3 1 所示 表 3 1 十六进制数的字型代码 字型共阳极代码共阴极代码字型共阳极代码共阴极代码 0C0H3FH990H6FH 1F9H06HA88H77H 2A4H5BHB83H7CH 3B0H4FHCC6H39H 499H66HDA1H5EH 592H6DHE86H79H 682H7DHF8EH71H 7F8H07H灭FFH00H 880H7FH 二 七段二 七段 LED 显示器的工作原理显示器的工作原理 七段 LED 显示器需要由驱动电路驱动 在七段 LED 显示器中 共阳极显示器 用 低电平驱动 共阴极显示器 用高电平驱动 点亮显示器有静态和动态两种方式 1 静态显示器 静态显示器 所谓静态显示 就是当显示器显示某一字符时 相应段的发光二极管恒定地导通或 截止 图 3 4 为一个四位静态 LED 显示器电路 该电路各位可独立显示 只要在该位 的段选线上送相应的段码 该位就能保持响应的显示字符 这种显示方法的每一位都需 要有一个 8 位输出口控制 静态显示器的优点是显示稳定 在发光二极管导通电流一定的情况下显示器的亮度 4 高 控制系统在运行过程中 仅仅在需要更新显示内容时 CPU 才执行一次显示更新子 程序 这样大大节省了 CPU 的时间 提高了 CPU 的工作效率 缺点是位数较多时 硬 件开销太大 图 3 4 四位静态 LED 显示电路 例如在 AT89S52 的串行口上扩展多片串行输人并行输出的移位寄存器 74LS164 作 为静态显示器接口 图 3 5 给出了 8 位共阳极静态显示器的逻辑接口 设要显示的数据 放在 78H 7FH 中 图 3 5 串行扩展静态显示电路 静态显示程序如下 DISPLAY MOV R7 8 8 位显示计数器 MOV R0 78H 78H 7FH 为显示器缓冲区 MOV DPTR TABLE 显示字形码表首地址 LOOP1 MOV A R0 取出要显示的数据 INC R0 指向缓冲区下一地址 MOVC A A DPTR 取出显示字形码 MOV SBUF A 送出该 LED 上的字形码 5 LOOP2 JNB TI LOOP2 输出完否 CLR TI 完 清发送中断标志 DJNZ R7 LOOP1 8 位显示未完 继续 RET TABLE DB 0C0H 0F9H 0A4H 0BH 99H 0 1 2 3 4 DB 92H 82H 0FBH 80H 90H 5 6 7 8 9 DB 88H 83H 0C6H 0A1H 86H A b C d E DB 8EH 0FFH F 暗 2 动态显示器 动态显示器 图 3 6 四位动态 LED 显示电路 所谓动态显示就是一位一位地轮流点亮各位显示器 扫描 对于显示器的每一 位而言 每隔一段时间点亮一次 在同一时刻只有一位显示器在工作 点亮 利用 人眼的视觉暂留效应和发光二极管熄灭时的余辉效应 看到的却是多个字符 同时 显 示 显示器亮度既与点亮时的导通电流有关 也与点亮时间和间隔时间的比例有关 调整电流和时间参数 可实现亮度较高较稳定的显示 图 3 6 为一个 4 位动态 LED 显示器电路 其中段选线占用一个 I O 口 控制各位 LED 显示器所显示的字形 称为段码或字形口 位选线需要一个 I O 口 控制显示 器公共极电位 称为位码或字位口 动态显示器的优点是节省硬件资源 成本较低 但在控制系统运行过程中 要保 证显示器正常显示 CPU 必需每隔一段时间执行一次显示子程序 占用 CPU 大量时 间 降低了 CPU 的工作效率 同时显示亮度较静态显示器低 6 第三部分第三部分 项目实施项目实施 一 项目实施分析一 项目实施分析 一 硬件电路 一 硬件电路 图 3 7 是一个动态扫描方式驱动的 8 只数码管显示电路 要求 8 只数码管从左到右 顺序显示 1 2 3 4 5 6 7 8 共 8 个字符 L1L8L2 共共共共共 L3L4 5V L5 P1 L6 270X8 L7 P 1 0 P 1 1 P 1 2 P 1 3 P 1 4 P 1 5 P 1 6 P 1 7 P 2 0 P 2 1 P 2 2 P 2 3 P 2 4 P 2 5 P 2 6 P 2 7 89S52 U COMPON ENT 2 U COMPON ENT 2 U COMPON ENT 2 图 3 7 八位 LED 显示电路 电路选用共阳极数码管 AT89S52 的 P2 口为位驱动口 当输出为 0 时对应的位被选中 显示字符 P2 口的 8 个位中 任意时刻只能有一个输出为 0 其他均为 1 P2 口输出与对应显示位的关 系见表 3 2 7 表 3 2 P2 口输出与对应显示位的关系 端口端口P2 0P2 1P2 2P2 3P2 4P2 5P2 6P2 7 位码位码01H02H04H08H10H20H40H80H 数码管数码管L1L2L3L4L5L6L7L8 AT89S52 的 P1 口为段驱动口 当输出为 0 对应的段 灭 当输出为 1 时 对应 的段 亮 P1 口与数码管笔画的对应关系见表 3 3 表 3 3 P1 口与数码管笔画的对应关系 ABCEDFGDP P1 0P1 1P1 2P1 3P1P15P1 6P1 7 二 程序清单 二 程序清单 程序清单如下 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV SP 50H MOV 30H 01H MOV 31H 02H MOV 32H 03H MOV 33H 04H MOV 34H 05H MOV 35H 06H MOV 36H 07H MOV 37H 08H LP7 LCALL DIR SJMP LP7 DIR MOV R0 30H 显示数据缓冲区首地址送 R0 MOV R1 7FH 使显示器最左边位亮 MOV A R1 LPl MOV P2 A 扫描值送 P2 口 MOV A R0 取欲显示数据 ADD A 0EH 加上查表指令地址偏移量 MOVC A A PC 取出段码 8 MOV P1 A 送出显示 ACALL DELAY 调用延时子程序 INC R0 指向下一个显示缓冲区地址 MOV A R1 JNB ACC 0 LP2 扫描到第八个显示器否 RR A 未到 扫描码右移 1 位 MOV R1 A SJMP LP1 LP2 RET DB 0C0H 0F9H 0A4H 0B0H 99H 92H 0 1 2 3 4 5 DB 82H 0F8H 80H 90H 0C8H 83H 6 7 8 9 A B DB 0C6H 0A1H 86H 8EH C D E F DELAY MOV R7 01H 延时子程序 DL1 MOV R6 0FFH DL2 DJNZ R6 DL2 DJNZ R7 DLl RET 编程方法二 12345678 数码管循环点亮 X H DATA 20H 定义显示缓存起始地址 20H X D EQU P1 定义段口 P1 X W EQU P2 定义位口 P2 NUM EQU 8 定义显示数字个数 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV R0 X H MOV R1 NUM MOV A 01H ACALL FUZHI 调显示缓存单元赋值 DISP MOV R7 NUM 显示初始化 MOV R6 7FH 显示起始位码 MOV DPTR BIAO MOV R0 20H DISP D MOV A R0 显示 MOVC A A DPTR MOV X D A MOV X W R6 9 ACALL DE 调 1ms 延时 INC R0 MOV A R6 RR A MOV R6 A DJNZ R7 DISP D SJMP DISP BIAO DB 0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80H 90H DE MOV R1 01 1ms 延时 DE1 MOV R2 0FAH DJNZ R2 DJNZ R1 DE1 RET FUZHI MOV R0 A 显示缓存单元赋值子程 INC A INC R0 DJNZ R1 FUZHI RET END 二 项目实施要求二 项目实施要求 一 一 项目设备要求项目设备要求 1 装有Keil C51 Vision2集成开发环境 编程器软件 在线下载软件的计算机 2 单片机最小系统开发平台 二 项目实施步骤 二 项目实施步骤 1 断电 连接计算机 实验板 2 连接好下载线 接好电源 3 进入 Keil 开发环境 在指定路径下建一个项目名称 4 在指定的路径下建一个文件名 5 将该文件添加到项目中 保存该项目 6 在编辑窗口输入程序 7 汇编 链接无误后将文件下载到目标电路 8 设断点或全速运行程序 观察能否将存储器中的数据显示出来 否则检查程序或连 10 线 9 记录实验程序内容 调试过程 10 改变延时程序的时间 观察延时时间对显示的亮度的影响 确定最佳延时时间 11 根据参考程序 画出显示子程序的流程图 12 修改程序 从右到左显示 0 7 请编程 并观察现象 13 将内存 10H 11H 12H 13H 中存放的压缩 BCD 码显示出来 请编程 三 成绩评定三 成绩评定 1 在计算机中输入并调试程序 记录调试中出现的问题 10 分 2 使用编程器将程序文件传送到用户板中 运行程序 观察结果 20 分 3 根据参考程序 画出显示子程序的流程图 10 分 4 修改程序 从右到左显示 0 7 30 分 5 将内存 10H 11H 12H 13H 中存放的压缩 BCD 码显示出来 30 分 小题分值 1 10分 2 20分 3 10分 4 30分 5 30分总分 小题得分 11 任务二任务二 矩阵式键盘电路设计矩阵式键盘电路设计 第一部分第一部分 项目要求项目要求 设计一个4 4矩阵键盘与AT89S52接口电路 要求用查询法读取行列键盘键码 并 将键码存入内部RAM 32H单元 第二部分第二部分 相关知识相关知识 键盘是由若干个按键组成的开关矩阵 它是最简单的单片机输入设备 操作员可以 通过键盘输入数据或命令 实现简单的人机通信 若键盘闭合键的识别是由专用硬件实 现的 则称为编码键盘 若用软件实现闭合键识别的 则称为非编码键盘 非编码键盘 又分为行列式和独立式两种 本项目主要讨论 非编码键盘的工作原理 接口技术和程 序设计 键盘接口应有以下功能 键扫描功能 即检测是否有键闭合 键识别功能 确定被闭合键所在的行列位置 产生相应的键值功能 消除按键抖动功能 一 一 键盘工作原理键盘工作原理 1 按键去抖动 按键去抖动 常用键盘的按键是一个机械开关结构 被按下时 由于机械触点的弹性及电压突跳 等原因 在触点闭合或断开的瞬间会出现电压抖动 如图 3 8 所示 抖动时间长短与按 键的结构和机械特性有关 一般为 5 10 ms 而按健的闭合时间和操作者的按键动作有 关 大约为十分之几秒到几秒不等 去抖动有硬件和软件两种方法 硬件方法就是在键盘中附加去抖动电路 从根本上 消除抖动产生的可能性 图 3 9 为利用双稳电路的去抖动电路 而软件方法则是采用时 间延迟以躲过抖动 大约延时 20 30ms 即可 待行线上状态确定之后 再进行状态输 图 3 8 键闭合和断开时的电压抖动 12 入 一般为简单起见多采用软件方法 图 3 9 去抖动电路 2 按键连接方式 按键连接方式 键盘和 CPU 的连接方式可分为独立式键盘和矩阵式键盘 独立式键盘 独立式是一组相互独立的按健 这些按键可直接与单片机的 I O 口连接 即每个按 键独占一条口线 接口简单 独立式键盘因占用单片机的硬件资源较多 只适合按键较 少的场合 图 3 10 a 是一个具有 4 个按键的独立式键盘 每一个按键的一端都接地 另一端接 AT89S52 的 I O 口 从图中可以看出 独立式键盘每一按键都需要一根 I O 线 占用 AT89S52 的硬件资源较多 矩阵式键盘 图 3 10 独立式键盘和矩阵式键盘 13 也称行列式键盘 因为键的数目较多 所以按键按行列组成矩阵 图 3 10 b 是由 4 根行线和 4 根列线组成的 16 个按键的键盘 与独立式键盘相比 16 个按键只占用了 8 个 I O 口线 因此适用于按键较多的场合 矩阵式键盘接口处理的内容 A 键扫描 键盘上的键按行列组成矩阵 在行列的交点上都对应有一个键 为判定有无键被按 下 闭合健 以及被按键的位置 可使用扫描法说明查找闭合健的方法 首先是判定有没有键被按下 如图 3 11 所示 键盘的行线一端经电阻接 5V 电源 另一端接单片机的输入口线 各列线的一端接单片机的输出口线 另一端悬空 为判定 有没有键被按下 可先经输出口向所有列线输出低电平 然后再输入各行线状态 若行 线状态皆为高电平 则表明无健按下 若行线状态中有低电平 则表明有健被按下 图 3 11 键扫描示意图 然后再判定被按键的位置 判定键位置的扫描是这样进行的 先使输出口输出 0FEH 即 Y0 为低电平 0 其它列线为高电平 1 然后输入行线状态 测试行线状态 中是否有低电平的 如果没有低电平 再使输出口输出 0FDH 即 Y1 为 0 其它列线 为 1 再测试行线状态 以次类推 直检测到行线中有低电平 则闭合健找到 通过 此次扫描的列线值和行线值就可以知道闭合健的位置 B 去抖动 判断有键按下后 延时一段时间 再判断键盘状态 如果仍为有键按下状态 则认 为有键按下 否则按抖动处理 C 确定按键的键值 如图 3 12 所示 以键的排列顺序安排健号 则键值的计算公式为 键值 行首号 列号 14 图 3 12 键值表 D 判断闭合键是否释放 计算键值之后 等待键释放是为了保证键的一次闭合仅进行一次处理 二 二 键盘接口的控制方式键盘接口的控制方式 在单片机的运行过程中 扫描键盘只是 CPU 的工作任务之一 何时执行键盘扫描和 处理 可以有两种方式 程序扫描方式和中断扫描方式 程序扫描是指 CPU 空闲时执 行键盘扫描 或每隔一定时间执行一次 键盘扫描 定时可由单片机的定时器完 成 中断扫描是指 当有键闭合时才向 CPU 发出中断请求 中断响应后执行 键盘扫描程序 三 三 应用举例应用举例 例 3 1 硬件连接如图 3 13 所示 编程完成如下功能 按键按下后 对应的小灯亮 再按下 对应的小灯灭 参考程序方法一 KEY MOV P1 0FFH 灯全灭 MOV P2 0FFH P2 口为输入状态 MOV A P2 读键值 键按下相应位为 0 CPL A 取反 键按下相应位为 1 ANL A 0FH 屏蔽高 4 位 保留低 4 位 JZ LRET 全零 无键按下 返回 LCALL DEL20 非全零 有键按下 延时 软件去抖 MOV A P2 重读键值 图 3 13 硬件连接示意图 89S52 15 CPL A ANL A 0FH JZ LRET 全零 无键按下 返回 JB ACC 0 K0 K0 按下 转 K0 程序 JB ACC 1 K1 K1 按下 转 K1 程序 JB ACC 2 K2 K2 按下 转 K2 程序 JB ACC 3 K3 K3 按下 转 K3 程序 SJMP LRET K0 CPL P1 0 P1 0 状态取反 小灯 LED0 亮变灭 灭变亮 SJMP LRET K1 CPL P1 1 P1 1 状态取反 小灯 LED1 亮变灭 灭变亮 SJMP LRET K2 CPL P1 2 P1 2 状态取反 小灯 LED2 亮变灭 灭变亮 SJMP LRET K3 CPL P1 3 P1 3 状态取反 小灯 LED3 亮变灭 灭变亮 LRET RET DEL20 MOV R7 27H 延时 20ms 左右 LOOP1 MOV R6 0FFH LOOP2 DJNZ R6 LOOP1 DJNZ R7 LOOP2 RET 参考程序方法二 硬件电路 单片机实验板的 P2 4 P2 7 接 P2 口 P2 1 的 5 8 P2 0 P2 3 接 P2 3 的 1 4 KEY 接 P3 3 SW1 BIT P2 0 SW2 BIT P2 1 SW3 BIT P2 2 SW4 BIT P2 3 KEY BIT P3 3 ORG 0000H LJMP START ORG 0100H START MOV SP 60H MOV P1 0FFH MOV P2 0FFH MOV P0 0FFH MOV P3 0FFH CLR KEY WAIT JB KEY 16 JNB SW1 SW11 JNB SW2 SW22 JNB SW3 SW33 JNB SW4 SW44 JMP WAIT SW11 MOV P1 0F9H MOV P2 7FH LCALL DELAY JNB SW1 JMP WAIT SW22 MOV P1 0A4H MOV P2 0BFH LCALL DELAY JNB SW2 JMP WAIT SW33 MOV P1 0B0H MOV P2 0DFH LCALL DELAY JNB SW3 JMP WAIT SW44 MOV P1 99H MOV P2 0EFH LCALL DELAY JNB SW4 JMP WAIT DELAY MOV R7 30 D1 MOV R6 20 D2 MOV R5 248 DJNZ R5 DJNZ R6 D2 DJNZ R7 D1 RET END 17 第三部分第三部分 项目实施项目实施 一 项目实施分析一 项目实施分析 一 硬件电路 一 硬件电路 见图 3 14 是一 4 4 矩阵键盘 图中 P1 4 P1 7 用于控制行线 P1 0 P1 3 用于控 制列线 行 列线通过上拉电阻接 5V 没有键按下时 被钳在高电平状态 通过发送 扫描字确定键码 具体方法如下 1 由列线输出 0 然后读入 P1 口的值存入内部 RAM 30H 单元 2 由行线输出 0 然后读入 P1 口的值存入内部 RAM 31H 单元 3 把 30H 的低 4 位与 31H 的高 4 位的值相加存入累加器 A 4 最后判断累加器 A 的值 如果累加器 A 的数据全为 1 说明无键按下 否则说 明有键按下 且累加器 A 的数据就是被按下键的键值 程序中对累加器 A 取反 目的是 用 JNZ 指令判断是否有键按下 图 3 14 键盘矩阵电路 二 参考程序 二 参考程序 图4 14 矩阵键盘与AT89S52接口连接图 AT89S52 5V P1 0 5 1 k 4 P1 7 P1 6 P1 5 P1 4 5V 5 1 k 4 P1 3 P1 2 P1 1 18 键盘扫描流程图见图 3 15 参考程序方法一 ORG 0000H BOAD LCALL BOADD JNZ BOAD1 无键按下转 BOAD LCALL DELAY 调延时子程序 AJMP BOAD 继续扫描键盘 BOAD1 LCALL DELAY 消除键抖动 延时子程序略 LCALL BOADD 确认是否有键按下 JNZ BOAD2 LCALL DELAY SJMP BOAD 转键扫描 BOAD2 CPL A MOV 32H A 取键值 BOAD3 LCALL DELAY LCALL BOADD JNZ BOAD3 等待键松开 B2 RET 返回 A 00H 开始 键扫描 键按下 去抖动 键码计算 键释放 JMP A DPTR 00 键 处理程序 nn 键 处理程序 键 处理程序 01 键 处理程序 N Y A 01H A H A nnH 图 3 15 键盘扫描流程 19 获取键值子程序 BOADD MOV P1 0FH 置行线为 0 MOV A P1 MOV 30H A MOV P1 0F0H 置列线为 0 MOV A P1 MOV 31H A ANL 30H 0FH 取列值 MOV A 30H ANL 31H 0F0H 取行值 ADD A 31H 行值加列值 CPL A A 全 0 无键按下 RET 键盘扫描程序的运行结果是把闭合键的键码放在 32 单元中 接下来的程序是根据 键码进行程序转移 转去执行该键对应的操作 参考程序方法二 参考程序方法二 硬件电路 P1 口接段码 P2 口接数码管的位 P3 0 P3 3 接 4 行 P3 4 P3 7 接 4 列 ORG 0000H 矩阵键盘程序 PORT EQU P3 键盘接口 P3 XH DATA 20H X DATA 32H 放键号 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV SP 60H SCAN ACALL DIR 调显示 ACALL PYE 判有无键 JC SCAN 无键转 ACALL KEY 有键 调键盘扫描子程序 JC SCAN 无键返回 ACALL LF 确有键 左移 MOV 20H A 送新值 SJMP SCAN 返开始 LF MOV 23H 22H MOV 22H 21H MOV 21H 20H RET KEY ACALL PYE 判断是否有键按下子程序 20 JNC WHICH 有键转拼装 KKK1 RET PYE MOV PORT 0FH 列线 P1 4 P1 7 输出 0 同时 P1 0 P1 3 写 1 MOV A PORT 输入行线数据 CJNE A 0FH PRESS 行线不全为 0 说明有键按下转 SJMP PN PRESS ACALL DELAY 有键按下延时去抖 MOV PORT 0FH 再次使列线输出 0 MOV A PORT CJNE A 0FH PY 确有键按下 转 SJMP PN PY CLR C 有键标志 RET PN SETB C 无键标志 RET WHICH MOV R7 4 设置列数扫描次数 MOV R6 0 MOV DPTR TABS 指向列扫描码表 GETS MOV A R6 MOVC A A DPTR 查表求列扫描码 MOV PORT A 输出列线扫描码 使某一列输出为 0 MOV A PORT 输入行线状态 JNB ACC 0 L0 0 行有键按下 转 L0 JNB ACC 1 L1 1 行有键按下 转 L1 JNB ACC 2 L2 2 行有键按下 转 L2 JNB ACC 3 L3 3 行有键按下 转 L3 INC R6 本列无键按下 列号加 1 DJNZ R7 GETS 未扫描完所有列 转继续扫描 SETB C RET L0 MOV A 0 0 行键有键按下 行号 0 送 A SJMP GEN 转求键号 L1 MOV A 1 1 行键有键按下 行号 1 送 A SJMP GEN L2 MOV A 2 2 行键有键按下 行号 2 送 A SJMP GEN L3 MOV A 3 3 行键有键按下 行号 3 送 A GEN RL A RL A 行号 4 21 ADD A R6 计算键号 行号 4 列号 PUSH ACC L4 ACALL DELAY ACALL PYE 判断是否有键按下子程序 JNC L4 c 0 有键转 CLR C POP ACC RET TABS DB 7FH 0BFH 0DFH 0EFH DIR MOV R0 XH MOV R1 08H MOV A R1 LP MOV P2 A MOV A R0 ACALL LP3 MOV P1 A ACALL DELAY INC R0 MOV A R1 JB ACC 7 LOOP4 RR A MOV R1 A SJMP LP DELAY MOV R7 01H L44 MOV R6 0FAH L22 DJNZ R6 L22 DJNZ R7 L44 RET LOOP4 RET LP3 ADD A 01H MOVC A A PC RET DB 0C0H 0F9H 0A4H 0B0H 99H 092H 82H 0F8H DB 80H 90H 88H 83H 0C6H 0A1H 86H 8EH END 22 二 项目实施要求二 项目实施要求 一 一 项目设备要求项目设备要求 1 装有Keil C51 Vision2集成开发环境 编程器软件 在线下载软件的计算机 2 单片机最小系统开发平台 二 项目实施步骤 二 项目实施步骤 1 断电 连接计算机 实验板 2 给计算机 实验板通电 3 打开计算机 进入 Keil C51 开发环境 4 正确设置通信口 连接好开发环境和实验板 5 新建一个项目 并将该项目建立在指定的文件下 6 新建一个文件 存储器的路径与刚才建的项目相同 7 将新建的文件添加到项目中 保存项目 8 在编辑窗口输入程序 对程序进行汇编 生成和下载 9 全速运行程序 观察内部 RAM 32H 单元的键值数据 10 随机按下任一按键 观察 RAM 32 单元的情况 三 成绩评定三 成绩评定 1 熟悉用户板 电路如图 4 8 所示 10 分 2 在计算机中输入并调试程序 记录调试中出现的问题 10 分 3 使用编程器将程序文件传送到用户板中 运行程序 观察内部 RAM 32H 单元的数据 20 分 4 随机按下任一按键 观察 RAM 32 单元的情况 并与理论分析数据进行比较 30 分 5 若改为 2 8 矩阵键盘 编写程序 运行并观察 RAM 32H 单元的数据 30 分 小题分值 1 10分 2 10分 3 20分 4 30分 5 30分总分 小题得分 23 任务三任务三 电子钟设计与实现电子钟设计与实现 电子钟是一种常见的简单控制系统 它把中断 定时 显示等知识综合在一起 通 过硬件电路的设计 软件分析与设计 最后编程 在实验板上显示出来 本训练通过制 作一个简单的电子钟 进一步练习定时计数器 中断的使用方法 进一步掌握显示程序 的编写和调用 一 目的要求一 目的要求 1 进一步掌握定时计数器的使用 2 进一步掌握中断系统的使用 3 进一步掌握显示程序的编写和调用 二 任务目标二 任务目标 设计一个简易的电子钟电路 六位数码管显示 采用查询方式或中断方式编写 24 小时模拟电子钟 秒 分 时数分别存在 R1 R2 R3 中 三 工具器材三 工具器材 直流电源 5V 500 实验板 跳线 元器件等 四 实训环节四 实训环节 1 组装电路 20 分 2 画出完成功能的流程图 20 分 3 根据流程图编程序 30 分 4 输入源程序 并进行编译 链接 下载到用户板 20 分 5 观察运行结果 10 分 五 成绩评定五 成绩评定 小题分值 20 20 30 20 10 总分 小题得分 24 任务四任务四 一位密码锁设计一位密码锁设计 第一部分第一部分 项目要求项目要求 能够利用 89S52 设计制作一个密码锁实用电路 第二部分第二部分 相关知识相关知识 一 系统三总线的产生一 系统三总线的产生 MCS51 系列单片机由于受到引脚数量的限制 数据线和地址线 低 8 位 是分时 复用的 1 数据线 是 8 位 8 条 代表八位二进制数 2 地址线 如果是八位 可表示单元地址 28 256 个 片内 ROM 8051 有 4KB 需 12 位地址线 片外 ROM 8051 有 64KB 需 16 位地址线 将 P0口分时复用 有时用作数据线 有时用作地址线 P2口传送高 8 位地址 3 控制线 PSENWRRD 是外部程序存储器的读选通信号 PSEN 是外部数据存储器的写选通信号 WR 是外部数据存储器的读选通信号 RD 总线扩展电路如图 3 16 所示 25 图 3 16 总线扩展电路 二 程序存储器的扩展二 程序存储器的扩展 由于单片机控制对象的多样性和复杂性 性能价格比等原因 最小应用系统有时不 能满足要求 需要对系统进行外部扩展 AT89S52 系统单片机有很强的外部扩展能力 外部扩展可分为并行扩展和串行扩展 早期的单片机应用系统以采用并行扩展为多 近 期的单片机应用系统以串行扩展为多 存储器分为程序存储器和数据存储器 程序存储器中又有 EPROM 和 EEPROM 程 序存储器扩展大部分用 2764 27256 等等 但他们的地址线太多 占用口线也多 1 地址的译码方法 MCS 51 单片机的 CPU 是根据地址访问外部存储器 即由地址线上送出的地址信息 选中某一芯片的某个单元进行读写 在逻辑上芯片选择是由高位地址译码实现的 选中 的芯片中单元的选择则由低位地址信息确定 地址译码方法有线选法 全地址译码法和 部分地址译码法 3 种 1 线选法 是利用高位地址线 一般是 P2 口 的某一位作扩展的芯片的片选端 一般片选端均为 低电平有效 只要这一位地址线为低电平 就选中该芯片电路进行读 写 如图 3 17 所 示 26 图 3 17 地址译码线选法示意图 2 全地址译码法 线选法优点是简单 缺点是地址空间没有被充分利用 可以连续的芯片少 若扩展 较多存储器 则需全地址译码 所为全地址译码法是片内寻址未用的全部高位地址线都参 加译码 译码输出作为片选信号 如图 3 18 所示 图 3 18 全地址译码法示意图 27 常用地址译码器有 74HC138 和 74HC139 74HC138 的真值表如表 3 3 所示 表 3 3 74HC138 的真值表 3 部分地址译码法 当系统中扩展的芯片不多 不需要全地址译码法 但采用线选法片选信号又不够时 可采用部分地址译码法 所谓部分地址译码法就是片内寻址外的高位地址的一部分译码 产生片选信号 即单片机的高位地址线的一部分参与译码 其余部分是悬空的 如图 3 19 所示 图 3 19 部分地址译码示意图 28 2 常用的常用的 EPROM 存储器芯片介绍存储器芯片介绍 常用 EPROM 芯片管脚图如图 3 20 所示 图 3 20 常用 EPROM 芯片管脚图 表 3 4 常用 EPROM 芯片的表示法 芯片名称2716273227642712827256 芯片容量2KB4KB8KB16KB32KB 11 条12 条13 条14 条15 条地址线 A0 A10A0 A11A0 A12A0 A13A0 A14 表 3 4 给出常用 EPROM 芯片的表示法 其中 2764 27128 27256 的主电源和接地线 分别为 VCC 5V 和 GND 地 2764 27128 27256 的编程电源线为 VPP 2764 27128 27256 的数据信号线为 D0 D7共 8 条 2764 27128 27256 的控制信号线为 PGMCEOE 为片选信号线 0 时 该片被选通 1 时 该片未被选通 不工作 OECECE 为允许数据输出选通信号线 低电平有效 由单片机引脚控制 OEPSEN PGM 为编程脉冲输入线 此引脚仅在编程时接编程脉冲 29 3 程序存储器扩展电路程序存储器扩展电路 例 3 2 AT89S52 扩展 8KB 16KB EPROM 如图 3 21 所示 图 3 21 扩展 8KB 16KB EPROM 系统示意图 解 采用 2764 芯片 有 28 个脚 地址线 13 条 数据线 8 条 VCC GND VPP各一条 PGM NC 空 CEOE 地址范围 0000H 1FFFH 地址线 由 8051 的 P0 0 P0 7 P2 0 P2 4与 2764 的 A0 A12相连 构成 8KB 地址线 数据线 P0 0 P0 7分时复用 与 2764 的 D0 D7相连 锁存器的 G ALE 高电平 控制线 接 PSEN 接地 PGM VCC VPP NC 5VOECE 例 3 3 AT89S52 扩展 32KB EPROM 解 方法一可以采用一片 27256 芯片 地址范围 0000H 7FFFH 地址线 15 条 数据 线 8 条 VCC GND VPP各一条 PSEN A15 P2 7 做为片选信号 OECE 方法 2 可采用如图 3 22 电路方法 30 图 3 22 32K 外部存储器扩展 例 3 4 AT89S52 单片机与一片 EEPROM2864A 构成外部程序存储器 解 2864A 与 2764 引脚相同 硬件连接如图 3 23 所示 E2PROM 电擦除可编程读写存储器优点 可擦除和改写 编程时不需 VPP 可像 RAM 一样 随机地进行读写 E2PROM 2864 与 EPROM2764A 静态 RAM6264 是兼容 的 8KB 引脚符号的功能 A0 Ai 地址输入线 I O0 I O7 双向三态数据线 片选 低电平有效 读选 低电平有效 CEOE 写选 低电平有效 VCC GND WE 数据存储器扩展电路 P3 6 WR P3 6 WR WEWE 31 图 3 23 2864 构成外部程序存储器 第三部分第三部分 项目实施项目实施 一 项目实施分析一 项目实施分析 设计一个 1 位密码锁 每输入一位密码即 1 位 2 到 5 的数字 密码输入正确 数码 管上显示字母 H 约 5 秒钟 并通过发光管发光代表锁打开 锁延时 10 秒钟后闭合 如果密码不对 显示字母 E 约 5 秒钟 锁不开等密码再次输入 一 硬件电路分析 一 硬件电路分析 89S52 最小系统 P1 口控制段码 1 位共阳极数码管的公共端接电源 P3 0 P3 1 P3 2 P3 3 四位控制 4 个独立按键 P2 0 接 1 个共阴极发光管 相当于锁 发光管亮表示锁打开 发光管灭表示锁没开 电路如图 3 24 所示 图 3 24 一位密码锁电路图 二 参考程序 二 参考程序 程序主要完成按键输入密码并和设定的原始密码比较 正确与错误显示 按键采用 S2 S3 S4 S5 EA VPP 31 XTAL 1 19 XTAL 2 18 RST 9 P3 7 RD 17 P3 6 WR 16 P3 2 INT0 12 P3 3 INT1 13 P3 4 T0 14 P3 5 T1 15 P1 0 T2 1 P1 1 T2 E X 2 P1 2 3 P1 3 4 P1 4 5 P1 5 MOSI 6 P1 6 MISO 7 P1 7 SCK 8 P0 0 A0 39 P0 1 A1 38 P0 2 A2 37 P0 3 A3 36 P0 4 A4 35 P0 5 A5 34 P0 6 A6 33 P0 7 A7 32 P2 0 A8 21 P2 1 A9 22 P2 2 A10 23 P2 3 A11 24 P2 4 A12 25 P2 5 A13 26 P2 6 A14 27 P2 7 A15 28 PSEN 29 ALE PROG 30 P3 1 TXD 11 P3 0 RXD 10 GND 20 VCC 40 U1 AT89S52 C1 30p C2 30p Y1 12MH z 1K C3S1 VCC D1 510 VCC a bf c g d e DPY 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 DS1 VCC 8 510 VCC 4 1K VCC VCC 32 查询方式 设初始密码显示符号为 当按数字后 若与设定的密码相同则数码管上 显示字母 H 约 5 秒钟 并通过发光管发光代表锁打开 锁延时 10 秒钟后闭合 如果 密码不对 显示字母 E 约 5 秒钟 锁不开等密码再次输入 其参考程序如下 PSD EQU 20H 密码单元地址 ORG 0000H LJMP MAIN ORG 0100H MAIN MOV SP 50H MOV P3 0FFH 准备输入数据 MOV PSD 03H 设置密码为 3 MAIN1 SETB P2 0 锁关闭 MOV P1 0BFH 设置初始符号 KEYY MOV A P3 JB ACC 0 KEYY1 LJMP ERR KEYY1 JB ACC 1 KEYY2 LJMP ERR KEYY2 JB ACC 2 KEYY3 LJMP PASS KEYY3 JB ACC 3 KEYY ERR SETB P2 0 关锁 MOV P1 86H 密码不对报错显 E MOV R1 01H 延时 5 秒 ERR1 LCALL DELAY DJNZ R1 ERR1 LJMP MAIN1 PASS MOV P1 76H 初始密码 H MOV R1 02H 延时 10 秒开锁 PASS1 LCALL DELAY CLR P2 0 开锁 LJMP MAIN1 DELAY MOV R5 28H 延时 5 秒子程序 LP3 MOV R6 0FAH LP2 MOV R7 0FAH LP1 DJNZ R7 LP1 DJNZ R6 LP2 DJNZ R5 LP3 RET END 33 二 项目实施要求二 项目实施要求 一 一 项目设备要求项目设备要求 1 装有Keil C51 Vision2集成开发环境 编程器软件 在线下载软件的计算机 2 89S52单片机实验板 要求带独立按键 3 直流电源 通用编程器 二 项目实施步骤 二 项目实施步骤 1 在按图 7 9 所示的电路原路图把 I O 口线接好 2 检查无误后接通电源 进行硬件调试 3 根据实现功能 编写程序 并进行软件调试 4 软 硬件统调 并观察密码锁开锁情况 三 成绩评定三 成绩评定 1 按电路原路图把I O口线接好 15分 2 输入程序并编译 下载到用户板 25分 3 按操作方法输入初始密码 修改密码 开锁 30分 4 采用其它方法设计密码锁 并完成开锁功能 30分 小题分值 1 15分 2 25分 3 30分 4 30分总分 小题得分 34 任务五任务五 密码锁的设计密码锁的设计 第一部分第一部分 项目要求项目要求 运用不同的方法完成多位密码锁的设计 也可以通过制作一个串行 EEPROM 存储 器 24C02 的密码锁学习两线方式的 I2C 总线接口器件的使用方法 第二部分第二部分 相关知识相关知识 一 数据存储器扩展一 数据存储器扩展 由于 8051 单片机片内 RAM 仅有 256 字节 可供使用的仅有低 128 字节 当系统需 要较大容量时 就需外扩展数据存储器 RAM 1 常用的数据存储器芯片常用的数据存储器芯片 常用数据存储器 RAM 芯片引脚图 如图 3 25 所示 图 3 25 常用的 RAM 电路引脚图 O0 O7 双向三态数据线 35 片选信号输入线 低电平有效 读选通信号输入线 低电平有效 CEOE 写选通信号输入线 低电平有效 VCC 工作电源 5V GND 线路地 WE 表 7 2 常用 RAM 芯片的表示法 芯片名称611662646212862256 芯片容量2KB8KB16KB32KB 11 条13 条14 条15 条地址线 A0 A10A0 A12A0 A13A0 A14 2 数据存储器扩展电路数据存储器扩展电路 例 3 5 AT89S52 单片机扩展 8KB 的 RAM 电路如图 3 26 所示 解 采用 6264 芯片 有 28 个引脚 地址范围 0000H 1FFFH 地址线 A0 A12 P0 0 P0 7 P2 0 P2 4 数据线 I O0 I O7 双向 P3 6 WR WE 控制线 地 P3 7 RD P3 6 WR VCC 5V GND 地CEOEWE 图 3 26 6264 构成外部数据存储器 36 二 程序存储器和数据存储器的应用二 程序存储器和数据存储器的应用 例 3 6 利用 AT89S52 外扩程序存储器和数据存储器 如图 3 27 采用 2764 和 2864 芯片作外部程序存储器 地址范围 0000H 1FFFH 采用 62128 芯片作为外部数据存储器 地址范围 0000H 3FFFH 图 3 27 外部程序和数据共用存储器的连接 三 串口三 串口 EEPROM 存储器的应用存储器的应用 集成电路内部晶片的体积很小 但受外部引线数量的限制 封装较大 为了减小器 件的体积 除减小引脚尺寸和引脚间的距离外 减少引脚数量也是一种很有效的措施 采用串行接口是一种减少外部引脚的方法 越来越多的外部器件采用了串行接口 本项 目通过制作一个串行 EEPROM 存储器 24C02 的密码锁来学习两线方式的 l2C 总线接口 器件的使用方法 1 24C02 芯片的引脚如图芯片的引脚
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年交通安全事故责任保险培训
- 关于二战考题的题目及答案
- 心梗护理科研方法
- 循证护理最佳实践
- 家属职责履行承诺书7篇
- 2024-2025学年度河北外国语学院单招数学练习题完美版附答案详解
- 2024-2025学年度公务员考试《常识》高分题库【夺冠】附答案详解
- 2024-2025学年度冶金工业技能鉴定每日一练试卷附参考答案详解(考试直接用)
- 2024-2025学年度河北省单招考试一类 《文化素质数学》考前冲刺测试卷【夺冠】附答案详解
- 诚信企业信誉承诺书范文5篇
- 《数智时代下的供应链管理:理论与实践》课件 第1-7章 理解供应链- 供应链经典的生产计划
- 知情同意告知培训
- 中药饮片培训课件
- 施工单位商务经理培训
- 病房规范化管理
- 温通刮痧技术操作流程图及考核标准
- 2025年安徽职业技术学院单招职业适应性考试题库含答案
- 2025年黑龙江林业职业技术学院单招职业技能测试题库含答案
- DBJT45-032-2016 CPS防水密封膏施工技术规程
- 2025年度光伏电站运维服务合同范本
- 主题13人类面临的主要环境问题课件中华地图版高中地理必修二
评论
0/150
提交评论