/*************************************
MCU:STC12C56 晶振:12MHZ*************************************/#include#include #define uchar unsigned char#define uint unsigned int#define RGB_count 20#define RGB_speed 30sbit DIN=P1^2;/*************0码*******************/void DIN_bit_0(){uchar i;DIN=1;for(i=1;i>0;i--); //低速形式 1+3+4*3+1_nop_();DIN=0; //1+3+4*7for(i=3;i>0;i--); }/*************1码*******************/void DIN_bit_1(){uchar i;DIN=1; //1+3+4*7+1for(i=3;i>0;i--);_nop_();DIN=0;for(i=1;i>0;i--); //1+3+4*3}/*************reset码*******************/void reset(){uint i;DIN=0;for(i=250;i>0;i--); }/*************数据传输******************/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 delay(uchar t){unsigned long j;while(t--) for(j=0;j<1000;j++);}/*************主程序******************/void main(){uchar i,n,num,t;while(1){/*************R渐亮*******************/for(i=0;i<255;i++){for(n=RGB_count;n>0;n--){send_dat(i);send_dat(0);send_dat(0);}reset();delay(1);}/*************R渐灭*******************/for(i=255;i>0;i++){for(n=RGB_count;n>0;n--){send_dat(i);send_dat(0);send_dat(0);}reset();delay(1);}/*************G渐亮*******************/for(i=0;i<255;i++){for(n=RGB_count;n>0;n--){send_dat(0);send_dat(i);send_dat(0);}reset();delay(1);}/*************G渐灭*******************/for(i=255;i>0;i++){for(n=RGB_count;n>0;n--){send_dat(0);send_dat(i);send_dat(0);}reset();delay(1);}/*************B渐亮*******************/for(i=0;i<255;i++){for(n=RGB_count;n>0;n--){send_dat(0);send_dat(0);send_dat(i);}reset();delay(1);}/*************B渐灭*******************/for(i=255;i>0;i++){for(n=RGB_count;n>0;n--){send_dat(0);send_dat(0);send_dat(i);}reset();delay(1);}/*************RG渐亮*******************/for(i=0;i<255;i++){for(n=RGB_count;n>0;n--){send_dat(i);send_dat(i);send_dat(0);}reset();delay(1);}/*************RG渐灭*******************/for(i=255;i>0;i++){for(n=RGB_count;n>0;n--){send_dat(i);send_dat(i);send_dat(0);}reset();delay(1);}/*************GB渐亮*******************/for(i=0;i<255;i++){for(n=RGB_count;n>0;n--){send_dat(0);send_dat(i);send_dat(i);}reset();delay(1);}/*************GB渐灭*******************/for(i=255;i>0;i++){for(n=RGB_count;n>0;n--){send_dat(0);send_dat(i);send_dat(i);}reset();delay(1);}/*************RB渐亮*******************/for(i=0;i<255;i++){for(n=RGB_count;n>0;n--){send_dat(i);send_dat(0);send_dat(i);}reset();delay(1);}/*************RB渐灭*******************/for(i=255;i>0;i++){for(n=RGB_count;n>0;n--){send_dat(i);send_dat(0);send_dat(i);}reset();delay(1);}/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();/*************B跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************B跑马灯削减*******************/for(i=RGB_count;i>0;i--) {for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();}/*************G跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************G跑马灯削减*******************/ for(i=RGB_count;i>0;i--) {for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();}/*************R跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************R跑马灯削减*******************/for(i=RGB_count;i>0;i--){for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();}/*************RG跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************RG跑马灯削减*******************/ for(i=RGB_count;i>0;i--) {for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();}/*************GB跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************GB跑马灯削减*******************/ for(i=RGB_count;i>0;i--) {for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();}/*************RB跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************RB跑马灯削减*******************/ for(i=RGB_count;i>0;i--) {for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();}/*************RGB跑马灯添加*******************/for(i=0;i 0;t--) delay(1);}/*************RGB跑马灯削减*******************/for(i=RGB_count;i>0;i--){for(num=0;num0;t--) delay(1);/*************RGB全灭*******************/for(num=RGB_count;num>0;num--){send_dat(0);send_dat(0);send_dat(0);}reset();} }}