CN100492918C - 一种扫描键盘的方法和系统 - Google Patents

一种扫描键盘的方法和系统 Download PDF

Info

Publication number
CN100492918C
CN100492918C CNB2006101146190A CN200610114619A CN100492918C CN 100492918 C CN100492918 C CN 100492918C CN B2006101146190 A CNB2006101146190 A CN B2006101146190A CN 200610114619 A CN200610114619 A CN 200610114619A CN 100492918 C CN100492918 C CN 100492918C
Authority
CN
China
Prior art keywords
button
state
current
shake
variable condition
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
Application number
CNB2006101146190A
Other languages
English (en)
Other versions
CN1953334A (zh
Inventor
邓乃利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vimicro Corp
Original Assignee
Vimicro Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Vimicro Corp filed Critical Vimicro Corp
Priority to CNB2006101146190A priority Critical patent/CN100492918C/zh
Publication of CN1953334A publication Critical patent/CN1953334A/zh
Application granted granted Critical
Publication of CN100492918C publication Critical patent/CN100492918C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Input From Keyboards Or The Like (AREA)

Abstract

本发明公开了一种扫描键盘的方法,该方法包括:A、按照设定的顺序,一个扫描周期扫描一次键盘,根据扫描获得的键值,确定按键当前的状态;B、根据所述按键当前的状态、保存的按键前次去除抖动后的状态和保存的按键前次的变化状态,确定按键当前去除抖动后的状态。通过本发明解决了现有技术中存在的在确定按键状态时,需要占用MCU大量资源的问题。本发明同时公开了一种扫描键盘的系统。

Description

一种扫描键盘的方法和系统
技术领域
本发明涉及电子技术领域,特别涉及一种扫描键盘的方法和系统。
背景技术
随着电子技术的发展,越来越多的人开始使用电子设备,比如:MP3,MP4等等。在这些电子设备中,键盘是实现人机交互最常用的手段。键盘有两种电路实现方式:直接连接方式和矩阵方式。直接连接方式就是将按键的一端直接连接到微程序控制器(MCU)的输入引脚。矩阵式键盘是将所有的按键按照矩阵方式进行排列,键盘的行输入连接到MCU的输出引脚,键盘的列输出连接到MCU的输入引脚。
图1为4×4键盘矩阵电路示意图。如图1所示,图中共有16个按键,4个键盘的输入引脚,4个键盘的输出引脚。如果采用直接连接方式的键盘,16个按键需要16个引脚,而采用矩阵式键盘,16个按键只需要8个引脚,所以,在键盘设计时,大多采用矩阵实现方式。
扫描键盘是得到键盘上按键状态的变化过程。因为按键是用户输入设备,并且按键是机械装置,所以在按键按下和释放的过程中,会有抖动,这就需要过滤掉抖动的过程,才能得到准确的按键状态的变化过程。
图2为现有技术输出的按键状态为按下的扫描键盘流程示意图。如图2所示,现有技术输出的按键状态为按下的扫描键盘包括下列步骤:
步骤200、MCU每隔一个设定的时间,对键盘第一行进行扫描。
步骤201、MCU扫描完一行后,获得该行的键值,查看是否扫描完所有行,如果是,则执行步骤202;否则,返回步骤201。
步骤202、MCU读取按键的状态,如果没有按键按下,则执行步骤203;否则,执行步骤204。
步骤203、结束扫描。
步骤204、MCU延时一段时间,等待按键的抖动结束。
步骤205、MCU行对键盘进行扫描。
步骤206、MCU扫描完一行后,获得该行的键值,查看是否扫描完所有行,如果是,则执行步骤207;否则,执行步骤205。
步骤207、MCU读取按键的状态,如果没有按键按下,则执行步骤203;否则,执行步骤208。
步骤208、MCU输出按键状态是按下的按键的键值。
图3为现有技术输出的按键状态为释放的扫描键盘流程示意图。如图3所示,现有技术输出的按键状态为释放的扫描键盘包括下列步骤:
步骤300、MCU每隔一个设定的时间,对键盘第一行进行扫描。。
步骤301、MCU扫描完一行后,获得该行的键值,查看是否扫描完所有行,如果是,则执行步骤302;否则,返回步骤301。
步骤302、MCU读取按键的状态,如果没有按键按下,则执行步骤303;否则,执行步骤304。
步骤303、MCU输出所有按键的键值。
步骤304、MCU延时一段时间,等待按键的抖动结束。
步骤305、MCU对键盘进行扫描。
步骤306、MCU扫描完一行后,获得该行的键值,查看是否扫描完所有行,如果是,则执行步骤307;否则,执行步骤305。
步骤307、MCU读取该行按键的状态,如果没有按键按下,则执行步骤303;否则,执行步骤308。
步骤308、MCU输出按键状态是释放的按键的键值。
步骤309、结束扫描。
综上所述,现有技术在确定按键状态时,需要在一个扫描周期内对键盘进行一次扫描后,延时一段时间去除抖动,再进行一次扫描,并且为了获得按键按下和释放的不同状态,需要两套不同的扫描程序,从而降低了MCU对按键值的处理速度,占用了MCU大量的资源。
发明内容
本发明提供一种扫描键盘的方法,用以解决现有技术中存在的在确定按键状态时,需要占用MCU大量资源的问题。
本发明方法包括:
A、按照设定的顺序,一个扫描周期扫描一次键盘,根据扫描获得的键值,确定按键当前的状态;
B、如果所述按键当前的状态和保存的按键前次去除抖动后的状态相同,则确定所述按键当前的变化状态为无变化;否则,确定所述按键当前的变化状态为有变化;
如果所述按键当前的变化状态和保存的按键前次的变化状态为有变化,则确定所述按键当前去除抖动后的变化状态为有变化;否则,确定所述按键当前去除抖动后的变化状态为无变化;
如果所述按键当前去除抖动后的变化状态为有变化,则确定所述按键当前去除抖动后的状态为所述按键当前的状态;否则,确定所述按键当前去除抖动后的状态为保存的按键前次去除抖动后的状态;
所述按键当前的状态、所述按键前次去除抖动后的状态和所述按键当前去除抖动后的状态为按下状态或释放状态。
按键的响应事件包括:按下事件和释放事件,则步骤B之后包括:
如果所述按键当前去除抖动后的状态为释放,并且所述按键当前去除抖动后的变化状态为有变化,则确定按键当前的响应事件为按健释放事件;如果所述按键当前去除抖动后的状态为按下,并且所述按键当前去除抖动后的变化状态为有变化,则确定所述按键当前的响应事件为按键按下事件。
步骤B中,所述按键的响应事件还包括:长按事件,则步骤B包括:
在按键状态为按下时,开始计时,如果在设定的时间内该按键去除抖动后的状态全都为按下,则确定该按键当前的响应事件为按键长按事件,在该按键去抖后的变化状态为有变化时,停止计时并归零。
一种扫描键盘的系统,该系统包括:
按键状态扫描模块,用于按照设定的顺序,一个扫描周期扫描一次键盘,获得按键的键值,确定按键当前的状态;
按键变化状态模块,用于在所述按键当前的状态和保存的按键前次去除抖动后的状态相同时,确定按键当前的变化状态为无变化;在所述按键当前的状态和保存的按键前次去除抖动后的状态不相同时,确定按键当前的变化状态为有变化;
按键去抖变化状态模块,用于在所述按键当前的变化状态和保存的按键前次的变化状态为有变化时,确定按键当前去除抖动后的变化状态为有变化;在所述按键当前的变化状态和保存的按键前次的变化状态为无变化,或者只有一个变化状态为有变化时,确定按键当前去除抖动后的变化状态为无变化;
按键抖动模块,用于保存按键变化状态模块中确定的按键的变化状态;
按键去抖状态模块,用于在所述按键当前去除抖动后的变化状态为有变化时,确定所述按键当前去除抖动后的状态为所述按键当前的状态;在所述按键当前去除抖动后的变化状态为无变化时,确定所述按键当前去除抖动后的状态为保存的按键前次去除抖动后的状态;
所述按键当前的状态、所述按键前次去除抖动后的状态和所述按键当前去除抖动后的状态为按下状态或释放状态。
按键的响应事件包括:按下事件和释放事件,该系统还包括:
处理模块,用于在所述按键当前去除抖动后的变化状态为有变化,并且所述按键当前去除抖动后的状态为释放时,确定按键当前的响应事件为按键释放事件;在按键当前去除抖动后的变化状态为有变化,并且按键当前去除抖动后的状态为按下时,确定按键当前的响应事件为按键按下事件。
所述按键的响应事件还包括:长按事件,则所述处理模块包括:
计时模块,用于在按键状态为按下时,开始计时,如果在设定的时间内该按键去除抖动后的状态全都为按下,则确定该按键当前的响应事件为按键长按事件,在该按键去抖后的变化状态为有变化时,停止计时并归零。
本发明按照设定的顺序,一个扫描周期扫描一次键盘,根据扫描获得的键值,确定按键当前的状态,根据按键当前的状态、按键前次去除抖动后的状态和按键前次的变化状态,确定按键当前去除抖动后的状态,实现了一个扫描周期只需要扫描一次,就可以确定按键的状态,并且可以同时输出按键释放和按下两种状态,从而加快了MCU对键值的处理速度,节省了MCU的资源。
附图说明
图1为4×4键盘矩阵电路示意图;
图2为现有技术输出的按键状态为按下的扫描键盘流程示意图;
图3为现有技术输出的按键状态为释放的扫描键盘流程示意图;
图4为本发明扫描键盘的系统结构示意图;
图5为本发明扫描模块结构示意图;
图6为本发明扫描一个按键的状态变化示意图;
图7为实现本发明方法的流程示意图;
图8为本发明实施例的流程示意图。
具体实施方式
针对目前在确定按键状态时,需要占用MCU大量资源的问题,本发明按照设定的顺序,一个扫描周期扫描一次键盘,根据扫描获得的键值,确定按键当前的状态,根据按键当前的状态、按键前次去除抖动后的状态和按键前次的变化状态,确定按键当前去除抖动后的状态,从而解决了上述问题。
图4为本发明扫描键盘的系统结构示意图。如图4所示,本发明包括:扫描模块10和处理模块20。
扫描模块10,与处理模块20连接,用于按照设定的顺序,一个扫描周期扫描一次按键,根据扫描获得的键值,确定按键当前的状态,并根据按键当前的状态、按键前次去除抖动后的状态和按键前次的变化状态,确定按键当前去除抖动后的变化状态和按键当前去除抖动后的状态,并按照设定的顺序保存并发送按键当前去除抖动后的变化状态和按键当前去除抖动后的状态。
处理模块20,与扫描模块10连接,用于根据收到的来自状态模块的按键当前去除抖动后的状态和按键当前去除抖动后的变化状态,确定相同位置对应的按键当前的响应事件。
按键当前去除抖动后的状态包括:按下和释放,按键的响应事件包括:按下事件,释放事件和长按事件。
如果按键当前去除抖动后的状态为释放,按键当前去除抖动后的状态有变化,则确定按键当前的响应事件是按健释放事件;如果按键当前去除抖动后的状态为按下,按键当前去除抖动后的状态有变化,则确定按键当前的响应事件为按键按下事件。
其中,处理模块20还包括:计时模块200。
计时模块200,用于在按键状态为按下时,开始计时,如果在设定的时间内该按键去除抖动后的状态全为按下,则确定该按键当前的响应事件为按键长按事件,在该按键去抖后的变化状态为有变化时,停止计时并归零。
扫描模块10可以通过软件实现自身的功能,也可以通过硬件实现自身的功能。
图5为本发明扫描模块结构示意图。如图5所示,本发明扫描模块10包括:按键状态扫描模块100、按键变化状态模块101、按键去抖变化状态模块102、按键抖动模块103和按键去抖状态模块104。
按键状态扫描模块100,与按键变化状态模块101、按键去抖变化状态模块102和按键去抖状态模块104连接,用于按照设定的顺序,一个扫描周期扫描一次按键,获得按键的键值,确定按键当前的状态,并按照设定的顺序将保存的按键前次的状态替换成按键当前的状态,将按键当前的状态发送给按键变化状态模块101。
按键变化状态模块101,与按键状态扫描模块100、按键去抖变化状态模块102和按键去抖状态模块104连接,用于收到按键当前的状态后,从按键去抖状态模块140中获取保存的按键前次去除抖动后的状态,根据相同位置的按键当前的状态和按键前次去除抖动后的状态,确定该位置对应的按键当前的变化状态,并按照设定的顺序将保存的按键前次的变化状态替换成按键当前的变化状态,将按键当前的变化状态发送给按键去抖变化状态模块102。
如果按键当前的状态和按键前次去除抖动后的状态相同,则确定按键当前的变化状态为无变化;否则,确定按键当前的变化状态为有变化。
按键去抖变化状态模块102,与处理模块10、按键变化状态模块101、按键抖动模块103和按键去抖状态模块104连接,用于收到按键当前的变化状态后,从按键抖动模块103中获取保存的按键前次的变化状态,根据相同位置的按键当前的变化状态和按键前次的变化状态,确定该位置对应的按键当前去除抖动后的变化状态,并按照设定的顺序将保存的按键前次去除抖动后的变化状态替换成按键当前去除抖动后的变化状态,向按键抖动模块103发送替换消息,分别向按键去抖状态模块104和处理模块10发送按键当前去除抖动后的变化状态。
如果按键当前的变化状态和按键前次的变化状态为有变化,则按键当前去除抖动后的变化状态为有变化,表明按键的状态不是由于抖动引起的;否则,按键当前去除抖动后的变化状态为无变化,表明按键的状态是由于抖动引起的。
按键抖动模块103,与按键变化状态模块101和按键去抖变化状态模块102连接,用于保存按键的变化状态,在收到替换消息后,按照设定的顺序将保存的按键前次的变化状态替换成获取的按键变化状态模块101中保存的按键当前的变化状态。
按键去抖状态模块104,与处理模块10、按键状态扫描模块100、按键变化状态模块101和按键去抖变化状态模块102连接,用于根据收到的按键当前去除抖动后的变化状态,确定相同位置对应的按键当前去除抖动后的状态,并按照设定的顺序将保存的按键前次去除抖动后的状态替换成按键当前去除抖动后的状态,向处理模块10发送按键当前去除抖动后的状态。
如果按键当前去除抖动后的变化状态为有变化,则确定按键当前去除抖动后的状态为按键当前的状态;否则,确定按键当前去除抖动后的状态为按键前次去除抖动后的状态。
如果按键去抖变化状态模块102,按照设定的顺序保存按键当前去除抖动后的变化状态,则处理模块10在确定按键当前的响应事件后,删除去抖变化模块中保存的按键当前去除抖动后的变化状态。
图6为本发明扫描一个按键的状态变化示意图。如图6所示,设定扫描键盘的周期是10ms,按键按下为1,释放为0。
KEY_INPUT表示扫描获得的按键的状态,0表示按键释放,1表示按键按下。
CHANGE表示按键的变化状态,0表示按键变化状态为无变化,1表示按键变化状态为有变化。
KEY_CHANGE表示按键去除抖动后的变化状态,0表示按键去除抖动后的变化状态为无变化,1表示按键去除抖动后的变化状态为有变化。
KEY_JITTER表示按键前次的变化状态,0表示按键前次变化状态为无变化,1表示按键前次变化状态为有变化。
KEY_STATUS表示按键去除抖动后的状态,0表示按键释放,1表示按键按下。
其中,KEY_INPUT、CHANGE和KEY_JITTER为临时变量。
从图6中可以看出,按键的状态为0。在20mS的时候按键发生抖动,是按键的误动作,到34mS抖动结束。在54mS的时候按键开始按下,到122mS的时候按键状态稳定。在按键保持按下的过程中,从122mS到132按键发生了一次抖动。在166mS按键开始释放,到176mS按键完全释放。此后一直处于释放状态。
如果预先设定的时间是60ms,在第5次扫描时,确定按键的状态是按下后,开始计时,第6次扫描确定按键的状态是按下,第7次扫描确定按键的状态是按下,则认为该按键是长按,第8次和第9次扫描确定按键的状态都是长按,第10次扫描确定按键的状态是释放后,计时器归零,等待下一次确定按键的状态是按下后,开始计时。
Figure C200610114619D00141
扫描后获得的KEY_INPUT是根据下面语句得到按键的状态:
CHANGE=KEY_INPUT^KEY_STATUS
KEY_CHANGE=KEY_JITTER & CHANGE
KEY_JITTER=~KEY_JITTER & CHANGE
KEY_STATUS=(KEY_CHANGE & KEY_INPUT)|(~KEY_CHANGE &KEY_STATUS)。
扫描模块在软件中的程序:
volatile unsigned int key_status;
volatile unsigned int key_change;
volatile unsigned int key_jitter;
void timer_out_handle(void)
{
unsigned int key_input;
unsigned int change;
key_input=get_key_input();                /扫描当前时刻/
change=key_input^key_old_status;         /获得按键的变化状态/
key_change=key_jitter & change;           /按键去抖后的变化状态/
key_jitter=~key_jitter & change;         /当前按键的变化状态/
key_status=(key_change & key_input)|(~key_change & key_status);
                                            /按键去抖后的状态/
}
扫描模块在硬件中的程序:
reg change,key_change,key_jitter,key_status;
always@(posedge CLK)
begin
change<=key_input^key_old_status;
                                    /扫描当前时刻获得按键的变化状态/
key_change<=(key_jitter & change)|key_change;
                                            /按键去抖后的变化状态/
key_jitter<=~key_jitter & change;              /当前按键的变化状态/
key_status<=(key_change & key_input)|(~key_change & key_status);
                                                 /按键去抖后的状态/
end;
处理模块在软件中的程序:
int get_key_number(void)
{
unsigned int key_down;
unsigned int key_up;
key_down=key_change & key_status;
if(key_down)
key_change=0;    /如果按键的响应事件是按键按下事件则返回1/
return1;
key_up=key_change & (~key_status);
if(key_up)
key_change=0;    /如果按键的响应事件是按键释放事件则返回2/
return2;
if(key_status)    /如果按键的响应事件是按键长按事件则返回3/
return3;
return0;         /如果没有按键按下则返回0/
}
其中,0、1、2和3分别代表按键的4种不同的处理方式,根据按键的不同应用环境,处理方式不相同。
图7为实现本发明方法的流程示意图,如图7所示,本发明方法包括下列步骤:
步骤700、扫描模块按照设定的顺序,一个扫描周期扫描一次键盘,根据扫描获得的键值,确定按键当前的状态。
步骤701、扫描模块根据按键当前的状态、按键前次去除抖动后的状态和按键前次的变化状态,确定相同位置对应的按键当前去除抖动后的状态和当前去除抖动后的变化状态,并按照设定的顺序保存并发送按键当前去除抖动后的状态和按键当前去除抖动后的变化状态。
步骤702、处理模块根据收到的扫描模块发送的按键当前去除抖动后的状态和按键当前去除抖动后的变化状态,确定相同位置对应的按键当前的响应事件。
图8为本发明实施例的流程示意图。如图8所示,本实施例包括下列步骤:
步骤800、扫描模块按照设定的顺序,每隔一个设定的时间,对键盘第一行进行扫描。
步骤801、扫描模块扫描完一行后,输出按键的键值。
步骤802、扫描模块查看是否扫描完所有行,如果是,则执行步骤803;否则,返回步骤801。
步骤803、扫描模块根据按键的键值,确定按键当前的状态,并按照设定的顺序将保存的按键前次的状态替换成按键当前的状态。
步骤804、扫描模块根据保存的相同位置的按键当前的状态和按键前次去除抖动后的状态,确定该位置对应的按键当前的变化状态,并按照设定的顺序将保存的按键前次的变化状态替换成按键当前的变化状态。
步骤805、扫描模块根据保存的相同位置的按键当前的变化状态和按键前次的变化状态,确定该位置对应的按键当前去除抖动后的变化状态,并按照设定的顺序将保存的按键前次去除抖动后的变化状态替换成按键当前去除抖动后的变化状态,将按键当前去除抖动后的变化状态发送给处理模块。
步骤806、扫描模块按照设定的顺序将保存的按键前次的变化状态替换成按键当前的变化状态。
步骤807、扫描模块根据保存的按键当前去除抖动后的变化状态,确定相同位置对应的按键当前去除抖动后的状态,并按照设定的顺序将保存的按键前次去除抖动后的状态替换成按键当前去除抖动后的状态,将按键当前去除抖动后的状态发送给处理模块。
步骤808、处理模块根据收到的相同位置对应的按键当前去除抖动后的状态和按键当前去除抖动后的变化状态,确定该位置对应的按键当前的响应事件。
如果步骤805中的扫描模块是按照设定的顺序保存按键当前去除抖动后的变化状态,则步骤808中的处理模块在确定了按键当前的响应事件后,删除扫描模块中保存的按键当前去除抖动后的变化状态。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (6)

1、一种扫描键盘的方法,其特征在于,该方法包括:
A、按照设定的顺序,一个扫描周期扫描一次键盘,根据扫描获得的键值,确定按键当前的状态;
B、如果所述按键当前的状态和保存的按键前次去除抖动后的状态相同,则确定所述按键当前的变化状态为无变化;否则,确定所述按键当前的变化状态为有变化;
如果所述按键当前的变化状态和保存的按键前次的变化状态为有变化,则确定所述按键当前去除抖动后的变化状态为有变化;否则,确定所述按键当前去除抖动后的变化状态为无变化;
如果所述按键当前去除抖动后的变化状态为有变化,则确定所述按键当前去除抖动后的状态为所述按键当前的状态;否则,确定所述按键当前去除抖动后的状态为保存的按键前次去除抖动后的状态;
所述按键当前的状态、所述按键前次去除抖动后的状态和所述按键当前去除抖动后的状态为按下状态或释放状态。
2、如权利要求1所述的方法,其特征在于,按键的响应事件包括:按下事件和释放事件,则步骤B之后包括:
如果所述按键当前去除抖动后的状态为释放,并且所述按键当前去除抖动后的变化状态为有变化,则确定按键当前的响应事件为按健释放事件;如果所述按键当前去除抖动后的状态为按下,并且所述按键当前去除抖动后的变化状态为有变化,则确定所述按键当前的响应事件为按键按下事件。
3、如权利要求2所述的方法,其特征在于,步骤B中,所述按键的响应事件还包括:长按事件,则步骤B包括:
在按键状态为按下时,开始计时,如果在设定的时间内该按键去除抖动后的状态全都为按下,则确定该按键当前的响应事件为按键长按事件,在该按键去抖后的变化状态为有变化时,停止计时并归零。
4、一种扫描键盘的系统,其特征在于,该系统包括:
按键状态扫描模块,用于按照设定的顺序,一个扫描周期扫描一次键盘,获得按键的键值,确定按键当前的状态;
按键变化状态模块,用于在所述按键当前的状态和保存的按键前次去除抖动后的状态相同时,确定按键当前的变化状态为无变化;在所述按键当前的状态和保存的按键前次去除抖动后的状态不相同时,确定按键当前的变化状态为有变化;
按键去抖变化状态模块,用于在所述按键当前的变化状态和保存的按键前次的变化状态为有变化时,确定按键当前去除抖动后的变化状态为有变化;在所述按键当前的变化状态和保存的按键前次的变化状态为无变化,或者只有一个变化状态为有变化时,确定按键当前去除抖动后的变化状态为无变化;
按键抖动模块,用于保存按键变化状态模块中确定的按键的变化状态;
按键去抖状态模块,用于在所述按键当前去除抖动后的变化状态为有变化时,确定所述按键当前去除抖动后的状态为所述按键当前的状态;在所述按键当前去除抖动后的变化状态为无变化时,确定所述按键当前去除抖动后的状态为保存的按键前次去除抖动后的状态;
所述按键当前的状态、所述按键前次去除抖动后的状态和所述按键当前去除抖动后的状态为按下状态或释放状态。
5、如权利要求4所述的系统,其特征在于,按键的响应事件包括:按下事件和释放事件,该系统还包括:
处理模块,用于在所述按键当前去除抖动后的变化状态为有变化,并且所述按键当前去除抖动后的状态为释放时,确定按键当前的响应事件为按键释放事件;在按键当前去除抖动后的变化状态为有变化,并且按键当前去除抖动后的状态为按下时,确定按键当前的响应事件为按键按下事件。
6、如权利要求5所述的系统,其特征在于,所述按键的响应事件还包括:长按事件,则所述处理模块包括:
计时模块,用于在按键状态为按下时,开始计时,如果在设定的时间内该按键去除抖动后的状态全都为按下,则确定该按键当前的响应事件为按键长按事件,在该按键去抖后的变化状态为有变化时,停止计时并归零。
CNB2006101146190A 2006-11-17 2006-11-17 一种扫描键盘的方法和系统 Expired - Fee Related CN100492918C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101146190A CN100492918C (zh) 2006-11-17 2006-11-17 一种扫描键盘的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101146190A CN100492918C (zh) 2006-11-17 2006-11-17 一种扫描键盘的方法和系统

Publications (2)

Publication Number Publication Date
CN1953334A CN1953334A (zh) 2007-04-25
CN100492918C true CN100492918C (zh) 2009-05-27

Family

ID=38059493

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101146190A Expired - Fee Related CN100492918C (zh) 2006-11-17 2006-11-17 一种扫描键盘的方法和系统

Country Status (1)

Country Link
CN (1) CN100492918C (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101741394B (zh) * 2009-11-03 2015-01-21 北京中星微电子有限公司 检测按键输入的方法和装置
CN101807927B (zh) * 2010-03-19 2013-01-09 青岛海信电器股份有限公司 一种触摸按键扫描方法及系统
CN102025937A (zh) * 2010-12-02 2011-04-20 深圳Tcl新技术有限公司 电视遥控器灵敏度调节装置及方法
CN103677282B (zh) * 2012-09-24 2016-08-31 中国航天科工集团第二研究院二O七所 一种基于堆栈的去除键抖动的软件实现方法
CN103546165B (zh) * 2013-10-15 2016-05-25 深圳市凌启电子有限公司 按键采样方法、系统和相关设备
CN104124978B (zh) * 2014-07-31 2017-09-26 成都易默生汽车技术有限公司 一种基于状态机的多功能按键检测方法
CN105071816B (zh) * 2015-08-12 2018-04-20 长沙市博巨兴电子科技有限公司 一种高效率快速按键扫描方法
CN105634503B (zh) * 2015-12-28 2018-07-31 北京锦鸿希电信息技术股份有限公司 检测键盘键值的方法及装置
CN106972863A (zh) * 2016-10-31 2017-07-21 成都乐创自动化技术股份有限公司 一种按键驱动方法及装置
CN107861844A (zh) * 2017-09-30 2018-03-30 杭州天马时控科技股份有限公司 一种高效率按键检测方法
CN111381686A (zh) * 2018-12-29 2020-07-07 龙芯中科技术有限公司 按键处理方法、装置、设备和存储介质
CN111880447B (zh) * 2020-07-22 2021-12-21 深圳和而泰智能控制股份有限公司 基于状态机的多按键状态扫描方法、装置及计算设备

Also Published As

Publication number Publication date
CN1953334A (zh) 2007-04-25

Similar Documents

Publication Publication Date Title
CN100492918C (zh) 一种扫描键盘的方法和系统
CN105739786A (zh) 灭屏状态下开启应用程序的方法及装置
JP2008015890A (ja) キー入力装置
CN103297680B (zh) 电子装置及其影像处理方法
CN105068847B (zh) 一种应用程序启动方法及智能手表
CN103024200B (zh) 应用于智能终端的拍摄方法及拍摄装置
CN100555886C (zh) 一种便携终端及其运行方法
CN103916524A (zh) 辅助操作装置和控制移动终端装置的方法
CN106919377B (zh) 确定应用程序的展示界面是否是白屏的方法及装置
CN106879263A (zh) 一种拍摄方法和移动设备
CN102946480A (zh) 终端设备参数设置切换方法和装置
RU2566966C2 (ru) Способ и устройство ускорения нажатия кнопок
EP3418882A1 (en) Display apparatus having the ability of voice control and method of instructing voice control timing
US9983699B2 (en) Input device adaptable to use habit and adapting method therefor
CN113127425B (zh) 图片处理方法、装置及电子设备
JP4745904B2 (ja) 電子装置
CN104866303B (zh) 一种信息处理的方法及移动终端
CN118100956A (zh) 一种按键状态确定方法、装置、设备和存储介质
KR20070005170A (ko) 멀티미디어 단말기의 메뉴 자동 전환 장치 및 방법
CN101727264A (zh) 切换显示器解析度的方法
CN105068846B (zh) 一种应用程序启动方法及智能手表
TW201419038A (zh) 智慧型裝置之快速選擇功能之方法、記錄媒體及電腦程式產品
CN103076887A (zh) 分散控制系统操作员键盘支持鼠标功能的实现方法
KR20090009005A (ko) 키보드 맵 재설정 장치 및 방법
KR100770887B1 (ko) 실행프로그램 전환 시스템 및 그의 제어방법

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090527

Termination date: 20121117