久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
LED驅動WS2801單片機程序和資料下載
[打印本頁]
作者:
followme001
時間:
2016-6-21 21:28
標題:
LED驅動WS2801單片機程序和資料下載
LED驅動WS2801
0.png
(66.05 KB, 下載次數: 74)
下載附件
2016-6-21 21:35 上傳
0.png
(157.62 KB, 下載次數: 69)
下載附件
2016-6-21 21:35 上傳
WS2801單片機程序:
#include<stc12c56.h>
#include"WS2801.H"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
u8 num=0,MODE=0,GAME_NUM=0,R_PWM=0,G_PWM=0,B_PWM=0,WATEN_NUM=0;
u8 bdata set=0;
sbit F_CLOCK=set^0;
sbit F_INC=set^1;
sbit F_WATER=set^2;
u8 status_mode=0;
u16 mode_count=0;
bit flag=0,StackerGame_flag=0;
void T0_Init(void) //PWM初始化
{
TMOD=0x01;
TH0=170;
TL0=200;
EA=1;
ET0=1;
TR0=1;
}
void exter0() interrupt 1
{
TH0=200;
TL0=200;
mode_count++;
if(mode_count>=3000)
{
mode_count=0;
status_mode++;
if(status_mode>38)
{
status_mode=0;
}
}
WS2801_Write_data();
CLK=0; //MT9221時鐘信號
DATA=0; //MT9221數據信號
}
void RGB_7_SE_MAN() //7單色慢閃
{
static u32 count=60000;
u8 i;
switch (count)
{
case 60000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=255;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=0;
i++;i++;
}
}break;
case 120000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=255;
RGB_DATA[i+2]=0;
i++;i++;
}
}break;
case 180000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=255;
i++;i++;
}
}break;
case 240000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=255;
RGB_DATA[i+1]=255;
RGB_DATA[i+2]=0;
i++;i++;
}
}break;
case 300000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=255;
RGB_DATA[i+2]=255;
i++;i++;
}
}break;
case 360000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=255;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=255;
i++;i++;
}
}break;
case 420000:
{
for(i=0;i<150;i++)
{
RGB_DATA[i]=255;
RGB_DATA[i+1]=255;
RGB_DATA[i+2]=255;
i++;i++;
}
}
count=0;
break;
}
count++;
}
void RGB_7_SE_BIAN(u16 num) //7單色漸變
{
static u8 count=0;
static u16 count_k=0;
u8 i,k;
switch(count)
{
case 0:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=1;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=k;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=0;
i++;i++;
}
}
}
count_k++;
break;
case 1:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=2;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=255-k;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=0;
i++;i++;
}
}
}
count_k++;
break;
case 2:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=3;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=k;
RGB_DATA[i+2]=0;
i++;i++;
}
}
}
count_k++;
break;
case 3:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=4;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=255-k;
RGB_DATA[i+2]=0;
i++;i++;
}
}
}
count_k++;
break;
case 4:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=5;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=k;
i++;i++;
}
}
}
count_k++;
break;
case 5:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=6;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=255-k;
i++;i++;
}
}
}
count_k++;
break;
case 6:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=7;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=k;
RGB_DATA[i+1]=k;
RGB_DATA[i+2]=0;
i++;i++;
}
}
}
count_k++;
break;
case 7:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=8;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=255-k;
RGB_DATA[i+1]=255-k;
RGB_DATA[i+2]=0;
i++;i++;
}
}
}
count_k++;
break;
case 8:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=9;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=k;
RGB_DATA[i+2]=k;
i++;i++;
}
}
}
count_k++;
break;
case 9:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=10;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=0;
RGB_DATA[i+1]=255-k;
RGB_DATA[i+2]=255-k;
i++;i++;
}
}
}
count_k++;
break;
case 10:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=11;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=k;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=k;
i++;i++;
}
}
}
count_k++;
break;
case 11:
{
if(count_k>=num)
{
count_k=0;
k++;
if(k>=255)
{
count=0;
}
for(i=0;i<150;i++)
{
RGB_DATA[i]=255-k;
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=255-k;
i++;i++;
}
}
}
count_k++;
break;
}
}
void RGBZUO_YOU(u16 num) //7彩向左覆蓋
{
static u8 count=0;
static u16 count_k=0;
static u8 i,k,beijing=0;
if(count==0)
{
if(count_k>=num)
{
count_k=0;
for(i=0;i<150;i++)
{
if(i<k)
{
RGB_DATA[i]=255;
}
else
{
RGB_DATA[i]=0;
}
RGB_DATA[i+1]=0;
RGB_DATA[i+2]=beijing;
i++;i++;
}
k++;k++;k++;
if(k>=150)
{
count=1;
k=0;i=0;count_k=0;
beijing=255;
}
}
count_k++;
}
if(count==1)
{
if(count_k>=num)
{
count_k=0;
for(i=0;i<150;i++)
{
if(i<k)
{
RGB_DATA[i+2]=0;
}
else
{
RGB_DATA[i+2]=255;
}
RGB_DATA[i]=255;
RGB_DATA[i+1]=0;
i++;i++;
}
k++;k++;k++;
if(k>=150)
{
count=2;
k=0;i=0;count_k=0;
beijing=255;
}
}
count_k++;
}
if(count==2)
{
if(count_k>=num)
{
count_k=0;
for(i=0;i<150;i++)
{
if(i<k)
{
RGB_DATA[i+1]=255;
}
else
{
RGB_DATA[i+1]=0;
}
RGB_DATA[i]=beijing;
RGB_DATA[i+2]=0;
i++;i++;
}
k++;k++;k++;
if(k>=150)
{
count=3;
k=0;i=0;count_k=0;
beijing=255;
}
}
count_k++;
}
if(count==3)
{
if(count_k>=num)
{
count_k=0;
for(i=0;i<150;i++)
{
if(i<k)
{
RGB_DATA[i]=0;
}
else
{
RGB_DATA[i]=255;
}
RGB_DATA[i+1]=255;
RGB_DATA[i+2]=0;
i++;i++;
}
k++;k++;k++;
if(k>=150)
{
count=4;
k=0;i=0;count_k=0;
beijing=255;
}
}
count_k++;
}
if(count==4)
{
if(count_k>=num)
{
count_k=0;
for(i=0;i<150;i++)
{
if(i<k)
{
RGB_DATA[i+2]=255;
}
else
{
RGB_DATA[i+2]=0;
}
RGB_DATA[i]=0;
RGB_DATA[i+1]=beijing;
i++;i++;
}
k++;k++;k++;
if(k>=150)
{
count=5;
k=0;i=0;count_k=0;
beijing=255;
}
}
count_k++;
}
if(count==5)
{
if(count_k>=num)
{
count_k=0;
for(i=0;i<150;i++)
{
if(i<k)
{
RGB_DATA[i+1]=0;
}
else
{
RGB_DATA[i+1]=255;
}
RGB_DATA[i]=0;
RGB_DATA[i+2]=beijing;
i++;i++;
}
k++;k++;k++;
if(k>=150)
{
count=0;
k=0;i=0;count_k=0;
beijing=255;
}
}
count_k++;
}
}
void CLOCK_SELECT(u8 byte)
{
switch(byte)
{
case 0: RGB_DATA[0]=0;RGB_DATA[1]=0;RGB_DATA[2]=0xff;break; //r
case 1: RGB_DATA[0]=0;RGB_DATA[1]=0xff;RGB_DATA[2]=0;break; //r
case 2: RGB_DATA[0]=0xff;RGB_DATA[1]=0;RGB_DATA[2]=0;break; //r
case 3: RGB_DATA[0]=0;RGB_DATA[1]=0xff;RGB_DATA[2]=0xff;break; //r
case 4: RGB_DATA[0]=0xff;RGB_DATA[1]=0xff;RGB_DATA[2]=0;break; //r
case 5: RGB_DATA[0]=0xff;RGB_DATA[1]=0;RGB_DATA[2]=0xff;break; //r
case 6: RGB_DATA[0]=0xff;RGB_DATA[1]=0xff;RGB_DATA[2]=0xff;break; //r
}
}
void SERVER_CLOCK(u32 delay)
{
static u32 count=0;
u8 i,j=147;
if(count>=delay)
{
count=0;
for(i=0;i<50;i++)
{
RGB_DATA[j+3]=RGB_DATA[j]; //B 23-24 22-23
j-=1;
RGB_DATA[j+3]=RGB_DATA[j]; //G
j-=1;
RGB_DATA[j+3]=RGB_DATA[j]; //R
j-=1;
}
MODE+=1;
if(MODE>=7)
{
MODE=0;
}
CLOCK_SELECT(MODE); //七彩顏色選擇
}
count++;
}
void SERVER_3SE(u32 delay)
{
static u32 count=0;
u8 i,j=120,k; //72顆燈 9=3*3 其中3代表要移的燈數 加1是指向他的前面一個數
if(count>=delay)
{
count=0;
for(k=0;k<9;k++) //8*9=72顆
{
for(i=0;i<15;i++)
{
RGB_DATA[i+j+15]=RGB_DATA[j+i]; //B 23-24 22-23
}
j-=15; //指向上一個數組的頭
}
MODE+=1;
if(MODE>=7)
MODE=0;
CLOCK_SELECT(MODE); //七彩顏色選擇
for(i=1;i<5;i++)
{
RGB_DATA[3*i+0]=RGB_DATA[0];
RGB_DATA[3*i+1]=RGB_DATA[1];
RGB_DATA[3*i+2]=RGB_DATA[2];
}
}
count++;
}
void StackerGame(u32 delay)
{
u8 i;
static u32 count=0;
if(count>=delay)
{
count=0;
for(i=0;i<3;i++)
{
if(num>=(150-GAME_NUM))
{
if(F_CLOCK==1)
MODE+=1; //這部分是出七彩的效果
if(MODE>=7) //七到了之后就要出七彩
{
MODE=0;
F_CLOCK=1;
}
CLOCK_SELECT(MODE);
num=0;
GAME_NUM+=3; //執行這里說明轉換一次完成 已經到尾
if(GAME_NUM==150)
{
MODE+=1;
if(F_CLOCK==1)
{
F_CLOCK=0;
MODE=0;
}
GAME_NUM=0;
for(i=0;i<150;i++)
{
RGB_DATA[i]=0; //清數據
}
break;
}
}
RGB_DATA[num+3]=RGB_DATA[num];
RGB_DATA[num]=0;
num++; //交換數據
}
}count++;
}
void main()
{
status_mode=0;
T0_Init();
while(1)
{
switch (status_mode)
{
case 0:
case 1:
case 2:
{
RGB_7_SE_MAN();
}
break;
case 3:
case 4:
case 5:
case 6:
{
RGB_7_SE_BIAN(2000);//2000);
}
break;
case 7:
case 8:
case 9:
case 10:
{
SERVER_CLOCK(100000);
}
break;
case 11:
case 12:
case 13:
case 14:
{
RGBZUO_YOU(10000);
}
break;
case 15:
case 16:
case 17:
case 18:
{
SERVER_CLOCK(100000);
}
break;
case 19:
case 20:
case 21:
case 22:
{
SERVER_3SE(300000);
}break;
case 23:
case 24:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
case 32:
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
{
StackerGame(4470);
}
break;
}
}
}
復制代碼
LED驅動WS2801.rar
(809.38 KB, 下載次數: 59)
2016-6-21 21:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
hpg997
時間:
2019-5-18 09:44
這個 原件在那個仿真軟件可以找到
作者:
jinsheng7533967
時間:
2019-5-18 15:57
這個蠻實用,仿真也很是那么回事,不過51就只能看看了,實物最少要24M才能運行
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久新视频
|
亚洲男女视频在线观看
|
啪啪综合网
|
亚洲国产在
|
亚洲精品久久久
|
免费在线观看成人
|
网站黄色在线免费观看
|
久久久久久亚洲精品
|
亚洲一区欧美
|
国产电影一区二区在线观看
|
日韩精品一区二区三区中文字幕
|
欧美一级免费
|
国产美女在线免费观看
|
国产98色在线 | 日韩
|
欧美亚洲一级
|
中文字幕在线精品
|
欧美 日韩 在线播放
|
精品久久av
|
免费视频一区二区
|
少妇精品久久久久久久久久
|
成人午夜在线
|
日本免费在线观看视频
|
国产在线精品一区
|
久久久中文
|
91在线免费视频
|
淫片专区
|
日韩福利一区
|
在线看一区二区
|
黄色大片在线播放
|
日本在线一区二区
|
成人免费一区二区三区视频网站
|
99精品久久久久久中文字幕
|
日本国产一区二区
|
99热成人在线
|
国产三级精品视频
|
成人精品一区二区三区中文字幕
|
国产乱一区二区三区视频
|
久久成人国产精品
|
日韩α片
|
精品国产aⅴ
|
国产一区二区三区视频免费观看
|