怎么用一个按键控制小灯,按一次小灯不停闪烁,再按一次灭掉。问题很简单(其实问题是在一个论坛上看到的),但是我看了好几楼的回复,都没有看到完整的答案。下面我们来分析下这个问题:1个小灯,其实就是LED灯;需要按键控制它的闪烁和灭,这样还需要一个按键;控制LED闪烁需要单片机开实现(问题提问者主要是要单片机程序)。按照上面的分析,我们画出图1的电路图(单片机部分省略)。 

按键控制led实现闪烁和亮灭电路图

LED驱动和按键控制电路

如图1所示,LED和R1组成了LED驱动电路,这里我们采用单片机拉电流的驱动方式,当单片机IO口(P1.0)输出高电平时,电流从单片机IO口输出,流过LED和电阻R1,最终流到电源地,从而LED发光。当单片机IO口(P1.0)输出低电平时,P1.0电平和电源地电平一样,没有电压差,就不会有电流流过LED,所以LED不会发光。也就是说只要我们通过程序控制单片机IO口P1.0口的电平就可以实现控制LED的亮灭,那我们控制IO的电平重复出现“高---低---高---低……”就可以实现LED闪烁了。今天的问题是用按键控制实现闪烁和灭。下面我就来说按键的事。

图1中R2和S1组成按键电路,R2为上拉电阻,S1为我们真正的控制按键。R2的作用是给单片机IO口(P1.1)提供一个确定的状态,假如没有R2这个电阻,那在上电的瞬间或者是外接电磁干扰过大的时候,P1.1的状态可以会出现在高低电平上的跳变,这是我们不希望出现的。还有一点,假如没有R2这个电阻,在按键没有按下的情况下,IO(P1.1)是悬空的,这样P1.1的电平是不确定的。所以这个上拉电阻还是很有必要的。接下来说按键S1,如图1所示,当按键按下后,IO(P1.1)电平会被拉低为低电平,因为当按键按下后,P1.1直接通过按键接到电源地。当按键没有没按下时,IO(P1.1)电平被电阻R2上拉到高电平。这样一来,按键S1按下时,IO(P1.1)为低电平,按键S1没被按下时,IO(P1.1)为高电平,我们就可以读取IO(P1.1)的电平状态来识别按键是否被按下,从而控制LED的亮灭或者是闪烁。

以上是电路原理,现在我们说说程序的原理。程序部分主要的难点在如何实现按键第一次按下去控制LED闪烁,第二次按下后LED熄灭。这里我们说到了按键第一次按下,第二次按下,这是我们人可以这样说,那我们程序怎么办呢,同样是要编程去记录按键按下的次数,当程序判断当前为为第一次按下按键,就去控制LED闪烁,程序判断当前为第二次按下按键后,就去执行LED灭的程序

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查