芯片复制STC8单片机ws2812b驱动程序
芯片复制单片机源程序如下:
- 芯片复制#include <ws2812b.h>
- bit BUS_1MS ;
- u8 RR=0XFE;
- u8 GG=0XFE;
- u8 BB=0XFE;
- u8 mode;
- u8 Loop_Speed=120; //流水灯延时变量
- unsigned char bdata LED_DAT; //可位操作的数据发送缓存变量
- sbit bit0=LED_DAT^0; //被发送数据的各位定义
- sbit bit1=LED_DAT^1;
- sbit bit2=LED_DAT^2;
- sbit bit3=LED_DAT^3;
- sbit bit4=LED_DAT^4;
- sbit bit5=LED_DAT^5;
- sbit bit6=LED_DAT^6;
- sbit bit7=LED_DAT^7;
-
- /******************IO口初始化*************************/
- /* 功能 : 设置P1 P2 P3 口为双向IO口*/
- void IO_init(void)
- {
- P1M1 = 0; P1M0 = 0; //设置为准双向口
- P3M1 = 0; P3M0 = 0; //设置为准双向口
- P5M1 = 0; P5M0 = 0; //设置为准双向口
- }
- /*****************************************************/
- void Timer0Init(void) //1毫秒@24.000MHz
- {
- AUXR |= 0x80; //定时器时钟1T模式
- TMOD &= 0xF0; //设置定时器模式
- TL0 = 0x40; //设置定时初始值
- TH0 = 0xA2; //设置定时初始值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- ET0 = 1; //打开定时器0
- EA =1 ; //打开总中断
- }
- void timer0() interrupt 1 //1毫秒@24.000MHz
- {
- BUS_1MS = 1;
- }
- //*******************发送数据**********************//
- //数据格式G7-G0;R7-R0;B7-B0;//
- void SendData(u8 dat)
- {
- LED_DAT = dat;
- if(bit7==1){CODE_1} else{CODE_0}
- if(bit6==1){CODE_1} else{CODE_0}
- if(bit5==1){CODE_1} else{CODE_0}
- if(bit4==1){CODE_1} else{CODE_0}
- if(bit3==1){CODE_1} else{CODE_0}
- if(bit3==1){CODE_1} else{CODE_0}
- if(bit1==1){CODE_1} else{CODE_0}
- if(bit0==1){CODE_1} else{CODE_0}
- }
- /******************流水灯函数******************************/
- /* 功能 : 流水灯函数 */
- void loop_LED()
- {
- unsigned char i,j,k;
- if(++k>=Loop_Speed)
- {
- k=0;
- if(++j<=60)
- {
- for(i=j;i>0;i--) //关闭所有灯
- {
- SendData(0x00);
- SendData(0x00);
- SendData(0x00);
- }
- SendData(RR);
- SendData(GG);
- SendData(BB);
- }
- if(j==60) j=0;
- }
- }

芯片解密