【51单片机实验笔记】LED篇(二)多色LED的基本控制


前言

本节内容我们学习了解一些多色LED显示原理驱动方式

本节涉及到的封装源文件可在《模块功能封装汇总》中找到。

本节完整工程文件已上传GitHub仓库地址,欢迎下载交流!


硬件介绍

双色LED

可以发出2种颜色LED,一般为绿两种颜色。本质是将两个LED封装在一起

图1 透明双色LED
图2 雾状双色LED
图3 原理图

直插式双色LED三个引脚组成,中间的引脚为公共端口,有共阴极共阳极两种。可以观察中间引脚的电极片,如果是大电极,则为负极,即为共阴极


三色LED

双色LED类似,三色LED三个LED封装在一起,控制相应引脚即可发出红、绿、蓝三种颜色的灯光。

图1 直插式三色LED
图2 贴片式5050三色全彩LED

直插式三色LED共有四个引脚组成,共阴极,分别为GNDRGB,通过PWM调制三基色可以获得不同颜色的光。

贴片5050全彩LED共有六个引脚组成,其中5050指封装大小为5mm × \times × 5mm每对引脚单独控制一个LED,原理类似。


七彩自动闪烁LED

2个引脚,外观与单色LED一致,但实际上电后可以自动转换7种颜色。每一个小小的灯里都内置芯片成本贵于普通LED,但优点是控制方便稳定
在这里插入图片描述
根据闪动频率可以分为慢闪快闪两种。一般工作电压2~3V之间,需要加限流电阻防止烧坏。


接线图

由于开发板上并没有板载上述LED,我们需要买到散件后,和开发板进行连接。


面包板介绍

在展示实际接线图之前,我想先介绍一个重要伙伴——面包板
在这里插入图片描述
面包板作用是:帮助我们快速搭建电路免焊接,从而便捷地验证我们的想法。

  • 面包板两侧分别由蓝红两列竖线组成,所对应的孔位代表电源正负极+-)。每列等电位的,列与列之间是不相通的。
  • 面包板中间两个大列组成,两个大列之间不互通这个列电源列正好相反,它们每排电气连接的,而不同排之间不互通

我们一般借助跳线来实现导线的作用,通过一个电源模块提供稳定5V3.3V电源
在这里插入图片描述


直插电阻介绍

同样的,我们需要使用一个直插电阻作为限流电阻
在这里插入图片描述
这是常用的金属膜电阻Metal Film Resistor),利用真空沉积技术在陶瓷棒上形成一层镍铬合金镀膜,然后在镀膜上加工出螺旋沟槽来精确控制电阻。具备性能好精度高温度特性好稳定性强等特点。


色环解析

电阻色环一般用于描述阻值大小精度常用颜色为:0)、1)、2)、3)、4)、绿5)、6)、7)、8)、9)、误差值)、误差值

在这里插入图片描述

色环电阻四环五环两种。以五环电阻为例,第一色环第三色环表示阻值三位数字第四色环表示以10底数指数第五条色环表示误差值

一般前四环间隔较小第五环间隔较大,从而可以判断色环顺序。亦可以通过找到金银环来确定第五环,从而判断色环顺序


双色LED实际接线图

图1 面包板接线细节
图2 整体接线

其中,双色LED共阳极串联了一个200Ω电阻,并通过跳线单片机5V输出端相连。红色绿色阴极分别接P2.0P2.1


三色LED实际接线图

图1 贴片式三色LED接线图
图2 直插式三色LED接线图

需要注意,直插式三色LED模块已经板载了限流电阻150Ω,我们无需再另外接电阻。而贴片式三色LED模块必须外接电阻防止烧坏。

由于是共阴极接法,通过跳线单片机GND相连。红色绿色蓝色阳极分别接P2.0P2.1P2.2


七彩自动闪烁LED实际接线图

图1 七彩自动闪烁LED接线图
图2 实验现象

七彩自动闪烁LED普通LED一样,需要接对七彩自动闪烁LED,并且接七彩自动闪烁LED。不同的是,它只要上电自动执行闪烁程序,效果内置芯片决定。


软件实现

双色LED交替闪烁

#include "delay.h"
/** 
 **  @brief    双色灯闪烁
 **  @author   QIU
 **  @data     2023.09.22
 **/

/*-------------------------------------------------------------------*/
#define DOUBLE_LED_PORT P2

sbit Green_LED = DOUBLE_LED_PORT^0;
sbit Red_LED = DOUBLE_LED_PORT^1;

void main(){

	while(1){
		Green_LED = 0;
		Red_LED = 1;
		delay_ms(500);
		Green_LED = 1;
		Red_LED = 0;
		delay_ms(500);
	}
}

实验现象红绿灯交替闪烁
在这里插入图片描述


三色LED灯交替闪烁

#include "delay.h"
/** 
 **  @brief    三色灯闪烁
 **  @author   QIU
 **  @data     2023.09.23
 **/

/*-------------------------------------------------------------------*/
#define THREE_LED_PORT P2

// 也可以单独赋值
sbit Green_LED = THREE_LED_PORT^0;
sbit Red_LED = THREE_LED_PORT^1;
sbit Blue_LED = THREE_LED_PORT^2;


void main(){
	u8 val = 0x01, i = 0;

	while(1){
		// 先清零
		THREE_LED_PORT = 0x00;
		// 再赋1
		THREE_LED_PORT |= (val<<i);
		i += 1;
		if(i >= 3){
			i = 0;
		}
		delay_ms(500);
	}
}

实验现象红绿蓝灯交替闪烁

图1 直插式三色LED
图2 贴片式三色LED

总结

多色LED的控制原理与单色类似,只是对其硬件进行了组合封装。当然,这也得益于硬件技术的提升

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以通过以下步骤实现51单片机按键控制LED: 1. 首先需要连接一个LED和一个按键到51单片机LED的正极连接到P1口的一个引脚,按键通过一个上拉电阻连接到另一个P1口引脚,按键的另一个端口连接到地。 2. 在51单片机的程序中,需要定义P1口的引脚为输入输出模式。可以使用P1 = 0x00;语句将P1口所有引脚设置为输出模式,或者使用P1 = 0xff;语句将所有引脚设置为输入模式。 3. 在程序中,需要不断地检测按键的状态,可以使用while循环实现。如果按键被按下,对应的P1口的引脚会被拉低,程序需要检测到这个状态并执行相应的操作。 4. 如果按键被按下,LED需要亮起,可以使用P1口的引脚输出高电平来实现。如果按键没有被按下,LED需要灭,可以使用P1口的引脚输出低电平来实现。 以下是一个简单的51单片机按键控制LED的程序示例: ``` #include<reg52.h> sbit led = P1^0; sbit button = P1^1; void main() { while(1) { if(button == 0) //检测按键状态 { led = 1; //按键被按下,LED亮起 } else { led = 0; //按键没有被按下,LED灭 } } } ``` 需要注意的是,以上示例程序仅为演示51单片机按键控制LED基本原理,实际应用中还需要考虑去抖动、延时等问题。 ### 回答2: 51单片机按键控制led是一种常见的嵌入式系统应用。在这个方案中,使用人们熟悉的按键作为输入设备,通过对按键的状态变化进行检测,进而控制led灯的亮灭。 首先需要了解51单片机的硬件接口。通常,按键与单片机的某个IO口相连,通过io口来检测按键的状态。当按键按下时,io口会检测到一个低电平;当按键松开时,io口会检测到一个高电平。这样,可以通过检测io口的高低电平变化来判断按键的状态。 接下来,需要在代码中编写相应的按键检测逻辑。可以使用循环方式检测io口的电平变化,如果检测到io口的电平从高变低,表示按键被按下;如果检测到io口的电平从低变高,表示按键被松开。根据按键的状态变化,可以执行相应的操作。 最后,利用51单片机的另一个io口,控制led灯的亮灭。当按键按下时,将此io口的电平置为低电平,led灯亮起;当按键松开时,将此io口的电平置为高电平,led灯熄灭。 该方案的实现考验了编程和硬件电路的结合能力。通过编写相应的代码和连接合适的硬件电路,可以实现按键控制led灯的功能。这种方案在嵌入式系统中有广泛应用,例如电子钟、电子秤、电子温度计等,为用户提供了方便和灵活的操作方式。 ### 回答3: 51单片机是一种常见的单片机,具有广泛的应用。按键控制LED是其中一种常见的应用场景。 在这个应用中,我们通常会使用一个或多个按键,通过按下不同的按键来控制LED的开关状态。首先需要将按键接入到单片机的IO口上,并设置为输入模式。然后,通过编写程序,在程序中不断检测这个IO口的电平状态,当按键被按下时,IO口的电平状态会发生变化。通过判断电平状态的变化,我们可以确定按键是否被按下。 一旦检测到按键被按下,我们可以在程序中相应的控制LED的开关状态。可以通过一个变量来表示LED的状态,比如0表示LED灭,1表示LED亮。当按键被按下时,通过改变LED状态的变量的值,从而改变LED的开关。 具体实现的步骤包括: 1. 将按键接入到单片机的IO口,并设置为输入模式。 2. 编写程序,在主循环中不断检测IO口的电平状态。 3. 当检测到按键被按下时,改变LED状态的变量的值,从而改变LED的开关。 4. 根据LED状态的变量的值,通过控制IO口的电平状态,来控制LED的开关。 5. 可以使用延时函数来实现LED的闪烁效果,比如每隔一定的时间,改变LED状态的变量的值,从而实现LED的闪烁。 通过以上的步骤,我们可以实现51单片机按键控制LED的功能。这种应用具有简单、灵活、实用的特点,可以在很多电子产品中看到它的身影,比如电子钟、电子玩具等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悬铃木下的青春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值