MCS51与键盘显示器的接口设计.ppt_第1页
MCS51与键盘显示器的接口设计.ppt_第2页
MCS51与键盘显示器的接口设计.ppt_第3页
MCS51与键盘显示器的接口设计.ppt_第4页
MCS51与键盘显示器的接口设计.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7 5MCS 51与键盘 显示器的接口设计 输入外设 键盘 输出外设 LED显示器 1LED显示器接口原理 LED LightEmittingDiode 发光二极管的缩写 显示器前面冠以 LED 1 1LED显示器的结构 常用的LED显示器为8段 或7段 8段比7段多了一个小数点 dp 段 有共阳极和共阴极两种 如图10 1所示 为使LED显示不同的符号或数字 要为LED提供段码 或称字型码 提供给LED显示器的段码 字型码 正好是一个字节 8段 各段与字节中各位对应关系如下 按上述格式 8段LED的段码如表10 1所示 表10 1LED段码 8段 表10 1只列出了部分段码 可根据实际情况选用 另外 段码是相对的 它由各字段在字节中所处的位决定 例如表10 1中8段LED段码是按格式 而形成的 0 的段码为3FH 共阴 反之 如将格式改为下列格式 则 0 的段码为7EH 共阴 字型及段码由设计者自行设定 习惯上还是以 a 段对应段码的最低位 N个LED显示块有N位位选线和8 N根段码线 1 2LED显示器工作原理 图10 2是4位LED显示器的结构原理图 段码线控制显示的字型 位选线控制该显示位的亮或暗 静态显示和动态显示两种显示方式 1 静态显示方式 各位的公共端连接在一起 接地或 5V 每位的段码线 a dp 分别与一个8位的锁存器输出相连 显示字符一确定 相应锁存器的段码输出将维持不变 直到送入另一个段码为止 显示的亮度高 图10 3 4位静态LED显示器电路 该电路各位可独立显示 2 动态显示方式 所有位的段码线相应段并在一起 由一个8位I O口控制 形成段码线的多路复用 各位的公共端分别由相应的I O线控制 形成各位的分时选通 图10 4 4位8段LED动态显示电路 其中段码线占用一个8位I O口 而位选线占用一个4位I O口 图10 5为8位LED动态显示2003 10 10的过程 图 a 是显示过程 某一时刻 只有一位LED被选通显示 其余位则是熄灭的 图 b 是实际显示结果 人眼看到的是8位稳定的同时显示的字符 2键盘接口原理 1 键盘输入的特点 键盘 一组按键开关的集合 行线电压信号通过键盘开关机械触点的断开 闭合 输出波形如图10 6 2 按键的确认 检测行线电平高电平 断开 低电平 闭合 常用软件来消除按键抖动 基本思想 检测到有键按下 键对应的行线为低 软件延时10ms后 行线如仍为低 则确认该行有键按下 3 如何消除按键的抖动 当键松开时 行线变高 软件延时10ms后 行线仍为高 说明按键已松开 采取以上措施 躲开了两个抖动期t1和t3的影响 2键盘接口的工作原理 独立式按键接口和行列式键盘接口 1 独立式键盘接口 各键相互独立 每个按键各接一根输入线 通过检测输入线的电平状态可很容易判断那个键被按下 此种接口适于键数较少或操作速度较高的场合 图10 7 a 为中断方式的独立式键盘工作电路 图10 7 b 为查询方式的独立式键盘工作电路 图10 8为8255A扩展I O口的独立式按键接口电路 图10 9用三态缓冲器扩展的I O口的按键接口电路 对图10 9独立式键盘编程 软件消抖 查询方式检测键的状态 仅有一键按下时才有效才处理 KEYIN MOVDPTR 0BFFFH 键盘端口地址BFFFHMOVXA DPTR 读键盘状态ANLA 1FH 屏蔽高三位 MOVR3 A 保存键盘状态值LCALLDELAY10 延时10ms去键盘抖动MOVXA DPTR 再读键盘状态 ANLA 1FH 屏蔽高三位 CJNEA R3 RETURN 两次不同 抖动引起转RETURN CJNEA 1EH KEY2 相等 有键按下 不等转KEY2 LJMPPKEY1 是K1键按下 转K1键处理 子程序PKEY1KEY2 CJNEA 1DH KEY3 S2键未按下 转KEY3LJMPPKEY2 S2键按下 转PKEY2处理KEY3 CJNEA 1BH KEY4 S3未按下 转KEY4LJMPPKEY3 S3按下 转PKEY3处理KEY4 CJNEA 17H KEY5 S4键未按下 转KEY5LJMPPKEY4 S4按下 转PKEY4处理KEY5 CJNEA 0FH PASS S5未按下 转RETURNLJMPPKEY5 S5按下 转PKEY5处理RETURN RET 重键或无键按下 从子程序返回 识别和编程简单 用在按键数较少的场合 2 行列式 矩阵式 键盘接口 用于按键数目较多的场合 由行线和列线组成 按键位于行 列的交叉点上 如图10 10所示 按键数目较多的场合 行列式键盘与独立式键盘相比 要节省很多的I O口线 1 行列式键盘工作原理 无键按下 该行线为高电平 当有键按下时 行线电平由列线的电平来决定 由于行 列线为多键共用 各按键彼此将相互发生影响 必须将行 列线信号配合起来并作适当的处理 才能确定闭合键的位置 2 按键的识别方法 a 扫描法 图10 10 b 中3号键被按下为例 来说明此键时如何被识别出来的 识别键盘有无键被按下的方法 分两步进行 第1步 识别键盘有无键按下 第2步 如有键被按下 识别出具体的按键 把所有列线置0 检查各行线电平是否有变化 如有变化 说明有键按下 如无变化 则无键按下 上述方法称为扫描法 即先把某一列置低电平 其余各列为高电平 检查各行线电平的变化 如果某行线电平为低 可确定此行列交叉点处的按键被按下 b 线反转法 只需两步便能获得此按键所在的行列值 线反转法的原理如图10 11 第1步 列线输出为全低电平 则行线中电平由高变低的所在行为按键所在行 第2步 行线输出为全低电平 则列线中电平由高变低所在列为按键所在列 结合上述两步 可确定按键所在行和列 3 键盘的编码 根据实际需要灵活编码 2 3键盘的工作方式 单片机在忙于各项工作任务时 如何兼顾键盘的输入 取决于键盘的工作方式 原则 即要保证能及时响应按键操作 又不要过多占用CPU的工作时间 通常 键盘工作方式有3种 即编程扫描 定时扫描和中断扫描 1 编程扫描方式 只有当单片机空闲时 才调用键盘扫描子程序 扫描键盘 工作过程 1 在键盘扫描子程序中 先判断有无键按下 方法 PA口8位输出全0 读PC口低4位状态 若PC0 PC3为全1 则说明键盘无键按下 若不全为1 则说明键盘可能有键按下 2 用软件来消除按键抖动的影响 如有键按下 则进行下一步 3 求按下键的键号 4 等待按键释放后 再进行按键功能的处理操作 2 定时扫描工作方式 利用单片机内的定时器 产生10ms的定时中断 对键盘进行扫描 3 中断工作方式 只有在键盘有键按下时 才执行键盘扫描程序 如无键按下 单片机将不理睬键盘 键盘所做的工作分为三个层次 如图10 13 第1层 单片机如何来监视键盘的输入 三种工作方式 编程扫描 定时扫描 中断扫描 第2层 确定具体按键的键号 体现在按键的识别方法上就是 扫描法 线反转法 第3层 执行键处理程序 3键盘 显示器接口设计实例 一般把键盘和显示器放在一起考虑 3 1利用并行I O芯片实现键盘 显示器接口 图10 14 8031用扩展I O接口芯片8155H实现的6位LED显示和32键的键盘 显示器接口电路 图中8155H也可用8255A来替代 8031外扩一片8155H RAM地址 7E00H 7EFFH I O口地址 7F00H 7F05H PA口为输出口 控制键盘列线的扫描 同时又是6位共阴极显示器的位扫描口 PB口作为显示器段码输出口 PC口作为键盘的行线状态的输入口 75452 反相驱动器 7407 同相驱动器 1 动态显示程序设计 8031内部RAM6个显示缓冲单元 79H 7EH 存放要显示的6位数据 8155H的PB口输出相应位的段码 依次改变PA口输出为高的位使某一位显示某一字符 其它位为暗 动态地显示出由缓冲区中显示数据所确定的字符 程序流程如图10 15 参考程序 DIR MOVR0 79H 置缓冲器指针初值 MOVR3 01H 位选码的初值送R3 MOVA R3 LD0 MOVDPTR 7F01H 位选码 PA口 PA 0位 最左边LED亮 MOVX DPTR A INCDPTR 数据指针指向PB口 MOVA R0 显示数据 A ADDA 0DH 加偏移量 下条指令到表首间 所有指令占的单元数 MOVCA A PC 根据显示数据来查表取段码 DIR1 MOVX DPTR A 段码 8155HPB口 ACALLDL1ms 该位显示1ms INCR0 指针指向下一个数据单元 MOVA R3 位选码送入A中 JBAcc 5 LD1 判断是否扫描到最右边的 LED 如到最右边则返回 RLA 位选码向左移一位 准备让 右边的下一位LED亮 MOVR3 A 位选码送R3中保存 AJMPLD0 LD1 RET DSEG DB3FH 06H 5BH 4FH 66H 6DH 共阴极段码表DB7DH 07H 7FH 6FH 77H 7CHDB39H 5EH 79H 71H 73H 3EH DB31H 6EH 1CH 23H 40H 03H DB18H 00H DL1ms MOVR7 02H 延时1ms子程序 DL MOVR6 0FFH DL6 DJNZR6 DL6 DJNZR7 DL RET 2 键盘程序设计 1 判别键盘上有无键闭合 2 去除键的机械抖动 3 判别闭合键的键号 4 使CPU对键的一次闭合仅作一次处理 键盘程序的流程如图10 16 键盘子程序如下 KEYI ACALLKS1 调用判有无键闭合子程序 JNZLK1 有键闭合 跳LK1 NI ACALLDIR 无键闭合 调用显示子程序 延 迟6ms后 跳KEYI AJMPKEYI LK1 ACALLDIR 可能有键闭合 软件延迟12ms去抖 ACALLDIR ACALLKS1 调用判有无键闭合子程序 JNZLK2 经去抖 判键确实闭合 跳LK2 ACALLDIR 调用显示子程序延迟6ms AJMPKEYI 抖动引起 跳KEYI LK2 MOVR2 0FEH 列选码 R2 MOVR4 00H R4为列号计数器 LK4 MOVDPTR 7F01H 列选码 8155H的PA口 MOVA R2 MOVX DPTR A INCDPTR 数据指针增2 指向PC口 INCDPTR MOVXA DPTR 读8155HPC口 JBAcc 0 LONE 0行线为高 无键闭合 跳LONE 转判1行 MOVA 00H 0行有键闭合 首键号0 A AJMPLKP 跳LKP 计算键号 LONE JBAcc 1 LTW0 1行线为高 无键闭合 跳LTW0 转判2行 MOVA 08H 1行有键闭合 首键号8 A AJMPLKP LTW0 JBA 2 LTHR 2行线为高 无键闭合 跳 LTHR 转判3行 MOVA 10H 2行有键闭合 首键号10H A AJMPLKP 跳LKP 计算键号 LTHR JBAcc 3 NEXT 3行线为高 无键 闭合 跳NEXT 准备下一列扫描 MOVA 18H 3行有键闭合 首键号18H A LKP ADDA R4 计算键号 首键号 列号 键号 PUSHA 键号进栈保护 LK3 ACALLDIR 调用显示子程序 延时6ms ACALLKS1 调用判有无键闭合子程序 延时 6ms JNZLK3 判键释放否 未释放 则循环 POPA 键已释放 键号出栈 A RET NEXT INCR4 列计数器加1 为下一列扫描作准备 MOVA R2 判是否已扫到最后一列 最右一列 JNBAcc 7 KND 键扫描已扫到最后一列 跳KND 重新进行整个键盘扫描 RLA 键扫描未扫到最后一列 位选码左移 一位 MOVR2 A 位选码 R2 AJMPLK4 KND AJMPKEYI KS1 MOVDPTR 7F01H 判有无键闭合子程序 全 0 扫描口 PA口 MOVA 00H 即列线全为低电平 MOVX DPTR A INCDPTR DPTR增2 指向PC口 INCDPTR 指针增1 指向PC口 MOVXA DPTR 从PC口读行线的状态 CPLA 行线取反 如无键按下 则A为0 ANLA 0FH 屏蔽无用的高4位 RET 3 2利用8031的串行口实现键盘 显示器接口 串口未作它用 可用来外扩键盘 显示器 串口为方式0输出 串口外接移位寄存器74LS164 接口电路如图10 17 74LS164 0 74LS164 7 作为8位LED的段码输出 8031的P3 4 P3 5 两行键的行状态输入 P3 3 TXD 同步移位脉冲输出控制线 优点 亮度大 容易做到显示不闪烁 且CPU不必频繁的为显示服务 从而使单片机有更多的时间处理其它事务 显示子程序 DIR SETBP3 3 P3 3 1允许TXD脚同步移位 脉冲输出 MOVR7 08H 送出的段码个数 R7为段 码个数计数器 MOVR0 7FH 7FH 78H为显示数据缓冲区 DL0 MOVA R0 取出要显示的数送A ADDA 0DH 加上偏移量 MOVCA A PC 查段码表SEGTAG 取出段码 MOVSBUF A 将段码送SBUF DL1 JNBTI DL1 输出段码 查询TI状态 1个字节 的段码输出完否 CLRTI 1个字节的段码输出完 清TI标志 DECR0 指向下一个显示数据单元 DJNZR7 DL0 段码个数计数器R7是否为0 如不 为0 继续送段码 CLRP3 3 8个段码输出完毕 关显示器输出 RET 返回 SEGTAB DB0C0H 0F9H 0A4H 0B0H 99H 共阳极段码表 0 1 2 3 4 DB92H 82H 0F8H 90H 5 6 7 8 9 DB88H 83H 0C6H 0A1H 86H A B C D E DB8FH 0BFH 8CH 0FFH 0FFH F P 暗 键盘扫描子程序 KEYI MOVA 00H 判有无键按下 使所有列线为0 的编码送A MOVSBUF A 扫描键盘的 8 号74LS164输 出为00H 使所有列线为0 KL0 JNBTI KL0 串行输出完否 CLRTI 串行输出完毕 清TI KL1 JNBP3 4 PK1 第1行有闭合键吗 如有 跳 PK1进行处理 JBP3 5 KL1 在第2行键中有闭合键吗 无闭 合键跳KL1 PK1 ACALLDL10 调用延时10ms子程序DL1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论