全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > LED照明 >

使用51单片机实现按键控制LED灯的亮灭

时间:2023-07-11 11:40

人气:

作者:admin

标签: 51单片机  按键控制  led灯 

导读:使用51单片机实现按键控制LED灯的亮灭-接前两集,这集我们实现用按键控制LED灯的亮灭。首先,仍旧是分析硬件电路原理图。...

接前两集,这集我们实现用按键控制LED灯的亮灭。首先,仍旧是分析硬件电路原理图:

图片

四个按键,分别接到了单片机IO口的P3.2-P3.5,从原理图分析,按键按下时,IO口与GND相连,此时IO接收到的是低电平信号。因此,我们的按键是低电平有效。当然,这种设计也与51单片机IO内部结构中的弱上拉电阻有关。

图片

那么可以编写程序,接口宏定义和延时函数定义

#include < reg52.h >
sbit KEY0=P3^2;//定义按键引脚
sbit LED0=P1^0;
void delay_ms(unsigned int nms)
{
    unsigned char cnt=125;
    unsigned char i,j;
    for (i=0;i< nms;i++)
        for(j=0;j< cnt;j++);
}//这里我们经验值给定是125个for循环为1ms

主函数编写

void main()
{
    while(1)
    {
        if(KEY0==0)//检测低电平,也就是按键是否按下
        {
            delay_ms(10);//消抖延时
            if(KEY0==0)
            {
                LED0=~LED0;
                while(!KEY0);//确保松开了按键,防误触
            }
        }
    }
}

肯定有小伙伴们好奇,为什么要两次确认按键按下,而且中间还有10ms的延时程序。这是因为按键按下的过程并不是我们以为的完美的信号:

图片

而是有着抖动边沿的信号

图片

这些毛刺就会影响按键的识别精确度。而通常我们人手按下一次低电平能够维持25ms以上,所以我们先通过延时过渡前面从高电平转低电平的时间,尽可能地直接进入到低电平这一稳定的环节,所以采取经验值5-15ms的消抖延时。

除了这种软件上的消抖,还有硬件消抖的办法,在按键两端并联电容,借助电容的充放电过程,消耗掉抖动的那部分电信号,缺点是大批量生产时考虑电容的成本。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信