已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
于布尔处理的键盘矩阵解读方法探讨 宁波天安 集团 股份有限公司 张春峰 引 言 传统的各类电子专业的教科书上以及可查阅的文献资料中 有关 MCU 做键盘矩阵的扫描解读 大都是通过逐行逐列扫描 键值计算 键对应特征量返回 查表等数据处理的方式来进行扫描解 读的 为此还得设定在求键值时以辅助保存原值的行值 列值缓冲寄存器等 有的为了保证键每 闭合一次 MCU 只作一次处理 往往会在程序运行中等闭合键释放后才对其进行键解释处理 这 样键盘的扫描解读颇占 CPU 时间 降低了 CPU 的工作效率 本文揭示的是一种基于布尔处理 的新颖的键盘矩阵解读方法 下面结合图示并以 6 5 键盘矩阵解读为例进行描述 1 程序结构 基于布尔处理的键盘矩阵解读方法 也就是使整个键盘矩阵的扫描解读过程都能归结为系列的布 尔 位 的操作 扫描解读过程主要包括如下步骤 定义各标志位 键盘矩阵输出线扫描 查询有 无键按下 查询键解读标志位 消抖动延时 查询相对应的哪个输示端口电平有变化 查询相对 应的哪个输出端口输出扫描电平 相对应的哪个键作具体的解释处理 置位键解读标志位 流程 如图 1 所示 2 步骤阐述 2 1 定义各标志位 充分利用现行 MCU 内部能进行位操作的 RAM 资源 运用伪指令来定义系统中所牵涉的各标志 位 由于伪指令所揭示的定义只写在源程序的头文件上 是不会产生可执行目标代码的 因而对 标志位定义的 操作 在图 1 的程序流程简图中就没有表述 2 2 键盘矩阵输出线扫描 输出线扫描过程也是通过逐个改变输出行线端口的电平来实现的 如图 2 所示 输入口线平常所 有端口都处于高电平状态 输出口线是逐个循环的输出低电平 也就是任何时候只有一个口线输 出低电平 通过键的按下接通 才有可能拉低相对应输入口线的端口电平 如果系统中配置有数码显示电路 则电路结构如图 3 所示 输入口线平常也都处于高电平状态 输出口线却是逐个循环的输出高电平 通过反相组件后扫描线才成为低电平 通过键的按下接通 同样拉低相对应输入口线的端口电平 这样将键盘输出线扫描能与数码显示的位扫描程序合二为 一了 也就能省却了键盘扫描的单独执行 把键盘扫描纳入到系统扫描显示的大循环中 2 3 查询有无键按下 有无键按下自然是通过对键盘扫描输入口状况的查询来确定的 有键按下 键盘扫描输入端口也 就相应有所改变了 如果输入端口如图 2 所示 是集中在同一个 Pn 口的 其中 n O 1 2 那么可以用对整个 Pn 口的字节数据的判别来确定键有否按动 也可运用依次 对 Pn 口的几个端口 Pn y 进行位的查询来确定有无键按下 其中 y O 1 2 3 4 如果输入口不是集中的 为了设计布线的方便而零乱分散于 PO 口 P2 口 Pn 口等不同的 P 口上 那么只能通过依次地对输入各端口的位状态变化的查询来确定有否键按下 若检查到有键 按下 就转入到键盘矩阵扫描解读程序 若没有键按下 则清一次键解读标志位为逻辑 0 为下 次按键解读作好准备 2 4 查询键解读标志位 检查有键按下后首先查询键解读标志位的状态是处于逻辑 O 还是逻辑 1 若是逻辑 O 说明本次 按键尚未解读过 经消抖动延时后需进一步对键盘矩阵的输出 输入口线进行查询来确定是哪一 个键 并作相应处理 若键解读标志位是逻辑 1 则表明本次按键已解读过了 没必要浪费 CPU 时间 可直接从键扫 描处理程序中返回 这就实现了键每闭合一次 MCU 只作一次处理的效果 改变了传统的为了 保证键每闭合一次 MCU 只作一次处理 程序中需等待键释放后才对其进行解释的弊病 2 5 消抖动延时 当觉察有键按下 查询键解读标志位为 0 时 就置位消抖动延时标志位及其辅助位进入消抖动延 时处理 消抖动延时的具体进行可调备用的消抖动延时程序 也可借助对系统大循环次数的计数 或动用 MCU 内部定时器的中断来实现消抖动延时 这样就不必设置专门的延时程序而占用 CPU 的时间了 消抖动延时结束时清零消抖动延时标志位及其辅助位 2 6 查询哪个输入口线电平有变化 平常所有输入端口都处于高电平 经消抖动延时后就查询键盘矩阵各输入口线的电平是否有被拉 低 若一个端口也没被拉低 则说明本次按键无效 可能是某种干扰引起的 抖动 于是直接返 回 若依次查询作为输入的 Pn y 各端口的其中某个端口电平被拉低 则表明本次按键是有效的 将 跳转至查询与该口线交叉相关的那个输出口线 2 7 扫描哪个输出口线输出有效电平 图 2 所示的键盘矩阵电路结构中 输出端口 Pm x 与输入端口 Pn y 是直接由键连接交叉的 当 键按下时哪一个输入端口的电平被拉低确定后 则跳转到查询 Pm x Pm 0 Pm 1 Pm 2 Pm 3 Pm 4 Pm 5 六个端口中是哪个端口输出低电平 进而确定 具体哪一个键按下 跳转至几号键进行解释处理 任何时候扫描输出低电平的端口是唯一的 也 只有行扫描输出低电平的那个 Pm x 口 才会将列输入 Pn y 口的电平拉低 这时 键按下有效 交叉的行 列相应端口都处于低电平 若运用典型的 51 系列 MCU 的指令去写汇编程序来解读矩阵的具体键时 则有 以上汇编语言所述的键盘矩阵扫描解读过程 可借助图 4 来较形象化地解释 由图 4 可见 每一 Pn y y 0 1 2 3 4 口都与 Pm x x 0 1 2 3 4 5 的 6 个口有关 联 而每一 Pn y 口线与 Pm x 的 6 个口线中任一口线相交都揭出一个键 i 号 结合以上程序 若输入端口 Pn 0 被拉低 且是端口 Pm 1 有效扫描输出低电平 则有 JNB Pn 0 Key matrix 0 指令跳转至 Key matrix 0 继而查询输出端口 JNB Pm 1 Key gloze 6 跳转至 Key gloze 6 也就是先查询到 Pn 0 被拉低跳转至 Key matrIx O 一再查询到 Pm 1 扫描输出低电平跳转至 Kev gloze 6 一揭出是 6 号键按下并赋 予其相应的解释处理 以此类推 如果键盘矩阵的电路结构如图 3 所示 其扫描输出端口 Pm x 不是直接与输入端口 Pn y 交叉的 而是经过用于数码显示位驱动的反相组件后再与入端口 Pn y 交叉的 为此 其扫描输出有效 端口不是低电平了 而是输出高电平经反相组件后再成为低电平 通过按键同样将与之交叉的输 入端口线拉低 所以 在查询输入端口时与图 2 所示的是相同的 而在查询扫描输出有效端口时 与图 2 的就有所不同了 图 2 所示电路结构查询的是哪个端口扫描输出低电平 有 JNB Pm x Key gloze i 图 3 所示电路结构查询的却是哪个端口扫描输出高电平 则 JB Pm x Key gloze i 由图 4 可知 若输入端口 Pn 2 被拉低 且是端口 Pm 3 有效扫描输出高电平 则有先查询到 Pn 2 被拉低一再查询到 Pm 3 扫描输出高电平一揭出是 18 号键按下并赋予其相应的解释处 理 依此类推 具体的程序跳转如图 5 所示 可见其过程都是位的查询跳转 2 8 执行各对应键具体处理 因为输出口线为行线 与输入口线为列线的交义点是唯一的 故确定了输出哪一端口与输入哪一 端口 也就确定了具体哪一个键 i 号键 按下了 就能赋予该键相应的解释处理 整个过程中 没 必要区别哪个是数字键 哪个是功能键 每一个键的解读都是等价的 是数字键就直接赋予其相 应的数值处理 是功能键就直接赋予其具体的功能解释 2 9 置位键解读标志位 为保证键每闭合一次 MCU 只作一次处理 每一次键解读后都将置键解读标志位为逻辑 1 对于 键解读标志位的置位 可以在每一个键解释处理完毕后进行 也可在消抖动延时后就进行一次总 置 不管键有多少个 键解读标志位用的却是同一个 其实 引入了键解读标志位 不只是控制键每闭合一次 MCU 只作一次处理 还可对那些持久按 着的键有控地进行多次处理 如用于对一些数据递进 或递减的连续设置等 3 原理综述 本文提出基于布尔处理的键盘矩阵解读方法 其原理如下 在键盘矩阵扫描时 首先检查有否键按动 若无键按动 则清零一次键解读标志位就返回 若有 键按下 则再查询键解读标志位是逻辑 0 还足逻辑 1 如果是逻辑 1 表明本次按键已解读过 可直接从键扫描处理程序中返回 如果是逻辑 0 说明本次按键尚末解读过 则启用消抖动延时 经消抖动延时后即查询键盘矩阵输入口线的各端口足否有拉低 若一个端口也没被拉低 则说明 本次按键无效 那可能是某种干扰引起的 抖动 立即从键扫描处理程序中返回 若查询到其中 之一端口的电平被拉低了 则表明本次按键盘是有效的 将跳转查询与之相交的那个扫描有效输 出口线 进而确定具体是哪一个键按下 并跳转赋予其相应的解释处理 解释处理后 置键解读 标志位为逻辑 1 再返回 即完成一次键盘矩阵的扫描解读 不管键盘矩阵有多少个键 其扫描确定一个具体键所需位查询的总次数 S 不会大于行数 x 与列数 y 之和 但也不少于 2 次 即 2 S x y 如上述的 6 5 矩阵 最多所需位杏询总次数 S 5 6 11 当第 30 号键按下 查询到最后一列 Pn 4 端口电平被拉低 继而跳转查询到有效 扫描输出足最后一行 Pm 5 端口 但至少所需位查询总次数 S 1 1 2 当 1 号键按下 先查询 到第 1 列 Pn O 端口电平被拉低 继而跳转查询到有效扫描输出是第 1 行 Pm O 端口 结 语 运用布尔位操作处理进行键盘矩阵的解读 可适用于所有基于 MCU 的智能化仪器仪表中键盘矩 阵的解读 运用布尔位操作方式 改变了传统的用数据字节处理方式 扫描解读过程中 没有键 值计算 没有键对应的特征值返回 同时也省去了求键值时以辅助保存原值的行值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床路径风险预警的虚拟仿真模型构建
- 硕士毕业论文指导老师评语大全
- 业财融合成本管控机制
- 专科生毕业论文写作规范-论文格式-
- 商务管理专业毕业论文范文
- 毕业论文目录及正文格式要求
- 战略成本管理方法
- 新媒体环境下综艺节目发展趋势研究
- 语言学类毕业论文格式
- 合并糖尿病肿瘤患者临床试验血糖管理方案
- 初中数学大纲与初中数学知识点总结
- 2024黑龙江省建筑安装集团限公司面向社会招聘114人公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- JJG 365-2008电化学氧测定仪
- 停车场引资计划书
- 保卫科月工作总结
- 整本书阅读教学设计案例
- 律师事务所投标书(两份)
- 食品安全风险管控日管控检查清单
- 《思想道德与法治》学习法治思想 提升法治素养-第六章
- AI人工智能应用介绍PPT
- 央视《大风车》栏目评析
评论
0/150
提交评论