设计与开发

单片机 按键控制led 用单片机DIY一个按键控制LED

小编 2024-10-11 设计与开发 23 0

用单片机DIY一个按键控制LED

学了单片机总想做些属于自己的东西,但有些时候不知道做些什么,其实这种现象对于每一个初学者都会有所体会,今天针对这一现象,对初学者进行一个学习引导,对于学过单片机之类的肯定不难,但对刚接触的初学者却能够起到一个很好地指引。

单片机一开始学就会接触到LED和按键,今天我们就把这两个功能给结合起来,DIY一个用按键控制LED,单片机选择51系列单片机。

51IC

先来看下按键原理图

独立按键原理图

流水灯原理图

先来分析下独立按键,四个按键有一个共同特点。那就是其中一个引脚是连一块的,然后直接连到GND上,而另一端接到单片机引脚上,当按键按下的时候,按键就会短路,也就是接到单片机引脚的那一根信号线直接接到GND上,我们只要检测这个端口有没有出现低电平就可以判断按键有没有按下,通过程序不断判断按键有没有按下,如果按下就执行需要执行的程序,否则继续等待。

注意:在使用按键的时候需要消抖,所谓消抖就是在按键按下之后延时一段时间,然后再来判断按键是否按下,目的为了减少外界的干扰还有按下按键或松开按键那一段时间内不是立马为高或为低电平,消抖能够使程序更稳定。

再来看一下LED流水灯,有8个LED灯,在控制方面原理都是一样,我们就以第一个灯为例,在LED中它们也有一端引脚是连在一起的不过这次是VCC连在一块,另一端接在单片机上,如果想要LED亮的话,根据电流方向,只要接在单片机的一端为低电平就可以实现这个效果,因此根据这一点就可以随便控制LED了。

再结合一下按键,如果按键按下,控制单片机让LED亮,再按一下就让LED灭,这就达成我们目的了,当然你也可以自己扩展一些功能,比如让流水灯流水,按下LED先闪烁,然后灭掉等等,可以展开想象的翅膀随意设计。

动图中从左到右四个按键功能依次为LED反亮、LED闪烁、LED亮、LED关。

注:文章中的原理图与所选择的硬件稍微有些差别,但不影响读者阅读与理解。

单片机常用电路3-按键检测、LED驱动电路

在单片机入门学习中,最简单、最常见的两种入门元器件大概就是按键和LED了,围绕按键和LED可以基本上把单片机的功能学很多,例如按键可以用来学习单片机的端口输入功能、端口外部中断功能、定时/计数器的计数功能等等;而LED可以用来学习单片机的端口输出功能,定时/计数器的定时功能、PWM功能,位操作功能,电压比较器功能,以及单片机多种操作控制、流程指示等功能。

现在我们就来简单了解一下按键检测和LED驱动电路。

1、按键检测电路

图1是按键检测电路。该电路图包含两种电路:

图1 按键检测电路

一种是连接按键的单片机端口在按键未按下时,处于低电平状态,当按键按下后,单片机端口变为高电平,也就是说,当单片机端口检测到端口电平由低电平变为高电平后,可以判断为按键按下。

另一种是连接按键的单片机端口在按键未按下时,处于高电平状态,当按键按下后,单片机端口变为低电平,也就是说,当单片机端口检测到端口电平由高电平变为低电平后,可以判断为按键按下。

这种按键检测电路的缺点是没有防抖动功能,所以要实现消抖功能,必须通过单片机软件编程实现。

另外,电路中的电阻的作用是为了保护端口,避免电源直接连到单片机端口导致的烧毁端口情况发生。

2、带消抖功能的按键检测电路

图2是带消抖功能的按键检测电路,同样的,带消抖功能的按键检测电路也分为按键平时处于高电平还是低电平两种。我们以按键未按下时处于高电平,按下后处于低电平为例来了解一下电路原理。

图2 硬件消抖电路

当按键断开时,电源电压通过电阻对电容充电,电容上的电压与电源电压相等,当按键按下时,由于按键内阻很小,电容通过按键迅速放电,按键两端电压迅速降到接近0V,单片机输入端为低电平,在按键按下时,由于抖动导致按键会短时断开,电源电压经电阻对电容充电,由于电阻的阻值较大,短时间内电容充电量很少,所以电容两端电压基本不变,单片机输入端的电平也基本保持不变,从而保证了按键抖动时仍可以使单片机输入端保持稳定的低电平信号。

这种硬件消抖电路需要根据实际情况选择R和C的值,具体请参考我在头条里的文章《基于proteus的51单片机开发实例(7)--按键的检测》。

3、简单的LED驱动电路

图3是一种简单的LED驱动电路。这两个电路一个是LED发光时,电流经过LED流到单片机端口,俗称“灌电流”驱动LED,另一种是LED发光时,电流经过单片机端口流到地,俗称“拉电流”驱动LED。

图3 LED驱动电路

这种电路的缺点是:单片机的驱动能力有限,一般单片机端口驱动电流能力在10mA以下,并且单片机总的驱动电流一般不超过100mA。所以当单片机电路中电路模块较多时,可能会导致驱动能力不足,因此这种方式只适合在学习和实验时,不适合用在单片机产品中。

4、通用LED驱动电路

图4,图5是常用的LED驱动电路。在这两个电路中,单片机端口实际上相当于开关的功能,当单片机输出高(或者低)电平时,LED点亮(或者熄灭);当单片机输出低(或者高)电平时,LED熄灭(或者点亮),驱动LED发光所需的电流由三极管提供,单片机端口只负责控制三极管的导通或者截止就可以了。

图4 LED驱动电路1

图5 LED驱动电路2

5、LED驱动芯片

现在有很多专用的LED驱动芯片,可以直接驱动多路LED,至于LED驱动芯片的电路,每种芯片有各自特点,这里就不多说了。

相关问答

51 单片机 关于单独 按键控制LED 灯-ZOL问答

刚看你程序,你上电按住就可以了,是你while(1)卡住了按键的扫描了楼上程序是错的。用到标志位才行。楼上写的程序。是第一个按键按下,不放,按第二个键,不放...

51 单片机 , 按键控制 流水灯程序,懂的进!八个 LED 灯与 单片机 P1口...

[最佳回答]假如,你的程序在执行key_scan();是触发了两次中断导致num>20,你的显示函数将永远被跳过,你应该写成if(num>20)��{���num=0;���display();�.....

(求大神解答)选择:1.一个 单片机 应用系统用 LED 数码管显示字...

[最佳回答]1.一个单片机应用系统用LED数码管显示字符“8”的段码是80H,可以断定该显示系统用的是(B)。A、不加反相驱动的共阴极数码管B、加反相驱动的共阴极...

关于 单片机 通过开关三极管驱动 LED ?

现在的单片机IO口灌电流都是在100mA左右,其实你可以直接接;如果没有速度要求的话,用最简单8050NPN三极管就可以了,三极管的接法是IO口串联一个基极电阻Rb后...

20 单片机 79f3212触摸开关 控制led 亮灭怎么写程序?

是代表led灯亮或者灭的一个变量。当你按下开关后,s1==0,就执行led=!led这条语句。led=!led的意思就是取反的意思,即原来led灯亮的话执行...led应该是一个变...

51 单片机 用一个IO口实现用4个复位开关 按键 控制 4个 LED 灯?

开启电路时1号灯是亮的,按下2号开关一号灯灭以此类推!----怎么类推?按下3号开关二号灯灭?二号灯,从来也没有亮啊!开启电路时1号灯是亮的,按下2号开关一号...

51 单片机 按键控制 小灯亮灭的问题(程序类型:c语言)?

51单片机的IO口接按键,实现外部触发(外部中断,高低电平,上下降沿),触发后再通过IO控制LED的开关即可。51单片机的IO口接按键,实现外部触发(外部中断,高低电平...

帮忙做一个51 单片机 89C52的程序,要求是 LED 灯1以0.5秒为周期闪烁,并且通过 按键 设置周期?

51单片机的IO口接按键,实现外部触发(外部中断,高低电平,上下降沿),触发后再通过IO控制LED的开关即可。51单片机的IO口接按键,实现外部触发(外部中断,高低电平...

单片机 知道通信协议如何通信?

假使你用单片机的串口进行通信的话,你只需要考虑蓝牙转串口和串口转蓝牙的过程就可以了,主要是二者在通信过程中的编码和解码,当然你具体处理的肯定是比特流,...

单片机按键 怎么消抖-ZOL问答

按键消除抖动用硬件的方法是单稳态电路,或者采用专用芯片,而单片机本身是智能芯片,用软件消除抖动是最佳选择,这样性价比高,可靠性也高,多用一个器件就多一份成...

猜你喜欢