程序在下面,已经经过测试,有较好控制与显示效果,请放心食用。
(底部有相关项目链接)
测试芯片:STC15W204S
芯片时钟频率:5MHZ---35MHZ
程序通过测试频率:11.0592MHZ---35MHZ之间所有频率均显示正常
编程平台:keil5
RGB灯带控制参数介绍:
一、输入码型
二、码型时间
三、连接方式
四、数据传输方式
其中 D1 为 MCU 端发送的数据,D2、D3、D4 为级联电路自动整形转发的数据。
五、24bit的数据结构
高位先发,按照
RGB
的顺序发送数据。
参考程序:
#include "STC15W.h"
#include <intrins.h>
#define u8 unsigned char
// RGB灯带数据引脚
#define LED_H P55=1
#define LED_L P55=0
void Delay1us(u8 j)
{
while(j--);
}
// 发送24bit数据 函数里重复部分可以封装为子函数调用,编者懒...
// 此处为高位先发 RGB888格式 24bit详情为R7-R0-G7-G0-B7-B0 根据数据手册修改RGB发送顺序
void send_RGB(u8 R, u8 G, u8 B)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
if(R & 0x80)
{
LED_H;
Delay1us(1);
LED_L;
_nop_();
}
else
{
LED_H;
_nop_();
LED_L;
Delay1us(1);
}
R <<= 1;
}
for(i=0;i<8;i++)
{
if(G & 0x80)
{
LED_H;
Delay1us(1);
LED_L;
_nop_();
}
else
{
LED_H;
_nop_();
LED_L;
Delay1us(1);
}
G <<= 1;
}
for(i=0;i<8;i++)
{
if(B & 0x80)
{
LED_H;
Delay1us(1);
LED_L;
_nop_();
}
else
{
LED_H;
_nop_();
LED_L;
Delay1us(1);
}
B <<= 1;
}
}
注意:
1.有些灯带显示需要循环输入控制数据,即需要把显示函数放在主循环中!
2.每一轮的显示之间注意添加RESET码并延时足够时间!
相关自制创意小台灯项目链接(含代码及注释):
https://download.csdn.net/download/m0_50669075/20231365
实物图: