一种矩阵键盘的描定位的方法(编码方式).docx

一种矩阵键盘的描定位的方法(编码方式).docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种矩阵键盘的描定位的方法(编码方式)

图1是本发明方法的键盘扫描定位原理框图,图2是说明本发明方法的一个实施例的电路图,所述方法通过嵌入式设备和键盘扫描定位程序来实现,所述的嵌入式设备包括键盘和微控制器,所述的键盘扫描定位程序在微控制器中运行。 图1 图2中,键盘的4个按键以2×2的矩阵形式排列,所有的行线与列线都通过上拉电阻接至电源+VCC,并连接至微控制器的I/O接口。本实施例要求利用4个按键实现以下操作: 操作0:键盘从有键按下恢复到没有任何键按下后,时间达到2min时,执行一次操作0; 操作1:按键S1单键按下操作时,执行一次操作1; 操作2:按键S2单键按下操作时,执行一次操作2;按键S2单键按下时间持续3s以上后,每隔0.1s执行一次操作2,直到S2释放(或者键盘状态发生其他改变); 操作3:按键S3单键按下时间持续2s以上后,执行一次操作3; 操作4:按键S3单键释放操作时,执行一次操作4; 操作5:按键S4单键按下后,再按下按键S3的组合键操作,执行一次操作5。 如图1所示的键盘进行初始化,主要是前后读入2次键值,分别作为前态键值与现态键值保存,组合成状态码,同时作为前态状态码和现态状态码保存。 如图1所示的等待键盘扫描时间到,等待时间周期T为10~50ms之间的一个固定值,本实施例选择等待时间为20ms,微控制器采用周期扫描的方式对键盘的当前状态进行读取采样。 如图1所示的采样读取现态键值,本实施例中,图2所示键盘的键值为4位二进制码。例如,没有键按下的键值是1111,S1按下的键值是0101,S1、S2同时按下的键值是0100。 采样读取键值的方法为反转法。首先在所有行线输出低电平,采样读取列线状态作为键值的高2位;再在所有列线输出低电平,采样读取行线状态作为键值的低2位;组合键值的高2位和低2位,得到4位键值。 在采样读取现态键值前,将上一次采样读取的键值保存为前态键值。 如图1所示的键盘状态是否稳定判断,用于确定键盘是否处于稳定状态,如果前后两次键盘采样的键值相同,即现态键值等于前态键值,键盘处于稳定状态,进入下一步骤;如果前后两次键盘采样的键值不同,现态键值不等于前态键值,则返回等待下一次键盘扫描时间到。由于键盘扫描周期在10~50ms之间,当前后两次键盘采样键值相同时,有效地避开了键盘按键抖动的影响。 如图1所示的将现态状态码转为前态状态码,合并现态键值组成现态状态码,用于确定键盘状态或者是键盘操作。进入该步骤后,现态键值与前态键值相等,反映的是稳定的键盘状态。状态码由进入该步骤后前、后2次稳定的键值组合而成,前一次稳定的键值在前,后1次稳定的键值在后。例如,本实施例中,没有键按下的状态码S1键单键按下操作的状态码S1键单键按下维持的状态码S1键单键释放操作的状态码先按下S2后,再按下S1,S1按下操作的组合状态码合并现态键值组成现态状态码的方法是:现态状态码存放在现态状态码寄存器中,先将现态状态码寄存器中的低半部分内容移至高半部分,然后将现态键值放入至现态状态码寄存器的低半部分。在合并现态键值组成现态状态码之前,将上一次合并键值组成的状态码保存为前态状态码。 如图1所示的当前键盘状态维持时间计时,计时的目的是方便处理与键盘状态维持时间相关的键盘操作。实施例中计时的具体方法是:利用计数器k对扫描周期20ms进行计数,现态状态码与前态状态码不相等,令k=1;相等则k加1;为了防止计数器溢出,在k加1后等于设定的上限值MAX时,令k等于设定的下限值MIN。 所述的下限值MIN要大于键盘操作要求的最大计时时间,在本实施例中,键盘操作最大计时时间是2min,对应的计数器k值是6000,下限值MIN取10000,上限值MAX取12000。 如图1所示的查状态码表获取状态号、键号,目的是通过查状态码表的方式快速获取状态号与键号。在本实施例中,共设有6种有效的键盘操作,键号0至键号5与操作0至操作5一一对应。状态号共有7个,状态码表见表1。 表1 状态号 0 1 2 3 4 5 6 7 状态码111101010110011010011111其他 键号 0 1 2 2 3 4 5 255 表1中的状态码中,有有效状态码,也有无效状态码,前面7个有效状态码对应的是有效键盘操作,类型有单键操作状态码,有组合键操作状态码,也有键盘处于维持状态的状态码,状态码表中所有的有效状态码都有一个状态号,且都与其相应的操作键号对应。其他的状态码都是无效状态码,都对应状态号7,且都为无效键号255。 所述的查状态码表,只在所述状态码发生改变,即k=1时进行查询,在k>1的维持状态下,不进行查

您可能关注的文档

文档评论(0)

ziq323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档