MCS-51单片机接口技术培训课件(PPT 93页)

上传人:r**** 文档编号:121437796 上传时间:2020-02-22 格式:PPT 页数:91 大小:2.90MB
返回 下载 相关 举报
MCS-51单片机接口技术培训课件(PPT 93页)_第1页
第1页 / 共91页
MCS-51单片机接口技术培训课件(PPT 93页)_第2页
第2页 / 共91页
MCS-51单片机接口技术培训课件(PPT 93页)_第3页
第3页 / 共91页
MCS-51单片机接口技术培训课件(PPT 93页)_第4页
第4页 / 共91页
MCS-51单片机接口技术培训课件(PPT 93页)_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《MCS-51单片机接口技术培训课件(PPT 93页)》由会员分享,可在线阅读,更多相关《MCS-51单片机接口技术培训课件(PPT 93页)(91页珍藏版)》请在金锄头文库上搜索。

1、第9章 MCS 51单片机接口技术 9 1 键盘接口 9 2 显示器接口 9 3 A D转换器接口 9 4 D A转换器接口 9 5 步进电机控制 9 1 键盘接口 9 1 1 键盘概述 1 按键开关去抖动问题 图9 1 键盘抖动过程 键盘的抖动时间一般为5 10ms 抖动现象会引起CPU对一次 键操作进行多次处理 从而可能产生错误 消除抖动不良后果的方法 硬件去抖动 图9 2 硬件去抖动电路 其中RC滤波电路去抖动电路简单实用 效果较好 软件去抖动 检测到按键按下后 执行延时10ms子程序后再确认该键 是否确实按下 消除抖动影响 2 按键编码 1 用键盘连接的I O线的二进制组合表示键码 2

2、 顺序排列编码 首先确定按键的行号m 再确定按键的列号n 则 键码 行号m 4 列号n a 二进制组合编码 b 顺序排列编码 9 1 2 独立式按键 独立式按键特点 1 各按键相互独立 电路配置灵活 2 软件结构简单 3 按键数量较多时 I O线耗费较多 只适用于按键数量较少 的场合 独立式按键电路如图9 4所示 图9 4 独立式按键 图9 4 a 所示的独立按键扫描程序如下 KEYA ORL P1 07H 置P1 0 P1 2为输入态 MOV A P1 读键值 键闭合相应位为0 CPL A 取反 键闭合相应位为1 ANL A 00000111B 屏蔽高5位 保留有键值信息的低3位 JZ GR

3、ET 全0 无键闭合 返回 LCALL DY10ms 非全0 有键闭合 延时10ms 软件去抖动 MOV A P1 重读键值 键闭合相应位为0 CPL A 取反 键闭合相应位为1 ANL A 00000111B 屏蔽高5位 保留有键值信息的低3位 JZ GRET 全0 无键闭合 返回 非全0 确认有键闭合 JB Acc 0 KA0 转0 键功能程序 JB Acc 1 KA1 转1 键功能程序 JB Acc 2 KA2 转2 键功能程序 GRET RET KA0 LCALL WORK0 执行0 键功能子程序 RET KA1 LCALL WORK1 执行1 键功能子程序 RET KA2 LCALL

4、 WORK2 执行2 键功能子程序 RET 图9 4 b 所示的独立按键扫描程序如下 KEYB ORL P1 07H 置P1 0 P1 2为输入态 MOV A P1 读键值 键闭合相应位为1 ANL A 00000111B 屏蔽高5位 保留有键值信息的低3位 JZ GRET 全0 无键闭合 返回 LCALL DY10ms 非全0 有键闭合 延时10ms 软件去抖动 MOV A P1 重读键值 键闭合相应位为1 ANL A 00000111B 屏蔽高5位 保留有键值信息的低3位 JZ GRET 全0 无键闭合 返回 非全0 确认有键闭合 JB Acc 0 KB0 转0 键功能程序 JB Acc

5、1 KB1 转1 键功能程序 JB Acc 2 KB2 转2 键功能程序 GRET RET KB0 LCALL WORK0 执行0 键功能子程序 RET KB1 LCALL WORK1 执行1 键功能子程序 RET KB2 LCALL WORK2 执行2 键功能子程序 RET 9 1 3 矩阵式键盘 若需要的按键数目较多 通常采用矩阵式 也称行列式 键盘 I O端口线分为行线和列线 按键跨接在行线和列 线的交叉处 按键按下时 行线与列线连同 形成回路 其 特点是占用I O线较少 但软件较复杂 图9 5 矩阵式键盘结构 1 查询方式 v查询式确认键盘中有无键按下的基本方法是 以图9 5为例 P1

6、 4 P1 7输出0 即所有列线置成低电平 然后将行线 电平状态读入累加器A中 如果有键按下 总会有一根行线 电平被拉至低电平 从而使行输入状态不全为 1 v确认键盘中哪一个键按下的方法是 从P1 4开始 依次输出 0 置对应的列线为低电平 然后读入行线状态 如果全 为 1 则所按下之键不在此列 如果不全为 1 则所按下 的键必在此列 而且是与0电平行线相交的交点上的那个键 v确认键码的过程是 先确认行号 再确认列号 键码 行号 4 列号 参考程序如下 KEY MOV P1 0F0H 行线置低电平 列线置输入态 KEY0 MOV A P1 读列线数据 CPL A 数据取反 1 有效 ANL A

7、 0F0H 屏蔽行线 保留列线数据 MOV R1 A 存列线数据 R1高4位 JZ GRET 全0 无键按下 返回 KEY1 MOV P1 0FH 行线置输入态 列线置低电平 MOV A P1 读行线数据 CPL A 数据取反 1 有效 ANL A 0FH 屏蔽列线 保留行线数据 MOV R2 A 存行线数据 R2低4位 JZ GRET 全0 无键按下 返回 JBC F0 WAIT 已有消抖标志 转 SETB F0 无消抖标志 置消抖标志 LCALL DY10ms 调用10ms延时子程序消抖 SJMP KEY0 重读行线列线数据 GRET RET WAIT MOV A P1 等待按键释放 CP

8、L A ANL A 0FH JNZ WAIT 按键未释放 继续等待 KEY2 MOV A R1 取列线数据 高4位 MOV R1 03H 取列线编号初值 MOV R3 03H 置循环数 CLR C KEY3 RLC A 依次左移入C中 JC KEY4 C 1 该列有键按下 列线编号存R1 DEC R1 C 0 无键按下 修正列编号 DJNZ R3 KEY3 判循环结束否 未结束继续寻找有键按下的列线 KEY4 MOV A R2 取行线数据 低4位 MOV R2 00H 置行线编号初值 MOV R3 03H 置循环数 CLR C KEY5 RRC A 依次右移入C中 JC KEY6 C 1 该行

9、有键按下 行线编号存R2 INC R2 C 0 无键按下 修正行线编号 DJNZ R3 KEY5 判循环结束否 未结束继续寻找有键按下的行线 KEY6 MOV A R2 取行线编号 CLR C RLC A 行编号 2 RLC A 行编号 4 ADD A R1 行编号 4 列编号 按键编号 KEY7 CLR C RLC A 按键编号 2 RLC A 按键编号 4 LCALL RET共4字节 MOV DPTR TABJ JMP A DPTR 散转 执行相应键功能子程序 TABJ LCALL WORK0 调用执行0 键功能子程序 RET LCALL WORK1 调用执行1 键功能子程序 RET LC

10、ALL WORK15 调用执行15 键功能子程序 RET 2 定时扫描方式 图9 6 定时扫描流程 定时扫描方式 就是每隔一段 时间对键盘扫 描一次 它利 用单片机内部 的定时器产生 一定时间 例 如10 ms 的 定时 当定时 时间到就产生 定时器溢出中 断 CPU响应 中断后对键盘 进行扫描 3 中断方式 图9 7 中断键盘接口电路 具体工作如下 当键盘无键按下时 与门各输入端均为高电 平 输出端也为高电平 无中断请求 当有键按下时 相应 行线为低电平 与门输出端也为低电平 向CPU申请中断 若CPU开放外部中断 则会响应中断请求 转去执行键盘扫 描子程序 参考程序如下 ORG 0000H

11、 复位地址 LJMP STAT 转初始化 ORG 0003H 中断入口地址 LJMP PINT0 转中断服务程序 ORG 0100H 初始化程序首地址 STAT MOV SP 60H 置堆栈指针 SETB IT0 置为边沿触发方式 MOV IP 00000001B 置为高优先级中断 MOV P1 00001111B 置P1 0 P1 3置为输入态 置P1 4 P1 7输出0 SETB EA CPU开中 SETB EX0 开中 LJMP STAT 转主程序 并等待有键按下时中断 ORG 0200H 中断服务程序首地址 PINT0 PUSH Acc 保护现场 PUSH PSW MOV A P1 读

12、行线 P1 0 P1 3 数据 CPL A 数据取反 1 有效 ANL A 0FH 屏蔽列线 保留行线数据 MOV R2 A 存行线 P1 0 P1 3 数据 R2低4位 MOV P1 0F0H 行线置低电平 列线置输入态 MOV A P1 读列线 P1 4 P1 7 数据 CPL A 数据取反 1 有效 ANL A 0F0H 屏蔽行线 保留列线数据 A中高4位 MOV R1 03H 取列线编号初值 MOV R3 03H 置循环数 CLR C PINT01 RLC A 依次左移入C中 JC PINT02 C 1 该列有键按下 列线编号存R1 DEC R1 C 0 无键按下 修正列编号 DJNZ

13、 R3 PINT01 判循环结束否 未结束继续寻找有键按下列线 PINT02 MOV A R2 取行线数据 低4位 MOV R2 00H 置行线编号初值 MOV R3 03H 置循环数 PINT03 RRC A 依次右移入C中 JC PINT04 C 1 该行有键按下 行线编号存R2 INC R2 C 0 无键按下 修正行线编号 DJNZ R3 PINT03 判循环结束否 未结束继续寻找有键按下行线 PINT04 MOV A R2 取行线编号 CLR C RLC A 行编号 2 RLC A 行编号 4 ADD A R1 行编号 4 列编号 按键编号 MOV 30H A 存按键编号 POP PS

14、W POP Acc RETI 9 1 4 键盘控制器 MM74C922引脚 图9 8 MM74C922引脚 DATA OUT A DATA OUT B 键盘输出 接单片机输入口 COLUMN X1 X3 键盘列线 ROW Y1 Y4 键盘行线 Oscillator 振荡引脚 接电容 Keyboard Mask 按键淹没引脚 功能为硬件消抖动 Data Available 数据有效 Out Enable 输出使能 表9 1 MM74C922芯片输出与按键关系 按键键DCBA按键键DCBA 0000081000 1000191001 20010101010 30011111011 40100121

15、100 50101131101 60110141110 70111151111 图9 9 MM74C922与单片机连接 返回 9 2 显示器接口 9 2 1 LED数码管显示器结构 图9 10 7段LED数码管显示器 段选码 通常把控制发光二极管的8位二进制数称为段选码 显 示代码 各段码与数据位的对应关系如下 段码位 D7 D6 D5 D4 D3 D2 D1 D0 显示位 Dp g f e d c b a 表9 2 七段LED的段选码 0 3FH C0H C 39H C6H 1 06H F9H D 5EH A1H 2 5BH A4H E 79H 86H 3 4FH B0H F 71H 8EH

16、 4 66H 99H P 73H 8CH 5 6DH 92H U 3EH C1H 6 7DH 82H 31H CEH 7 07H F8H y 6EH 91H 8 7FH 80H 8 FFH 00H 9 6FH 90H 灭 00H FFH A 77H 88H B 7CH 83H 共阴极段选码共阴极段选码 共阳极段选码共阳极段选码显示字符显示字符 9 2 2 LED数码管显示器工作原理 1 LED静态显示 静态显示是指数码管显示某一字符时 相应的发光二极 管恒定导通或恒定截止 各位数码管相互独立 公共端恒定 接地 共阴极 或接正电源 共阳极 图9 11 一位静态LED显示 图9 12 3位静态LED显示 DIR1 MOV DPTR TAB MOV A 30H 读显示数 MOV B 100 置除数 DIV AB 产生百位显示数字 MOVC A A DPTR 读百位显示符 MOV DPTR 0DFFFH 置74377 百位 地址 MOVX DPTR A 输出百位显示符 MOV A B 读余数 MOV B 10 置除数 DIV AB 产生十位显示数字 MOV DPTR TAB 置共阳字段码表首址

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械/制造/汽车 > 机械/模具设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号