- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
于布尔处理的键盘矩阵解读方法探讨 宁波天安(集团)股份有限公司 张春峰 引 言
传统的各类电子专业的教科书上以及可查阅的文献资料中,有关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口,
文档评论(0)