**led 介绍**
LED是“Light Emitting Diode”的缩写,即发光二极管。它是一种半导体器件,能够将电能转化为可见光。LED灯通常由LED芯片、封装材料、铝基板和灯罩等部件组成。
**LED灯具有以下特点:**
- 节能:LED灯具有较高的光电转换效率,能够将大部分电能转化为光能,相比传统白炽灯泡 和荧 光灯具有更低的能耗。
- 寿命长:LED灯寿命长,可达数万小时,远远超过传统灯泡,减少了更换灯泡的频率。
- 节省空间:LED灯小巧轻便,可以设计成各种形状和尺寸,适用于各种应用场景。
- 环保:LED灯不含汞等有害物质,不会产生紫外线和红外线辐射,使用时也不会产生频闪等有害物质。
LED灯广泛应用于室内照明、户外照明、汽车灯具、电子显示屏、指示灯等领域。在电子设计和嵌入式系统中,LED也常用作电路指示灯、状态指示灯、信号灯等。在嵌入式系统中,LED灯通常通过微控制器的GPIO(通用输入/输出)引脚来驱动,通过控制GPIO引脚的电平状态来控制LED的亮灭。这样可以实现LED的闪烁、呼吸灯效果等。 LED的使用非常灵活,能够通过软件编程实现各种照明效果和指示功能。
单片机的工作原理:cpu通过配置寄存器控制我们的硬件电路实现我们的功能
二进制转换为16进制:进制转换关系对应表
点亮51单片机的第一个led灯和让单片机的led灯实现亮灭亮灭的效果(采用16进制的方式实现)
eg1:实现单个LED灯的亮和灭
#include <REGX52.H>// P1 是第一个led晶体管1111 1110 倒数转换为16进制void main(){P1 = 0xFE; // 点亮第一个单片机的led灯P1 = 0x55; // 单片机的亮灭效果while(1){// 添加while循环让单片机停止或者开始}}
eg2:实现单个LED灯的闪烁效果
#include <REGX52.H>
#include <INTRINS.H>void Delay500ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);}void main(){while(1){// 循环实现led灯的亮灭情况P1 = 0xFE;Delay500ms();// 函数的调用P1 = 0xFF;Delay500ms();}
}
eg3:实现单片机的流水灯显示
#include <REGX52.H>
#include <INTRINS.H>void Delay500ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);}void main(){while(1){// 循环实现led灯的亮灭情况P1 = 0xFE; // 1111 1110Delay500ms();P1 = 0xFD; // 1111 1101Delay500ms();P1 = 0xFB; // 1111 1011Delay500ms();P1 = 0xF7; // 1111 0111Delay500ms();P1 = 0xEF; // 1110 1111Delay500ms();P1 = 0xDF; // 1101 1111Delay500ms();P1 = 0xBE; // 1011 1111Delay500ms();P1 = 0x7F; // 0111 1111Delay500ms();}
}
eg4:使用延时函数实现200毫秒的流水灯轮动
#include <REGX52.H>
#include <INTRINS.H>void Delay500ms(unsigned int xms) //@11.0592MHz 单片机的系统中int 表示的是16位的,在计算机中是32位或者是64位的
{unsigned char i, j;while(xms){i = 2;j = 239;do{while(--j);}while(--i);xms--;}}void main(){while(1){// 循环实现led灯的亮灭情况P1 = 0xFE; // 1111 1110Delay500ms(200); // 自定义200毫秒P1 = 0xFD; // 1111 1101Delay500ms(200);P1 = 0xFB; // 1111 1011Delay500ms(200);P1 = 0xF7; // 1111 0111Delay500ms(200);P1 = 0xEF; // 1110 1111Delay500ms(200);P1 = 0xDF; // 1101 1111Delay500ms(200);P1 = 0xBE; // 1011 1111Delay500ms(200);P1 = 0x7F; // 0111 1111Delay500ms(200);}}