一、说明
本程序以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++)
{ }
}
}