/*************************************
MCU时钟晶振:12MHZ,机器周期为1T,指含时间为1/12us
*************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LEDC 149
#define LEDS 30
sbit DIN=P3^5;
uchar i,n,t,m;
uchar num;
/*************0码*******************/
void DIN_bit_0()
{
DIN=1;
_nop_();//_nop_();
DIN=0;
_nop_();_nop_();_nop_();//_nop_();//_nop_();
}
/*************1码*******************/
void DIN_bit_1()
{
DIN=1;
_nop_();_nop_();_nop_();//_nop_();//_nop_();
DIN=0;
_nop_();//_nop_();
}
/*************reset码*******************/
void reset()
{
uint i;
DIN=0;
for(i=15;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 jl(uchar r,uchar g,uchar b,uchar t)//Gradually bright
{
for(i=0;i<255;i++)/*************R渐亮*****************/
{
for(n=LEDC;n>0;n--)
{
send_dat(i*r);//R
send_dat(i*g);//G
send_dat(i*b);//B
}
reset();
delay(t);
}
}
void jm(uchar r,uchar g,uchar b,uchar t)//Gradually bright
{
for(i=255;i>0;i--)
{
for(n=LEDC;n>0;n--)
{
send_dat(i*r);
send_dat(i*g);
send_dat(i*b);
}
reset();
delay(t);
}
}
void zzj(uchar r,uchar g,uchar b,uchar t) //青色增加
{
for(i=0;i<LEDC;i++)
{
for(num=0;num<i;num++)
{
send_dat(r);
send_dat(g);
send_dat(b);
}
reset();
delay(t);
}
}
void yzj(uchar r,uchar g,uchar b,uchar t) //青色增加
{
for(i=0;i<LEDC;i++)
{
for(num=LEDC-i;num>0;num--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
for(num=0;num<i;num++)
{
send_dat(r);
send_dat(g);
send_dat(b);
}
reset();
delay(t);
}
}
void yjs(uchar r,uchar g,uchar b,uchar t) //粉色右减少
{
for(i=LEDC;i>0;i--)
{
for(num=LEDC-i;num>0;num--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
for(num=i;num>0;num--)
{
send_dat(r);
send_dat(g);
send_dat(b);
}
reset();
delay(t);
}
for(num=LEDC;num>0;num--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
reset();
}
void zjs(uchar r,uchar g,uchar b,uchar t) //粉色左减少
{
for(i=LEDC;i>0;i--)
{
n=LEDC-i;num=i;
while(num--)
{
send_dat(r);
send_dat(g);
send_dat(b);
}
while(n--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
reset();
delay(t);
}
for(num=LEDC;num>0;num--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
reset();
}
void zmrun(uchar qr,uchar qg,uchar qb,uchar mr,uchar mg,uchar mb,uchar hr,uchar hg,uchar hb,uchar mm,uchar t) //粉色左减少
{
for(i=LEDC-mm;i>mm;i--)
{
n=LEDC-i;m=mm;num=i-mm;
while(n--)
{
send_dat(qr);
send_dat(qg);
send_dat(qb);
}
while(m--)
{
send_dat(mr);
send_dat(mg);
send_dat(mb);
}
while(num--)
{
send_dat(hr);
send_dat(hg);
send_dat(hb);
}
reset();
delay(t);
}
for(num=LEDC;num>0;num--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
reset();
}
void ymrun(uchar qr,uchar qg,uchar qb,uchar mr,uchar mg,uchar mb,uchar hr,uchar hg,uchar hb,uchar mm,uchar t) //粉色左减少
{
for(i=LEDC-mm;i>mm;i--)
{
n=LEDC-i;m=mm;num=i-mm;
while(num--)
{
send_dat(qr);
send_dat(qg);
send_dat(qb);
}
while(m--)
{
send_dat(mr);
send_dat(mg);
send_dat(mb);
}
while(n--)
{
send_dat(hr);
send_dat(hg);
send_dat(hb);
}
reset();
delay(t);
}
for(num=LEDC;num>0;num--)
{
send_dat(0);
send_dat(0);
send_dat(0);
}
reset();
}
void main()
{
while(1)
{
zmrun(244,244,244,0,255,0,0,255,0,15,1);
zmrun(244,244,244,0,255,0,244,244,244,15,1);
ymrun(244,244,244,0,255,0,255,0,255,15,1);
zmrun(0,255,0,0,255,0,244,244,244,15,1);
ymrun(0,255,0,244,244,244,244,244,244,15,1);
ymrun(0,255,0,244,244,244,0,255,0,5,1);
ymrun(0,0,0,0,244,0,0,0,0,5,1);
zzj(255,255,0,8);
yzj(255,255,0,8);
yjs(255,0,255,4);
zjs(255,0,255,1);
zzj(255,0,0,4);
zjs(255,0,0,1);
zzj(0,0,255,1);
zjs(0,0,255,1);
zzj(0,255,0,1);
zjs(0,255,0,1);
yzj(255,0,0,1);
yjs(255,0,0,1);
yzj(0,0,255,1);
yjs(0,0,255,1);
yzj(0,255,0,1);
yjs(0,255,0,1);
zjs(0,255,255,1);
zjs(155,200,230,1);
jl(0,1,0,1);
jm(0,1,0,1);
}
}
- 1
- 2
前往页