终极教程,带具体实验现象,1个GPIO控制2个LED显示4种状态,欢迎讨论!
共 2382字,需浏览 5分钟
·
2021-02-06 12:33
芯片之家前几天发了一篇文章,讨论1个GPIO控制2个LED显示4种状态,并没有带具体的实验现象,有点小遗憾:
在下面的面包板上,演示了使用一条IO控制线控制两个LED分别点亮和熄灭的四种状态。
为了理解其中的工作原理,则需要熟悉LED的两个工作特性:
单向导电特性;
导通阈值特性;
正如发光二极管名字所说,LED只能向二极管那样单向导电发光。如果施加电压极性反了,LED则不工作。
导通阈值特性是指,只要施加的正向电压超过一定阈值之后,LED才能够导通。这一点可以从下面这支红色LED的正向V-A特性曲线看出。
上面曲线表明,只有当正向电压超过大约1.6V之后,电流才会出现快速增加。在此之前,正向导通电流很小。
不同颜色的LED由于所使用的半导体材料不同,导通阈值电压会有所区别。比如下面这支黄色LED的正向导通电压超过了1.7V。
如果LED发射光谱中包括更短的光谱成分,则相应的导通阈值会更高。下面的绿色和蓝色LED的正向导通电压的阈值都已经超过了2.5V了。
将不同LED的V-A特性曲线绘制在一起,可以凸显出不同LED的阈值电压的差异。值得说明的是,当电压小于阈值电压的时候,LED并不是不导电,只是电流极小。比如在2.5V,虽然还没有超过蓝色LED的阈值电压,但在LED灯芯处还是能够隐约看到发光。
一旦电压超过阈值电压,LED正向导通电流便会迅速增加到1mA以上。之后虽然电流增加很快,但在导通电流2 ~ 10mA之内,LED都显示为点亮状态,亮度倒是看起来差不多。
合理应用LED的单向导电和导通阈值特性,便可以在一条单片机IO口的四种工作状态下,来控制两个LED的点亮和熄灭了。
比如利用LED管的单向导通特性,将两个LED正反向并联在一起,分别连接在分压电阻中心和单片机的IO口上,就可以实现单个IO口控制两个LED的目标。在下图中,显示了在一个工作在5V电压下的单片机IO控制两个LED(红色,黄色)的四种状态。
当IO口为高阻状态,两个LED都熄灭;当IO端口为高电平时,红色LED点亮;当IO端口为低电平的时候,黄色LED点亮;当IO输出方波信号时(通常要求频率大于100Hz),两个LED交替点亮,根据人眼色视觉暂留特性,看起来两个LED都点亮了。
下面动图显示了IO口的四种状态对应两个LED的点亮与熄灭。
上面的LED并联方案是利用了LED的单向导通特性。如果考虑到LED的阈值特性,这种方案就会受到一定限制。比如,控制的LED绿色或者蓝色时,由于它们的导通阈值电压超过了2.5V,因此绿色和蓝色LED就很难被点亮。
下面动图显示,绿色和蓝色LED只能发出微弱的光线。
如果当单片机和LED的供电电压为3.3V时,情况将会更加严重。比如在3.3V供电情况下,使用并联LED方案,对于红色的LED还可以勉强工作,但对于绿色和蓝色LED则无法点亮了。
在前面推文中则介绍了另外一种方案,即LED串联方案,可以解决蓝色和绿色LED阈值电压高的问题。
下图显示了LED串联方案电路示意图:
当IO端口为高阻时,由于两个LED的导通阈值电压之和大于电源电压(+5V),它们都不导通;当IO端口为低电平时;上面的绿色LED点亮;当IO端口为高电平时,下面的蓝色LED点亮;当输出高频方波信号时,两个LED都被点亮。
下面动图显示了面包板上绿色和蓝色串联工作状态下,并一条IO端口控制的情况:
串联LED控制模式只能应用于两个LED的电压加起来超过电路电源电压的情况。比如蓝色、绿色LED,工作在3.3V,5V电压下都是可以的。
如果将两个LED更换成红色(1.6V)和绿色(2.5V),使用串联模式,则只能应用在电源电压小于4.1V的情况下,比如3.3V的单片机电路中。如果在5V电路中,则会出现两个LED无法同时熄灭的情况。
下面就显示了一个红色,一个绿色LED工作在5V电源电压下,当IO为高阻时,它们实际上无法熄灭。
在5V电压下,那么对于红色、绿色LED使用前面并联LED方案行不行呢?
通过实验会发现,也出现了问题。由于绿色LED在2.5V下无法点亮,因此并联方案也无法工作。如下图所示:
那么问题来了,在5V电压下,该使用什么方案,才能够利用单片机一个IO口的四种模式,来分别控制一个绿色LED和一个红色LED的点亮和熄灭呢?就像下面这个动图里所示的那样。
如果你对并联LED和串联LED工作原理已经理解了,我想此时,你的脑子里已经有了答案了。如果你有了想法,就将答案写在后面的留言中吧。(答案就在上图中)分析出答案的,请把答案打在评论区!