分享

单片机知识:按键检测原理

 花落尘埃d1y8s0 2018-06-17

本文介绍通过单片机实现按键控制一个LED灯,教大家学习按键控制原理。

下图为按键连接原理,(PB0-PB3为单片机IO口),每个按键输出端采用上拉电阻,目的是当按键断开时,使单片机输入端口(PB0-PB3)处于高电平状态,只有当按键按下时才处于低电平。(此文用AVR单片机举例)

单片机知识:按键检测原理

按键的基本原理是设置单片机IO口(PB0-PB3)为输入状态,如DDRB = 0XF0(方向寄存器,'1'为输出,'0'为输入);

单片机一直检测按键端口(PB0-PB3)的状态,当端口为低电平时(即按键按下),实行相应的动作(比如控制LED灯)。

原理就是这么回事,但是正真实现时,按键会有抖动,要进行按键去抖,下图为按键按下时的抖动图。

单片机知识:按键检测原理

按键实行一个动作过程是需要一定时间的,一般为100mS-1S左右,而一个单片机执行一个机器周期的时间很短,时钟为10MH的周期为0.1μs,这样按键每一次动作程序就会多次检测按键,出现误判(一次按下,多次动作)。

按键触点在闭合或者断开的瞬间会出现抖动,抖动时间一般小于10ms。

(1) 可以使用硬件电路消抖,硬件消抖可以在按键与单片机IO口之间加入RS触发器,原理如下图所示。

单片机知识:按键检测原理

(2)软件去抖

按键抖动的时间间隔也就10ms以内,可以通过软件进行延时判断,过滤掉抖动的时间,达到消除抖动的目的。

例:按键消抖程序:

Keys ()

{

if(!key) //第1步:判断是否有按键按下,key=0表示按键按下

{

delayms(20); //第2步:延时20ms,用于软件消抖,避开抖动时间

if(!key) //第3步:再次检测该按键是否按下

{

… //按键按下的处理程序

}

}

While(!key); //第4步:判断按键动作是否结束(key=1表示按键已释放)

}

例:按键控制LED灯原理

单片机知识:按键检测原理

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多