好久沒有發(fā)帖子了,感謝平臺一直幫助我,我今天分享一種彩燈WS2811幻彩芯片的程序,里面有各種模式 漸變、跳變、閃爍、跑馬、追逐等模式,還可以寫更多的,主控采用目前比較流行且有性價的輝芒微FT60F211RB芯片SOP-8,FLASH的,才2毛多,在實際應(yīng)用中絕對實用,可以大量投產(chǎn)。附件中有PCB原代碼,及圖片視頻等資料,可以參考。
制作出來的實物圖如下:
51hei圖片_20230223104401.jpg (363.66 KB, 下載次數(shù): 51)
下載附件
正面實拍
2023-2-23 10:44 上傳
51hei圖片_20230223104413.jpg (222.29 KB, 下載次數(shù): 57)
下載附件
反面實拍
2023-2-23 10:44 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
51hei.png (17.02 KB, 下載次數(shù): 50)
下載附件
2023-2-23 13:20 上傳
單片機源程序如下:
- //*********************************************************
- /* 文件名:main.c
- * 功能: 觸摸
- * IC: FT60F123RB 16MHZ 2T模式
- * 晶振: 16M/2T
- */
- //*********************************************************
- #include "FMD.h"
- #include "SYSCFG.h";
- //**********************************************************
- //***********************宏定義*****************************
- #define uchar unsigned char
- #define uint unsigned int
- #define ulong unsigned long
- #define RGB_count 16
- #define RGB_speed 90
- uint shudu=0;
- #define DIN RA4 //IO輸出
- uchar mod;
- const uchar table[]={255,0,0,0,255,0,0,0,255,255,255,0,255,0,255,0,255,255};
- const uchar table1[]={255,0,0,255,0,0,255,0,0,0,255,0,0,255,0,0,255,0,0,0,255,0,0,255,0,0,255,255,255,0,255,255,0,255,255,0,255,0,255,255,0,255,255,0,255,0,255,255,0,255,255,0,255,255};
- //讀取EEPROM的函數(shù)
- uchar n,i,num;
- uchar EEPROMread(uchar EEAddr)
- {
- uchar ReEEPROMread;
- EEADR = EEAddr; //將地址寫入EEADR寄存器
- RD = 1;
- NOP();
- NOP();
- NOP();
- NOP();
- ReEEPROMread = EEDAT; //EEPROM的讀數(shù)據(jù) ReEEPROMread = EEDATA;
- RD = 0;
- return ReEEPROMread;
- }
- //********************************************
- //函數(shù)名稱:EEPROMwrite
- //功能: 寫數(shù)據(jù)到EEPROM
- //輸入?yún)?shù):EEAddr 需要寫入數(shù)據(jù)的地址
- // Data 需要寫入的數(shù)據(jù)
- //返回參數(shù):無
- //********************************************
- void EEPROMwrite(uchar EEAddr,uchar Data)
- {
- GIE = 0; //寫數(shù)據(jù)必須關(guān)閉中斷
- while(GIE); //等待GIE為0
- EEADR = EEAddr; //EEPROM的地址 寫入目標地址
- EEDAT = Data; //EEPROM的寫數(shù)據(jù) EEDATA = Data; 寫入目標數(shù)據(jù)
- EEIF = 0; //中斷標志位清0
- EECON1 |= 0x34; //置位WREN1,WREN2,WREN3三個變量.
- WR = 1; //置位WR啟動編程
- NOP();
- NOP();
- NOP();
- NOP();
- while(WR); //等待EE寫入完成
- GIE = 1;
- }
- /***************EEPROM初始化***************************************/
- void EEPROM_init()
- {
- EEPROMwrite(0x55,0xaa);
- EEPROMwrite(0x55,0xaa);
- }
- /*************0碼*******************/
- void DIN_bit_0()
- {
- DIN=1;
-
- DIN=0; //1+3+4*7
-
- }
- /*************1碼*******************/
- void DIN_bit_1()
- {
- DIN=1; //1+3+4*7+1
- NOP(); NOP(); NOP(); NOP(); NOP(); NOP();
- DIN=0;
-
- }
- /*************reset碼*******************/
- void reset()
- {
- uchar a,b;
- DIN=0;
- for(b=1;b>0;b--)
- for(a=1;a>0;a--);
- NOP(); //if Keil,require use intrins.h
- }
- /*************數(shù)據(jù)傳輸******************/
- 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(uint t)
- {
- unsigned j;
- while(t--)
- for(j=0;j<100;j++);
- }
- /***************延時******************/
- void delay1(uchar t)
- {
- unsigned j;
- while(t--)
- for(j=0;j<10;j++);
- }
- /*-------------------------------------------------
- * 函數(shù)名:POWER_INITIAL
- * 功能: 上電系統(tǒng)初始化
- * 輸入: 無
- * 輸出: 無
- --------------------------------------------------*/
- void SYS_INITIAL (void)
- {
-
- OSCCON = 0B01110000;//WDT 32KHZ IRCF=110=16MHZ/4=4MHZ,0.25US/T
- //Bit0=1,系統(tǒng)時鐘為內(nèi)部振蕩器
- //Bit0=0,時鐘源由FOSC<2:0>決定即編譯選項時選擇
- OPTION = 0B00000000; //Bit3 PSA 預(yù)分頻器分配位 0= 預(yù)分頻器分配給Timer0模塊 1:分配給WDT
- //Bit2:0:預(yù)分頻比選擇位 000: 1:2
- INTCON = 0; //暫禁止所有中斷
- PORTA =0B00000000;
-
- TRISA = 0B00000100; // 0-輸出 1-輸入
-
- WPUA = 0B00000100; //PA端口上拉控制 1-開上拉 0-關(guān)上拉
-
-
- }
- void jiabian1(uchar sudu)//漸變
- {
- uchar i,n;
- send_dat(255);//先賦值給R
- send_dat(0);
- send_dat(0);
- // G漸亮//R漸滅
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(255-i);
- send_dat(i);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- delay1(250);
- // G漸亮//R漸滅
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(255-i);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- delay1(250);
- // RGB漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(i);
- send_dat(255);
- }
- reset();
- delay1(sudu);
- }
- delay1(250);
- // B不變//RG漸滅
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(255);
- send_dat(255-i);
- send_dat(255-i);
- }
- reset();
- delay1(sudu);
- }
- delay1(250);
- }
- void huxi(uchar sudu)//呼吸
- {
- uchar i,n;
- // R漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- // R漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- // G漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(i);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- // G漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(i);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- // B漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // B漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // RG漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(i);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- // RG漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(i);
- send_dat(0);
- }
- reset();
- delay1(sudu);
- }
- // BR漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(0);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // BR漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(0);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // BG漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(i);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // BG漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(i);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // BGR漸亮
- for(i=0;i<255;i++)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(i);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- // RBG漸滅
- for(i=255;i>0;i--)
- {
- for(n=RGB_count;n>0;n--)
- {
- send_dat(i);
- send_dat(i);
- send_dat(i);
- }
- reset();
- delay1(sudu);
- }
- }
- void paoma1(uint sudu)
- {
- uchar i,num;
- //R跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- //G跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- //B跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- //RG跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- //RB跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- //BG跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- //RGB跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- /********************反向*****************/
- }
- void paoma2(uchar sudu)
- {
- uchar i,num;
- //R跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //G跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //B跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //RG跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //RB跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //BG跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //RGB跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- }
- void paoma3(uchar sudu)
- {
- uchar i,n,num,t;
- //R跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //G跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //B跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //RG跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //RB跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //BG跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- //RGB跑馬燈增加*******************
- for(i=0;i<=RGB_count;i++)
- {
- for(num=0;num<i;num++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- }
- for(num=RGB_count;num>0;num--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- }
- void liushui(uchar sudu)
- {
- send_dat(255);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
- reset();
- delay(sudu);//1250
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(255);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- reset();
- delay(sudu);
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(255);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
- reset();
- delay(sudu);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(255);
- send_dat(0);
- send_dat(0);
-
- reset();
- delay(sudu);
- /*********R***************/
- send_dat(0);
- send_dat(255);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
- reset();
- delay(sudu);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(255);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- reset();
- delay(sudu);
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(255);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
- reset();
- delay(sudu);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(255);
- send_dat(0);
-
- reset();
- delay(sudu);
- /*********R***************/
- send_dat(0);
- send_dat(0);
- send_dat(255);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
- reset();
- delay(sudu);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(255);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- reset();
- delay(sudu);
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(255);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
- reset();
- delay(sudu);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(255);
-
- reset();
- delay(sudu);
- /*********R***************/
- }
- void paoma5(uint sudu)
- {
- send_dat(255);
- send_dat(0);
- send_dat(0);
-
- send_dat(0);
- send_dat(255);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(255);
-
- send_dat(0);
- send_dat(255);
- send_dat(255);
- send_dat(255);
- send_dat(0);
- send_dat(255);
- send_dat(255);
- send_dat(255);
- send_dat(0);
- reset();
- delay(sudu);//1250
- send_dat(0);
- send_dat(255);
- send_dat(0);
-
- send_dat(0);
- send_dat(0);
- send_dat(255);
-
- send_dat(0);
- send_dat(255);
- send_dat(255);
-
- send_dat(255);
- send_dat(0);
- send_dat(255);
- send_dat(255);
- send_dat(255);
- send_dat(0);
- send_dat(255);
- send_dat(0);
- send_dat(2);
-
- reset();
- delay(sudu);
- }
- void shanshuo(uint sudu)
- {
- /**************R***********/
- uchar n;
- for(n=RGB_count;n>0;n--)
- {
- send_dat(255);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
- /**************G***********/
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
- /**************B***********/
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
-
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay(sudu);
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
-
- for(n=RGB_count;n>0;n--)
- {
- send_dat(255);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay(sudu);
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu);
-
- /*for(n=RGB_count;n>0;n--)
- {
- send_dat(255);
- send_dat(255);
- send_dat(0);
- }
- reset();
- delay(sudu);
- for(n=RGB_count;n>0;n--)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay(sudu); */
- }
- void zondong(uint sudu)//多個燈為例 1個燈一組 流動
- {
- uchar n,b,a;
- for(n=0;n<RGB_count;n++)
- {
- b=3*n;
- for(a=0;a<(RGB_count*3);a++)//先掃描出整排燈,靜態(tài)的初始狀態(tài)
- {
- send_dat(table[b]);//先取出表格內(nèi)的3位數(shù) 然后通過移位個數(shù)*3 因為我們是3位數(shù)相加而來
- b++;
- if(b>=(RGB_count*3))//這里面是取數(shù)據(jù)到最后一位了,要直接清0,從而實現(xiàn)移位
- b=0;
- }
- reset();
- delay(sudu);//1250
- }
- }
- void zondong2(uint sudu)//6個燈為例 3個燈一組 流動
- {
- uchar n,b,a;
- for(n=0;n<6;n++)
- {
- b=9*n;//取樣9個
- for(a=0;a<(6*9);a++)//先掃描出整排燈,靜態(tài)的初始狀態(tài)
- {
- send_dat(table1[b]);//先取出表格內(nèi)的3位數(shù) 然后通過移位個數(shù)*3 因為我們是3位數(shù)相加而來
- b++;
- if(b>=(6*9))//這里面是取數(shù)據(jù)到最后一位了,要直接清0,從而實現(xiàn)移位
- b=0;
- }
- reset();
- delay(sudu);//1250
- }
- }
- /*-------------------------------------------------
- * 函數(shù)名: main
- * 功能: 主函數(shù)
- * 輸入: 無
- * 輸出: 無
- --------------------------------------------------*/
- void main()
- {
- SYS_INITIAL();//系統(tǒng)初始化
- mod=EEPROMread(0x01);
- mod++;
- if(mod>3)
- mod=0;
- EEPROMwrite(0x01,mod);
- switch (mod)
- {
- case 0:
- for(n=0;n<=RGB_count;n++)
- {
- send_dat(0);
- send_dat(0);
- send_dat(0);
- }
- reset();
- delay1(100);
- shudu=50;
- break;
- case 1:
- shudu=30;
- break;
- case 2:
- shudu=1500;
- break;
- case 3:
- shudu=600;
- break;
- }
- while(1)
- {
- switch (mod)
- {
- case 0:
- if((shudu>0)&&(shudu<20))
- shudu+=2;
- else if((shudu>20)&&(shudu<100))
- shudu+=10;
- else if((shudu>100)&&(shudu<2000))
- shudu+=1000;
- if(shudu>2000)
- shudu=1;
- paoma1(shudu);
- break;
- case 1:
- //jiabian1(shudu);
- zondong2(3000);
- break;
- case 2:
- shudu+=200;
- if(shudu>2000)
- shudu=200;
- huxi(shudu);
- //zondong(shudu);
- break;
- case 3:
- shudu+=50;
- if(shudu>1000)
- shudu=50;
- shanshuo(shudu);
- break;
- /*case 8:
- for(n=0;n<=RGB_count;n++)
- {
- send_dat(0);
- send_dat(255);
- send_dat(255);
- }
- reset();
- //delay1(100);
- break;
- case 9:
- for(n=0;n<=RGB_count;n++)
- {
- send_dat(255);
- send_dat(0);
- send_dat(255);
- }
- reset();
- delay1(100);
- break;
- case 10:
- for(n=0;n<=RGB_count;n++)
- {
- send_dat(255);
- send_dat(255);
- send_dat(255);
- }
- reset();
- delay1(100);
- break;*/
- }
- }
- }
復(fù)制代碼
51hei.png (5.15 KB, 下載次數(shù): 54)
下載附件
2023-2-23 13:19 上傳
PCB和視頻下載:
PCB與視頻.7z
(8.41 MB, 下載次數(shù): 167)
2023-2-23 13:22 上傳
點擊文件名下載附件
WS2811 下載積分: 黑幣 -5
|