生成一段51单片机控制ws2812的代码
时间: 2023-11-13 21:04:50 浏览: 85
WS2812使用8脚51单片机控制,且添加动画.zip
下面是一段51单片机控制ws2812的代码:
#include <reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED = P2^0; // WS2812 LED连接的引脚
void delay(u16 i)
{
while(i--);
}
void send_byte(u8 byte)
{
u8 i;
for(i=0;i<8;i++)
{
if(byte & 0x80) // 如果最高位是1
{
LED = 1; // 发送1
delay(20); // 延时20us
LED = 0; // 结束发送
delay(60); // 延时60us
}
else // 如果最高位是0
{
LED = 1; // 发送0
delay(60); // 延时60us
LED = 0; // 结束发送
delay(20); // 延时20us
}
byte <<= 1; // 左移一位,处理下一位数据
}
}
void send_color(u8 red, u8 green, u8 blue)
{
send_byte(green);
send_byte(red);
send_byte(blue);
}
void main()
{
while(1)
{
send_color(255, 0, 0); // 发送红色
delay(30000); // 延时30ms
send_color(0, 255, 0); // 发送绿色
delay(30000); // 延时30ms
send_color(0, 0, 255); // 发送蓝色
delay(30000); // 延时30ms
}
}
阅读全文