• 【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);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

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


    三色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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

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

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

    总结

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

  • 相关阅读:
    【springboot3.x 记录】关于spring-cloud-gateway引入openfeign导致的循环依赖问题
    远程方法调用中间件Dubbo在spring项目中的使用
    一文理解Flink 水位线(Flink Watermark)
    艺人百度百科怎么创建
    一篇搞定Sentinel-搭建Spring Cloud Alibaba服务组件Sentinel实现服务资源控制
    智慧公厕建设的好处
    Linux设备驱动模型之devicetree
    vmware安装linux操作系统
    前端怎么解决跨域问题
    <爬虫部署,进阶Docker>----第一章 介绍Docker
  • 原文地址:https://blog.csdn.net/m0_46500149/article/details/132459913