CN105929971A - 一种按键识别方法及装置 - Google Patents
一种按键识别方法及装置 Download PDFInfo
- Publication number
- CN105929971A CN105929971A CN201610305796.0A CN201610305796A CN105929971A CN 105929971 A CN105929971 A CN 105929971A CN 201610305796 A CN201610305796 A CN 201610305796A CN 105929971 A CN105929971 A CN 105929971A
- Authority
- CN
- China
- Prior art keywords
- input
- logic level
- outfan
- level values
- button
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种按键识别方法及装置,用以提高按键识别效率,减少异常状况的发生。该方法包括:当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键有效时,确定本次按键的键值。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种按键识别方法及装置。
背景技术
遥控器作为一种通用的遥控设备在越来越多的设备上批量使用,但随着遥控器设备使用的普及,其应用也越来越广泛,由于不同的应用存在差异,因此遥控器的设计也变得越来越多样化。
当用户使用遥控器执行按键操作时,遥控器芯片内部会执行对输入输出矩阵(I/O矩阵)的扫描过程,进而识别按键,并进行后续响应。然而,现有的遥控器芯片中,对I/O矩阵进行扫描时,每扫描完一行数据,则对该数据进行相应地计算处理,并判断本行是否有按键时间发生,从而导致按键识别过程耗时过长,并且,由于在执行I/O矩阵扫描过程中,为保证按键矩阵对应的各个I/O端口的逻辑电平值的稳定性,处理器的不能进行其他中断信号的响应,因此若存在某些需要在较短时间内响应的事件,由于无法及时响应该事件,进而导致不可预知的异常。
综上所述,现有的按键识别过程耗时过长,并且可能会导致异常状况的发生。
发明内容
本发明实施例提供了一种按键识别方法及装置,用以提高按键识别效率,减少异常状况的发生。
本发明实施例提供的一种按键识别方法,包括:
当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;
当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键时,确定本次按键的键值。
本发明实施例提供的该方法,当接收到按键中断信号时,首先确定每一输出端对应的每一输入端的逻辑电平值,进而在所有的输出端分别对应的每一输入端的逻辑电平值确定完之后,根据确定的逻辑电平值,确定本次按键的键值,即先进行输入输出矩阵的扫描,在扫描完成后进行键值的计算,从而缩短了整体的按键识别的时间,提高了按键识别的效率,由于是在扫描完成后进行键值的计算,相比于已有技术中每扫描一行计算一行的情形而言,缩短了输入输出矩阵的扫描时长,若存在需要在较短时间内响应的事件,则可以及时对该事件进行响应,因此,通过该方法减少异常状况的发生。
本发明实施例提供的一种按键识别装置,包括:
第一单元,用于当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;
第二单元,用于当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键有效时,确定本次按键的键值。
附图说明
图1为本发明实施例提供的一种按键识别方法的流程示意图;
图2为本发明实施例提供的一种硬件电路中的I/O矩阵示意图;
图3为本发明实施例提供的一种按键键值矩阵示意图;
图4为本发明实施例提供的一种按键识别方法的整体流程示意图;
图5为本发明实施例提供的一种按键识别装置的结构示意图。
具体实施方式
本发明实施例提供了一种按键识别方法及装置,用以提高按键识别效率,减少异常状况的发生。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例提供的按键识别方法,预先设置第一类映射表及第二类映射表。其中,第一类映射表中存储外部硬件电路的输入引脚与逻辑扫描输入端的对应关系,以及外部电路的输出引脚与逻辑扫描输出端的对应关系;第二类映射表中存储输入端、输出端与按键键值的对应关系,也可以理解为是逻辑I/O矩阵与按键键值矩阵的对应关系。进而,当接收到按键中断信号后,根据第一类映射表对每一输出端对应的每一输入端的逻辑电平值进行扫描,将所有的输出端分别对应的每一输入端的逻辑电平值扫描完成后,可以得到最终扫描结果,然后根据该最终扫描结果,并结合第二类映射表,确定本次按键的键值。本发明实施例提供的该方法,可应用于具有键盘电路的电子设备中,例如遥控器、电脑、个人数字助理(PDA)、手机等。
参见图1,本发明实施例提供的一种按键识别方法包括:
S101、当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;
S102、当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键有效时,确定本次按键的键值。
较佳地,当接收到按键中断信号时,根据预设的外部硬件电路的输入引脚与逻辑扫描输入端的对应关系,以及外部电路的输出引脚与逻辑扫描输出端的对应关系,对输入输出矩阵(I/O矩阵)的每一输出端对应的每一输入端的逻辑电平值进行扫描,确定所述每一输出端对应的每一输入端的逻辑电平值。
由于外部硬件电路的输入引脚与逻辑扫描输入端的对应关系,以及外部电路的输出引脚与逻辑扫描输出端的对应关系均为预设的,因此,当外部硬件电路发生变化时,只需更新变化后的外部硬件电路的输入引脚与逻辑扫描输入端的对应关系,以及变化后的外部电路的输出引脚与逻辑扫描输出端的对应关系即可,可见该方法可以灵活地应用于不同的硬件电路中,实现按键的识别。
较佳地,对I/O矩阵每一输出端对应的每一输入端的逻辑电平值进行扫描,确定所述每一输出端对应的每一输入端的逻辑电平值,具体包括:
当接收到按键中断信号时,设置所有输出端的电平值为非第一逻辑电平值,并按照预设顺序依次设定所有输出端中的一个输出端的电平值为第一逻辑电平值,所述第一逻辑电平值与预设的每一输入端的逻辑电平值不同,所述预设的每一输入端的逻辑电平相同;
当该输出端的电平值为第一逻辑电平值时,扫描每一输入端的逻辑电平值,并记录该输出端对应的每一输入端的逻辑电平值。
需要说明的是,在接收到按键中断信号之前,所有输出端为第一逻辑电平值,也就是所有的输出端均输入第一逻辑电平值。若检测到所有输入端所输出的逻辑电平值中存在至少一个逻辑电平值发生变化时,确定有按键被按下,并生成中断信号,此时,设置所有的输出端,使得所有的输出端不输入第一逻辑电平值,之后,依次将设置为不输入第一逻辑电平值的所有输出端中的一个输出端的电平值设置为第一逻辑电平值,并在该输出端输入第一逻辑电平值的情况下,扫描每一输入端的逻辑电平值。其中,第一逻辑电平值可以为1,也可以为0,当第一逻辑电平值为1时,预设的每一输入端的逻辑电平值为0,当第一逻辑电平值为0时,预设的每一输入端的逻辑电平值为1。
例如,一共有三个输出端,分别编号为Output1、Output2、Output3,三个输入端,分别编号为Input1、Input2、Input3。首先将Output1、Output2、Output3的电平值均设为非第一逻辑电平值;其次按照输出端编号由小到大的顺序,先将输出端Output1的电平值设定为第一逻辑电平值,分别扫描输入端Input1、Input2、Input3当前的逻辑电平值,并记录;然后,将Output2的电平值设定为第一逻辑电平值,此时Output1的电平值重新设置为非第一逻辑电平值,分别扫描输入端Input1、Input2、Input3当前的逻辑电平值,并记录;最后,将Output3的电平值设定为第一逻辑电平值,此时Output1、Output2的电平值均重新设置为非第一逻辑电平值,分别扫描输入端Input1、Input2、Input3当前的逻辑电平值,并记录。这样,得到最终的扫描结果,即每一输出端对应的每一输入端的逻辑电平值,用一个一维数组可表示为{a1,a2,a3},其中a1对应Output1,也就是当Output1的电平值设为第一逻辑电平值时,扫描的每一输入端的逻辑电平值,a1中包括3比特的数值,每一比特的数值对应一个输入端的逻辑电平值,同样,a2对应Output2,a2中也包括3比特的数值,a3对应Output3,a3中也包括3比特的数值。
较佳地,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,具体包括:
当所述每一输出端对应的每一输入端的逻辑电平值中,仅存在一个逻辑电平值与预设的每一输入端的默认输逻辑电平值不同时,确定本次按键有效;
当所述每一输出端对应的每一输入端的逻辑电平值中,存在至少两个逻辑电平值与预设的每一输入端的逻辑电平值不同时,确定本次按键无效。
例如,预设每一输入端的逻辑电平值为0,所有输出端中的其中一个输出端的逻辑电平值设为1,并结合上文的例子,即共三个输出端,分别编号为Output1、Output2、Output3,三个输入端,分别编号为Input1、Input2、Input3的情况进行说明。若没有键按下时,三个输入端的逻辑电平值均为预设值0,即扫描结果{a1,a2,a3}中,a1值为000,a2值为000,a3值为000。若最终的扫描结果{a1,a2,a3}中,仅a1值有一个比特的数值不为0,例如a1值为010,则确定有键按下,并且,本次按键是有效的。若最终的扫描结果{a1,a2,a3}中,a1值有一个比特的数值不为0,a3值有一个比特的数值不为0,例如a1值为010,同时a3值为100;又或者是a1中有至少两个比特的数值不为0,例如a1值为011,均认为是按键无效的。
又例如,预设每一输入端的逻辑电平值为1,所有输出端中的其中一个输出端的逻辑电平值设为0,并结合上文的例子,即共三个输出端,分别编号为Output1、Output2、Output3,三个输入端,分别编号为Input1、Input2、Input3的情况进行说明。若没有键按下时,三个输入端的逻辑电平值均为预设值1,即扫描结果{a1,a2,a3}中,a1值为111,a2值为111,a3值为111。若最终的扫描结果{a1,a2,a3}中,仅a1值有一个比特的数值不为1,例如a1值为110,则确定有键按下,并且,本次按键是有效的。若最终的扫描结果{a1,a2,a3}中,a1值有一个比特的数值不为1,a3值有一个比特的数值不为1,例如a1值为011,同时a3值为110;又或者是a1中有至少两个比特的数值不为1,例如a1值为001,均认为是按键无效的。
较佳地,当根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键有效时,确定本次按键的键值,具体包括:
确定所述每一输出端对应的每一输入端的逻辑电平值中逻辑电平与预设的每一输入端的逻辑电平值不同的逻辑电平值对应的输出端;
根据该输出端对应的编号i,确定本次按键对应的输入端的地址编号x以及输出端的地址编号y;
根据所述输入端的地址编号x和输出端的地址编号y,确定本次按键的键值。
较佳地根据该输出端对应的编号i,确定本次按键对应的输入端的地址编号x以及输出端的地址编号y,具体包括:
将所述i值确定为所述y值;
根据编号为i的所述输出端对应的每一输入端的逻辑电平值ai,采用如下公式确定所述x:
x=log2ai+1 (1)
较佳地,根据所述输入端的地址编号x和输出端的地址编号y,确定本次按键的键值,具体包括:
根据所述x和y,从预设的输入端、输出端与按键键值的对应关系表中查询与所述x和y相对应的键值。
也就是,根据所述x和y,从预设的第二类映射表中查询本次按键的位置,并获取该位置处设定的键值。
较佳地,当扫描完每一输出端对应的每一输入端的逻辑电平值后,该方法还包括:
保存本轮扫描结果,并在延时预设时长后重复执行该轮扫描过程,直至存在两轮扫描结果相同时,将该两次扫描结果相同的扫描结果确定为每一输出端对应的每一输入端的逻辑电平值。
也就是说,执行完第一轮扫描过程后,得到第一轮扫描结果,其中包括每一输出端对应的每一输入端的逻辑电平值,然后,再重复该扫描过程,执行第二轮扫描,得到第二轮扫描结果,若两次扫描结果不同,则说明某一次扫描过程中可能存在干扰信号,导致扫描结果不准确,因此,需要执行第三轮扫描过程,若第三轮扫描结果与第一轮扫描结果和第二轮扫描结果中的其中一轮扫描结果相同,则确定该扫描结果相同的扫描结果是可靠的,将该扫描结果确定为最终的扫描结果,从而,后续根据该最终的扫描结果,确定按键键值。
从而,提高了扫描结果的准确率,保证了按键识别的正确性。
此外,在重复执行下一轮扫描过程之前,由于存在预设时长的延时,因此,在该延时期间若存在需要响应的事件(即中断信号),则可以及时进行响应。
下面给出一个具体的实施例。
首先进行初始化设定,即设定上述第一类映射表和第二类映射表。
假设硬件电路包括8个输入引脚和8个输出引脚。针对第一类映射表,根据实际硬件电路原理图,将输入引脚和输出引脚以位为单位,分别设定为Input和Output两组,通过位定义将Input对应的所有输入引脚定义为输入端,在逻辑上映射为一个8位变量,将该变量名设为ScanIn;通过位定义将Output对应的所有输出引脚定义为输出端,在逻辑上映射为一个8位变量,将该变量名设为ScanOut。
硬件电路的I/O矩阵如图2所示。其中,每一行线代表输入引脚,输入引脚统一用P1表示,将8个输入引脚分别定义为P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7,每一列线代表输出引脚,输出引脚统一用P0表示,将8个输出引脚分别定义为P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7。通过位定义将ScanIn与P1、Output与P0对应起来,具体如下:
#define ScanIn.0 P1.0;
#define ScanIn.1 P1.1;
#define ScanIn.2 P1.2;
#define ScanIn.3 P1.3;
#define ScanIn.4 P1.4;
#define ScanIn.5 P1.5;
#define ScanIn.6 P1.6;
#define ScanIn.7 P1.7;
#define ScanOut.0 P0.0;
#define ScanOut.1 P0.1;
#define ScanOut.2 P0.2;
#define ScanOut.3 P0.3;
#define ScanOut.4 P0.4;
#define ScanOut.5 P0.5;
#define ScanOut.6 P0.6;
#define ScanOut.7 P0.7;
即逻辑扫描输入端口ScanIn.0与P1.0对应,逻辑扫描输入端口ScanIn.1与P1.1对应,逻辑扫描输出端口ScanOut.0与P0.0对应,逻辑扫描输出端口ScanOut.1与P0.1对应等等。这样,如果硬件的I/O矩阵有变更,则只需修改逻辑扫描I/O端口与硬件相关P1、P0的位定义关系即可。例如若将P0.3更改为P4.3,则只需要将上述定义中#define ScanOut.3 P0.3修改成#defineScanOut.3 P4.3即可。
针对第二类映射表,逻辑I/O矩阵部分以Input为横轴,Output为纵轴,形成一个二维矩阵。采用一个一维数组表示:Scanresult={a0,a1,a2,a3,a4,a5,a6,a7},其中,a0、a1、a2、a3、a4、a5、a6、a7分别对应P0.0端口、P0.1端口、P0.2端口、P0.3端口、P0.4端口、P0.5端口、P0.6端口、P0.7端口,并且,每一ai的值均为包含8比特的数值,i=0,1,2,…7,每一比特的数值对应8个输入端口P1中的其中一个输入端口的逻辑电平值。按键键值矩阵同样按照硬件的输入引脚为横轴,输出引脚为纵轴的对应关系,在每一输入引脚的行线和输出引脚的列线的交叠处填充按键键值,形成一个二维数组,用KeyData表示如下:
KeyData={{D00,D01,D02,D03,D04,D05,D06,D07},
{D10,D11,D12,D13,D14,D15,D16,D17},
{D20,D21,D22,D23,D24,D25,D26,D27},
{D30,D31,D32,D33,D34,D35,D36,D37},
{D40,D41,D42,D43,D44,D45,D46,D47},
{D50,D51,D52,D53,D54,D55,D56,D57},
{D60,D61,D62,D63,D64,D65,D66,D67},
{D70,D71,D72,D73,D74,D75,D76,D77}}
例如,D00代表输入引脚P1.0的行线与输出引脚P0.0的列线的交叠处的按键键值,D77代表输入引脚P1.7的行线与输出引脚P0.7的列线的交叠处的按键键值等。若果按键键值的定义需要变更,则只需变更KeyData二维数组中对应字节的值即可。例如,输入引脚P1.0的行线与输出引脚P0.0的列线的交叠处的按键键值变更为K00,输入引脚P1.1的行线与输出引脚P0.0的列线的交叠处的按键键值变更为K10等,则只需将KeyData二维数组中的D00变更为K00,将KeyData二维数组中的D10变更为K10,以此类推,将KeyData二维数组中的D77变更为K77等。硬件电路中的输入引脚的行线与输出引脚的列线对应的按键键值如图3所示,其按键键值分别定义为K00,K01,…,K70,…,K77。
将第一类映射表和第二类映射表设置完成后,预设所有输出端口的逻辑电平值为1,所有输入端口的逻辑电平值为0,若接收到按键中断信号,则启动按键扫描过程,以进行按键识别,具体过程如下:
步骤一:将所有的输出端口的电平值设为逻辑电平值1。
步骤二:从P0.0端口开始,将该端口的电平值设为逻辑电平值1,延时100μs后,对每一输入端口(即P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7)的逻辑电平值进行扫描,读取每一输入端口的逻辑电平值并记录为a0,a0包括8个比特的数值;然后将P0.1端口的电平值设为逻辑电平值为1,延时100μs后,对每一输入端口(即P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7)的逻辑电平值进行扫描,读取每一输入端口的逻辑电平值并记录为a1,a1也包括8个比特的数值;以此类推,直到将P0.7端口的电平值设为逻辑电平值为1,延时100μs后,对每一输入端口(即P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7)的逻辑电平值进行扫描,读取每一输入端口的逻辑电平值并记录为a7,a7同样包括8个比特的数值,此时可以得到一数组值Scanresult={a0,a1,a2,a3,a4,a5,a6,a7}。
其中,延时100μs的作用是为了防止脉冲信号受到干扰信号的影响,可以理解为是去抖操作。
需要说明的是,在执行步骤二中的扫描过程中,为保证按键矩阵对应的各个I/O端口的逻辑电平值的稳定性,在此期间会关闭其他的中断,也就是在此期间并不响应其他的中断信号,在执行完一轮扫描过程后,才去响应其他的中断信号。
步骤三:延时5ms后,重复执行步骤二,如果两次得到的Scanresult数组值相同,则说明两次扫描所得到的结果一致,并且扫描数据有效,从而将该Scanresult数组值确定为最终的Scanresult,即每一输出端对应的每一输入端的逻辑电平值;如果两次得到的Scanresult数组值不同,说明某次扫描过程中可能存在干扰信号,其中一次的扫描结果的数据有误,从而,再次执行步骤二,直至有两次得到的Scanresult数组值相同,并向Scanresult数组值相同的Scanresult确定为最终的Scanresult,即每一输出端对应的每一输入端的逻辑电平值。
其中,延时5ms可以理解为是去抖操作。
步骤四:根据最终的Scanresult,确定本次按键是否有效,并在按键有效时确定本次按键键值。
具体地,若确定Scanresult数组值中仅存在某一个ai的8个比特的数值中的其中一个比特的数值不为0,则说明本次有一个按键被按下,因此可以确定本次按键是有效的。若存在多个ai值不全为0,或者,某一个ai的8个比特的数值中有至少两个比特的数值不为0,则说明本次有多个按键被同时按下,因此可以确定本次按键是无效的,其中i可以为0,1,2,…,7中的任意一个。
当然,在具体实施中可以根据实际需求定义多个按键同时被按下的情况是否为有效操作,如果需要支持多重按键发码,则需要根据需求建立多重按键对应的映射关系表。
当确定本次按键有效时,假设a2值存在一个比特的数值不为0,则确定本次按键对应的输入端的地址编号x=2,输出端的地址编号y=log2a2+1。也就是说,本次按键的键值对应的输入端口为P1.x,对应的输出端口为P0.y。从而,通过查找预先建立的第二类映射表,找出P1x和P0.y在二维数组KeyData中对应的键值,即本次按键键值为Dxy。
例如,该按键识别方法是针对某一遥控器,则通过该方法,完成一轮扫描,(也就是得到一次Scanresult数组值)所用的时间大约为770μs,而按照现有技术,对I/O矩阵执行扫描时,每扫描完一行数据就直接对扫描结果进行处理,这样,每一行的扫描时间大约会占用200μs左右,甚至更长,从而完成一轮扫描周期会花费1.4ms的时间,这样,不仅耗时过长,而且,如果某些需要在1ms内响应的事件由于无法执行响应可能会产生不可预知的异常。而通过本发明实施例的方法,例如针对蓝牙类智能遥控器,完成一轮扫描周期需要的时间小于1ms,这样,即使存在需要在1ms内响应的事件也可以及时进行响应,避免异常状况的发生。
步骤五:在确定本次按键键值之后,恢复每一端口的初始设置,即将所有的Input端口的电平值设为逻辑电平值0,将所有的Output端口的电平值设为逻辑电平值1。
图4所示本发明实施例提供的一种按键识别方法的整体流程示意图。
步骤501、接收到按键中断信号;
步骤502、配置键盘的I/O端口;
也就是将所有的输出端口的电平值设为非第一逻辑电平值,并按照预设顺序依次设定其中一个输出端口的电平值为第一逻辑电平值,并且确保当前为第一逻辑电平值的输出端的逻辑电平值与预设的输入端口的逻辑电平值不同。
步骤503、对I/O矩阵的每一行数据进行扫描;
也就是对每一输入端口的逻辑电平值进行扫描。
步骤504、延时100μs(即去抖)后,读取每一输入端口的逻辑电平值;
步骤505、执行完一轮扫描过程(即得到Scanresult数值)后,判断本轮扫描是否为第一次扫描,若是,执行步骤506,否则,执行步骤508;
步骤506、保存本轮扫描结果至Scanresult,并执行步骤507;
步骤507、进行5ms延时(即去抖)后,重新执行步骤503;
步骤508、比较两次扫描结果是否一致,若一致,执行步骤509,否则,执行步骤503;
步骤509、根据扫描结果(即Scanresult数组值),当确定本次按键有效时,确定有效按键键值,并输出;
步骤510、恢复I/O口的初始状态设置,本次按键识别结束。
参见图5,本发明实施例提供了一种按键识别装置,包括:
第一单元11,用于当接收到按键中断信号时,扫描I/O矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;
第二单元12,用于当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键有效时,确定本次按键的键值。
该装置例如可以是遥控器、电脑、手机等。
较佳地,所述第一单元11具体用于:
当接收到按键中断信号时,根据预设的外部硬件电路的输入引脚与逻辑扫描输入端的对应关系,以及外部电路的输出引脚与逻辑扫描输出端的对应关系,对每一输出端对应的每一输入端的逻辑电平值进行扫描,确定所述每一输出端对应的每一输入端的逻辑电平值。
较佳地,所述第一单元11具体还用于:
当接收到按键中断信号时,设置所有输出端的电平值为非第一逻辑电平值,并按照预设顺序依次设定所有输出端中的一个输出端的电平值为第一逻辑电平值,所述第一逻辑电平值与预设的每一输入端的逻辑电平值不同,所述预设的每一输入端的逻辑电平相同;
当该输出端的电平值为第一逻辑电平值时,扫描每一输入端的逻辑电平值,并记录该输出端对应的每一输入端的逻辑电平值。
较佳地,所述第二单元12采用如下方式确定本次按键是否有效:
当所述每一输出端对应的每一输入端的逻辑电平值中,仅存在一个逻辑电平值与预设的每一输入端的逻辑电平值不同时,确定本次按键有效;
当所述每一输出端对应的每一输入端的逻辑电平值中,存在至少两个逻辑电平值与预设的每一输入端的逻辑电平值不同时,确定本次按键无效。
较佳地,所述第二单元12当根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键有效时,确定本次按键的键值时,具体用于:
确定所述每一输出端对应的每一输入端的逻辑电平值中逻辑电平与预设的每一输入端的逻辑电平值不同的逻辑电平值对应的输出端;
根据该输出端对应的编号i,确定本次按键对应的输入端的地址编号x以及输出端的地址编号y;
根据所述输入端的地址编号x和输出端的地址编号y,确定本次按键的键值。
较佳地,所述第二单元12根据该输出端对应的编号i,确定本次按键对应的输入端的地址编号x以及输出端的地址编号y时,具体用于:
将所述i值确定为所述y值;
根据编号为i的所述输出端对应的每一输入端的逻辑电平值ai,采用如下公式确定所述x:
x=log2ai+1。
较佳地,所述第二单元12根据所述输入端的地址编号x和输出端的地址编号y,确定本次按键的键值时,具体用于:
根据所述x和y,从预设的输入端、输出端与按键键值的对应关系表中查询与所述x和y相对应的键值。
较佳地,所述第一单元11当扫描完每一输出端对应的每一输入端的逻辑电平值后,还用于:
保存本轮扫描结果,并在延时预设时长后重复执行该轮扫描过程,直至存在两轮扫描结果相同时,将该两次扫描结果相同的扫描结果确定为每一输出端对应的每一输入端的逻辑电平值。
本发明实施例中,可通过具体的硬件处理器等实体设备实现上述各功能单元。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种按键识别方法,其特征在于,该方法包括:
当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;
当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键有效时,确定本次按键的键值。
2.根据权利要求1所述的方法,其特征在于,当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,具体包括:
当接收到按键中断信号时,设置所有输出端的电平值为非第一逻辑电平值,并按照预设顺序依次设定所有输出端中的一个输出端的电平值为第一逻辑电平值,所述第一逻辑电平值与预设的每一输入端的逻辑电平值不同,所述预设的每一输入端的逻辑电平相同;
当该输出端的电平值为第一逻辑电平值时,扫描每一输入端的逻辑电平值,并记录该输出端对应的每一输入端的逻辑电平值。
3.根据权利要求2所述的方法,其特征在于,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,具体包括:
当所述每一输出端对应的每一输入端的逻辑电平值中,仅存在一个逻辑电平值与预设的每一输入端的逻辑电平值不同时,确定本次按键有效;
当所述每一输出端对应的每一输入端的逻辑电平值中,存在至少两个逻辑电平值与预设的每一输入端的逻辑电平值不同时,确定本次按键无效。
4.根据权利要求3所述的方法,其特征在于,当根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键有效时,确定本次按键的键值,具体包括:
确定所述每一输出端对应的每一输入端的逻辑电平值中逻辑电平与预设的每一输入端的逻辑电平值不同的逻辑电平值对应的输出端;
根据该输出端对应的编号i,确定本次按键对应的输入端的地址编号x以及输出端的地址编号y;
根据所述输入端的地址编号x和输出端的地址编号y,确定本次按键的键值。
5.根据权利要求4所述的方法,其特征在于,根据该输出端对应的编号i,确定本次按键对应的输入端的地址编号x以及输出端的地址编号y,具体包括:
将所述i值确定为所述y值;
根据编号为i的所述输出端对应的每一输入端的逻辑电平值ai,采用如下公式确定所述x:
x=log2ai+1。
6.根据权利要求4所述的方法,其特征在于,根据所述输入端的地址编号x和输出端的地址编号y,确定本次按键的键值,具体包括:
根据所述x和y,从预设的输入端、输出端与按键键值的对应关系表中查询与所述x和y相对应的键值。
7.根据权利要求1所述的方法,其特征在于,当扫描完每一输出端对应的每一输入端的逻辑电平值后,该方法还包括:
保存本轮扫描结果,并在延时预设时长后重复执行该轮扫描过程,直至存在两轮扫描结果相同时,将该两次扫描结果相同的扫描结果确定为每一输出端对应的每一输入端的逻辑电平值。
8.一种按键识别装置,其特征在于,该装置包括:
第一单元,用于当接收到按键中断信号时,扫描输入输出矩阵的每一输出端对应的每一输入端,确定所述每一输出端对应的每一输入端的逻辑电平值;
第二单元,用于当所述扫描过程结束后,根据所述每一输出端对应的每一输入端的逻辑电平值确定本次按键是否有效,并在本次按键有效时,确定本次按键的键值。
9.根据权利要求8所述的装置,其特征在于,所述第一单元具体还用于:
当接收到按键中断信号时,设置所有输出端的电平值为非第一逻辑电平值,并按照预设顺序依次设定所有输出端中的一个输出端的电平值为第一逻辑电平值,所述第一逻辑电平值与预设的每一输入端的逻辑电平值不同,所述预设的每一输入端的逻辑电平相同;
当该输出端的电平值为第一逻辑电平值时,扫描每一输入端的逻辑电平值,并记录该输出端对应的每一输入端的逻辑电平值。
10.根据权利要求9所述的装置,其特征在于,所述第二单元采用如下方式确定本次按键是否有效:
当所述每一输出端对应的每一输入端的逻辑电平值中,仅存在一个逻辑电平值与预设的每一输入端的逻辑电平值不同时,确定本次按键有效;
当所述每一输出端对应的每一输入端的逻辑电平值中,存在至少两个逻辑电平值与设的每一输入端的默认输入逻辑电平值不同时,确定本次按键无效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610305796.0A CN105929971A (zh) | 2016-05-10 | 2016-05-10 | 一种按键识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610305796.0A CN105929971A (zh) | 2016-05-10 | 2016-05-10 | 一种按键识别方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105929971A true CN105929971A (zh) | 2016-09-07 |
Family
ID=56835586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610305796.0A Pending CN105929971A (zh) | 2016-05-10 | 2016-05-10 | 一种按键识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105929971A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112124287A (zh) * | 2020-09-25 | 2020-12-25 | 上海拿森汽车电子有限公司 | 一种epb按键的故障识别方法、装置、设备和介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195132A (zh) * | 1996-11-20 | 1998-10-07 | 摩托罗拉公司 | 中断驱动的袖珍键盘扫描方法和装置 |
US20080316066A1 (en) * | 2007-06-19 | 2008-12-25 | Fujitsu Limited | Key Control Circuit, Electronic Apparatus, Portable Device, and Key Control Method |
CN101840268A (zh) * | 2010-04-23 | 2010-09-22 | 中国电子科技集团公司第五十四研究所 | 一种矩阵键盘的快速扫描定位方法 |
CN101958717A (zh) * | 2010-09-29 | 2011-01-26 | 惠州Tcl移动通信有限公司 | 一种按键扫描的方法及按键扫描装置 |
CN102122961A (zh) * | 2011-03-07 | 2011-07-13 | 惠州Tcl移动通信有限公司 | 一种电子设备的按键扫描方法 |
WO2012051871A1 (zh) * | 2010-10-19 | 2012-04-26 | 惠州Tcl移动通信有限公司 | 具有全键盘功能的电路板、全键盘手机及其键盘的布局和连线方法 |
CN103034336A (zh) * | 2011-09-29 | 2013-04-10 | 无锡华润矽科微电子有限公司 | 键盘矩阵及其按键扫描方法 |
-
2016
- 2016-05-10 CN CN201610305796.0A patent/CN105929971A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195132A (zh) * | 1996-11-20 | 1998-10-07 | 摩托罗拉公司 | 中断驱动的袖珍键盘扫描方法和装置 |
US20080316066A1 (en) * | 2007-06-19 | 2008-12-25 | Fujitsu Limited | Key Control Circuit, Electronic Apparatus, Portable Device, and Key Control Method |
CN101840268A (zh) * | 2010-04-23 | 2010-09-22 | 中国电子科技集团公司第五十四研究所 | 一种矩阵键盘的快速扫描定位方法 |
CN101958717A (zh) * | 2010-09-29 | 2011-01-26 | 惠州Tcl移动通信有限公司 | 一种按键扫描的方法及按键扫描装置 |
WO2012051871A1 (zh) * | 2010-10-19 | 2012-04-26 | 惠州Tcl移动通信有限公司 | 具有全键盘功能的电路板、全键盘手机及其键盘的布局和连线方法 |
CN102122961A (zh) * | 2011-03-07 | 2011-07-13 | 惠州Tcl移动通信有限公司 | 一种电子设备的按键扫描方法 |
CN103034336A (zh) * | 2011-09-29 | 2013-04-10 | 无锡华润矽科微电子有限公司 | 键盘矩阵及其按键扫描方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112124287A (zh) * | 2020-09-25 | 2020-12-25 | 上海拿森汽车电子有限公司 | 一种epb按键的故障识别方法、装置、设备和介质 |
CN112124287B (zh) * | 2020-09-25 | 2022-02-22 | 上海拿森汽车电子有限公司 | 一种epb按键的故障识别方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1648866A (zh) | 在虚拟机系统中控制硬件中断应答的机制 | |
CN108255602B (zh) | 任务组合方法及终端设备 | |
US11734076B2 (en) | Method and apparatus for traversing graph database based on allocation of threads to operators | |
CN103019794A (zh) | 一种嵌入式多程序文件离线批量烧写方法 | |
CN104572994B (zh) | 用于搜索数据的方法和装置 | |
CN105760289A (zh) | 一种嵌入式系统的调试方法及装置 | |
CN101937360B (zh) | 一种创建虚拟机的方法和装置 | |
CN105929971A (zh) | 一种按键识别方法及装置 | |
CN1101961C (zh) | 带有多个触发器的半导体集成电路 | |
CN104460437A (zh) | 一种通讯控制方法及通讯装置 | |
CN105528319B (zh) | 基于fpga的加速卡及其加速方法 | |
CN107632819B (zh) | 一种基于符号表的可编程逻辑调试的方法和系统 | |
CN113282063B (zh) | 缝制产线的配置方法及装置 | |
CN107341136B (zh) | 序列索引号的生成方法、生成装置及存储介质 | |
CN209657106U (zh) | 控制设备及系统 | |
CN212624743U (zh) | 一种红外屏的扫描电路 | |
CN1945586A (zh) | 电子电路设计的自动构建系统及自动构建方法 | |
CN1267818C (zh) | 将单处理器的软件程序转换为多处理器的软件程序的方法 | |
CN104182274B (zh) | 一种移动终端的中断检测装置及其方法 | |
CN106954264A (zh) | 一种下行物理共享信道pdsch的资源映射方法及系统 | |
CN104408619A (zh) | Ic卡支付终端交易流程配置、实现方法及装置和业务系统 | |
CN103076887A (zh) | 分散控制系统操作员键盘支持鼠标功能的实现方法 | |
CN104793974A (zh) | 一种启动系统的方法及一种计算机系统 | |
CN110874252A (zh) | 一种焦点控制方法、装置及设备 | |
CN219225353U (zh) | 一种plc控制系统及其主控装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160907 |
|
RJ01 | Rejection of invention patent application after publication |