[发明专利]基于状态机的按键扫描的实现方法在审
| 申请号: | 201510983772.6 | 申请日: | 2015-12-24 |
| 公开(公告)号: | CN105634502A | 公开(公告)日: | 2016-06-01 |
| 发明(设计)人: | 汪海 | 申请(专利权)人: | 安徽润谷网络科技有限公司 |
| 主分类号: | H03M11/20 | 分类号: | H03M11/20 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 246000 安徽省安庆*** | 国省代码: | 安徽;34 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 状态机 按键 扫描 实现 方法 | ||
技术领域
本发明涉及一种基于状态机的按键扫描的实现方法。
背景技术
在编写单片机程序的过程中,按键作为人机交互设备,是一种是很常用的人机接口的实现方式。
目前一般按键的实现方法大概有以下两种:
1、外接按键扫描芯片(例如8279,7279等),然后由该芯片来完成去抖、键值读取、中断请求等功能。然后单片机响应中断并读取键值,有的时候也可以采用轮训的方式。
2、如果按键数比较少,那么可以直接将按键接到单片机的IO口,然后各按键取逻辑或再送到单片机的中断管脚(对于51体系),单片机响应中断后再去读取IO口的数据。如果单片机的中断向量比较多(例如Freescare系列的单片机,每个IO都可以作为中断),那么也可以直接把各个按键接到各个具有中断功能的IO上面。在中断处理程序中往往需要执行这样一个操作序列:延时一定时间来去抖,如果按键有效那么等待按键释放。
这两种方法都有比较明显的缺陷:
第一种方法需要专门的外围芯片,增加成本,且一般不容易检测按键的按下、释放以及长按键等一些事件。
第二种方法同样不容易检测按键的按下、释放以及长按键等一些事件,并且采用软件延时的方式,浪费CPU资源,很不可取。
发明内容
本发明要解决的技术问题是提供一种基于状态机的按键扫描的实现方法。
为了解决上述技术问题,本发明采用的技术方案是,基于状态机的按键扫描的实现方法,其特征在于:使CPU按设定的频率去扫描按键数据线上的信号,分析并确定按键事件。
作为优选,按键事件包括按下、释放、短按以及长按4类事件;
假设按键按下后为低电平信号,按键释放后则为高电平信号,并以此假设定义所述的按下、释放、短按以及长按4类事件:
(1)当按键被按下,低电平信号产生,微处理器检测到低电平信号超过一段以毫秒计算的短时间则表示按键按下事件发生;
(2)当按下事件发生后,微处理器继续检测到低电平信号持续超过一段以秒计算的长时间则定义为长按事件发生;
(3)当按下事件发生后,微处理器继续检测到低电平信号持续不超过所述超过一段以秒计算的长时间则定义为短按事件发生;
(4)当按键从按下事件变化为弹起状态时,则按键数据信号线的电平状态由低电平变为高电平状态,此时微处理器检测到高电平状态超过所述一段以毫秒计算的短时间,则表示释放事件发生。
作为优选,CPU扫描按键数据线上的信号的设定频率为100Hz。
作为优选,一段以毫秒计算的短时间为20毫秒或30毫秒。
作为优选,一段以秒计算的长时间为2秒或2.5秒。
本发明的有益效果是:
使用状态机的方法设计的键盘扫描程序工作,稳定可靠,占用系统资源非常少,对各种按键事件响应及时,在现有的程序框架下还可以方便地扩展其它类型的按键事件。
附图说明
下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1是本发明基于状态机的按键扫描的实现方法实施例的按键时信号波形示意图。
图2是本发明基于状态机的按键扫描的实现方法实施例的按键过程状态迁移图。
具体实施方式
一种基于状态机的按键扫描的实现方法,包括以下步骤:
一个键按下之后的波形如图1所示(假定低有效):
在有键按下后,数据线上的信号出现一段时间的抖动,然后为低,然后当按键释放时,信号抖动一段时间后变高。当然,在数据线为低或者为高的过程中,都有可能出现一些很窄的干扰信号。
1、状态抽象
因此,我们对这个过程抽象为这么几个阶段:
(1)空闲状态,即数据线信号为高,这里假定为S1状态
(2)确认真的有键按下的状态,这里假定为S2状态。
(3)键按下的状态,这里假定为S3状态。
(4)确认真的有键释放的状态,这里假定为S4状态。
2、状态切换
在S1状态,如果信号线为高,那么继续保持S1状态,如果信号线为低,那么切换到S2状态。
在S2状态,如果信号线为高,那么切换到S1状态,如果信号线为低,那么切换到S3状态,此时表示有了键按下的消息事件,把此事件存入消息队列(如果系统不需要此消息,那么为了简单起见,此时可以不存入这个键按下事件)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽润谷网络科技有限公司,未经安徽润谷网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510983772.6/2.html,转载请声明来源钻瓜专利网。





