按键检测算法创新在嵌入式开发中的应用
2017-04-21作者王海珍内蒙古民族大学
作者/王海珍,内蒙古民族大学
按键检测算法创新在嵌入式开发中的应用
作者/王海珍,内蒙古民族大学
传统的按键检测算法对应的CPU占用率非常大,为了在嵌入式开发过程中解决这一问题,本文提出了一种基于有限状态机的新型按键检测算法。首先简要介绍了有限状态机分析设计的原理,在其基础上对按键检测算法进行了创新,并将其应用到了嵌入式开发当中,实践证明,本文的按键检测算法在嵌入式开发中的应用具有一定的创新性,并且实用价值较高。
按键检测;嵌入式开发;应用
在嵌入式系统当中,最常用的接口就是键盘和按键,这两种接口作为一种常用的方式,主要用于人机对话的实现,其功能主要包括数据的输入以及数据的传输,以人工操作的方式来对系统进行相应的有效控制[1]。传统的按键检测算法已经满足不了当前嵌入式系统功能需求,所以对其进行创新成为了必然发展趋势。本文主要针对按键检测算法创新在嵌入式开发中的应用展开了相关论述。
1.有限状态机分析设计的原理概述
有限状态机实际上是一种数学模型,用于实时系统的设计,主要以描述控制特性为主[2]。目前,有限状态机的应用领域越来越广,大多数实时系统的研发都离不开这种模型,尤其是实时控制系统,系统的状态与分析机制和功能之间的关联度非常大。有限状态机不仅包括有限状态,而且还包括相互之间的状态转移,无论何时,仅能够处于所有给定状态中的一个。如果输入事件达到接收端,此时状态机就会自动产生一个对应的输出,与此同时其状态也会发生相应的转移。
时间序列作为状态机当中的重要因素,从硬件的角度对其进行分析,时间序列就好比一个同步信号或者触发脉冲序列;如果从软件的角度对其进行分析,可以将时间序列看作是一个定时器,主要用于状态机的同步触发,按照相关要求,在指定的时间段对输入进行检测,依据目前的状态完成信号的输出,与此同时还要完成下一次系统状态转移的有效确定。当下一次触发到来时,系统会在前一次状态的基础上发生相应的转移。另外,也可以将时间序列作为一个系统输入信号,通过改变其状态来改变系统的输出。因此正确分析时间序列的时间间隔对于系统开发来说至关重要,同时依据系统功能需求挑选出较为合适的时间间隔。通常情况下选取的时间间隔要略小于变化最快的周期值,但是这个数值必须是外部输入信号对应的周期值[3]。
图1 状态转换图
2.按键检测算法创新在嵌入式开发中的应用
本文利用有限状态机对按键检测算法进行创新,如图1所示为按键状态机对应的状态转换图。
图1中,完成一次按键需要经过3个操作步骤,其中时间序列的周期设置为10ms。此周期可以理解为经过10ms运行时间就需要对按键的输入信号进行一次检测,确定其状态是否发生改变,同时还需要输入一个确认按键状态的信号,此时其状态会自动发生转换。本文将按键的初始状态设置为“状态0”,想要开启按键,只需要令按键输入为“状态1”即可。如果按键输出为“状态0”,那么其对应的下一个状态也是“状态0”,代表按键处于闭合状态,如果按键没有经过消抖处理,就不可以将其确认为按下状态,下一状态将转为“状态1”。
当按键输出的是“状态1”,则表明其处于闭合确认状态,并且在10ms之前按键始终处于闭合状态,所以在其基础上再次检测到按键输入是“状态0”时,可以看作按键经过了消抖处理,如果按键输出“1”则代表已经确认按键闭合,接下来会自动跳转至“状态2”。当检测结果再次为“1”时,则代表按键很有可能在抖动处理时受到外界因素干扰,同时按键输出是“状态0”,同时下一状态会重新返回至“状态0”。
利用上述确认方法,如果按键输出为“状态1”,就可以达到按键消抖处理的目的。而 “状态2”表示按键处于等待状态,即将被释放,一次完整的按键操作过程必须等到按键释放以后才算结束。依据图1,在整个按键操作过程当中,起初按键的状态为“状态0”,接下来转变为“状态1”,经过10ms转变为“状态2”,最终又会返回至初始状态,即“状态0”。在整个输出信号转变的过程中,只有按键输出“状态1”时,才会有以此确认按键是否处于闭合状态,并且对应的确认信号为“1”。因此本文状态机表示出来的按键系统在解决按键抖动问题的同时,也可以保证整个按键输出过程只有一次按键闭合确认信号“1”输出。
3.总结
传统算法对应的CPU占用率是100%,说明CUP的按键检测程序处于“死等”状态,通过改进按键算法以后,CPU占用率减低幅度非常明显,仅有0.4%,CPU在按键检测结束以后还会有很多时间来完成其他处理。实践证明,本文的按键检测算法在嵌入式开发中的应用具有一定的创新性,并且实用价值较高。
* [1]郑玉章,徐爱钧.嵌入式开发过程中按键检测算法的改进[J].单片机与嵌入式系统应用,2014(8):73-75.
* [2]黄庆华.基于情绪激励的“嵌入式应用程序开发”教学方法创新[J].柳州职业技术学院学报,2012,12(3):99-103.
* [3]张旭,李亚利,陈晨,等.嵌入式驾驶员状态检测算法的实现与优化[J].自动化学报,2012,38(12):2014-2022.