一种矩阵键盘的快速扫描定位方法转让专利

申请号 : CN201010153560.2

文献号 : CN101840268B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈路路酒乐陈荣李晓鑫程延沛宋之民

申请人 : 中国电子科技集团公司第五十四研究所

摘要 :

本发明公开了一种矩阵键盘的快速扫描定位的方法,它涉及于嵌入式系统(Embedded System)的控制领域中的一种矩阵键盘的快速扫描定位的方法,特别适用于嵌入式终端设备的矩阵键盘设计。它包括键盘设备初始化和注册键盘设备、系统等待键盘触发中断信号、触发键盘中断信号、系统响应中断信号,进入键盘扫描、按键是否有效的判断和输出键盘键值到队列并等待应用程序读取等步骤。本发明的方法可以有效的避免矩阵键盘由于自身机械特性而造成的电平不稳和抖动现象,提高矩阵键盘的扫描定位的准确性、具有算法简单、性能稳健、控制精度高等特点。

权利要求 :

1.一种矩阵键盘的快速扫描定位方法,是嵌入式设备运用Linux操作系统来实现的,所述的嵌入式设备包括矩阵键盘和寄存器,其特征在于:所述的方法包括以下步骤:A、键盘设备初始化和注册键盘设备;

B、系统等待键盘触发中断信号;

C、键盘的按键按下或者抬起,触发键盘中断信号;

D、系统响应中断信号,进入键盘扫描步骤;

F、判断按键是否有效;如按键有效,进入单键操作或组合键操作判断步骤;如是单键操作,则进入单键处理模式;如是组合键操作,则进入组合键处理模式,之后进入步骤G;如按键无效,则进入步骤B;

G、输出键盘键值到队列并等待应用程序读取;

其中,步骤D当中所述键盘扫描步骤为系统调用内核定时器进行采样定时操作,对按键进行行列扫描,并读取当前行和当前列的键值;

步骤F中判断按键是否有效的方式为多次重复键盘扫描步骤,并对所获得的键值进行状态判断;如果多次采样状态相同,则处于稳定状态,键值有效;如果多次采样状态不同,键值无效;

所述的单键处理模式为根据寄存器判断键盘操作是否是单键抬起和按下,如果是单键抬起,则对单键键值进行清空,并清空按键数目;如果单键按下,则记录单键键值并上报到队列中,并将按键数目递加;

所述的组合键处理模式为根据寄存器数据对组合键进行判断,首先通过按键数目的增减来判断是抬起或者按下,如果增加表示有键按下,将新的键值记录,并将该键值上报队列,并将按键数目递加;如果减少表示有键抬起,则清空上次的键值,并将按键数目递减。

2.根据权利要求1所述的一种矩阵键盘的快速扫描定位方法,其特征在于:所述单键操作或组合键操作判断步骤是通过寄存器KPAS的数据判定是单键按下、抬起或者是组合键按下、抬起。

说明书 :

一种矩阵键盘的快速扫描定位方法

技术领域

[0001] 该发明涉及于嵌入式系统(Embedded System)的控制领域中的一种矩阵键盘的快速扫描定位方法,特别适用于嵌入式终端设备的组合键盘设计。

背景技术

[0002] 随着嵌入式技术的不断发展,当前的嵌入式终端设备广泛采用键盘作为主要的输入设备,但是键盘作为一种嵌入式终端采用的输入设备,依旧具有操作简单,可靠性高,响应时间迅速,稳定性好等特点,因而仍广泛应用于工业控制领域及嵌入式终端设备上使用。 [0003] 由于键盘作为一种机械设备,在抬起和按下的时候会出现键盘抖动,并且造成电压信号在短时间内不稳定而出现毛刺现象,容易造成错键、连续触键甚至由此造成严重后果,同时作为嵌入式矩阵键盘大多缺少对重复按键和组合键的支持,出现无法响应组合键等现象

发明内容

[0004] 本发明所要解决的技术问题主要是由于矩阵键盘自身的机械特性造成的键盘抖动而引起错键、连续触键等错误以及缺少组合键和重复按键支持而提供的一种快速扫描定位的方法。本方法可以有效的避免由于按键的抬起和按下造成的电平不稳定和毛刺现象,并提供一种组合键的响应,从而达到快速扫描定位的效果。本发明还具有算法简单、性能稳健、控制精度高等特点。
[0005] 本发明一种矩阵键盘的快速扫描定位方法的技术方案,是嵌入式设备运用Linux操作系统来实现的,所述的嵌入式设备包括矩阵键盘和寄存器,所述的方法包括以下步骤:
[0006] A、键盘设备初始化和注册键盘设备;
[0007] B、系统等待键盘触发中断信号;
[0008] C、键盘的按键按下或者抬起,触发键盘中断信号;
[0009] D、系统响应中断信号,进入键盘扫描步骤;
[0010] F、判断按键是否有效;如按键有效,则进入步骤G;如按键无效,则进入步骤B; [0011] G、输出键盘键值到队列并等待应用程序读取。
[0012] 作为本发明的改进,包括以下:
[0013] 步骤D当中所述键盘扫描步骤为系统调用内核定时器进行采样定时操作,对按键进行行列扫描,并读取当前行和当前列的键值。
[0014] 步骤F中判断按键是否有效的方式为多次重复键盘扫描步骤,并对所获得的键值进行状态判断;如果多次采样状态相同,则处于稳定状态,键值有效;如果多次采样状态不同,键值无效。
[0015] 在步骤F和步骤G之间增加单键操作或组合键操作判断步骤;如是单键操作,则进入单键处理模式;如是组合键操作,则进入组合键处理模式。
[0016] 所述单键操作或组合键操作判断步骤是通过寄存器KPAS的数据判定是单键按下、抬起或者是组合键按下、抬起。
[0017] 所述的单键处理模式为根据寄存器判断键盘操作是否是单键抬起和按下,如果是单键抬起,则对单键键值进行清空,并清空按键数目;如果单键按下,则记录单键键值并上报到队列中,并将按键数目递加。
[0018] 所述的组合键处理模式为根据寄存器数据对组合键进行判断,首先通过按键数目的增减来判断是抬起或者按下,如果增加表示有键按下,将新的键值记录,并将该键值上报队列,并将按键数目递加;如果减少表示有键抬起,则清空上次的键值,并将按键数目递减。 [0019] 本发明与背景技术相比具有如下优点:
[0020] 1.本发明采用快速扫描定位的方法可以有效的避免矩阵键盘由于自身机械特性而造成的电平不稳和抖动现象,提高矩阵键盘的扫描定位的准确性。
[0021] 2.本发明采用的快速扫描定位的方法具有算法简单、性能稳健、控制精度高等特点。

附图说明

[0022] 图1是本发明的原理方框图。

具体实施方式

[0023] 参照图1,本发明实现的方法原理框图如图1所示。嵌入式设备运用Linux操作系统来实现,所述的嵌入式设备包括矩阵键盘和寄存器,其具体步骤如下: [0024] 1、本发明所述方法中,在内核启动后,首先对键盘设备进行初始化操作,并注册键盘设备名称、设备信息、驱动信息、设备读写等待等操作,并对KPC寄存器进行初始操作,包括对矩阵键盘的输入输出、使能等部分;在本实例中通过函数pxa270_kp_init完成初始化操作。
[0025] 2、键盘设备向系统申请中断请求request_irq,等待矩阵键盘触发中断信号; [0026] 3、当矩阵键盘按下或者抬起后,触发键盘中断,系统驱动响应中断后,等待进入定时键盘扫描过程;
[0027] 4、系统调用内核定时器进行采样定时操作,进行矩阵键盘的行列扫描,并读取寄存器数据,在本实例中,采用20ms定时时间。
[0028] 5、读取寄存器来获取当前键盘行的键值。在本实例中,通过获取寄存器KPASMKP和KPASMKPx_MKC[N],来获取键盘当前行的键值。
[0029] 6、读取寄存器来获取当前键盘列的键值。在本实例中,通过获取寄存器KPASMKP和KPASMKPx_MKC[N],来获取键盘当前列的键值。
[0030] 7、等待计时器结束;本实施例中,本方法通过三次采样定时扫描矩阵键盘的行列键值,对所获得的键值进行状态判断;如果三次采样状态相同,则处于稳定状态,则按键有效,进入下一步骤8;如果三次采样状态不同,则按键无效,返回等待矩阵键盘触发中断信号的步骤2;
[0031] 8、在确定按键有效后,通过寄存器KPAS的数据判定是单键按下或抬起,还是组合键按下或抬起;
[0032] 9、判断键盘操作是否为单键操作,若是单键操作,则进入单 键处理模式,进入步骤10;若是组合键操作,则进入组合键处理模式,进入步骤11;
[0033] 10、所述单键处理模式是根据寄存器判断键盘操作是否是单键抬起和按下,如果是单键抬起,则对单键键值进行清空,并清空按键数目num_press;如果单键按下,则记录单键键值并上报到队列中,并将按键数目num_press递加;
[0034] 11、所述的组合键处理模式是根据寄存器数据对组合键进行判断,首先通过按键数目的增减来判断是抬起或者按下,如果增加表示有键按下,将新的键值记录,并将该键值上报队列,并将按键数目num_press递减;如果减少表示有键抬起,则清空上次的键值,并将按键数目num_press递减。
[0035] 12、最后,输出键盘键值到队列并等待应用程序读取;
[0036] 本发明所述方法可对键盘键值进行同步化处理,在本实例中,调用函数input_sync对键盘进行同步化处理;
[0037] 通过以上步骤,本发明所述方法完成矩阵键盘的快速扫描识别的过程。 [0038] 本发明工作原理如下:
[0039] 本发明所述方法在矩阵键盘初始化后,响应由矩阵键盘按压或者抬起触发的中断信号,通过键盘扫描判断是否有按键按下,并通过定时器判断按键状态是否稳定,剔除出由于按键引入的毛刺现象后,并进入单键识别模块或组合键识别模块,识别出正确的键值,并存入队列中,等待应用程序调用,完成矩阵键盘的快速扫描识别的过程。