uC2012Ch8-1键盘显示sxj.ppt_第1页
uC2012Ch8-1键盘显示sxj.ppt_第2页
uC2012Ch8-1键盘显示sxj.ppt_第3页
uC2012Ch8-1键盘显示sxj.ppt_第4页
uC2012Ch8-1键盘显示sxj.ppt_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

第8章键盘显示及模拟量通道技术 8 1键盘 显示器接口扩展技术8 2模拟量I O通道 8 1键盘 显示器接口扩展技术 8 1 1显示器结构与工作原理8 1 2键盘接口工作原理 8 1 1显示器结构与工作原理 显示器概述作用显示单片机的运行结果与运行状态分类LED 发光二极管 亮度清晰 成本低 控制简单LCD 液晶 功耗低CRT 阴极射线管 图形显示方便使用场合电子显示屏 工业测控领域 仪器仪表 电子钟 家用电器等 LED数码管显示器结构 LED数码管显示原理与段码 11111100 00000011 共阳段码表 共阴段码表 3FH C0H 显示代码表 LED数码显示方法 静态动态 2 静态显示法接口设计 静态显示每个显示器各笔画段都独占具有锁存功能的输出口线因为各笔画段接口具有锁存功能 CPU不再去访问它 显示的内容也不会消失优点程序简单 显示亮度大 节约了CPU时间缺点占用的I O口线较多 成本较高 典型静态显示接口图一 程序 1 8位显示 显示缓冲30H 37H 用串口方式0DIS MOVSCON 00HMOVR0 30HMOVR7 08HMOVDPTR TABLP MOVA R0MOVCA A DPTRMOVSBUF AJNBTI CLRTIINCR0DJNZR7 LPRETTAB DB3FH 06H CLKBITP1 0DABBITP1 1DIS MOVR0 30HMOVR7 08HMOVDPTR TABLP MOVA R0MOVCA A DPTRMOVR6 08H 程序 2 8位显示 显示缓冲30H 37H 用P1 0 CLK P1 1 DAB LP0 CLRCLKRRCA 循环右移MOVDAB CSETBCLKDJNZR6 LP0INCR0DJNZR7 LPRETTAB DB3FH 06H 典型静态显示接口图二 静态显示应用 静态显示应用 3 动态扫描显示法接口设计 动态扫描显示对于一组LED数码显示器需要两组信号来控制段码 字段输出口输出的字形代码位码 输出口的控制信号 选择第几位显示器工作一位一位地显示器数码 动态扫描显示利用人的 视觉暂留效应 显示刷新的频率达到30Hz以上 否则会出现闪烁 例1 8255A作显示器接口 要求6个LED采用共阳极连接79H 7EH 存放6位显示器的显示数据 0 9 8255的A口 LED显示器段控8255的C口 LED显示器位控 8255的口地址A口 7FFCHB口 7FFDH C口 7FFEH控制寄存器 7FFFH 段控 位控 共阳极 MODE MOVA 80H 10000000B 80HA C口基本输出MOVDPTR 7FFFH 控制字MOVX DPTR ADISP MOVR0 30H 显示缓冲MOVR2 01H 6个显示器 位选点亮的初始码 程序 8255A初始化 共阳极 LOOP MOVA 0FFH 灭码 共阳极 MOVDPTR 7FFCH A口为段选MOVX DPTR AMOVA R2MOVDPTR 7FFEH C口为位选MOVX DPTR AMOVA R0MOVDPTR TABMOVCA A DPTR 查段码MOVDPTR 7FFCH A口地址MOVX DPTR A 向A口输出段码ACALLDY1MS 显示数据稳定 可保持亮度 8255的口地址A口 7FFCHC口 7FFEH INCR0 指向下一个显示缓冲MOVA R2JBACC 5 EXIT 到第6个数码管了 RLAMOVR2 AAJMPLOOPEXIT RETTAB DB0C0H 0F9H 0A4H 0B0H 99H 92H 82H 0F8H 80HDB90H 88H 83H 0C6H 0A1H 86H 8EH 8CH 0BFH 0FFH 8 1 2键盘接口工作原理 键盘人机交互的一个重要工具两种基本类型编码键盘除了按键以外 还包括产生键码的硬件电路使用方便 价格较高非编码键盘靠软件来识别键盘上的闭合键 由此计算出编码几乎不需要附加硬件逻辑在单片机应用系统中被普遍使用 1 非编码键盘的工作原理 分类硬件编码式键盘 二维直读式键盘独立式键盘 简单键盘 行列式键盘 矩阵式键盘 独立式按键行列式键盘 0111 1011 1101 1110 2 按键开关去抖动问题 按键抖动在按下和释放时 按键有抖动按键时间 100ms前跳沿和后跳沿 20ms 抖动时间一般为5 10ms A 为确保 对键的一次闭合仅作一次处理必须 去除抖动 3 消除抖动不良后果的方法 硬件去抖动RC滤波电路去抖动电路简单实用 效果较好 软件去抖动检测到按键按下后 执行延时10ms子程序后再确认该键是否确实按下 消除抖动影响 键处理的流程图 4 独立式按键 处理过程查键 扫描有否键按下 若无键按下 返回有键按下软件去抖 延时20ms找键等键释放软件去抖 延时20ms 例1 有键按下 返回键值 否则 返回0FFH 准备输入 KE2 MOVB 0 保存键值0KE3 ANLA 3FHRRCA A 0 CyJNCKE4INCBSJMPKE3KE4 ORLP1 3FHMOVA P1ANLA 3FHCJNEA 3FH KE4MOVA B 返回键值CJNEA 06H KE5KE5 JCKE6 Cy 1 A 6KE6 RET KE ORLP1 3FHMOVA P1ANLA 3FH P1 0 P1 5CJNEA 3FH KE1SJMPKE7 无键按下KE1 LCALLDL20 延时去抖ORLP1 3FH 修改P1MOVA P1 读P1ANLA 3FHCJNEA 3FH KE2SJMPKE7 误动作返回 5 矩阵式键盘 工作方式查询定时每隔一段时间对键盘扫描一次利用单片机内部的定时器的定时器溢出中断 中断 中断方式 0000 1111 处理过程键扫描确认有无按键按下去抖动延时按键的识别 确定键的行 列号扫描算法 线反转法键号的确定等待键释放 扫描算法 逐行置低电平 其余各行为高电平 检查各列电平的变化 如果某列线电平为低电平 即可确定此行列线交叉点处的按键被按下 交换行列线的输出读取关系也可以实现 线反转法 首先 将行线编程为输入线 列线编程为输出线 然后使列线线全输出低电平 读取行线电平 行线从高电平转为低电平的行线为按下按键所在行 然后 将列线编程为输入线 行线编程为输出线 然后使行线全输出低电平 读取列线电平 列线从高电平转为低电平的列线为按下按键所在列 例1 扫描算法 用8255A作单片机键盘接口 A口为输出口接键盘列线 C口为输入口接键盘的4条行线 8255A地址A口 7FFCHB口 7FFDHC口 7FFEH控制寄存器 7FFFH 子程序KSI 判定有无闭合键的 KSI MOVDPTR 7FFCH A口地址MOVA 00HMOVX DPTR A A口送00HINCDPTRINCDPTR C口地址MOVXA DPTR 读C口CPLAANLA 0FH 屏蔽高四位RET 00000000 有闭合键 则 A 0无闭合 则 A 0 1111 KEY1 ACALLKSI 检查是否有键闭合JNZLK1 A非 0 则转移ACALLDLY6 延时6msAJMPKEY1LK1 ACALLDLY6 有键闭合二次延时ACALLDLY6 共12ms去抖动ACALLKSI 再检查是否有键闭合JNZLK2 有键闭合转移到LK2ACALLDLY6AJMPKEY1 无键闭合 延时6ms后转KEY1 有闭合键 则 A 0无闭合 则 A 0 LK2 MOVR2 0FEH 扫描初值送R2MOVR4 00H 扫描列号送R4 第0列LK4 MOVDPTR 7FFCH A口地址MOVA R2MOVX DPTR A 扫描初值送A口INCDPTRINCDPTR C口地址MOVXA DPTR 读C口 有闭合键 则 A 0无闭合 则 A 0 01111111 JBACC 0 LONE ACC 0 1 第0行无键闭合 转LONEMOVA 00H 装第0行值AJMPLKPLONE JBACC 1 LTWO ACC 1 1 第1行无键闭合 转LTWOMOVA 08H 装第1行值AJMPLKPLTWO JBACC 2 LTHR ACC 2 1 第2行无键闭合 转LTHRMOVA 10H 装第2行值AJMPLKPLTHR JBACC 3 NEXT ACC 3 1 第3行无键闭合 转NEXTMOVA 18H 装第3行值LKP ADDA R4 计算键码PUSHACC 保护键码LK3 ACALLDIR 延时6msACALLKSI 检查是否继续闭合 若闭合再延时JNZLK3POPACC 若键起 则键码送A 扫描列号 R4 NEXT INCR4 扫描列号加1MOVA R2JNBACC 7 KEND 若第7位 0 已扫完最高列则转KNDRLAMOVR2 AAJMPLK4 进行下一列扫描KEND 扫描完毕 扫描列号 R4 键盘 显示一体8255接口图 小结 键盘接口工作原理相应的程序设计方法 实验 键盘扫描显示 74LS245 双向总线收发器 74LS273 地址锁存器 例2 静态显示两位十进制数 MOVA 35H 将显示数的BCD码送累加器AMOVDPTR 0FEFFH 取显示口地址MOVX DPTR A 送显示数 0 例3 DIR1 MOVA 30H 读显示数MOVB 100 置除数DIVAB 产生百位显示数字MOVDPTR TABMOVCA A DPTR 读百位显示符 段码 字型码 MOVDPTR 0DFFFH 置74377 百位 地址MOVX DPTR A 输出百位显示符 段码 字型码 MOVA B 读余数MOVB 10 置除数DIVAB 产生十位显示数字MOVDPTR TAB 置共阳字段码表首址MOVCA A DPTR 读十位显示符 段码 字型码 MOVDPTR 0BFFFH 置74377 十位 地址MOVX DPTR A 输出十位显示符 段码 字型码 显示存在内RAM中30H开始的数据 255 MOVA B 读个位显示数字MOVDPTR TAB 置共阳字段码表首址MOVCA A DPTR 读个位显示符MOVDPTR 7FFFH 置74377 个位 地址MOVX DPTR A 输出个位显示符RET 共阳字段码表TAB DB0C0H 0F9H 0A4H 0B0H 99HDB92H 82H 0F8H 80H 90H 例2 线反转法 KEY MOVP1 0F0H 行线置低电平 列线置输入态KEY0 MOVA P1 读列线数据CPLA 数据取反 1 有效ANLA 0F0H 屏蔽行线 保留列线数据MOVR1 A 存列线数据 R1高4位 JZGRET 全0 无键按下 返回KEY1 MOVP1 0FH 行线置输入态 列线置低电平MOVA P1 读行线数据CPLA 数据取反 1 有效ANLA 0FH 屏蔽列线 保留行线数据MOVR2 A 存行线数据 R2低4位 JZGRET 全0 无键按下 返回JBCF0 WAIT 已有消抖标志 转SETBF0 无消抖标志 置消抖标志LCALLDY10ms 调用10ms延时子程序消抖SJMPKEY0 重读行线列线数据GRET RET 参考程序 WAIT MOVA P1 等待按键释放CPLAANLA 0FHJNZWAIT 按键未释放 继续等待KEY2 MOVA R1 取列线数据 高4位 MOVR1 03H 取列线编号初值MOVR3 03H 置循环数CLRCKEY3 RLCA 依次左移入C中JCKEY4 C 1 该列有键按下 列线编号存R1 DECR1 C 0 无键按下 修正列编号DJNZR3 KEY3 判循环结束否 未结束继续寻找有键按下的列线KEY4 MOVA R2 取行线数据 低4位 MOVR2 00H 置行线编号初值MOVR3 03H 置循环数CLRCKEY5 RRCA 依次右移入C中JCKEY6 C 1 该行有键按下 行线编号存R2 INCR2 C 0 无键按下 修正行线编号DJNZR3

温馨提示

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

评论

0/150

提交评论