由下图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动的现象,抖动时间的长短和按键的机械特性有关,一般为5~10ms。通常我们手动按键然后释放,这个动作中稳定闭合的时间超过了20ms。因此单片机在检测键盘是否按下时都要加上去抖动操作,有专用的去抖动电路,也有专门的去抖动芯片,但通常我们采用软件延时的方法就可以解决抖动问题。
/* 软件去抖 */
if (0 == k1 ) //如果有键按下
{
delay_ms(8); //延时一段时间去抖
if (0 == k1) //如果真的有键按下,检测到得是稳定闭合状态
{
。。。 //按键以后需要做的事情
}
while(!k1); //松手检测,如果按住不放则一直在循环里
}
的确,软件上的消抖确实可以保证按键的有效检测。但是,这种消抖确实有必要吗?有人提出了这样的疑问。抖动是按键按下的过程中产生的,如果按键没有按下,抖动会产生吗?如果没有按键按下,抖动也会在i/o上出现,我会立刻把这个微控制器锤了,永远不用这样一款微控制器。所以抖动的出现即意味着按键已经按下,尽管这个电平还没有稳定。所以只要我们检测到按键按下,即可以返回键值,问题的关键是,在你执行完其它任务的时候,再次执行我们的按键任务的时候,抖动过程还没有结束,这样便有可能造成重复检测。所以,如何在返回键值后,避免重复检测,或者在按键一按下就执行功能函数,当功能函数的执行时间小于抖动时间时候,如何避免再次执行功能函数,就成为我们要考虑的问题了。这是一个仁者见仁,智者见智的问题,就留给大家去思考吧。所以消除抖动的目的是:防止按键一次按下,多次响应。
智能手机市场拥挤,游戏手机市场需求增大
戴尔整体安全愿景 覆盖基础架构、云、应用到设备四个层次
cems在线监测设备可监测哪些项目
英飞凌新型 LTE 低噪声放大器和 LNA Bank 让智能手机数据速率提升高达 96%
Marvell展示突破性住宅及商用LED照明解决方案
单片机按键去抖原理
TE Connectivity推出滑轨电源连接器 无需关停系统即可实现元件热插拔
新冠疫情引爆分子诊断市场,2020年全球分子诊断市场将超过150亿美元
什么是外设产品?
三星S11系列曝光将采用挖孔屏设计搭载120Hz刷新率的屏幕
全球国防科技和武器装备研制生产的发展情况分析
手把手教你如何将树莓派网关链接到服务器之第二篇
PCB大厂约5亿购买泰国扩厂所需土地
谷歌就一直是最理想的雇主,然而今年情况似乎有所变化
笔记本键盘维修DIY
多维科技推出升级版TMR磁开关传感器
CL21型电容器材料是什么?有哪些特点呢?
莱迪思iCE40 FPGA角逐“年度数字半导体产品”Elektra奖
Redis能够胜任存储工作吗?
使用开源软件和硬件打造智能家居