时间:2024-05-04
王士莹 张学
摘要: 提出了一种连续状态法的按键检测滤波方法,可以准确稳定地读取按键状态。对按键的“按下”、 “弹起”等基本状态进行分析,结合时间长短和动作次数,提出了“短按”、“长按”、“双击”等功能及其判定流程。实现了对按键的功能的扩展,由单功能按键扩展为多功能按键,充分发挥了按键的潜能。通过实例,对按键功能的实际应用进行了讨论。
【关键词】按键检测 软件滤波 功能扩展
按键是机器与人交互(HMI)所必不可少的器件,在单片机系统中有着广泛的应用。按键在实际使用中存在着功能单一,不能正确使用或充分使用的问题。本文对此进行研究并深入发掘,力求使按键最大化地发挥其功能。
1 软件滤波
机械按键在状态切换时通常会有状态不稳定的一个阶段,在这个阶段产生的毛刺夹杂着高低电平,如果单片机直接读取,很大概率会出现误读。因此除了硬件上要有相应的滤波措施外,还要在程序中加入滤波功能,把不稳定的状态滤掉,以读取按键的稳定真实状态。本文介绍一种连续状态法来读取按键状态。基本思路为:读取按键状态并与前一次读取的状态进行比较,若一致则记下读取次数并延时后进行下一次的读取;若不一致,则把读取次数清零重新读取;重复上述过程,直到读取次数达到10次。也就是说,只有读到的按键状态连续10次都一致,才认为该状态是正确稳定的按键状态;若中间有一次不一致,则重新读取,直到出现连续10次一致。流程图如图1所示。
2 按键功能
2.1 基本功能
按键的基本功能状态有四個,分别是:无动作、按下、弹起、一直按下。定义一直按下的状态是“1”,无动作的状态是“O”,则按下是从0到1上升沿,弹起是从1到O的下降沿。
对四个基本功能的定义流程如表1。
按键的“单击”包括“按下”和“弹起”,是最常用的功能。使用“按下”触发单片机的某个功能时,单片机检测到按键按下即运行对应功能,弹起按键时该功能已经在运行了;使用“弹起”时,要等到按键弹开后再运行对应功能。因此,使用“按下”比“弹起”反应更快,操作更流畅。
2.2 “短按”和“长按”功能
在一直按下的状态,根据按下的时间长短,可以定义“短按”和“长按”,可以把一直按下的时间在1秒到2秒以内的动作定义为“短按”,把3秒以上的动作定义为“长按”。判断流程如图2。
2.3 “双击”功能
还可以根据两次按下的时间间隔的长短定义“双击”功能。根据功能需要和操作习惯,一般把间隔在0.5秒以内的连续两次按下定义为“双击”。如图3。
经过以上处理,按键的功能由单一的“按下”,扩展出了“短按”、“长按”、“双击”。给每个动作赋予处理函数,则可以实现多个功能,该按键也可称为多功能按键。
3 应用实例
LCD是单片机系统中的常用显示器件。若显示的信息量大,一屏不够,则需要多屏显示,在各显示界面之间用按键切换。另外,处于节省成本的考虑,多个单片机系统共用一个显示器,需要查看参数时把LCD显示器装上,用完拆下随身带走。由于LCD显示器需要初始化才能工作,因此安装上后需要用按键通知单片机对LCD进行初始化操作。基于以上分析,使用多功能按键的“按下”功能进行切换显示页面的操作,用“双击”功能对LCD屏幕进行初始化操作。
在位置跟踪系统中,常用到“校准”操作。校准分为对当前位置的校准和对定位开关的校准。由于校准会改变位置角度的数值,故该操作需要慎重使用。因此,可以用多功能按键的“短按”和“长按”,进行该操作。用“短按”进行当前位置的校准,用“长按”进行定位开关的校准。
4 结论
本文探讨了按键在单片机系统中的功能,尤其是发掘了几个非常实用的扩展功能。通过按键功能扩展,可以用一个按键完成两个甚至多个功能。具有操作方便、节省成本的优点。本文所举的案例已经应用于实际产品和工程中,取得了很好的效果。
参考文献
[1]曾旖,庹先国,李向阳.按键开关的抖动与消除方法[J].电子制作,2005,05,46- 47.
[2]陈晓丽.按键的多种状态检测及消抖处理方法[J].家电科技,2013,04,68-70.
[3]刘天时,刘赏,付春,一种单片机键盘电路设计与消抖处理[J].计算机与网络,2010,10,66-68.
[4]符潇天,黄明,彭召敏等.基于定时中断的实时按键任务处理设计[J],工业技术创新,2018,02:24-28.
[5]吴允强,吴由松,基于状态机的单片机按键短按长按功能的实现[J].电子技术与软件工程,2017,24,254.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!