功 能: 單片機STC15F104E和WS2811控制LED燈珠變化并帶有掉電保持的功
能(內部EEPROM)。三個按鍵作用:Mode為模式選擇,每按一次會
轉換為另一種樣式顯示,并保持此樣式一直循環,當按下Sel鍵時所
有的樣式循環顯示,Speed為速度調節(共八級速度)。顯示樣式有
:整體七彩跳變,七彩漸變,流水,流星,單點變化,后向前流水。
單片機源程序如下:
- #include<IAP15F105W.h>
- #include<intrins.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- #define CMD_IDLE 0 //Stand-By
- #define CMD_READ 1 //Byte-Read
- #define CMD_PROGRAM 2 //Byte-Program
- #define CMD_ERASE 3 //Sector-Erase
- /*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
- #define ENABLE_IAP 0x82 //if SYSCLK<20MHz
- #define IAP_ADDRESS 0x1200 //EEPROM開始地址
- #define NUMBER 500 //級聯個數
- sbit DAI =P3^4; //信號端口
- uint speed=10; //速度
- uchar T1_Flag,DMX512_Data_Byte;
- uchar T_R[5]={50,0,0,50,0};
- uchar T_G[5]={0,50,0,50,0};
- uchar T_B[5]={0,0,50,50,0};
- //函數申明
- //void send_24bits(uchar dat1,uchar dat2,uchar dat3);
- //void rst();
- void delay1();
- void time0_init();
- void send_2821_star();
- void send_2821_byte(uchar cod8);
- void send_2821_24bits(uchar dat1,uchar dat2,uchar dat3);
- void send_2821_end();
- void Send_Data(uchar dat);
- /******************************************
- 函 數 名:void delay(uint z)
- 功 能:延時函數
- ******************************************/
- void Delay(uint x)
- {
- uint y;
- for(;x>0;x--)
- {
- for(y=0;y<6000;y++);
- }
- }
- /******************************************
- 函數名: void Delay4us()
- void Delay88us()
- 功 能:向2821發送數據電平位延時
- ********************************************/
- void Delay4us() //@33.1776MHz
- {
- unsigned char i;
- _nop_();
- _nop_();
- _nop_();
- i = 23;//29//24//23//22
- while (--i);
- }
- void Delay_4us() //@33.1776MHz
- {
- unsigned char i;
- _nop_();
- _nop_();
- _nop_();
- i = 28;//29//24//23//22
- while (--i);
- }
- void Delay88us() //@33.1776MHz
- {
- unsigned char i,j;
- _nop_();
- _nop_();
- i = 3;
- j = 211;
- do
- {
- while (--j);
- } while (--i);
- }
復制代碼
以上代碼的Keil工程文件下載:
代碼.7z
(20.79 KB, 下載次數: 104)
2022-12-16 16:20 上傳
點擊文件名下載附件
|