26、51單片機心形燈範例程序

一、說明

本程序以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++)
		{ }
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章