标题:
WS2811灯光单片机程序 实现2片TM1812幻彩变化 修改变量IC可修改TM1812数量
[打印本页]
作者:
wanli
时间:
2017-3-14 10:38
标题:
WS2811灯光单片机程序 实现2片TM1812幻彩变化 修改变量IC可修改TM1812数量
WS2811芯片灯光控制程序分享给大家
源程序:
/******************************************************************************
//*版权信息:深圳市天微电子
//*文 件 名:TM1812-V1.0
//*当前版本:V1.0
//*MCU 型号:STC15W104
//*开发环境:Keil uVision4
//*晶震频率:33MHZ(内部时钟)
//*完成日期:2015-07-10
//*程序功能:1.该程序可实现2片TM1812幻彩变化。
// 2.修改变量IC可修改TM1812数量。
//*免责声明:1.此程序为TM1812驱动LED点亮演示程序,仅作参考之用。
// 2.如有直接使用本例程程序造成经济损失的,本公司不承担任何责任。
/*******************************************************************************/
#include <reg52.h> //MCU头文件
#include "intrins.h" //包含nop指令头文件
#define nop _nop_();
//宏定义
/********************************定义控制端口***********************************/
sbit DO=P3^3; //定义信号输出DO
/**********************************定义变量*************************************/
unsigned int IC=2; //控制TM1812个数
unsigned int LED_PX; //像素点数
unsigned char PWM=255; //TM1812灰度数据
unsigned char Rda,Gda,Bda; //R、G、B灰度数据
unsigned char bdata LED_data; //可位操作的数据发送暂存变量声明
sbit bit0=LED_data^0; //被发送的数据各位定义
sbit bit1=LED_data^1;
sbit bit2=LED_data^2;
sbit bit3=LED_data^3;
sbit bit4=LED_data^4;
sbit bit5=LED_data^5;
sbit bit6=LED_data^6;
sbit bit7=LED_data^7;
bit flag=0; //定义一个标志位
/**********************************延时函数*************************************/
void delay(unsigned int n) //n=1,延时500us
{
unsigned int i;
while(n--)
for(i=0;i<860;i++);
}
/********************发送0码函数,高电平400ns,周期1.25us************************/
void send_data_0()
{
DO=1;
nop;nop;nop;nop;nop;
nop;nop;nop;nop;nop;
DO=0;
nop;nop;nop;nop;nop;nop;nop;
nop;nop;nop;nop;nop;nop;nop;
}
/*******************发送1码函数,高电平800ns,周期1.25us*************************/
void send_data_1()
{
DO=1;
nop;nop;nop;nop;nop;nop;
nop;nop;nop;nop;nop;
nop;nop;nop;nop;nop;nop;
nop;nop;nop;nop;nop;
DO=0;
}
/***********************发送1个字节数据,高位先发*******************************/
void send_data(unsigned char DATA)
{
LED_data=DATA;
if(bit7) send_data_1(); else send_data_0();
if(bit6) send_data_1(); else send_data_0();
if(bit5) send_data_1(); else send_data_0();
if(bit4) send_data_1(); else send_data_0();
if(bit3) send_data_1(); else send_data_0();
if(bit2) send_data_1(); else send_data_0();
if(bit1) send_data_1(); else send_data_0();
if(bit0) send_data_1(); else send_data_0();
}
/******************************发送1帧数据*************************************/
void send_px()
{
unsigned int i;
for(i=0;i<LED_PX;i++)
{
send_data(Rda); //发送R灰度数据
send_data(Gda); //发送G灰度数据
send_data(Bda); //发送B灰度数据
}
}
/*===============================主函数=======================================*/
void main()
{
unsigned char i;
LED_PX=3*IC; //1个TM1812等于4个像素
Rda=Gda=Bda=0; //R、G、B灰度数据复位清零
while(1)
{
for(i=0;i<PWM;i++) //红色渐亮
{
Rda=i; //灰度计算
send_px(); //发送灰度数据
delay(50); //复位延时
}
flag=1; //标志位置位
while(flag) //标志位置位后循环函数
{
for(i=0;i<PWM;i++) //红色渐灭,绿色渐亮
{
Gda=i;
Rda=PWM-i; //灰度计算
send_px(); //发送灰度数据
delay(50); //复位延时
}
for(i=0;i<PWM;i++) //绿色渐灭,蓝色渐亮
{
Bda=i;
Gda=PWM-i; //灰度计算
send_px(); //发送灰度数据
delay(50); //复位延时
}
for(i=0;i<PWM;i++) //蓝色渐灭,红色渐亮
{
Rda=i;
Bda=PWM-i; //灰度计算
send_px(); //发送灰度数据
delay(50); //复位延时
}
}
}
}
/*================================结束==========================================*/
复制代码
51单片机22路全彩控制器:
http://www.51hei.com/bbs/dpj-53297-1.html
作者:
流浪乞丐
时间:
2017-10-15 02:45
谢谢楼主,下载来参考下。
作者:
ivanwm
时间:
2017-10-26 16:06
好经典的程序
作者:
veryhoo123
时间:
2017-11-13 19:42
这个非常给力,代码写得很清晰
作者:
veryhoo123
时间:
2017-11-13 19:44
对于做灯的人来说,这个东西真的很有帮助,感谢分享
作者:
289466080
时间:
2018-2-6 14:43
我以为有22种状态,把剩下的发给大家参考
Rda=i;
Bda=PWM-i; //灰度计算
send_px(); //发送灰度数据
delay(50); //复位延时
}
}
}
}
作者:
xiaosong0080
时间:
2018-4-25 22:38
要用什么软件打开,keil 打不开的
作者:
cobon
时间:
2018-11-23 22:39
谢谢楼主,下载来参考下。
作者:
xiexugang
时间:
2019-4-7 03:14
51单片机能驱动WS2811,很好很实用.
作者:
JOJO177
时间:
2019-6-28 02:09
很好,很有帮助
作者:
xiexugang
时间:
2019-11-11 11:00
这个程序不错,好玩
作者:
雪玉寐影
时间:
2022-1-7 15:27
这个不错,直接驱动就行了!
作者:
正在缓冲
时间:
2022-3-10 09:22
唉,编程考运气的我只能东抄抄西改改
作者:
auxccc
时间:
2022-3-10 09:57
什么说明也没有,我们能明白什么呢?,22路是指什么?.WS2811芯片是个什么芯片?
作者:
liu2454004961
时间:
2022-4-7 15:46
这是TM1812芯片,WS2811的时序不同
作者:
川蜀浪子
时间:
2022-4-23 11:06
大神怎么只是发个原厂的样品程序呀,22种状态呢,怎么没有,让我又减了5黑币,本来就不多。可以发一下那22种状态的吗?想要流水效果的,从左向右、从右向左、中间向两边的。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1