美文网首页
【按键检测与防抖】

【按键检测与防抖】

作者: 大魔王是本人 | 来源:发表于2017-04-16 12:12 被阅读71次

    单片机通常是已知按键不按时IO口的电平(如高电平),当IO口电平发生改变时(如低电平),则开启定时器进行延时,延时20ms后再次读取IO口的电平,若仍为低电平,则说明有按键按下;若为高电平,则说明是按键抖动,没有按键按下。

    通过读取相邻2个时钟周期内IO口的电平值并进行比较,若电平值发生改变(此代码中是判断电平从0变为1),则计数器清零,若持续20ms后电平值没有发生改变,则读取按键的键值,同时将这一键值存储起来,当下一个20ms后再次读取键值,将2次键值进行比较,若键值发生改变,则说明按键有动作(要么按下,要么松手)。此代码中是判断键值从0变为1,即松手检测。

    假设采集时钟的周期小于20ms,那么,采集时钟就有可能两次采到按键断开时的不确定的值,就没有办法避免采用CDC电路所想避免的问题。所以采集时钟的周期必须要大于20ms。假设采集时钟的周期大于120ms的话,就有可能采不到按键的闭合信号,所以采集时钟的周期必须小于120ms。我们在这里选用周期为25ms的采集时钟(频率为40Hz)

    来源:

    http://blog.csdn.net/a8039974/article/details/26928251

    http://blog.sina.com.cn/s/blog_72c14a3d010150m4.html

    相关文章

      网友评论

          本文标题:【按键检测与防抖】

          本文链接:https://www.haomeiwen.com/subject/qffoattx.html