- 1
- 2
- 3
- 4
- 5
stc15f204s ws2812b
资料介绍
程序如下:
#include<stc15.h>
#include"intrins.h"
sbit WS2812 = P1^0;
#define numLEDs 36 //灯的个数
unsigned char buf_R[numLEDs] = {0};//颜色缓存
unsigned char buf_G[numLEDs] = {0};
unsigned char buf_B[numLEDs] = {0};
void RGB_Set_Up(); //送0码
void RGB_Set_Down(); //送1码
void HAL_Delay(unsigned long t)
{
unsigned int x,y;
for(x=114;x>0;x--)
for(y=t;y>0;y--);
}
//复位延时
void Delay50us() //@22.1184MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 2;
j = 15;
do
{
while (--j);
} while (--i);
}
//1码,高电平850ns 低电平400ns 误差正负150ns
void RGB_Set_Up()
{
WS2812 = 1;
//经过逻辑分析仪调试的的延时
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
WS2812 = 0;
}
//1码,高电平400ns 低电平850ns 误差正负150ns
void RGB_Set_Down()
{
WS2812 = 1;
//经过逻辑分析仪调试的的延时
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
WS2812 = 0;
}
//发送24位数据
void Send_2812_24bits(unsigned char G8,unsigned char R8,unsigned char B8)
{
unsigned int n = 0;
//发送G8位
for(n=0;n<8;n++)
{
G8<<=n;
if(G8&0x80 == 0x80)
{
RGB_Set_Up();
}
else
{
RGB_Set_Down();
}
}
//发送R8位
for(n=0;n<8;n++)
{
R8<<=n;
if(R8&0x80 == 0x80)
{
RGB_Set_Up();
}
else
{
RGB_Set_Down();
}
}
//发送B8位
for(n=0;n<8;n++)
{
B8<<=n;
if(B8&0x80 == 0x80)
{
RGB_Set_Up();
}
else
{
RGB_Set_Down();
}
}
}
//复位码
void RGB_Rst()
{
WS2812 = 0;
Delay50us();
}
//颜色交换24位不拆分发
void SetPixelColor(unsigned char num,unsigned long c)
{
unsigned char i;
for(i=0;i<numLEDs;i++)
{
buf_R[num] = (unsigned char)(c>>16);
buf_G[num] = (unsigned char)(c>>8);
buf_B[num] = (unsigned char)(c);
}
for(i=0;i<numLEDs;i++)
{
Send_2812_24bits(buf_G[i],buf_R[i],buf_B[i]);
}
}
//复位
void PixelUpdate()
{
RGB_Rst();
}
// Fill the dots one after the other with a color
//用一种颜色填充这些圆点
void colorWipe(unsigned long c, unsigned int wait)
{
unsigned char i=0;
for( i=0; i<numLEDs; i++)
{
SetPixelColor(i, c);
PixelUpdate();
HAL_Delay(wait*5);
}
}
void Watercolor(unsigned long c, unsigned int wait)
{
unsigned char i=0;
for( i=0; i<numLEDs; i++)
{
SetPixelColor(i, c);
PixelUpdate();
HAL_Delay(wait*5);
SetPixelColor(i, 0);
PixelUpdate();
HAL_Delay(wait);
}
}
void main()
请下载获取main函数里的程序
部分文件列表
文件名 | 文件大小 | 修改时间 |
fenweideng/fengweideng | 14KB | 2019-01-05 14:07:08 |
fenweideng/fengweideng.c | 5KB | 2019-01-05 14:07:04 |
fenweideng/fengweideng.hex | 4KB | 2019-01-05 14:07:10 |
fenweideng/fengweideng.lnp | 1KB | 2019-01-05 14:07:06 |
fenweideng/fengweideng.LST | 12KB | 2019-01-05 14:07:06 |
fenweideng/fengweideng.M51 | 16KB | 2019-01-05 14:07:08 |
fenweideng/fengweideng.OBJ | 16KB | 2019-01-05 14:07:06 |
fenweideng/fengweideng.plg | 5KB | 2019-01-05 13:31:56 |
fenweideng/fengweideng.uvopt | 72KB | 2019-01-05 13:31:34 |
fenweideng/fengweideng.uvproj | 1KB | 2019-01-05 13:31:34 |
fenweideng/fengweideng_uvopt.bak | 71KB | 2019-01-05 13:29:38 |
... |
最新上传
-
21ic小能手 打赏5.00元 1天前
-
21ic小能手 打赏5.00元 1天前
-
21ic小能手 打赏5.00元 1天前
-
21ic小能手 打赏5.00元 1天前
-
21ic小能手 打赏5.00元 1天前
-
xlhtracy 打赏10.00元 3天前
-
xlhtracy 打赏10.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
xlhtracy 打赏5.00元 3天前
-
czmhcy 打赏1.00元 3天前
资料:bitboy
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏20.00元 3天前
资料:STM32控制小米电机
-
21ic下载 打赏310.00元 3天前
用户:小猫做电路
-
21ic下载 打赏310.00元 3天前
用户:gsy幸运
-
21ic下载 打赏310.00元 3天前
用户:zhengdai
-
21ic下载 打赏310.00元 3天前
用户:liqiang9090
-
21ic下载 打赏260.00元 3天前
用户:kk1957135547
-
21ic下载 打赏110.00元 3天前
用户:铁蛋锅
-
21ic下载 打赏130.00元 3天前
用户:xzxbybd
-
21ic下载 打赏70.00元 3天前
用户:jh03551
-
21ic下载 打赏50.00元 3天前
用户:sun2152
-
21ic下载 打赏40.00元 3天前
用户:WK520077778
-
21ic下载 打赏40.00元 3天前
用户:xuzhen1
-
21ic下载 打赏40.00元 3天前
用户:w178191520
-
21ic下载 打赏40.00元 3天前
用户:w993263495
-
21ic下载 打赏30.00元 3天前
用户:w1966891335
-
21ic下载 打赏20.00元 3天前
用户:不觉明了
-
21ic下载 打赏10.00元 3天前
用户:cooldog123pp
-
21ic下载 打赏5.00元 3天前
用户:liming238
-
21ic下载 打赏10.00元 3天前
用户:ax918
-
21ic下载 打赏5.00元 3天前
用户:farsy
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
-
21ic小能手 打赏5.00元 3天前
资料:stm32f4 经典例程
-
sraay 打赏1.00元 3天前
-
21ic小能手 打赏5.00元 3天前
资料:零功耗通信白皮书
-
21ic小能手 打赏5.00元 3天前
全部评论(0)