|
51單片機(jī)WS2812BRGB
可以控制200個(gè)RGB
單片機(jī)源程序如下:
- #include<reg52.h>
- #include<intrins.h>
- //單片機(jī)為15系列 晶振內(nèi)部27M 分頻為0X02
- //可以控制1024 個(gè)RGB
- #define uchar unsigned char
- sfr PLC=0X97;
- sbit Send_Dat=P3^5;
- unsigned char RGB_BUF[24];
- void delay();
- void RGBA(); //流動(dòng)效果
- void RGBB( unsigned int w);//靜態(tài)顯示全彩
- void RGBC (); //全體變色效果
- uchar n;
- uchar r;
- unsigned char *p;
-
- uchar a []={ 0xff,0x00,0x00} ; //綠
- uchar b []={ 0x00,0xff,0x00} ; //紅
- uchar c []={ 0x00,0x00,0xff} ; //藍(lán)
- uchar d []={ 0xff,0xff,0x00} ; //黃
- uchar e []={ 0xff,0x00,0xff} ; //青
- uchar f []={ 0x00,0xff,0xff} ; //紫
- uchar g []={ 0xff,0xff,0xff} ; //白
- uchar h []={ 0x00,0x00,0x00} ;
-
- uchar shuzud [8] [3]={
- { 0xff,0x00,0x00}, //綠
- { 0x00,0xff,0x00} , //紅
- { 0x00,0x00,0xff} , //藍(lán)
- { 0xff,0xff,0x00} , //黃
- { 0xff,0x00,0xff} , //青
- { 0x00,0xff,0xff} , //紫
- { 0xff,0xff,0xff} , //白
- { 0x00,0x00,0x00} ,
- };
- sfr P3M1 = 0xb1;
- sfr P3M0 = 0xb2;
-
- struct shuzu
- {
- uchar a [3];
- uchar b[3] ;
-
- };
- struct shuzu;
- void delays(uchar t);
-
-
- void Send_A_bit(uchar v)
- {
- //
- if (v==1)
- {
-
- Send_Dat=1;
- _nop_();
-
- Send_Dat=0;
-
- }
- else
- {
- Send_Dat=1;
-
- Send_Dat=0;
- _nop_();
-
- }
-
- }
- void Send_192bits( uchar *p1,uchar z)
- {
- unsigned int i=0; uchar s; uchar x; unsigned char k;
-
- s=8;
- x=0;
- // 1
-
-
-
-
-
- for (i=x;i<s;i++)
- {
- RGB_BUF[i]=p1[0]>>(i-x)&0x01; //轉(zhuǎn)化R_VAL
- }
- s=s+8;
- x=x+8;
-
- for (i=x;i<s;i++)
- {
- RGB_BUF[i]=p1[1]>>(i-x)&0x01; //轉(zhuǎn)化G_VAL
- }
-
- s=s+8;
- x=x+8;
-
- for (i=x;i<s;i++)
- {
- RGB_BUF[i]=p1[2]>>(i-x)&0x01;
-
- //轉(zhuǎn)化R_VAL
- }
-
-
-
- s=s+8;
- x=x+8;
-
-
-
-
-
-
-
- for (k=0;k<z;k++) //循環(huán)RGB數(shù)量
- {
-
-
-
-
-
- for (i=0;i<24;i++)
- {
- Send_A_bit(RGB_BUF[i]);
- }
-
-
-
-
-
- }
-
-
-
-
-
- }
-
-
-
- void main()
- {
- P3M0 = 0x00;
- P3M1 = 0x00;
- PLC=0X02;
- while(1)
- {
-
-
-
- RGBB(65000); //全體靜態(tài)顯示全彩效果
-
- delays(10 );
- RGBA();//全體流動(dòng)效果
- delays(5);
- RGBC();//全體變色效果
- delays(5);
-
- }
- }
-
-
- void RGBA() // 流動(dòng)效果
- {
-
- Send_192bits(shuzud[0],9);
- delays(1);
-
- for (n=0;n<10;n++)
- {
-
- Send_192bits(shuzud[1],n);
- delays(1);
-
- }
- for (n=0;n<10;n++)
- {
-
- Send_192bits(shuzud[2],n);
- delays(1);
- }
- }
- void RGBB( unsigned int w ) //全體靜態(tài)顯示全彩效果
- {
- unsigned int t;
- for (t=0;t< w;t++);
-
- Send_192bits(shuzud[2],9);
- for (t=0;t< w;w++);
-
- Send_192bits(shuzud[1],8);
- for (t=0;t< w;t++);
- Send_192bits(shuzud[0],7);
-
- for (t=0;t< w;t++);
- Send_192bits(shuzud[5],6);
-
- for (t=0;t< w;t++);
- Send_192bits(shuzud[4],5);
-
- for (t=0;t< w;t++);
-
- Send_192bits(shuzud[3],4);
-
- for (t=0;t< w;t++);
- Send_192bits(shuzud[2],3);
-
- for (t=0;t< w;t++);
- Send_192bits(shuzud[1],2);
-
- for (t=0;t< w;t++);
-
- Send_192bits(shuzud[0],1);
-
- for (t=0;t< w;t++);
-
- }
- void RGBC() //全體變色效果
- {
- Send_192bits(shuzud[0],9);
- delays(5);
- Send_192bits(shuzud[1],9);
- delays(5);
- Send_192bits(shuzud[2],9);
- delays(5);
- Send_192bits(shuzud[3],9);
- delays(5);
- Send_192bits(shuzud[4],9);
- delays(5);
- Send_192bits(shuzud[5],9);
- delays(5);
-
- }
-
- void delay()
- {
- unsigned int i,j;
- for (i=0;i<250;i++)
- {
- for (j=0;j<200;j++);
- }
- }
- /*大延時(shí)函數(shù)*/
- /*十幾秒*/
- void delays(uchar t)
- {
- uchar p;
- for (p=0; p<t;p++)
- {
- delay();
-
- }
-
- }
復(fù)制代碼
所有資料51hei提供下載:
優(yōu)化RGB.rar
(25.16 KB, 下載次數(shù): 583)
2019-2-28 11:25 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|