CN103226391B - 一种独立式键盘的扫描定位方法 - Google Patents
一种独立式键盘的扫描定位方法 Download PDFInfo
- Publication number
- CN103226391B CN103226391B CN201310191663.1A CN201310191663A CN103226391B CN 103226391 B CN103226391 B CN 103226391B CN 201310191663 A CN201310191663 A CN 201310191663A CN 103226391 B CN103226391 B CN 103226391B
- Authority
- CN
- China
- Prior art keywords
- keyboard
- identification code
- key
- independent
- scan
- 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.)
- Expired - Fee Related
Links
Abstract
本发明公开了一种独立式键盘的扫描定位方法,适用于电子产品的独立式键盘设计。其方法包括键盘初始化,等待键盘扫描时间到,读取当前键值,合并最近的连续4次键值组成识别码,根据识别码查表获取键号,根据键号进行相应的处理等步骤。本发明通过查表方式获取键号,单键操作与组合键操作可以一并处理,增减按键操作功能或者是调整按键操作功能时,只需增减有效识别码表的大小或者是调整有效识别码表中识别码的前后顺序,算法简单,维护方便。
Description
技术领域
本发明涉及一种键盘的扫描定位方法,尤其是一种独立式键盘的扫描定位方法,特别适用于电子产品的独立式键盘设计。
背景技术
随着嵌入式技术的不断发展,当前各类电子产品普遍采用微控制器作为控制核心,键盘作为主要的输入设备,特别是独立式键盘,在按键数量不多的场合得到了广泛的应用。
申请号为CN201010153560.2的发明专利“一种矩阵键盘的快速扫描定位方法”采用键盘中断触发的方式进入键盘的扫描定位过程,采用多次重复键盘扫描步骤的方法判断按键是否有效,并对所获得的键值进行状态判断;如果多次采样状态相同,则处于稳定状态,键值有效;如果多次采样状态不同,键值无效。所述方法单键操作或组合键操作需要单独判断,如果如是单键操作,则进入单键处理模式;如果是组合键操作,则进入组合键处理模式。该专利所述方法同样可以适用于独立式键盘,也解决了由于键盘自身的机械特性造成的键盘抖动而引起错键、连续触键等错误问题,以及对组合键和重复按键的支持问题。但该方法判别按键是否有效需要对多个键值进行判断、单键操作与组合键操作需要分别处理,逻辑关系复杂,且增减按键操作功能或者是调整按键操作功能时,需要修改键盘扫描定位程序结构。
发明内容
为了解决现有独立式键盘扫描定位存在的上述技术问题,本发明提供一种简单方便的独立式键盘扫描定位方法。
一种独立式键盘的扫描定位方法,通过嵌入式设备和键盘扫描定位程序来实现,所述的嵌入式设备包括独立式键盘和微控制器,独立式键盘中有N个独立按键,N个独立按键分别连接到微控制器的输入端,所述的键盘扫描定位程序在微控制器中运行,所述的方法包括:
A、采用周期扫描的方式读取独立式键盘的当前状态;
B、反映N个按键当前状态的键值为N位二进制码;
C、将最近4次扫描得到的键值按照先后顺序组合成识别码,识别码为N×4位二进制码,不同的键盘操作用不同的识别码来识别;
D、独立式键盘的单键操作与组合键操作都采用N×4位二进制识别码来识别,编程时无需区别对待;
E、将所有有效的单键操作和组合键操作转换成识别码,识别码按键号顺序依次存放在有效识别码表中,通过查表方式获取键盘操作的键号;
F、独立式键盘扫描定位过程有以下步骤:
步骤一,键盘进行初始化;
步骤二,等待键盘扫描时间到;
步骤三,读取当前键值;
步骤四,合并最近的连续4次键值组成当前识别码;
步骤五,根据当前识别码查有效识别码表获取有效键号或者是无效键号;
步骤六,如果是有效键号,进行相应的按键功能处理后返回步骤二;如果是无效键号,则直接返回步骤二。
所述采用周期扫描的方式读取独立式键盘的当前状态,周期时间控制在20~50ms。
所述独立式键盘扫描定位过程中的步骤二等待键盘扫描时间到,采用定时器中断方法定时等待。
所述独立式键盘扫描定位过程中的步骤三读取当前键值的方法是读微控制器相应输入接口的逻辑状态。
所述独立式键盘扫描定位过程中的步骤四合并最近的连续4次键值组成当前识别码,具体方法是将识别码变量中的内容左移N位,然后将当前键值放入至识别码变量的低N位。
所述独立式键盘扫描定位过程中的步骤五根据当前识别码查有效识别码表获取有效键号或者是无效键号,具体方法是,如果该当前识别码与有效识别码表中的某个识别码相符合,键号为当前识别码在表格中的位置;如果该当前识别码与有效识别码表中的所有识别码均不相同,键号为无效键号255。
本发明的有益效果是:独立式键盘的单键操作与组合键操作仅体现在识别码的不同上,扫描定位方法完全相同,可以一并处理;如果需要增减按键操作功能或者是调整按键操作功能,不需要修改键盘扫描程序结构,只需增减有效识别码表的大小或者是调整有效识别码表中识别码的前后顺序即可;本发明方法可以有效地避免独立式键盘由于自身机械特性而造成的抖动影响,也能有效排除窄脉冲干扰的影响,算法简单,维护方便。
附图说明
图1是本发明方法的键盘扫描定位原理框图。
具体实施方式
以下结合附图对本发明作进一步说明。
图1是本发明的键盘扫描定位原理框图,通过嵌入式设备和键盘扫描定位程序来实现,所述的嵌入式设备包括独立式键盘和微控制器,所述的键盘扫描定位程序在微控制器中运行。
独立式键盘的按键独立连接到微控制器的输入接口,每个按键占用一个输入端,按键释放,相应的输入接口端输入逻辑1,按键按下,相应的输入接口端输入逻辑0。
下面以独立式键盘有4个独立按键为例进行说明。
4个按键S3、S2、S1、S0,分别连接到微控制器的输入接口,共占用4个输入端子,反映4个按键当前状态的4位二进制码称为键值,4位二进制键值从高到低依次反映S3、S2、S1、S0的状态,例如,键值1111代表没有键按下,键值1101代表S1键按下。读微控制器相应输入接口的逻辑状态即可获取键值。
正常的键盘操作,按键被持续按下的时间不小于100ms,因此,可以采用周期扫描的方式读取独立式键盘当前状态的键值,如果相邻两次的键值依次为1111、1101,表明S1键有单键按下操作;如果相邻两次的键值依次为1101、1111,表明S1键有单键释放操作。
键盘操作的正确扫描定位需要解决2个问题,一是去除按键在按下或者释放过程中的抖动影响,二是排除窄脉冲干扰的影响。具体的方法是选择合适的扫描周期,同时增加参与判断的键值数量,扫描周期在20~50ms范围内选择,参与判断的键值用相邻的连续4次扫描值,例如,选择扫描周期为20ms,如果相邻4次的键值依次为1111、1111、1110、1110,表明S0键有一次有效的单键按下操作;如果相邻4次的键值依次为1011、1011、1111、1111,表明S2键有一次有效的单键释放操作;如果相邻4次的键值依次为1111、1111、1110、1111,表明P1.0输入端有一个干扰脉冲,不是有效按键操作。
独立式键盘的按键数量较少,经常会使用组合键操作。如果先按下S3后,再按下S1的键盘操作为有效操作,其相邻4次的键值依次为0111、0111、0101、0101;若先按下了S3和S0,释放S0的键盘操作有效,其相邻4次的键值依次为0110、0110、0111、0111。
对键盘操作扫描定位,需要判断4次相邻的键值,为简化处理难度,同时能够将单键操作(按下或者释放)与组合键操作(其中一个键的按下或者释放)统一起来,将最近4次扫描得到的键值按照先后顺序组合成识别码,例如,S0键单键按下操作的识别码是1111111111101110;S0键单键释放操作的识别码是1110111011111111;先按下S3后,再按下S1,S1被击键按下操作的组合识别码是0111011101010101。4个按键组成的识别码为16位二进制码,2个字节。不同的键盘操作对应的识别码不同,可以用识别码来识别相应的键盘操作。单键操作与组合键操作都采用16位二进制识别码来识别,编程时无需区别对待。
独立式键盘中的独立按键数量可以是N个,N个独立按键组成的识别码为N×4位二进制码。
对所有的有效键盘操作进行编号,单键操作、组合键操作的编号可以混合排列;当N个独立按键有M个有效键盘操作时,则对应有M个键号,键号的范围是0~M-1;由于组合键操作的存在,通常有M≥N。与M个有效键盘操作相对应的M个识别码,按照键号顺序,依次保存在有效识别码表中。对键盘扫描并获得当前识别码后,查询有效识别码表,如果该当前识别码与有效识别码表中的某个识别码相符合,则键盘发生一次有效键盘操作(单键操作或者组合键操作),键号为当前识别码在表格中的位置;如果该当前识别码与有效识别码表中的所有识别码均不相同,则没有有效键盘操作,键号为无效键号,此时可以设置一个大于M的数值为无效键号,例如,设置此时的键号为255,表明该次键盘扫描没有有效键盘操作。
将有效键盘操作转换成识别码,有效识别码按顺序存放在表格中,通过查表方式获取键号的键盘扫描定位方法,单键操作与组合键操作仅体现在识别码的不同上,扫描定位方法完全相同,可以一并处理;如果需要增减按键操作功能或者是调整按键操作功能,不需要修改键盘扫描程序结构,只需增减有效识别码表的大小或者是调整有效识别码表中识别码的前后顺序即可。
独立式键盘的扫描定位过程包括以下步骤:
1、在微控制器启动后,首先对键盘进行初始化操作,主要是连续读入4次键值,组合成识别码,存放在识别码变量中;
2、微控制器处理其他任务,同时等待键盘扫描时间到,键盘扫描周期可以在20~50ms范围内选取,在本实例中选择20ms,采用定时器中断方法定时等待键盘扫描时间到;
3、读取当前键值;
4、合并连续4次键值组成当前识别码,具体方法是将识别码变量中的内容左移N位,然后将当前键值放入至识别码变量的低N位,N是独立式键盘中独立按键的数量;
5、根据当前识别码查表获取键号,如果有效识别码表中没有相应的识别码时,键号为无效值255;
6、如果是有效键号,进行相应的按键功能处理后返回步骤2;如果是无效键号,则直接返回步骤2。
Claims (5)
1.一种独立式键盘的扫描定位方法,通过嵌入式设备和键盘扫描定位程序来实现,所述的嵌入式设备包括独立式键盘和微控制器,独立式键盘中有N个独立按键,N个独立按键分别连接到微控制器的输入端,所述的键盘扫描定位程序在微控制器中运行,其特征在于,所述的方法包括:
A、采用周期扫描的方式读取独立式键盘的当前状态;
B、反映N个按键当前状态的键值为N位二进制码;
C、将最近4次扫描得到的键值按照先后顺序组合成识别码,识别码为N×4位二进制码,不同的键盘操作用不同的识别码来识别;
D、独立式键盘的单键操作与组合键操作都采用N×4位二进制识别码来识别,编程时无需区别对待;
E、将所有有效的单键操作和组合键操作转换成识别码,识别码按键号顺序依次存放在有效识别码表中,通过查表方式获取键盘操作的键号;
F、独立式键盘扫描定位过程有以下步骤:
步骤一,键盘进行初始化;
步骤二,等待键盘扫描时间到;
步骤三,读取当前键值;
步骤四,合并最近的连续4次键值组成当前识别码;
步骤五,根据当前识别码查有效识别码表获取有效键号或者是无效键号;
步骤六,如果是有效键号,进行相应的按键功能处理后返回步骤二;如果是无效键号,则直接返回步骤二;
所述采用周期扫描的方式读取独立式键盘的当前状态,周期时间控制在20~50ms。
2.根据权利要求1所述的一种独立式键盘的扫描定位方法,其特征在于:所述独立式键盘扫描定位过程中的步骤二等待键盘扫描时间到,采用定时器中断方法定时等待。
3.根据权利要求1所述的一种独立式键盘的扫描定位方法,其特征在于:所述独立式键盘扫描定位过程中的步骤三读取当前键值的方法是读微控制器相应输入接口的逻辑状态。
4.根据权利要求1所述的一种独立式键盘的扫描定位方法,其特征在于:所述独立式键盘扫描定位过程中的步骤四合并最近的连续4次键值组成当前识别码,具体方法是将识别码变量中的内容左移N位,然后将当前键值放入至识别码变量的低N位。
5.根据权利要求1所述的一种独立式键盘的扫描定位方法,其特征在于:所述独立式键盘扫描定位过程中的步骤五根据当前识别码查有效识别码表获取有效键号或者是无效键号,具体方法是,如果该当前识别码与有效识别码表中的某个识别码相符合,键号为当前识别码在表格中的位置;如果该当前识别码与有效识别码表中的所有识别码均不相同,键号为无效键号255。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310191663.1A CN103226391B (zh) | 2013-05-22 | 2013-05-22 | 一种独立式键盘的扫描定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310191663.1A CN103226391B (zh) | 2013-05-22 | 2013-05-22 | 一种独立式键盘的扫描定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103226391A CN103226391A (zh) | 2013-07-31 |
CN103226391B true CN103226391B (zh) | 2015-12-23 |
Family
ID=48836873
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310191663.1A Expired - Fee Related CN103226391B (zh) | 2013-05-22 | 2013-05-22 | 一种独立式键盘的扫描定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103226391B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491091A (zh) * | 2016-01-05 | 2018-09-04 | 湖南工业大学 | 一种独立式键盘状态识别及编码方法 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105634503B (zh) * | 2015-12-28 | 2018-07-31 | 北京锦鸿希电信息技术股份有限公司 | 检测键盘键值的方法及装置 |
CN105677051B (zh) * | 2016-01-05 | 2018-06-15 | 湖南工业大学 | 独立式键盘扫描电路及编码电路 |
CN105677050B (zh) * | 2016-01-05 | 2018-06-15 | 湖南工业大学 | 独立式键盘扫描电路及扫描编码方法 |
CN105680873B (zh) * | 2016-01-05 | 2018-06-26 | 湖南工业大学 | 独立式键盘扫描编码电路 |
CN105677055B (zh) * | 2016-01-05 | 2018-06-15 | 湖南工业大学 | 矩阵式键盘扫描电路及方法 |
CN108809322B (zh) * | 2016-01-05 | 2022-01-21 | 湖南工业大学 | 一种独立式键盘扫描及编码方法 |
CN105468164B (zh) * | 2016-01-05 | 2018-06-15 | 湖南工业大学 | 矩阵式键盘扫描及编码电路 |
CN105700698B (zh) * | 2016-01-05 | 2018-07-24 | 湖南工业大学 | 矩阵式键盘状态识别及编码电路 |
CN105677054B (zh) * | 2016-01-05 | 2018-05-25 | 湖南工业大学 | 独立式键盘扫描定位电路 |
CN108563338B (zh) * | 2016-01-05 | 2021-05-25 | 湖南工业大学 | 一种独立式键盘扫描方法 |
CN105700696B (zh) * | 2016-01-05 | 2018-06-15 | 湖南工业大学 | 矩阵式键盘扫描编码电路 |
CN108388353B (zh) * | 2016-01-05 | 2021-03-16 | 湖南工业大学 | 一种独立式键盘操作识别及编码方法 |
CN108874164B (zh) * | 2016-01-05 | 2021-03-16 | 湖南工业大学 | 一种矩阵式键盘反转法扫描方法 |
CN105846829B (zh) * | 2016-03-21 | 2019-03-05 | 珠海市杰理科技股份有限公司 | Ad按键确认方法和装置以及电子产品 |
CN105958981A (zh) * | 2016-06-15 | 2016-09-21 | 湖南工业大学 | 自动生产线产品计数传感装置 |
CN111984182B (zh) * | 2020-07-28 | 2022-07-12 | 华帝股份有限公司 | 一种组合键识别方法,装置,设备和可读存取介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8203348B1 (en) * | 2009-05-01 | 2012-06-19 | Christos Tsironis | Autonomous impedance tuner with human control interface |
CN101840268B (zh) * | 2010-04-23 | 2012-02-15 | 中国电子科技集团公司第五十四研究所 | 一种矩阵键盘的快速扫描定位方法 |
CN101958717B (zh) * | 2010-09-29 | 2013-04-03 | 惠州Tcl移动通信有限公司 | 一种按键扫描的方法及按键扫描装置 |
-
2013
- 2013-05-22 CN CN201310191663.1A patent/CN103226391B/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491091A (zh) * | 2016-01-05 | 2018-09-04 | 湖南工业大学 | 一种独立式键盘状态识别及编码方法 |
CN108491091B (zh) * | 2016-01-05 | 2019-10-18 | 湖南工业大学 | 一种独立式键盘状态识别及编码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103226391A (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103226391B (zh) | 一种独立式键盘的扫描定位方法 | |
CN103279197B (zh) | 一种键盘的扫描定位方法 | |
EP1460497A3 (en) | Safety controller | |
JP2009112821A5 (zh) | ||
CN102609072A (zh) | 响应按键触发的方法及采用该方法的便携式设备 | |
CN103456541B (zh) | 按键、键盘及其力回馈方法 | |
CN105071816B (zh) | 一种高效率快速按键扫描方法 | |
CN105336273B (zh) | 一种拼接屏 | |
CN110136621A (zh) | 减少中央处理器口线资源的显示及按键扫描方法及装置 | |
CN102981706A (zh) | 公式引用切换方法和装置、移动设备 | |
CN101770289A (zh) | 三按键组合控制方法 | |
CN101086802B (zh) | 一种遥控按键重复控制的方法 | |
CN109998436A (zh) | 一种单按键操作的洗碗机及其控制方法 | |
CN105405265A (zh) | 一种通过组合按键切换遥控器按键功能的方法 | |
CN205230020U (zh) | 一种拼接屏 | |
CN101221690A (zh) | 智能遥控器 | |
CN204948047U (zh) | 一种按键故障应急处理装置 | |
CN103092122B (zh) | 带有状态指示单元的设备和切换状态指示单元的活跃状态的方法 | |
CN201156479Y (zh) | 按键控制处理装置及键盘和遥控器 | |
CN204044547U (zh) | 遥控电源装置及其遥控灯组件 | |
CN106527221A (zh) | 智能开关、具有智能开关的ZigBee模块及操作方法 | |
CN102176192A (zh) | 按键处理方法及采用该方法的按键装置 | |
CN207611366U (zh) | 一种操作识别装置及具有该操作识别装置的智能终端 | |
CN205594591U (zh) | 基于plc的键盘点阵信号采集装置 | |
CN102163169A (zh) | 一种键盘类型电路板的测试装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20151223 Termination date: 20170522 |
|
CF01 | Termination of patent right due to non-payment of annual fee |