一、說明
本程序以STC89C52RC單片機爲主MCU,旨在爲開發者節約大量時間,請盡情複製粘貼。
二、原理圖
三、Keil C語言程序
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar i;
sbit led=P2^0;
void Delay(uint t);
void action1(uchar speed); //全心(從上往下)
void action2(uchar speed); //全心(從下往上)
void action3(uchar speed); //全心(順時針)
void action4(uchar speed); //全心(逆時針)
void action5(uchar speed); //間隔閃爍流動
void action6(uchar speed); //全心(四燈滅式流動)(順時針)
void action7(uchar speed); //全心(四燈滅式流動)(逆時針)
void action8(uchar speed); //全暗(四燈亮式流動)(順時針)
void action9(uchar speed); //全暗(四燈亮式流動)(逆時針)
void action10(uchar speed);//全暗(單燈亮式流動)(順時針)
void action11(uchar speed);//全暗(單燈亮式流動)(逆時針)
void action12(uchar speed);//右半心(從上順時針向下)右半心(從下順時針向上)
void action13(uchar speed);//右半心(從下順時針向上)右半心(從上順時針向下)
void action14(uchar speed);//上半心(從右向左),下半心(從左向右)
void action15(uchar speed);//上半心(從左向右),下半心(從右向左)
void action16(uchar speed);//上半心,下半心,左半心,右半心(交替閃爍<快速>)
void main()
{
while(1)
{
action1(100);//全心(從上往下)
action2(100);//全心(從下往上)
action3(100);//全心(順時針)
action4(100);//全心(逆時針)
action5(100);//間隔閃爍流動
action6(100);//全心(四燈滅式流動)(順時針)
action7(100);//全心(四燈滅式流動)(逆時針)
action8(50); //全暗(四燈亮式流動)(順時針)
action9(50); //全暗(四燈亮式流動)(逆時針)
action8(20); //全暗(四燈亮式流動)(順時針)
action8(20); //全暗(四燈亮式流動)(順時針)
action8(20); //全暗(四燈亮式流動)(順時針)
action8(20); //全暗(四燈亮式流動)(順時針)
action8(20); //全暗(四燈亮式流動)(順時針)
action9(20); //全暗(四燈亮式流動)(逆時針)
action9(20); //全暗(四燈亮式流動)(逆時針)
action9(20); //全暗(四燈亮式流動)(逆時針)
action9(20); //全暗(四燈亮式流動)(逆時針)
action9(20); //全暗(四燈亮式流動)(逆時針)
action10(100);//全暗(單燈亮式流動)(順時針)
action11(100);//全暗(單燈亮式流動)(逆時針)
action12(100);//右半心(從上順時針向下)右半心(從下順時針向上)
action13(100);//右半心(從下順時針向上)右半心(從上順時針向下)
action14(100);//上半心(從右向左),下半心(從左向右)
action15(100);//上半心(從左向右),下半心(從右向左)
action16(40);//上半心,下半心,左半心,右半心(交替閃爍<快速>)
action16(10);//上半心,下半心,左半心,右半心(交替閃爍<快速>)
}
}
void action1(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1>>i;
P2=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P1=x1<<i;
P3=x1>>i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action2(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P1=x1>>i;
P3=x1<<i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1<<i;
P2=x1<<i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action3(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P2=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P3=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P1=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1<<i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action4(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P1=x1<<i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P3=x1<<i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P2=x1<<i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action5(uchar speed)
{
for(i=1;i<17;i++)
{
P0=0xaa;
P1=0x55;
P3=0x55;
P2=0x55;
Delay(speed);
P0=0x55;
P1=0xaa;
P3=0xaa;
P2=0xaa;
Delay(100);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action6(uchar speed)
{
uchar j;
for(j=1;j<4;j++)
{
for(i=1;i<9;i++)
{
uchar x1=0x01;
P0=_crol_(x1,i);
P2=_cror_(x1,i);
P3=_cror_(x1,i);
P1=_cror_(x1,i);
Delay(speed);
}
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action7(uchar speed)
{
uchar j;
for(j=1;j<4;j++)
{
for(i=1;i<9;i++)
{
uchar x1=0x01;
P0=_cror_(x1,i);
P2=_crol_(x1,i);
P3=_crol_(x1,i);
P1=_crol_(x1,i);
Delay(speed);
}
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action8(uchar speed)
{
uchar j;
for(j=1;j<4;j++)
{
for(i=1;i<9;i++)
{
uchar x1=0x0fe;
P0=_crol_(x1,i);
P2=_cror_(x1,i);
P3=_cror_(x1,i);
P1=_cror_(x1,i);
Delay(speed);
}
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action9(uchar speed)
{
uchar j;
for(j=1;j<4;j++)
{
for(i=1;i<9;i++)
{
uchar x1=0x0fe;
P0=_cror_(x1,i);
P2=_crol_(x1,i);
P3=_crol_(x1,i);
P1=_crol_(x1,i);
Delay(speed);
}
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action10(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0x0fe;
P2=_cror_(x1,i);
Delay(speed);
}
P2=0xff;
for(i=1;i<9;i++)
{
uchar x1=0x0fe;
P3=_cror_(x1,i);
Delay(speed);
}
P3=0xff;
for(i=1;i<9;i++)
{
uchar x1=0x0fe;
P1=_cror_(x1,i);
Delay(speed);
}
P1=0xff;
for(i=1;i<8;i++)
{
uchar x1=0x0fe;
P0=_crol_(x1,i);
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action11(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0x0fe;
P0=_cror_(x1,i);
Delay(speed);
}
P0=0xff;
for(i=0;i<8;i++)
{
uchar x1=0xfe;
P1=_crol_(x1,i);
Delay(speed);
}
P1=0xff;
for(i=0;i<8;i++)
{
uchar x1=0xfe;
P3=_crol_(x1,i);
Delay(speed);
}
P3=0xff;
for(i=0;i<8;i++)
{
uchar x1=0xfe;
P2=_crol_(x1,i);
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action12(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P2=x1>>i;
P1=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P3=x1>>i;
P0=x1<<i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action13(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1>>i;
P3=x1<<i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P1=x1<<i;
P2=x1<<i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action14(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P2=x1<<i;
P1=x1<<i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1>>i;
P3=x1<<i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action15(uchar speed)
{
for(i=1;i<9;i++)
{
uchar x1=0xff;
P0=x1<<i;
P3=x1>>i;
Delay(speed);
}
for(i=1;i<9;i++)
{
uchar x1=0xff;
P2=x1>>i;
P1=x1>>i;
Delay(speed);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
}
void action16(uchar speed)
{
for(i=1;i<9;i++)
{
P0=0x00;
P1=0x00;
P2=0xff;
P3=0xff;
Delay(speed);
P2=0x00;
P3=0x00;
P0=0xff;
P1=0xff;
Delay(speed);
}
for(i=1;i<9;i++)
{
P0=0x00;
P2=0x00;
P1=0xff;
P3=0xff;
Delay(speed);
P1=0x00;
P3=0x00;
P0=0xff;
P2=0xff;
Delay(speed);
}
}
void Delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<80; k++)
{ }
}
}