欢迎来到天天文库
浏览记录
ID:15946834
大小:88.00 KB
页数:8页
时间:2018-08-06
《采用布尔处理的键盘矩阵解读方法分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、采用布尔处理的键盘矩阵解读方法分析运用布尔处理技术对键盘矩阵进行扫描解读:运用“位”操作方式将整个键盘矩阵的扫描解读过程归结为一系列的“位”的操作;扫描解读过程没有键值计算、没有键对应的特征值返回;为便于电路板的设计布线,构成键盘矩阵的输入口线可以是集中在同一P口的,也可以是随意分散在不同P口中的。整个键盘矩阵的扫描简捷、高效,解读更为明快准确。关键词键盘矩阵布尔处理MCU位操作扫描解读引言 传统的各类电子专业的教科书上以及可查阅的文献资料中,有关MCU做键盘矩阵的扫描解读,大都是通过逐行逐列扫描、键值计算、键对应特征量返回、查表等数据处理的方式来进行扫描解读的。为
2、此还得设定在求键值时以辅助保存原值的行值、列值缓冲寄存器等,有的为了保证键每闭合一次MCU只作一次处理,往往会在程序运行中等闭合键释放后才对其进行键解释处理。这样键盘的扫描解读颇占CPU时间,降低了CPU的工作效率。本文揭示的是一种基于布尔处理的新颖的键盘矩阵解读方法。下面结合图示并以6×5键盘矩阵解读为例进行描述。1 程序结构 基于布尔处理的键盘矩阵解读方法,也就是使整个键盘矩阵的扫描解读过程都能归结为系列的布尔“位”的操作。扫描解读过程主要包括如下步骤:定义各标志位;键盘矩阵输出线扫描;查询有无键按下;查询键解读标志位;消抖动延时;查询相对应的哪个输示端口电平有
3、变化;查询相对应的哪个输出端口输出扫描电平;相对应的哪个键作具体的解释处理;置位键解读标志位,流程如图1所示。2 步骤阐述2.1 定义各标志位 充分利用现行MCU内部能进行位操作的RAM资源,运用伪指令来定义系统中所牵涉的各标志位。由于伪指令所揭示的定义只写在源程序的头文件上,是不会产生可执行目标代码的,因而对标志位定义的“操作”在图1的程序流程简图中就没有表述。图1 键盘矩阵扫描程序流程简图2.2 键盘矩阵输出线扫描 输出线扫描过程也是通过逐个改变输出行线端口的电平来实现的,如图2所示。输入口线平常所有端口都处于高电平状态;输出口线是逐个循环的输出低电平,也就是
4、任何时候只有一个口线输出低电平;通过键的按下接通,才有可能拉低相对应输入口线的端口电平。图2 键盘矩阵电路结构 如果系统中配置有数码显示电路,则电路结构如图3所示。输入口线平常也都处于高电平状态;输出口线却是逐个循环的输出高电平,通过反相组件后扫描线才成为低电平;通过键的按下接通,同样拉低相对应输入口线的端口电平。这样将键盘输出线扫描能与数码显示的位扫描程序合二为一了,也就能省却了键盘扫描的单独执行,把键盘扫描纳入到系统扫描显示的大循环中。图3 带数码位矩阵电路结构2.3 查询有无键按下 有无键按下自然是通过对键盘扫描输入口状况的查询来确定的。有键按下,键盘扫描输
5、入端口也就相应有所改变了。如果输入端口如图2所示,是集中在同一个Pn口的(其中,n=0,1,2,…),那么可以用对整个Pn口的字节数据的判别来确定键有否按动;也可运用依次对Pn口的几个端口Pn.y进行位的查询来确定有无键按下,其中,y=0、1、2、3、4。 如果输入口不是集中的,为了设计布线的方便而零乱分散于P0口、P2口……Pn口等不同的P口上,那么只能通过依次地对输入各端口的位状态变化的查询来确定有否键按下。若检查到有键按下,就转入到键盘矩阵扫描解读程序;若没有键按下,则清一次键解读标志位为逻辑0,为下次按键解读作好准备。2.4 查询键解读标志位 检查有键按下
6、后首先查询键解读标志位的状态是处于逻辑0还是逻辑1;若是逻辑0说明本次按键尚未解读过,经消抖动延时后需进一步对键盘矩阵的输出、输入口线进行查询来确定是哪一个键,并作相应处理。 若键解读标志位是逻辑1,则表明本次按键已解读过了,没必要浪费CPU时间,可直接从键扫描处理程序中返回。这就实现了键每闭合一次,MCU只作一次处理的效果。改变了传统的为了保证键每闭合一次,MCU只作一次处理,程序中需等待键释放后才对其进行解释的弊病。2.5 消抖动延时 当觉察有键按下、查询键解读标志位为0时,就置位消抖动延时标志位及其辅助位进入消抖动延时处理。消抖动延时的具体进行可调备用的消抖
7、动延时程序;也可借助对系统大循环次数的计数或动用MCU内部定时器的中断来实现消抖动延时,这样就不必设置专门的延时程序而占用CPU的时间了。消抖动延时结束时清零消抖动延时标志位及其辅助位。2.6 查询哪个输入口线电平有变化 平常所有输入端口都处于高电平,经消抖动延时后就查询键盘矩阵各输入口线的电平是否有被拉低。若一个端口也没被拉低,则说明本次按键无效(可能是某种干扰引起的“抖动”),于是直接返回。 若依次查询作为输入的Pn.y各端口的其中某个端口电平被拉低,则表明本次按键是有效的,将跳转至查询与该口线交叉相关的那个输出口线。2.7 扫描哪个输出口线
此文档下载收益归作者所有