CN110086457A - 一种用于机械按键防抖动及阻塞的处理方法 - Google Patents
一种用于机械按键防抖动及阻塞的处理方法 Download PDFInfo
- Publication number
- CN110086457A CN110086457A CN201910205107.2A CN201910205107A CN110086457A CN 110086457 A CN110086457 A CN 110086457A CN 201910205107 A CN201910205107 A CN 201910205107A CN 110086457 A CN110086457 A CN 110086457A
- Authority
- CN
- China
- Prior art keywords
- key
- flag
- flag bit
- obstruction
- bit
- 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
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01H—ELECTRIC SWITCHES; RELAYS; SELECTORS; EMERGENCY PROTECTIVE DEVICES
- H01H9/00—Details of switching devices, not covered by groups H01H1/00 - H01H7/00
- H01H9/54—Circuit arrangements not adapted to a particular application of the switching device and for which no provision exists elsewhere
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K17/00—Electronic switching or gating, i.e. not by contact-making and –breaking
- H03K17/51—Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the components used
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K17/00—Electronic switching or gating, i.e. not by contact-making and –breaking
- H03K17/94—Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the way in which the control signals are generated
- H03K17/965—Switches controlled by moving an element forming part of the switch
- H03K17/967—Switches controlled by moving an element forming part of the switch having a plurality of control members, e.g. keyboard
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K17/00—Electronic switching or gating, i.e. not by contact-making and –breaking
- H03K17/51—Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the components used
- H03K2017/515—Mechanical switches; Electronic switches controlling mechanical switches, e.g. relais
Landscapes
- Input From Keyboards Or The Like (AREA)
Abstract
本发明公开了一种用于机械按键防抖动及阻塞的处理方法,主函数的主循环中用标志位判定是否满足按键条件,满足按键条件则执行按键操作,无按键阻塞时间;10ms定时器中扫描按键加标志位,通过定时器考量时间,通过扫描按键值和标志位,从而设定反应按键所处状态的标志位(正常抬起、按下过程、按下中、抬起过程、按键抬起),细分为五个状态,将按键过程划分得更细致,大大解决了按键抖动问题,又解决了按键不定时长按下的等待问题,还解决了按键阻塞造成主函数不及时响应的问题,方法可靠,设计巧妙,具有良好的应用前景。
Description
技术领域
本发明涉及机械按键处理技术领域,具体涉及一种用于机械按键防抖动及阻塞的处理方法。
背景技术
机械按键是工业产品中常见单元模块,可以很好实现人机交互设置,虽然随着触摸屏的兴起,屏上触摸方式也有广泛应用,但是,机械按键在严苛电磁环境和很多传统领域仍是不可或缺的,是触摸屏无法取代的。
目前,机械按键和MCU连接在现实工业领域有着广泛的应用,其原理简单,通过硬件连接使得MCU得到高低电平,从而执行相应的操作。此操作过程存在常规问题:存在按键抖动,人在按键按下和按键抬起的过程中均可能存在抖动问题,此时如果不处理,将导致MCU多次执行相应操作,违背操作者意愿。解决该问题的常规处理办法:比如按键抬起是逻辑信号“1”,按键按下是逻辑信号“0”,MCU主循环体中判断按键信号是否为“0”,如果为“0”,则等待20ms(观察是否抖动),20ms后判断是否仍“0”,为“0”,则等待按键抬起(即按键信号为“1”)后执行按键操作,否则不执行按键操作,按键按下过程示意图,如图1所示。
但是,常规处理办法存在的问题:占用MCU,因为等待和延迟均占用太多MCU,尤其对于实时性要求高的产品,大大影响实时性。除了中断函数,其他主程序不能得到及时执行,尤其是出现误按下按键不抬起时,主程序将一直阻塞在按键按下的地方等待,其他主程序完全不执行,将严重影响产品性能。
因此,如何克服上述问题,是当前急需解决的。
发明内容
本发明的目的是克服现有的机械按键抖动问题及其延展问题,等待和延迟均占用太多MCU,大大影响产品实时性的问题。本发明用于机械按键防抖动及阻塞的处理方法,主函数的主循环中用标志位判定是否满足按键条件,满足按键条件则执行按键操作,无按键阻塞时间;10ms定时器中扫描按键加标志位,通过定时器考量时间,通过扫描按键值和标志位,从而设定反应按键所处状态的标志位(正常抬起、按下过程、按下中、抬起过程、按键抬起),细分为五个状态,将按键过程划分得更细致,大大解决了按键抖动问题,又解决了按键不定时长按下的等待问题,还解决了按键阻塞造成主函数不及时响应的问题,方法可靠,设计巧妙,具有良好的应用前景。
为了达到上述目的,本发明所采用的技术方案是:
一种用于机械按键防抖动及阻塞的处理方法,包括以下步骤,
步骤(A),主函数在主循环中扫描各位按键的按键状态标志位,判定是否满足按键条件,满足按键条件则执行按键操作,执行完按键操作后将该位按键的标志位清除为正常抬起状态;
步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,从而设定新的按键标志位,重复步骤(A),完成各位按键的操作。
前述的用于机械按键防抖动及阻塞的处理方法,步骤(B)中定时器为10ms的定时器,既定时扫描各位按键和判断按键状态标志位,还用于记录考量按键过程时间,且不会引起主函数中主循环的阻塞,利于主循环的执行和按键的及时响应。
前述的用于机械按键防抖动及阻塞的处理方法,步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,其中,第i位按键所处按键状态的标志位包括正常抬起、按下过程、按下中、抬起过程、按键抬起,其中正常抬起该i位按键的标志位flag[i]=0;按下过程该i位按键的标志位flag[i]=1;按下中该i位按键的标志位flag[i]=2;抬起过程该i位按键的标志位flag[i]=3;按键抬起该i位按键的标志位flag[i]=4。
前述的用于机械按键防抖动及阻塞的处理方法,步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,从而设定各位按键新的按键状态标志位,包括以下步骤,
(B1),设置按键抬起的逻辑信号为1,按键按下的逻辑信号为0,设置10ms定时器的中断;
(B2),中断函数扫描n位按键的逻辑信号input[n],n为按键的总个数,每位设置一个标志位,共n位标志位flag[n],初始化时n位按键的标志位均为0;
(B3),当检测到i位按键的逻辑信号为0时,其中i=0,1,…,n-1,则将对应位的标志位置1,即flag[i]=1;
(B4),再一次进中断函数扫描时,当flag[i]=1时,若此时该位的逻辑信号仍为0,则将flag[i]=2;否则将flag[i]=0;
(B5),再一次进中断函数扫描时,当flag[i]=2时,则说明该位按键的该次按键有效,执行(B6)等待该位按键抬起;
(B6),重复进中断函数扫描时,当flag[i]=2时,直到出现该位按键的逻辑信号为1,则将flag[i]=3;
(B7),再一次进中断函数扫描时,当flag[i]=3时,若该位按键的逻辑信号保持为1,则flag[i]=4,否则将flag[i]=2,返回(B5)用于抬起防抖;
(B8),再一次进中断函数扫描时,当flag[i]=4时,直接退出中断函数。
前述的用于机械按键防抖动及阻塞的处理方法,当主函数中主循环扫描到该i位按键的flag[i]=4时,则执行该i位按键的操作,执行完按键操作后清除该标志位为0,即令flag[i]=0。
前述的用于机械按键防抖动及阻塞的处理方法,步骤(A),主函数中主循环扫描到存在某位按键的按键标志位满足flag[i]=4,则执行该位按键的操作,执行完按键操作后清零该位按键的标志位,即令flag[i]=0;若执行操作未完成,再操作该位按键无效。
本发明的有益效果是:本发明的用于机械按键防抖动及阻塞的处理方法,主函数的主循环中用标志位判定是否满足按键条件,满足按键条件则执行按键操作,无按键阻塞时间;10ms定时器中扫描按键加标志位,通过定时器考量时间,通过扫描按键值和标志位,从而设定反应按键所处状态的标志位(正常抬起、按下过程、按下中、抬起过程、按键抬起),细分为五个状态,将按键过程划分得更细致,大大解决了按键抖动问题,又解决了按键不定时长按下的等待问题,还解决了按键阻塞造成主函数不及时响应的问题,方法可靠,设计巧妙,具有良好的应用前景。
附图说明
图1是机械按键按下过程的示意图。
图2是本发明的用于机械按键防抖动及阻塞的处理方法的流程图;
图3是本发明的定时器定时扫描各位按键和判断按键状态标志位的流程图。
具体实施方式
下面将结合说明书附图,对本发明作进一步的说明。
如图2所示,本发明的用于机械按键防抖动及阻塞的处理方法,包括以下步骤,
步骤(A),主函数在主循环中扫描各位按键的按键状态标志位,判断是否满足按键条件,满足按键条件则执行该位按键的操作,执行完按键操作后将该位按键的标志位清除为正常抬起状态;
步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,从而设定新的按键标志位,重复步骤(A),完成各位按键的操作,其中,定时器为10ms的定时器,既定时扫描各位按键和判断按键状态标志位,还用于记录考量按键过程时间,且不会引起主函数中主循环的阻塞,利于主循环的执行和按键的及时响应。判断按键状态标志位,其中,第i位按键所处按键状态的标志位包括正常抬起、按下过程、按下中、抬起过程、按键抬起,其中正常抬起该i位按键的标志位flag[i]=0;按下过程该i位按键的标志位flag[i]=1;按下中该i位按键的标志位flag[i]=2;抬起过程该i位按键的标志位flag[i]=3;按键抬起该i位按键的标志位flag[i]=4。
通过定时器定时扫描各位按键和判断按键状态标志位,从而设定各位按键新的按键状态标志位,如图3所示,具体包括以下步骤,
(B1),设置按键抬起的逻辑信号为1,按键按下的逻辑信号为0,设置10ms定时器的中断;
(B2),中断函数扫描n位按键的逻辑信号input[n],n为按键的总个数,每位设置一个标志位,共n位标志位flag[n],初始化时n位按键的标志位均为0;
(B3),当检测到i位按键的逻辑信号为0时,其中i=0,1,…,n-1,则将对应位的标志位置1,即令flag[i]=1;
(B4),再一次进中断函数扫描时,当flag[i]=1时,若此时该位的逻辑信号仍为0,则将flag[i]=2;否则将flag[i]=0;
(B5),再一次进中断函数扫描时,当flag[i]=2时,则说明该位按键的该次按键有效,执行(B6)等待该位按键抬起;
(B6),重复进中断函数扫描时,当flag[i]=2时,直到出现该位按键的逻辑信号为1,则将flag[i]=3;
(B7),再一次进中断函数扫描时,当flag[i]=3时,若该位按键的逻辑信号保持为1,则flag[i]=4,否则将flag[i]=2,返回(B5)用于抬起防抖;
(B8),再一次进中断函数扫描时,当flag[i]=4时,直接退出中断函数。
当主函数中主循环扫描到该i位按键的flag[i]=4时,则执行该i位按键的操作,执行完按键操作后清除该标志位为0,即令flag[i]=0。
本发明的用于机械按键防抖动及阻塞的处理方法,在步骤(A)主函数中主循环扫描到存在某位按键的按键标志位满足flag[i]=4,则执行该位按键的操作,执行完按键操作后清零该位按键的标志位,即令flag[i]=0;若执行操作未完成,再操作该位按键无效。
本发明的用于机械按键防抖动及阻塞的处理方法,适用嵌入式系统带机械按键、对实时性要求比较高的产品。
综上所述,本发明的用于机械按键防抖动及阻塞的处理方法,主函数的主循环中用标志位判定是否满足按键条件,满足按键条件则执行按键操作,无按键阻塞时间;10ms定时器中扫描按键加标志位,通过定时器考量时间,通过扫描按键值和标志位,从而设定反应按键所处状态的标志位(正常抬起、按下过程、按下中、抬起过程、按键抬起),细分为五个状态,将按键过程划分得更细致,大大解决了按键抖动问题,又解决了按键不定时长按下的等待问题,还解决了按键阻塞造成主函数不及时响应的问题,方法可靠,设计巧妙,具有良好的应用前景。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (6)
1.一种用于机械按键防抖动及阻塞的处理方法,其特征在于:包括以下步骤,
步骤(A),主函数在主循环中扫描各位按键的按键状态标志位,判定是否满足按键条件,满足按键条件则执行按键操作,执行完按键操作后将该位按键的标志位清除为正常抬起状态;
步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,从而设定新的按键标志位,重复步骤(A),完成各位按键的操作。
2.根据权利要求1所述的用于机械按键防抖动及阻塞的处理方法,其特征在于:步骤(B)中定时器为10ms的定时器,既定时扫描各位按键和判断按键状态标志位,还用于记录考量按键过程时间,且不会引起主函数中主循环的阻塞,利于主循环的执行和按键的及时响应。
3.根据权利要求1所述的用于机械按键防抖动及阻塞的处理方法,其特征在于:步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,其中,第i位按键所处按键状态的标志位包括正常抬起、按下过程、按下中、抬起过程、按键抬起,其中正常抬起该i位按键的标志位flag[i]=0;按下过程该i位按键的标志位flag[i]=1;按下中该i位按键的标志位flag[i]=2;抬起过程该i位按键的标志位flag[i]=3;按键抬起该i位按键的标志位flag[i]=4。
4.根据权利要求2所述的用于机械按键防抖动及阻塞的处理方法,其特征在于:步骤(B),通过定时器定时扫描各位按键和判断按键状态标志位,从而设定各位按键新的按键状态标志位,包括以下步骤,
(B1),设置按键抬起的逻辑信号为1,按键按下的逻辑信号为0,设置10ms定时器的中断;
(B2),中断函数扫描n位按键的逻辑信号input[n],n为按键的总个数,每位设置一个标志位,共n位标志位flag[n],初始化时n位按键的标志位均为0;
(B3),当检测到i位按键的逻辑信号为0时,其中i=0,1,…,n-1,则将对应位的标志位置1,即flag[i]=1;
(B4),再一次进中断函数扫描时,当flag[i]=1时,若此时该位的逻辑信号仍为0,则将flag[i]=2;否则将flag[i]=0;
(B5),再一次进中断函数扫描时,当flag[i]=2时,则说明该位按键的该次按键有效,执行(B6)等待该位按键抬起;
(B6),重复进中断函数扫描时,当flag[i]=2时,直到出现该位按键的逻辑信号为1,则将flag[i]=3;
(B7),再一次进中断函数扫描时,当flag[i]=3时,若该位按键的逻辑信号保持为1,则flag[i]=4,否则将flag[i]=2,返回(B5)用于抬起防抖;
(B8),再一次进中断函数扫描时,当flag[i]=4时,直接退出中断函数。
5.根据权利要求4所述的用于机械按键防抖动及阻塞的处理方法,其特征在于:当主函数中主循环扫描到该i位按键的flag[i]=4时,则执行该i位按键的操作,执行完按键操作后清除该标志位为0,即令flag[i]=0。
6.根据权利要求1所述的用于机械按键防抖动及阻塞的处理方法,其特征在于:步骤(A),主函数中主循环扫描到存在某位按键的按键标志位满足flag[i]=4,则执行该位按键的操作,执行操作完成后清零该位按键的标志位,即令flag[i]=0;若执行操作未完成,再操作该位按键无效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910205107.2A CN110086457A (zh) | 2019-03-18 | 2019-03-18 | 一种用于机械按键防抖动及阻塞的处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910205107.2A CN110086457A (zh) | 2019-03-18 | 2019-03-18 | 一种用于机械按键防抖动及阻塞的处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110086457A true CN110086457A (zh) | 2019-08-02 |
Family
ID=67413231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910205107.2A Pending CN110086457A (zh) | 2019-03-18 | 2019-03-18 | 一种用于机械按键防抖动及阻塞的处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110086457A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302265A (zh) * | 2023-03-14 | 2023-06-23 | 南京莱斯信息技术股份有限公司 | 基于状态机和信号量实现显示屏界面切换的方法及设备 |
CN117250495A (zh) * | 2023-11-16 | 2023-12-19 | 广州三晶电气股份有限公司 | 按键粘连检测装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520648A (zh) * | 2009-04-03 | 2009-09-02 | 四川长虹电器股份有限公司 | 一种去除按键抖动的方法和系统 |
CN107231157A (zh) * | 2016-03-23 | 2017-10-03 | 浙江正泰电器股份有限公司 | 按键扫描方法和低压电器的控制器 |
CN109286400A (zh) * | 2018-09-15 | 2019-01-29 | 孙宇翔 | 一种基于定时器的延时的按键处理方法及应用 |
-
2019
- 2019-03-18 CN CN201910205107.2A patent/CN110086457A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101520648A (zh) * | 2009-04-03 | 2009-09-02 | 四川长虹电器股份有限公司 | 一种去除按键抖动的方法和系统 |
CN107231157A (zh) * | 2016-03-23 | 2017-10-03 | 浙江正泰电器股份有限公司 | 按键扫描方法和低压电器的控制器 |
CN109286400A (zh) * | 2018-09-15 | 2019-01-29 | 孙宇翔 | 一种基于定时器的延时的按键处理方法及应用 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302265A (zh) * | 2023-03-14 | 2023-06-23 | 南京莱斯信息技术股份有限公司 | 基于状态机和信号量实现显示屏界面切换的方法及设备 |
CN116302265B (zh) * | 2023-03-14 | 2024-01-23 | 南京莱斯信息技术股份有限公司 | 基于状态机和信号量实现显示屏界面切换的方法及设备 |
CN117250495A (zh) * | 2023-11-16 | 2023-12-19 | 广州三晶电气股份有限公司 | 按键粘连检测装置 |
CN117250495B (zh) * | 2023-11-16 | 2024-04-26 | 广州三晶电气股份有限公司 | 按键粘连检测装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110086457A (zh) | 一种用于机械按键防抖动及阻塞的处理方法 | |
CN101398732B (zh) | 滑动控制在终端人机交互的实现方法 | |
CN101715020A (zh) | 通话防误触方法及使用该方法的触控式手机 | |
CN102053712B (zh) | 多键盘输入系统、输入设备、转接装置及控制方法 | |
CN105739822A (zh) | 一种应用程序的消息管理方法及系统 | |
CN101623173A (zh) | 一种对烹饪炉具触控装置的休眠状态控制方法 | |
CN105634502A (zh) | 基于状态机的按键扫描的实现方法 | |
CN104461035B (zh) | 可处理多按键同时按下的mcu键盘电路及其实现方法 | |
WO2011023092A1 (zh) | 一种键盘纠错方法及装置 | |
CN202022631U (zh) | 新型电梯控制面板 | |
CN114237420A (zh) | 触摸屏控制方法及装置、电子设备、存储介质 | |
CN103558977B (zh) | 防止误锁屏的方法和装置 | |
CN100541409C (zh) | 一种触摸按键设置方法及其触摸扫描装置 | |
CN104202055B (zh) | 一种实时检测按键触发状态的按键电路、游戏手柄和方法 | |
CN204143541U (zh) | Atm机维护键盘 | |
CN101620417A (zh) | 一种多普勒超声成像设备操作面板控制系统 | |
CN103336592B (zh) | 触控面板的驱动方法 | |
CN102508556A (zh) | 键盘扫描的实现方法 | |
CN109918179A (zh) | 一种按键处理方法、设备及系统 | |
CN201364568Y (zh) | 一种采用多功能数字按键的电子白板系统 | |
CN105373320A (zh) | 控制方法、控制装置及电子装置 | |
CN208805796U (zh) | 一种触控装置以及移动终端 | |
CN106527221A (zh) | 智能开关、具有智能开关的ZigBee模块及操作方法 | |
CN206863547U (zh) | 一种按键循环扫描电路 | |
CN207611369U (zh) | 一种压力触控按键组合键 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190802 |