一种去除按键抖动的方法和系统的制作方法

文档序号:6286884阅读:366来源:国知局
专利名称:一种去除按键抖动的方法和系统的制作方法
技术领域
本发明涉及一种按键信息的处理方法和系统,尤其是一种能够去除按4定抖 动的方法和系纟充。
背景技术
在目前各种电子设备中,如电视机及其它单片机控制系统的产品,通过按键 实现控制功能很常见。
对按键处理的重要环节是去抖动,包括去除按下和抬起瞬间的抖动。
去抖动的方法有很多种,如中国专利CN200720028725.7 (名称为"一种消 除零售终端话筒按键抖动的电路装置")公开了一种使用R-S触发器的硬件方法。 这种通过增加硬件的方法来解决按键的去抖动问题,会增加成本和体积。
另外,还有通过信息处理的方法来解决按键的去抖动问题,如经常采用的 检测到按键按下或抬起信息后,增加一段固定延时,以去除按键按下或抬起瞬 间的抖动,这种方法以无谓的耗费机时来实现去抖动,需要不断延时,在多按 键处理过程中,效率很低。

发明内容
本发明的目的是提供一种去除按键抖动的方法,通过对按键信息的处理, 实时判定按键的抖动,并在按键信息稳定后将去除了抖动信息的按键信息输送 给接收元件,实现4^44去抖动。
本发明的另一个目的是提供一种去除按键抖动的系统,该系统通过对输入 其中的按键信息,实时判定按键的抖动,并在按键信息稳定后将去除了抖动信 息的按键信息输出,实现4^去抖动。
本发明的目的分别通过下述技术方案来实现
一种去除按键抖动的方法包括如下步骤a. 设置定时中断周期;
b. 在定时中断周期内,在每个时刻连续读取按4建信息;
c. 如果两个以上相邻时刻的按键信息都为表征按键按下的值,则判定按 键按下,否则判定按键处于抖动状态;
d. 如果两个以上相邻时刻的按键信息都为表征按键抬起的值,则判定按 键抬起,否则判定按键处于抖动状态;
e. 将步骤c判定按键按下、步骤d中判定按键抬起的信息分别作为有效 的稳定按键信息送入接收按键动作信息的元件,实现去除按键抖动。
作为本发明的实施方式之一,所述步骤c之后还有步骤cl,即如果两个以 上相邻时刻直到下一个定时中断周期内,按键信息都为表征按键按下的值,则 判定^44一直处于按下状态;步骤e中,间隔一个定时中断周期,将按键按下 的有效的稳定按键信息重复送入接收按键动作信息的元件。
作为本发明的另一个实施方式之一,所述步骤c之后还有步骤c2,即如果 两个以上相邻时刻直到下一个定时中断周期内,按键信息都为表征按键按下的 值,则判定按键一直处于按下状态;步骤e中,仅将4务睫按下的一次有效的稳 定按键信息送入按键动作信息的元件。
或者,作为本发明的一个实施方式之一,所述步骤c之后还有步骤c0,即 设置一个至少具有两种状态的标识,如果该标识为A状态,两个以上相邻时刻 直到下一个定时中断周期内,按键信息都为表征按键按下的值,则判定按^魄一 直处于按下状态,步骤e中,间隔一个定时中断周期,将按键按下的有效的稳 定按键信息重复送入接收按键动作信息的元件;如果上述标识为B状态,两个 以上相邻时刻直到下一个定时中断周期内,按键信息都为表征按键按下的值, 则判定按键一直处于按下状态,步骤e中,仅将按键按下的一次有效的稳定按 键信息送入^4建动作信息的元件。
作为本发明的一个具体实施之一,所述步骤b中,设定变量Kinput接收每 个时刻的按键信息,O表示按键处于抬起状态,l表示按键处于按下状态;设定 变量Ktemp为中间变量,接收上一时刻的Ki叩ut值;设定变量Kready接收每个时刻稳定的按键信息;
所述步骤c、 d通过下述逻辑表达式进行 Kready=Ktemp & Ki叩ut lKready & (KterapAKinput) 其中,&表示位与符; l表示位或符; 八表示位异或符;
"="符号右边的Kready表示上一时刻的稳定按4建信息,"="符号左边 的Kready表示当前时刻的稳定按键信息;
所述步骤e中,将Kready的值作为有效的稳定按键信息送入接收按键动作 信息的元件,Kready为1表示稳定的按键按下的有效的稳定按4建信息;Kready 为O表示稳定的按键抬起的有效的稳定按键信息。
作为本发明的一个具体实施方式
之一,所述步骤b中,设定变量Ki叩ut接 收每个时刻的按键信息,O表示按键处于抬起状态,l表示按键处于按下状态; 设定变量Ktemp为中间变量,接收上一时刻的H叩ut值;设定变量Kready接 收每个时刻稳定的按键信息;设定Ks tore作为中间变量保存上一次去抖动后的 按键信息;
所述步骤cO中,设定Kconst为具有至少双状态的标识变量,所述的A状 态表示其值为O,即表示按键一直按下为重复键;所述的B状态表示其值为1, 即表示按键一直按下为非重复键;设定Koutput表示送入接收按键动作信息的 元件内的^^信息输出变量;
所述步骤c、 d通过下述逻辑表达式进行 Kready-Ktemp & Kinput IKready & (KtempAKinput) Koutput=Kready &(~Kstore | Kconst) 其中,&表示位与符; l表示位或符; "表示位异或符; ~表示位取反符;
7"="符号右边的Kready表示上一时刻稳定的按键信息,"="符号左边 的Kready表示当前时刻的稳定按键信息;
所述步骤e中,将Koutput的值作为有效的稳定按键信息送入接收按键动 作信息的元件,Koutput为1表示有效的稳定按鍵按下信息;Koutput为0表示 有效的稳定按键抬起信息。
上述各实施方式中,所述定时中断周期为20ms。
一种去除4^4定抖动的系统包括如下模块
周期定时中断模块,按周期连续产生定时中断;
按键信息读取模块,在周期定时中断模块产生的定时中断周期内,每个时刻 读取按键信息;
去除抖动模块,接收上述每个时刻读取的按键信息,如果两个以上相邻时 刻的按键信息都为表征按键按下的值,则输出稳定的按4定按下信息,否则输出 按键处于抖动状态的信息;如果两个以上相邻时刻的按键信息都为表征按键抬 起的值,则输出稳定的按键抬起信息,否则输出按键处于抖动状态的信息。
作为上述系统的实施方式之一,所述系统还包括标识模块,该标识模块至 少可以被输入两个状态值,当状态值A被输入上述标识;溪块,去除抖动模块接 收每个时刻读取的按键信息,两个以上相邻时刻直到下一个定时中断周期内, 按键信息都为表征按键按下的值,则输出稳定的按键按下信息,并间隔一个定 时中断周期,将有效的稳定按键按下信息重复输出;当状态值B被输入上述标 识模块,去除抖动模块接收每个时刻读取的按键信息,两个以上相邻时刻直到 下一个定时中断周期内,按键信息都为表征按键按下的值,仅输出一次有效的 稳定##按下信息。
本发明采用上迷步骤的方法和/或上述结构的系统,通过信息处理的方法, 不需要延时,在定时中断周期内实时处理按键的信息,判定抖动信息,将抖动 状态去除后的稳定按键信息输出给接收元件,从而可以不必循环耗时等待,即 可识别按4建的正确信息,判定按键状态,具有效率高、处理步骤简单的优点。


本发明将通过例子并参照附图的方式说明,其中 图1是本发明实施例1的卡诺图; 图2是本发明实施例1的真值表; 图3是本发明实施例2的卡诺图; 图4是本发明实施例2的真值表。
具体实施例方式
下面结合具体实施例和附图对本发明作进一步的说明。 实施例1:
一种去除按4t抖动的方法包括如下步骤
a. 设置定时中断周期;
b. 在定时中断周期内,在每个时刻连续读取按4t信息;
c. 如果两个以上相邻时刻的4斜建信息都为表征##:按下的值,则判定按 键按下,否则判定按键处于抖动状态;
d. 如果两个以上相邻时刻的按键信息都为表征4鍵抬起的值,则判定按 键抬起,否则判定按键处于抖动状态;
e. 将步骤c判定按键按下、步骤d中判定按键抬起的信息分别作为有效 的稳定按键信息送入接收按键动作信息的元件,实现去除按键抖动。
上述步骤b中,设定变量Ki叩ut接收每个时刻的按键信息,0表示按键处 于抬起状态,l表示按键处于按下状态;设定变量Ktemp为中间变量,接收上一 时刻的Kinput值;设定变量Kready接收每个时刻稳定的按4建信息; 所述步骤c、 d通过下述逻辑表达式进4亍 Kready=Ktemp & Kinput IKready & (KtempAKinput) 其中,&表示位与符; l表示位或符; A表示位异或符;
9"="符号右边的Kready表示上一时刻的稳定按键信息,"="符号左边 的Kready表示当前时刻的稳定按键信息。
上述步骤e中,将Kready的值作为有效的稳定按键:信息送入接收按键动作 信息的元件,Kready为1表示有效的稳定按M:按下信息;Kready为0表示有效 的稳定按键抬起信息。
在一个具体的实施例中,由于按键的按下与抬起都会有10 ~ 20ms的抖动毛
刺存在,因此,为了获取稳定的按键信息,须要避开这段抖动期。设置3个变 量Kready、 Ktemp和Ki叩ut,并设置定时中断周期为20ms (且不仅限于20ms )。 在定时中断服务程序中读取按键,并把读取的数据存于变量Kinput中。变量 Kready中是所需要的稳定的按键信息;Ktemp是中间变量,它的值是上一次的 Ki叩ut。根据当前按^:的状态,考虑到Kready中是20ms抖动后的有效的稳定 按键信息,则Kready、 Ktemp和Kinput之间,在不同时刻的状态关系如图2的 表中所列。
时刻1为没有键按下的初始状态;
时刻2的Kinput为1;
时刻3的Kinput又变为0,说明时刻2的Ki叩ut为1并不是有键按下,可 能只是干4尤,所以Kreqdy为0;
时刻4同时刻2的情况类似,j旦是时刻4和时刻5时Kinput都为1, i兌明 有按键按下,在时刻5时Kready为1;
时刻7时Ki叩ut为0,但时刻5、 6、 8时Kinput都为1,说明按键一直按 下,只不过有干扰,Kready保持为l;
时刻9、 10连续两个时刻Kinput为0,表示4务建抬起,时刻10时Kready为0。
从上面可以看出,Kready中是消除了抖动并在一定程度上排除了干扰的有 效按键信息。
从按一睫按下到Kready为1,最长时间约为40ms,最短约为20ms。其时间长 短取决于键按下时处于定时中断周期的所在时刻。如果按键一直按下,则有效按键信息以2 Oms的间隔重复输出。
从图2的表中还可以看出,当前时刻Kready的值不但与Ktemp和Ki叩ut 有关,还与Kready前一时刻的值有关。
Kready的当前时刻记作Kreadyn,作为因变量;前一时刻i己作Kreadyn-1, 并和Ktemp、 Ki叩ut —起作为自变量,依照图2的表绘出本实施例的卡诺图如 图1所示,并通过下述计算机编程的运算式在定时中断周期内去除按键抖动, 将有效的稳定按键信息输入到变量Kready中。
Kready=Ktemp & Ki叩ut lKready & (KtempAKinput); "=,,符号右边的Kready表示上一时刻的稳定按键:信息,"="符号左边 的Kready表示当前时刻的稳定按键信息。
Ktemp=Kinput (表示变量Ktemp为中间变量,接收上一时刻的Kinput值) 其中,&表示位与符; l表示位或符; A表示位异或符。
实施例2:
在实施例1的基础上,步骤c之后还有步骤cO,即设置一个至少具有两种 状态的标识,如果该标识为A状态,两个以上相邻时刻直到下一个定时中断周 期内,4射建信息都为表征掩睫按下的值,则判定按键一直处于按下状态,步骤e 中,间隔一个定时中断周期,将按一建按下的有效的稳定按键信息重复送入接收 按键动作信息的元件;如果上述标识为B状态,两个以上相邻时刻直到下一个 定时中断周期内,按键信息都为表征按键按下的值,则判定按键一直处于按下 状态,步骤e中,仅将按键按下的一次有效的稳定^l定信息送入按键动作信息 的元件。
通过计算机编程来实现步骤cO的方法是,设定Kconst为具有至少双状态 的标识变量,所述的A状态表示其值为0,即表示按键一直按下为重复键;所述 的B状态表示其值为l,即表示按键一直按下为非重复键;设定Koutput表示送 入接收按键动作信息的元件内的4斜囊信息输出变量;则步骤c 、 d通过下述逻辑表达式进行 Kready=Ktemp & Ki叩ut lKready & (Ktemp八Kinput) Koutput=Kready & (~Kstore I Kconst) 其中,&表示位与符;
l表示位或符;
"表示位异或符;
-表示位取反符;
"-,,符号右边的Kready表示上一时刻稳定的按^鍵信息,"="符号左边 的Kready表示当前时刻的稳定按4建信息。
表达式Koutput-Kready&(~Kstore | Kconst)的真值表如图4所示,根据 图4的表可以得到图3的卡^若图。
步骤e中,将Koutput的值作为有效的稳定^4定信息送入接收按4建动作信 息的元件,Koutput为1表示稳定的按44按下的有效的稳定按键信息;Koutput 为O表示稳定的按键抬起的有效的稳定按键信息。
在按键一 直按下状态时,本实施例既适用于需要重复的稳定按键信息的应 用系统或电子产品,又适用于不需要重复键值,按一次键获得一次键值的按键 信息的应用系统或电子产品。在对不同的按键有不同需要时,设定变量Kconst 的不同值即可。 实施例3:
在实施例1的基础上,步骤c之后还有步骤cl,即如果两个以上相邻时刻 直到下一个定时中断周期内,按键信息都为表征按键按下的值,则判定按键一 直处于按下状态;步骤e中,间隔一个定时中断周期,将按键按下的有效的稳 定按键信息重复送入接收拾睫动作信息的元件。如果定时中断周期为20ms,则如 果按键一直按下,则有效的稳定^4走信息以20ms的间隔重复输出。
本实施例适用于按键一直按下需要重复的稳定按键信息应用系统或电子产
口O e
实施例4:在实施例1的基础上,步骤C之后还有步骤c2,即如果两个以上相邻时刻 直到下一个定时中断周期内,按键信息都为表征按键按下的值,则判定按键一
直处于按下状态;步骤e中,仅将按键按下的一次有效的稳定按键信息送入按 一建动作信息的元件。
本实施例适用于不需要重复键值,按一次键获得一次键值的按键信息应用 系统或电子产品。 实施例5:
一种去除按键抖动的系统包括如下模块周期定时中断模块、按键信息读取 模块、去除抖动模块和标识模块。
周期定时中断模块,按周期连续产生定时中断。
按键信息读取^f莫块,在周期定时中断^f莫块产生的定时中断周期内,每个时刻 读取按4建信息。
标识模块,该标识模块至少可以被输入两个状态值。
去除抖动模块,当状态值A被输入上述标识模块,去除抖动模块接收每个 时刻读取的按4建信息,两个以上相邻时刻直到下一个定时中断周期内,按键信 息都为表征按键按下的值,则输出稳定的按键按下信息,并间隔一个定时中断 周期,将稳定的^4定按下信息重复输出;当状态值B被输入上述标识模块,去 除抖动模块接收每个时刻读取的按键信息,两个以上相邻时刻直到下一个定时 中断周期内,按键信息都为表征按键按下的值,仅输出一次稳定的按键按下信 息。
应用包含上述模块的系统来去除按键抖动,可以通过计算机编程的功能模 块来实现。
周期定时中断模块可以用定时中断周期的服务程序来实现。 按键信息读取模块,可以如此构成设置3个变量Kready、Ktemp和Kinput, 并设置定时中断周期为20ms (且不仅限于20ms)。在定时中断服务程序中读取 按键,并把读取的数据存于变量Kinput中。变量Kready中是所需要的稳定的 按键信息;Ktemp是中间变量,它的值是上一次的Ki叩ut。标识模块,设定Kconst为具有至少双状态的标识变量,所述的状态值A为 0,即表示按键一直按下为重复键;所述的状态值B为l,即表示按键一直按下 为非重复键。
去除抖动模块,设定Koutput表示送入接收按键动作信息的元件内的按键 信息输出变量,通过下述逻辑表达式构成
Kready=Ktemp & Kinput lKready & (KtempAKinput) Koutput-Kready &(~Kstore | Kconst) 其中,&表示位与符;
l表示位或符;
a表示位弄或符;
表示位取反符;
"="符号右边的Kready表示上一时刻稳定的按4建信息,"="符号左边 的Kready表示当前时刻的稳定按键信息。
本实施例的去除按键抖动的系统可用于既有重复键输出也有非重复键输出 的系统中。对于只有重复键输出的系统,Kconst全为l,则Koutput=Kready, 如果系统只要求非重复键输出,则Kconst全为0。
本发明的上述各实施例适用于通过按键实现控制功能的采用单片机控制系 统的电器产品上,尤其适用于采用单片才凡控制系统的电祸i/L上。
本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相 排斥的特征和/或步骤以外,均可以以任何方式组合。
本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非 特别叙述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特 别叙述,每个特征只是一 系列等效或类似特征中的一个例子而已。
本发明并不局限于前述的具体实施方式
。本发明扩展到任何在本说明书中披 露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新 的组合。
权利要求
1、一种去除按键抖动的方法,其特征在于,包括如下步骤a. 设置定时中断周期;b. 在定时中断周期内,在每个时刻连续读取按键信息;c. 如果两个以上相邻时刻的按键信息都为表征按键按下的值,则判定按键按下,否则判定按键处于抖动状态;d. 如果两个以上相邻时刻的按键信息都为表征按键抬起的值,则判定按键抬起,否则判定按键处于抖动状态;e. 将步骤c判定按键按下、步骤d中判定按键抬起的信息分别作为有效的稳定按键信息送入接收按键动作信息的元件,实现去除按键抖动。
2、 如权利要求1所述一种去除按键抖动的方法,其特征在于,所述步骤c 之后还有步骤cl,即如果两个以上相邻时刻直到下一个定时中断周期内,按4建 信息都为表征按键按下的值,则判定按键一直处于按下状态;步骤e中,间隔 一个定时中断周期,将有效的稳定^l定按下信息重复送入接收按键动作信息的 元件。
3、 如权利要求l所述一种去除按键抖动的方法,其特征在于,所述步骤c 之后还有步骤c2,即如果两个以上相邻时刻直到下一个定时中断周期内,按4建 信息都为表征按键按下的值,则判定按键一直处于按下状态;步骤e中,仅将 一次有效的稳定按键按下信息送入接收按键动作信息的元件。
4、 如权利要求l所述一种去除按键抖动的方法,其特征在于,所述步骤c 之后还有步骤c0,即设置一个至少具有两种状态的标识,如果该标识为A状态, 两个以上相邻时刻直到下一个定时中断周期内,按4建信息都为表征按键按下的 值,则判定按4建一直处于按下状态,步骤e中,间隔一个定时中断周期,将有 效的稳定按键按下信息重复送入接收按键动作信息的元件;如果上述标识为B 状态,两个以上相邻时刻直到下一个定时中断周期内,按键信息都为表征按键 按下的值,则判定按键一直处于按下状态,步骤e中,仅将一次有效的稳定按键按下信息送入接收按键动作信息的元件。
5、 如权利要求1所述一种去除按键抖动的方法,其特征在于 所述步骤b中,设定变量Kinput接收每个时刻的按键信息,0表示按键处于抬起状态,l表示按键处于按下状态;设定变量Ktemp为中间变量,接收上 一时刻的Ki叩ut值;设定变量Kready接收每个时刻稳定的按键信息; 所述步骤c、 d通过下述還辑表达式进行 Kready=Ktemp & Kinput IKready & (Ktemp八Kinput) 其中,&表示位与符; l表示位或符; a表示位弄或符;"="符号右边的Kready表示上一时刻的稳定按4建信息,"="符号左边 的Kready表示当前时刻的稳定4^4建信息;所述步骤e中,将Kready的值作为有效的稳定按键信息送入接收按键动 作信息的元件,Kready为1表示有效的稳定按键按下信息;Kready为Q表示 有效的稳定按键抬起信息。
6、 如权利要求4所述一种去除按键抖动的方法,其特征在于 所述步骤b中,设定变量Kinput接收每个时刻的按键信息,0表示按键处于抬起状态,l表示按键处于按下状态;设定变量Ktemp为中间变量,接收上 一时刻的Kinput值;设定变量Kready接收每个时刻稳定的按键信息;设定 "tore作为中间变量保存上一次去抖动后的按键〃f言息;所述步骤cO中,i殳定Kconst为具有至少双状态的标识变量,所述的A状 态表示其值为0,即表示按键一直按下为重复键;所述的B状态表示其值为1, 即表示按键一直按下为非重复键;设定Koutput表示送入接收按键动作信息的 元件内的按键信息输出变量;所述步骤c、 d通过下述逻辑表达式进行Kready=Ktemp & Kinput |Kready & (KtempHnput)Koutput-Kready &(~Kstore I Kconst)其中,&表示位与符; l表示位或符; "表示位异或符; 表示位取反符;"="符号右边的Kready表示上一时刻稳定的按^建信息,"="符号左边 的Kready表示当前时刻的稳定按键信息;所述步骤e中,将Koutput的值作为有效的稳定按键信息送入接收按键动 作信息的元件,Koutput为1表示有效的稳定按键按下信息;Koutput为0表 示有效的稳定按键抬起信息。
7、 如权利要求1或2或3或4或5或6所述一种去除按键抖动的方法, 其特征在于,所述定时中断周期为20ms。
8、 一种去除按键抖动的系统,其特征在于,包括如下模块 周期定时中断模块,按周期连续产生定时中断;按键信息读取模块,在周期定时中断模块产生的定时中断周期内,每个时 刻读取^4定信息;去除抖动模块,接收上述每个时刻读取的按键信息,如果两个以上相邻时 刻的按键信息都为表征按键按下的值,则输出稳定的^l建按下信息,否则输出 按键处于抖动状态的信息;如果两个以上相邻时刻的^4定信息都为表征^4建抬 起的值,则输出稳定的按键抬起信息,否则输出按键处于抖动状态的信息。
9、 如权利要求8所述一种去除按键抖动的系统,其特征在于,所述系统 还包括标识模块,该标识;漠块至少可以禎:输入两个状态^t,当状态值A被输入 上述标识模块,去除抖动模块接收每个时刻读取的按键信息,两个以上相邻时 刻直到下一个定时中断周期内,按键信息都为表征^I建^J姿下的值,则输出稳定 的按键按下信息,并间隔一个定时中断周期,将有效的稳定按4定按下信息重复 输出;当状态值B被输入上述标识模块,去除抖动模块接收每个时刻读取的按 键信息,两个以上相邻时刻直到下一个定时中断周期内,按键信息都为表征按 键按下的值,仅输出一次有效的稳定按键按下信息。
全文摘要
本发明公开了一种去除按键抖动的方法和系统,一种按键信息的处理方法和系统,目的是不用延时而解决按键抖动的问题,包括如下步骤设置定时中断周期;在定时中断周期内,在每个时刻连续读取按键信息;如果两个以上相邻时刻的按键信息都为表征按键按下的值,则判定按键按下,否则判定按键处于抖动状态;如果两个以上相邻时刻的按键信息都为表征按键抬起的值,则判定按键抬起,否则判定按键处于抖动状态;将前述两个步骤中判定按键按下、抬起的信息分别作为有效按键键信息送入接收按键动作信息的元件,实现去除按键抖动。
文档编号G05B19/04GK101520648SQ20091005884
公开日2009年9月2日 申请日期2009年4月3日 优先权日2009年4月3日
发明者青 史 申请人:四川长虹电器股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1