一段使用单片机开发板控制ws2812呼吸灯的代码
时间: 2023-11-10 09:06:31 浏览: 91
好的,以下是一段使用单片机开发板控制ws2812呼吸灯的代码:
```
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P1^0;
//数码灯为RGB型号,按照GRB格式排列,即绿、红、蓝排列
//每个灯有3个字节,对应控制信号需要传输24个字节
uchar code LED_G[] = {0x00,0x86,0x86,0x86,0x86,0x86,0x86,0x00};
uchar code LED_R[] = {0x00,0x88,0x88,0x88,0x88,0x88,0x88,0x00};
uchar code LED_B[] = {0x00,0xE8,0xE8,0xE8,0xE8,0xE8,0xE8,0x00};
void main()
{
uint i = 0;
uchar j = 0;
while(1)
{
for(i=0;i<60;i++) //呼吸灯一次变化需要60ms
{
for(j=0;j<8;j++) //发送24个字节,共8个灯
{
send_byte(LED_G[j]); //控制绿色元素
send_byte(LED_R[j]); //控制红色元素
send_byte(LED_B[j]); //控制蓝色元素
}
Delay(1);
}
}
}
void send_byte(uchar dat)
{
uchar i;
for(i=0;i<8;i++) //一个字节8位,每位依次读出
{
if(dat & 0x80)
{
LED = 1;
Delay(5); //高电平5us
LED = 0;
Delay(2); //低电平2us
}
else
{
LED = 1;
Delay(2); //高电平2us
LED = 0;
Delay(5); //低电平5us
}
dat <<= 1;
}
}
void Delay(uint i) //基础的延时函数
{
while(i--);
}
```
希望这段代码对你有所帮助。
阅读全文