[发明专利]键盘扫描的实现方法无效
申请号: | 201110337759.5 | 申请日: | 2011-10-31 |
公开(公告)号: | CN102508556A | 公开(公告)日: | 2012-06-20 |
发明(设计)人: | 刘均;胡贵 | 申请(专利权)人: | 深圳市元征软件开发有限公司 |
主分类号: | G06F3/023 | 分类号: | G06F3/023 |
代理公司: | 深圳市德力知识产权代理事务所 44265 | 代理人: | 林才桂 |
地址: | 518000 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 键盘 扫描 实现 方法 | ||
技术领域
本发明涉及一种键盘扫描的实现方法,尤其涉及一种基于状态机的键盘扫描的实现方法。
背景技术
在编写单片机程序的过程中,键盘作为一种人机接口的实现方式,是很常用的。
而一般的实现方法有:
1、外接键盘扫描芯片(例如8279、7279等芯片),然后由该芯片来完成去抖、键值读取、中断请求等功能。然后单片机响应中断并读取键值,有的时候也可以采用轮训的方式。而这种方法需要专门的外围芯片,增加成本,且不容易检测按键的按下、释放以及长按键等一些事件。
2、如果按键数比较少,那么可以直接将按键接到单片机的IO口,然后各按键取逻辑或再送到单片机的中断管脚(对于51体系),单片机响应中断后再去读取IO口的数据。如果单片机的中断向量比较多(例如AVR系列的单片机,每个IO都可以作为中断),那么也可以直接把各个按键接到各个具有中断功能的IO上面。在中断处理程序中往往需要执行这样一个操作序列:延时一定时间来去抖,如果按键有效那么等待按键释放。而这种方法同样不容易检测按键的按下、释放以及长按键等一些事件。且采用软件延时的方式,浪费CPU资源。
键按下之后的理想波形如图1所示,按键处于空闲状态S1时,信号为高;按键处于将按下状态2时,信号垂直降为低;按键处于按下状态S3时,信号为低;按键处于将释放状态S4时,信号垂直升为高。而实际波形如图2所示,按键处于空闲状态S1时,信号为高;按键处于将按下状态S2时,信号出现一段时间的抖动,然后降为低;按键处于按下状态S3时,信号为低,按键处于将释放状态S4时,信号抖动一段时间后升为高。同时,在数据线为低或者为高的过程中,都有可能出现一些很窄的干扰信号。如果可以采用基于这种基于状态机的扫描式的方法来判断各种按键事件,则可有效的解决了上述方法中问题。
发明内容
本发明的目的在于提供一种键盘扫描的实现方法,其工作稳定,占用系统资源少,对各种按键事件响应及时。
为实现上述目的,本发明提供一种键盘扫描的实现方法,包括如下步骤:
步骤1、在按键处于空闲状态时,如果信号线为高,继续保持空闲状态,如果信号线为低,切换到按键将按下状态;
步骤2、在按键处于将按下状态时,如果信号线为高,切换到按键空闲状态,如果信号线为低,发送按键按下消息,并将该按键按下消息存入消息列队,切换到按键按下状态;
步骤3、在按键处于按下状态时,如果信号线为低,保持按键按下状态,并对信号为低这一状态进行计数,如果信号线为高,切换到按键将释放状态;
步骤4、在按键处于将释放状态时,如果信号为低,切换到按键按下状态,如果信号线为高,发送按键释放消息,并将该按键释放消息存入消息队列,切换到按键空闲状态。
所述步骤2中所发送的按键按下消息经过系统判断为不需要消息时,释放该按键按下消息。
所述步骤4中信号为低时,系统根据预设阈值对信号为低这一按键消息的计数进行判断,如果该计数的数值大于该预设阈值,该按键消息作为一长按键消息,小于该预设阈值,该按键消息作为一短按键消息。
所述步骤4中信号为高时,系统对所发送的按键释放消息进行判断,如该按键释放消息为不需要时,释放该按键释放消息。
本发明的有益效果:本发明所提供的键盘扫描的实现方法,使用状态机的模式设计键盘扫描程序,其工作稳定可靠,占用系统资源非常少,对各种按键事件响应及时,在现有的程序框架下还可以方便地扩展其它类型的按键事件。
为了能更进一步了解本发明的特征以及技术内容,请参阅以下有关本发明的详细说明与附图,然而附图仅提供参考与说明用,并非用来对本发明加以限制。
附图说明
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其它有益效果显而易见。
附图中,
图1为按键过程的理想波形示意图;
图2为按键过程的实际波形示意图;
图3为本发明键盘扫描的实现方法的流程图。
具体实施方式
为更进一步阐述本发明所采取的技术手段及其效果,以下结合本发明的优选实施例及其附图进行详细描述。
请参阅图3,本发明提供一种键盘扫描的实现方法,其包括如下步骤:
步骤1、在按键处于空闲状态S1时,如果信号线为高,那么继续保持按键空闲状态S1,如果信号线为低,那么切换到按键将按下状态S2。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市元征软件开发有限公司,未经深圳市元征软件开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110337759.5/2.html,转载请声明来源钻瓜专利网。