产品选型

两个单片机 如何使用单片机一个IO端口分别控制两个LED?

小编 2024-10-06 产品选型 23 0

如何使用单片机一个IO端口分别控制两个LED?

今天在公众号“芯片之家 ”看到一篇推文, 介绍使用单片机的一个IO端口,分别控制两个发光二极管各自独立的点亮与熄灭[1] ,总共四个状态。为了控制两个LED的目的,需要应用到MCU的IO端口的四个工作状态:输出高电平、输出低电平、高阻状态以及输出连续对称方波这四种状态。

在下面的面包板上,演示了使用一条IO控制线控制l两个LED分别点亮和熄灭的四种状态。

▲ 一个个单片机IO端口分别控制两个LED

为了理解其中的工作原理,则需要熟悉LED的两个工作特性:

单向导电特性;导通阈值特性;

正如发光二极管名字所说,LED只能向二极管那样单向导电发光。如果施加电压极性反了,LED则不工作。

导通阈值特性是指,只要施加的正向电压超过一定阈值之后,LED才能够导通。这一点可以从下面这支红色LED的正向V-A特性曲线看出。

▲ 红色LED的V-A特性

上面曲线表明,只有当正向电压超过大约1.5V之后,电流才会出现快速增加。在此之前,正向导通电流很小。

不同颜色的LED由于所使用的半导体材料不同,导通阈值电压会有所区别。比如下面这支黄色LED的正向导通电压超过了1.7V。

▲ 黄色LED的V-A曲线

如果LED发射光谱中包括更短的光谱成分,则相应的导通会更高。下面的绿色和蓝色LED的正向导通电压的阈值都已经超过了2.5V了。

▲ 绿色LEDV-A特性曲线

▲ 蓝色LED的V-A曲线

将不同LED的V-A特性曲线绘制在一起,可以凸显出不同LED的阈值电压的差异。值得说明的是,当电压小于阈值电压的时候,LED并不是不导电,只是电流极小。比如在2.5V,虽然还没有超过蓝色LED的阈值电压,但在LED灯芯处还是能够隐约看到发光。

一旦电压超过阈值电压,LED正向导通电流便会迅速增加到1mA以上。之后虽然电流增加很快,但看起来,在正向导通电流2 ~ 10mA之内,LED都显示为点亮状态,亮度倒是看起来差不多。

▲ 不同颜色LED的伏安特性

合理的 应用LED的单向导电和导通阈值特性,便可以在一条单片机IO口的四种工作状态下,来控制两个LED的点亮和熄灭了。

比如利用LED管的单向导通特性,将两个LED正反向并联 在一起,分别连接在分压电阻中心和单片机的IO口上,就可以实现单个IO口控制两个LED的目标。在下图中,显示了在一个工作在5V电压下的单片机IO控制两个LED(红色,黄色)的四中状态。

▲ 两个LED正反并联连接在MCU的IO口与分压电阻中点

当IO口为高阻状态,两个LED都熄灭;当IO端口为高电平时,红色LED点亮;当IO端口为低电平的时候,黄色LED点亮;当IO输出方波信号时(通常要求频率大于100Hz),两个LED交替点亮,根据人眼色视觉暂留特性,看起来两个LED都点亮了。

下面动图显示了IO口的四种状态对应两个LED的点亮与熄灭。

▲ 对应两个LED四个状态的IO输出波形

上面的LED并联方案是利用了LED的单向导通特性。如果考虑到LED的阈值特性,这种方案就会受到一定限制。比如,控制的LED绿色或者蓝色时,由于它们的导通阈值电压超过了2.5V,因此绿色和蓝色LED就很难被点亮。

下面动图显示,绿色和蓝色LED只能发出微弱的光线。

▲ 对于两个LED四种状态的IO波形

如果当单片机和LED的供电电压为3.3V时,情况将会更加严重。比如在3.3V供电情况下,使用并联LED方案,对于红色的LED还可以勉强工作,但对于绿色和蓝色LED则无法点亮了。

▲ 对于两个LED四种状态的IO波形

在前面推文中则介绍了另外一种方案,即LED串联方案 ,可以解决蓝色和绿色LED控制问题。

下图显示了LED串联方案电路示意图:

▲ 两个LED串联控制方案

当IO端口为高阻时,由于两个LED的导通阈值电压之和大于电源电压(+5V),它们都不导通;当IO端口为低电平时;上面的绿色LED点亮;当IO端口为高电平时,下面的蓝色LED点亮;当输出高频方波信号时,两个LED都被点亮。

▲ 对应两个LED四种状态IO波形

串联LED控制模式只能应用于两个LED的电压加起来超过电路电源电压的情况。比如蓝色、绿色LED,工作在3.3V,5V电压下都是可以的。

如果将两个LED更换成红色(1.6V)和绿色(2.5V),使用串联模式,则只能应用在电源电压小于4.1V的情况下,比如3.3V的单片机电路中。如果在5V电路中,则会出现两个LED无法同时熄灭的情况。

下面就显示了一个红色,一个绿色LED工作在5V电源电压下,当IO为高阻时,它们实际上无法熄灭。

▲ 对应两个LED四种状态IO波形

在5V电压下,那么对于红色、绿色LED使用前面并联LED方案行不行呢?

通过实验会发现,也出现了问题。由于绿色LED在2.5V下无法点亮,因此并联方案也无法工作。如下图所示:

▲ 对应两个LED四种状态IO波形

那么问题来了,在5V电压下,该使用什么方案,才能够利用单片机一个IO口的四种模式,来分别控制一个绿色LED和一个红色LED的点亮和熄灭呢?就像下面这个动图里所示的那样。

▲ 对于两个LED四种状态的IO波形

如果并联LED和串联LED工作原理已经理解了,我想此时,你的脑子里已经有了答案了。如果你有了想法,就将答案写在后面的留言中吧。

只有8个引脚的单片机,片上资源丰富、性价比高、只有不到一块钱

说起单片机,大家都想到的是引脚数众多,体积较大,如48引脚的LQFP48、100引脚的LQFP100,40引脚的DIP40等。但是在做一些小项目的时候,需求简单功能不复杂,用多引脚单片机比较浪费,这时候该怎么办?有没有一些不需要太多的片上资源、引脚较少、价格便宜的单片机?

1- 8引脚单片机

ST的8引脚单片机

半导体巨头ST就推出了只有8个引脚的单片机。之前提到8引脚的单片机,大家马上就联想到Microchip,该公司推出的8引脚单片机较早。但是PIC系列的单片机编译器众多,不同系列的单片机需要安装不同的编译器,而且下载器不通用,比较昂贵,如ICD3系列市场价在800-1000左右,这就让很多用户望而却步了。

2-多引脚单片机

ST所推出的8引脚单片机为STM8S001,属于STM8S系列,该单片机将以极高的性价比服务于广大用户。全新的 STM8S001 采用小型工业标准的 SOP8 封装,在内核处理速度、系统控制、存储器大小、通信外设及模拟功能方面实现最佳配置与优化。

单片机的基本参数和参数

该单片机的基本参数如下:

内核和片上资源

内核为STM8,主频16MHz,,三级指令流水线,工作电压2.95-5.5V,5个IO口,有两个定时器,有三种低功耗模式:wait,active-halt,halt。

存储空间

具有8KB的Flash, 1KB的RAM, 128字节 EEPROM。

通信接口和片上资源

具有UART, SPI, I2C各一路,3通道10位ADC,具有5个可配置的外部中断,下载接口为SWIM方式。

3-片上资源

单片机最小系统的搭建

单片机的最小系统包括电源电路、晶振电路、下载电路、复位电路等。STM8S001具有三个可选择的时钟源:1)HSE;2)HSI;3)LSI,如果对时钟频率的精度要求不高可以选择内置时钟。下载接口为SWIM单总线方式可以使用STLINK来实现。其最小系统原理图如下图所示。

4-最小系统电路图

编程环境和下载方式介绍

该芯片的内核为STM8,所以可以使用IAR for STM8,该编程环境专门用于STM8系列单片机,界面清爽,易于操作。

5-IAR Workbench

下载工具使用STLINK-V2即可,只需要和单片机连接SWIM和GND即可,连线简单,还可以实现在线仿真,大大提高代码的调试效率。

6-STM8S001电路板

STM8S001是一款性价比极高的单片机,适用于需求简单、功能不复杂的产品开发,批量价格不到1元钱,大大节省了产品成本。

相关问答

怎样用 单片机 控制 两个 LED同时亮?

很简单。一个LED,正极接IO引脚,负极接地。即可实现:IO口输出1时,灯亮。另一个LED,正极接正电源,负极接IO引脚。即可实现:IO口输出0时,灯亮。注...

max485实现两 单片机 间的通信?

两个单片机需要有RS232的通信口,在买两个RS232转RS485的通信模块就行了。如果想将RS485电路做到板子里,我有图。程序可按你的要求去写,简单。两个单片机需...

单片机 如何同时亮 两个 灯程序?

""可以通过采用并行控制或者定时轮询的方式来实现单片机同时亮两个灯。1.首先,采用并行控制的方式,可以利用单片机的多个输出引脚,分别连接两个灯。通过控制...

高手, 单片机 程序里面可以同时出现 两个 中断吗?

单片机程序里是不可能同时进入两个中断的。1、会有出现同时两个中断满足进入中断的条件,这时就会根据中断优先级进行判断先进入那个中断服务程序里,高优先级...

两个单片机 只是一个指令另一方一个串口线可以吗?

是的,您可以使用一根串口线将两个单片机连接在一起。这样做的目的是实现两个单片机之间的数据通信。然而,在使用串口通信时,请确保遵循以下步骤:1.选择正确...

单片机 两个 灯不能一起闪烁?

在单片机中,两个灯不能同时闪烁的原因可能是因为它们共用了同一个IO口或者共用了同一个定时器。当两个灯共用同一个IO口时,只能通过改变IO口的电平来控制其中...

【选用一块 单片机 控制两块ADC0832进行模数转换,如果我选用sb...

[最佳回答]理论和实际应用中,定义别的管脚不会影响,除非你定义的管脚有时会占用(比如232通讯和外部中断)但你说没有用到这些口,不过还是请你再检查.还有对ADC0...

单片机 C语言编写点亮两盏led灯,首先从中间两盏点亮,依次相邻两盏灯点亮,依次循环永不停息?

#includesbitM=P1^0;voiddelayms(unsignedcharms){unsignedinti;while(ms--){for(i=0;i}}...

L298n怎样用 两个 电源分别给电机和 单片机 供电?

一、L298n的两个电源引脚、L298n与单片机、L298n与电机的供电(连接)L298n中的一个电源引脚与单片机电源引脚的连接L298n的逻辑控制部分的电源输人端口9引脚...

单片机 c51和c52的区别?

C51和C52都是基于8051架构的单片机系列,其中C52是C51的升级版,它们的主要区别如下:1.架构不同:C51和C52的架构基本相同,但C52具有更先进的架构和功能,支持...

猜你喜欢