标题:
36颗2812B灯珠做的流水循环转圈效果单片机源代码
[打印本页]
作者:
suifeng668
时间:
2017-11-28 16:54
标题:
36颗2812B灯珠做的流水循环转圈效果单片机源代码
36颗2812B灯珠做的流水循环转圈效果源代码
0.png
(5.59 KB, 下载次数: 37)
下载附件
2017-11-29 02:39 上传
所有资料51hei提供下载:
36颗WS2812B灯珠.rar
(1018 Bytes, 下载次数: 47)
2017-11-28 16:54 上传
点击文件名下载附件
下载积分: 黑币 -5
单片机源程序如下:
/*************************************
MCU:STC15W204S 晶振:22.1184MHZ
*************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define RGB_count 36 //IC数量
#define RGB_speed 7 //灯珠亮灭速度,数值越小,速度越快
uchar x;
sbit DIN=P3^2;
uchar buff[]={10,11,9,12,8,13,7,14,6,15,5,16,4,17,3,18,2,19,1,20,0};
void time0()interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
x++;
if(x==110)
x=0;
// P10=~P10;
// P11=~P11;
// P12=~P12;
}
/*************0码*******************/
void DIN_bit_0() {
uchar i;
DIN=1;
for(i=1;i>0;i--);
DIN=0; //1+3+4*7
for(i=4;i>0;i--);
}
/*************1码*******************/
void DIN_bit_1() {
uchar i;
DIN=1; //1+3+4*7+1
for(i=4;i>0;i--);
DIN=0;
for(i=1;i>0;i--);
}
/*************reset码*******************/
void reset() {
uchar a,b;
DIN=0;
for(b=78;b>0;b--)
for(a=2;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
/*************数据传输******************/
void send_dat(uchar dat) { //高位先传
uchar i;
for(i=8;i>0;i--) {
if(dat & 0x80)
DIN_bit_1();
else
DIN_bit_0();
dat <<=1;
}
}
void send_rgb(uchar g,uchar r,uchar b)
{
send_dat(g);
send_dat(r);
send_dat(b);
}
/***************延时******************/
void delay(uchar t) {
unsigned long j;
while(t--)
for(j=0;j<1000;j++);
}
void main() {
uchar i,n,num,t;
//AUXR = AUXR|0x80; // T0, 1T Mode
// InitTimer0();
while(1)
{
//*************红R跑马灯增加*******************
for(i=0;i<=RGB_count;i++) {
for(num=0;num<i;num++) {
send_dat(0);
send_dat(255);
send_dat(0);
}
reset();
for(t=RGB_speed;t>0;t--)
delay(1);
}
//*************绿G跑马灯增加*******************
for(i=0;i<=RGB_count;i++) {
for(num=0;num<i;num++) {
send_dat(255);
send_dat(0);
send_dat(0);
}
reset();
for(t=RGB_speed;t>0;t--)
delay(1);
}
//*************蓝B跑马灯增加*******************
for(i=0;i<=RGB_count;i++) {
for(num=0;num<i;num++) {
send_dat(0);
send_dat(0);
send_dat(255);
}
reset();
for(t=RGB_speed;t>0;t--)
delay(1);
}
//*************白RGB跑马灯增加*******************
for(i=0;i<=RGB_count;i++) {
for(num=0;num<i;num++) {
send_dat(120);
send_dat(120);
send_dat(120);
}
reset();
for(t=RGB_speed;t>0;t--)
delay(1);
}
//*************黄RG跑马灯增加*******************
for(i=0;i<=RGB_count;i++) {
for(num=0;num<i;num++) {
send_dat(155);
send_dat(155);
send_dat(0);
}
reset();
for(t=RGB_speed;t>0;t--)
delay(1);
}
//*************紫RB跑马灯增加*******************
for(i=0;i<=RGB_count;i++) {
for(num=0;num<i;num++) {
send_dat(0);
send_dat(155);
send_dat(155);
}
reset();
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
作者:
vnbo
时间:
2017-11-29 10:31
我下载下来看看,研究研究
作者:
dragon20100708
时间:
2018-2-5 08:42
我下载下来看看,研究研究
作者:
yuren1984
时间:
2019-1-4 13:57
15w204s是不是最多只能驱动36颗灯珠啊
作者:
June1210
时间:
2019-3-21 08:25
多谢分享哈
作者:
June1210
时间:
2019-3-21 09:04
楼主 程序好像有问题,刚开始是好的,一分钟左右只有8个LED会跑了,程序我改了24个LED, P3-3口
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1