單片機心形燈

有很多朋友想讓出一個關於心形燈的教程,忙活了兩天終於完成,代碼略長,電路圖仿真圖已備好。

所需元器件如下:
STC89C52RC芯片 *1
10K電阻 *1
10uF 電解電容 *1
22pF 瓷片電容 *2
12MHz晶振 *1
按鍵 *1
LED燈 *32
330Ω電阻 *32

電路圖如下:
在這裏插入圖片描述
代碼如下:

 /*********************************************************************************
 *********************************************************************************/
 //------------------------------------------------------------------------------//
 //																				                                       //
 //標題:心形燈亮滅效果程序									 									 									 //
 //創建人:朽木自雕		 [email protected]														 							 //
 //日期:2019/07/09					修改日期:2020/03/08													 		   //
 //描述:																										 									 	 //
 //      本程序實現的是由4組I/O接口控制32個LED燈亮滅,實現LED心形環繞。			     //
 //聲明:									 									 									 									 //
 //      以下代碼僅免費提供給學習用途,但引用或修改後必須在文件中聲明出處,		   //
 //      如有商業用途請與作者聯繫。																					     //
 //																													  							 	   //
 //------------------------------------------------------------------------------//
 /*********************************************************************************
 *********************************************************************************/
 
 
#include"reg52.h"
#include<intrins.h>		//因爲要用到左右移函數,所以加入這個頭文件

typedef unsigned int u16;	  //對數據類型進行聲明定義
typedef unsigned char u8;
unsigned int x,z;
#define LED0 P0 			  //把PO端口設置爲LED控制口
#define LED1 P1				  //把P1端口設置爲LED控制口
#define LED2 P2 			  //把P2端口設置爲LED控制口
#define LED3 P3				  //把P3端口設置爲LED控制口

void delay(unsigned int x)//定義延時函數
{
	unsigned char i;
	while(x--)
	{
		for(i=0;i<120;i++);//大約1ms
	}
}
void Chu()//初始化LED燈,讓所有LED保持熄滅狀態
{
	LED0=0XFF;
	LED1=0XFF;
	LED2=0XFF;
	LED3=0XFF;
}
/*-----------------樣式1------------------------------
	效果:所有LED燈挨個點亮,每次只顯示一顆燈亮
  功能:主要爲LED檢測,檢查所有LED好壞,作爲第一樣式
-----------------------------------------------------*/
void YANG_1()
{
	{
		u8 i;
		LED0=~0x01;
		//delay(50);     //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED0=~(0x01<<i);	 //將1右移i位,然後將結果賦值到P0口
			delay(50);        //大約延時90ms
		}
	}
	LED0=0xff;
	{
		u8 i;
		LED1=~0x01;
		//delay(50);     //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED1=~(0x01<<i);	 //將1右移i位,然後將結果賦值到P1口
			delay(50); //大約延時90ms
		}
	}
	LED1=0xff;
	{
		u8 i;
		LED2=~0x01;
		//delay(50); //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED2=~(0x01<<i);	 //將1右移i位,然後將結果賦值到P2口
			delay(50); //大約延時90ms
		}
	}
	LED2=0xff;
	{
		u8 i;
		LED3=~0x01;
		//delay(50); //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED3=~(0x01<<i);	 //將1右移i位,然後將結果賦值到P3口
			delay(50); //大約延時90ms
		}
	}
	LED3=0xff;
	{
		u8 i;
		LED3=~0x80;
		//delay(50); //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED3=~(0x80>>i);	 //將1右移i位,然後將結果賦值到P3口
			delay(50); //大約延時90ms
		}
	}
	LED3=0xff;
	{
		u8 i;
		LED2=~0x80;
		//delay(50); //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED2=~(0x80>>i);	 //將1右移i位,然後將結果賦值到P2口
			delay(50); //大約延時90ms
		}
	}
	LED2=0xff;
	{
		u8 i;
		LED1=~0x80;
		//delay(50); //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED1=~(0x80>>i);	 //將1右移i位,然後將結果賦值到P1口
			delay(50); //大約延時90ms
		}
	}
	LED1=0xff;
	{
		u8 i;
		LED0=~0x80;
		//delay(50); //大約延時90ms	
		for(i=0;i<8;i++)
		{
			LED0=~(0x80>>i);	 //將1右移i位,然後將結果賦值到P0口
			delay(50); //大約延時90ms
		}
	}
	LED0=0xff;
}
/*-----------------樣式2------------------------------
	效果:所有LED燈挨個點亮,每次多一顆燈亮,等所有LED全
	      亮後,每組I/O口倒循環熄滅再挨個點亮
-----------------------------------------------------*/
void YANG_2()
{
	{
		u8 i;
		for(i=0;i<8;i++)	  //利用for函數實現循環
		{
			LED0=0xfe<<i;	  //LED燈從第一個向右移挨個點亮(每次移動多亮一顆)
			delay(100);	  //延時,大約90ms
		} 
	}	
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED1=0xfe<<i;
			delay(100);
		} 
	}
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED2=0xfe<<i;
			delay(100);
		} 
	}
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED3=0xfe<<i;
			delay(100);
		} 
	}
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED3=0x7f>>i;
			delay(100);
		} 
	}
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED2=0x7f>>i;
			delay(100);
		} 
	}
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED1=0x7f>>i;
			delay(100);
		} 
	}
	{
		u8 i;
		for(i=0;i<8;i++)
		{
			LED0=0x7f>>i;
			delay(100);
		} 
	}
}
/*-----------------樣式3------------------------------
	效果:所有LED燈挨個點亮,每次多一顆燈亮,等所有LED燈
	      全亮後再每次熄滅一顆
-----------------------------------------------------*/
void YANG_3()
{
	LED0=0xfe;
	delay(50);
	LED0=0xfc;
	delay(50);
	LED0=0xf8;
	delay(50);
	LED0=0xf0;
	delay(50);
	LED0=0xe0;
	delay(50);
	LED0=0xc0;
	delay(50);
	LED0=0x80;
	delay(50);
	LED0=0x00;
	delay(50);

	LED1=0xfe;
	delay(50);
	LED1=0xfc;
	delay(50);
	LED1=0xf8;
	delay(50);
	LED1=0xf0;
	delay(50);
	LED1=0xe0;
	delay(50);
	LED1=0xc0;
	delay(50);
	LED1=0x80;
	delay(50);
	LED1=0x00;
	delay(50);

	LED2=0xfe;
	delay(50);
	LED2=0xfc;
	delay(50);
	LED2=0xf8;
	delay(50);
	LED2=0xf0;
	delay(50);
	LED2=0xe0;
	delay(50);
	LED2=0xc0;
	delay(50);
	LED2=0x80;
	delay(50);
	LED2=0x00;
	delay(50);

	LED3=0xfe;
	delay(50);
	LED3=0xfc;
	delay(50);
	LED3=0xf8;
	delay(50);
	LED3=0xf0;
	delay(50);
	LED3=0xe0;
	delay(50);
	LED3=0xc0;
	delay(50);
	LED3=0x80;
	delay(50);
	LED3=0x00;
	delay(50);

	LED3=0x00;
	delay(50);
	LED3=0x80;
	delay(50);
	LED3=0xc0;
	delay(50);
	LED3=0xe0;
	delay(50);
	LED3=0xf0;
	delay(50);
	LED3=0xf8;
	delay(50);
	LED3=0xfc;
	delay(50);
	LED3=0xfe;
	delay(50);
	LED3=0xff;
	delay(50);
	
	LED2=0x00;
	delay(50);
	LED2=0x80;
	delay(50);
	LED2=0xc0;
	delay(50);
	LED2=0xe0;
	delay(50);
	LED2=0xf0;
	delay(50);
	LED2=0xf8;
	delay(50);
	LED2=0xfc;
	delay(50);
	LED2=0xfe;
	delay(50);
	LED2=0xff;
	delay(50);
	
	LED1=0x00;
	delay(50);
	LED1=0x80;
	delay(50);
	LED1=0xc0;
	delay(50);
	LED1=0xe0;
	delay(50);
	LED1=0xf0;
	delay(50);
	LED1=0xf8;
	delay(50);
	LED1=0xfc;
	delay(50);
	LED1=0xfe;
	delay(50);
	LED1=0xff;
	delay(50);
	
	LED0=0x00;
	delay(50);
	LED0=0x80;
	delay(50);
	LED0=0xc0;
	delay(50);
	LED0=0xe0;
	delay(50);
	LED0=0xf0;
	delay(50);
	LED0=0xf8;
	delay(50);
	LED0=0xfc;
	delay(50);
	LED0=0xfe;
	delay(50);
	LED0=0xff;
	delay(50);
}
/*-----------------樣式4------------------------------
	效果:從P0>P3每組每次亮只顯示兩顆燈,先是順序,而後
	      首尾,全部I/O口執行一遍後從P0口開始,首尾燈向
				中間循環點亮再回到首尾,直至每組I/O口全部執行
				一遍後結束
-----------------------------------------------------*/
void YANG_4()
{
	{
	LED0=0xfc;
	delay(100);
		LED0=0xff;
		delay(100);	
	LED0=0xf3;
	delay(100);
		LED0=0xff;
		delay(100);	
	LED0=0xcf;
	delay(100);
		LED0=0xff;
		delay(100);
	LED0=0x3f;
	delay(100);
		LED0=0xff;
		delay(100);
	LED0=0x7e;
	delay(100);
		
	LED1=0xfc;
	delay(100);
		LED1=0xff;
		delay(100);	
	LED1=0xf3;
	delay(100);
		LED1=0xff;
		delay(100);	
	LED1=0xcf;
	delay(100);
		LED1=0xff;
		delay(100);
	LED1=0x3f;
	delay(100);	
		LED1=0xff;
		delay(100);
	LED1=0x7e;
	delay(100);
	
	LED2=0xfc;
	delay(100);
		LED2=0xff;
		delay(100);	
	LED2=0xf3;
	delay(100);
		LED2=0xff;
		delay(100);	
	LED2=0xcf;
	delay(100);
		LED2=0xff;
		delay(100);
	LED2=0x3f;
	delay(100);
		LED2=0xff;
		delay(100);
	LED2=0x7e;
	delay(100);	
		
	LED3=0xfc;
	delay(100);
		LED3=0xff;
		delay(100);	
	LED3=0xf3;
	delay(100);
		LED3=0xff;
		delay(100);	
	LED3=0xcf;
	delay(100);
		LED3=0xff;
		delay(100);
	LED3=0x3f;
	delay(100);	
		LED3=0xff;
		delay(100);
	LED3=0x7e;
	delay(100);
	}
 {
	LED0=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED0=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED0=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED0=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);

	LED0=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED0=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED0=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED0=0x7e;
	delay(100);
			LED0=0xff;
			delay(100);

	LED1=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED1=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED1=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED1=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);

	LED1=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED1=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED1=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED1=0x7e;
	delay(100);
			LED0=0xff;
			delay(100);

	LED2=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED2=0x7e;
	delay(100);
			LED0=0xff;
			delay(100);

	LED3=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0xe7;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0xdb;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0xbd;
	delay(100);
			LED0=0xff;
			delay(100);
	LED3=0x7e;
	delay(100);
			LED0=0xff;
			delay(100);
	}
}
/*-----------------樣式5----------------------
	效果:所有LED燈全亮,延時0.5S後熄滅,循環3次
--------------------------------------------*/
void YANG_5()    	
{
	for(z=0;z<3;z++)
	{
	LED0=0x00;
	LED1=0x00;
	LED2=0x00;
	LED3=0x00;
	delay(500);
	LED0=0xFF;
	LED1=0xFF;
	LED2=0xFF;
	LED3=0xFF;
	delay(500);
	}
}
/*-----------------樣式6----------------------
	效果:先是P3口實現落幕燈效果,其次是P2,P1,P0
--------------------------------------------*/
void YANG_6()
{
	LED3=0XFE;   //第一顆LED燈(D1)亮
	delay(100);//延時
	LED3=0XFD;       //D2亮
	delay(100);//延時
	LED3=0XFB;       //D3亮
	delay(100);//延時
	LED3=0XF7;       //D4亮
	delay(100);//延時
	LED3=0XEF;       //D5亮
	delay(100);//延時
	LED3=0XDF;       //D6亮
	delay(100);//延時
	LED3=0XBF;       //D7亮
	delay(100);//延時
	LED3=0X7F;       //D8亮
	delay(100);//延時
	LED3=0X7E;       //D1和D8亮
	delay(100);//延時
	LED3=0X7D;       //D2和D8亮
	delay(100);//延時
	LED3=0X7B;       //D3和D8亮
	delay(100);//延時
	LED3=0X77;       //D4和D8亮
	delay(100);//延時
	LED3=0X6F;       //D5和D8亮
	delay(100);//延時
	LED3=0X5F;       //D6和D8亮
	delay(100);//延時
	LED3=0X3F;       //D7和D8亮
	delay(100);//延時
	LED3=0X3E;        //D1和D7、D8亮
	delay(100);//延時
	LED3=0X3D;        //D2和D7、D8亮
	delay(100);//延時
	LED3=0X3B;        //D3和D7、D8亮
	delay(100);//延時
	LED3=0X37;        //D4和D7、D8亮
	delay(100);//延時
	LED3=0X2F;        //D5和D7、D8亮
	delay(100);//延時
	LED3=0X1F;        //D6和D7、D8亮
	delay(100);//延時
	LED3=0X1E;        //D1和D6、D7、D8亮
	delay(100);//延時
	LED3=0X1D;        //D2和D6、D7、D8亮
	delay(100);//延時
	LED3=0X1B;        //D3和D6、D7、D8亮
	delay(100);//延時
	LED3=0X17;        //D4和D6、D7、D8亮
	delay(100);//延時
	LED3=0X0F;        //D5和D6、D7、D8亮
	delay(100);//延時
	LED3=0X0E;        //D1和D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X0D;        //D2和D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X0B;        //D3和D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X07;        //D4和D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X06;        //D1和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X05;        //D2和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X03;        //D3和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X02;        //D1和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X01;        //D2和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED3=0X00;        //D1、D2、D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	
	LED2=0XFE;   //第一顆LED燈(D1)亮
	delay(100);//延時
	LED2=0XFD;       //D2亮
	delay(100);//延時
	LED2=0XFB;       //D3亮
	delay(100);//延時
	LED2=0XF7;       //D4亮
	delay(100);//延時
	LED2=0XEF;       //D5亮
	delay(100);//延時
	LED2=0XDF;       //D6亮
	delay(100);//延時
	LED2=0XBF;       //D7亮
	delay(100);//延時
	LED2=0X7F;       //D8亮
	delay(100);//延時
	LED2=0X7E;       //D1和D8亮
	delay(100);//延時
	LED2=0X7D;       //D2和D8亮
	delay(100);//延時
	LED2=0X7B;       //D3和D8亮
	delay(100);//延時
	LED2=0X77;       //D4和D8亮
	delay(100);//延時
	LED2=0X6F;       //D5和D8亮
	delay(100);//延時
	LED2=0X5F;       //D6和D8亮
	delay(100);//延時
	LED2=0X3F;       //D7和D8亮
	delay(100);//延時
	LED2=0X3E;        //D1和D7、D8亮
	delay(100);//延時
	LED2=0X3D;        //D2和D7、D8亮
	delay(100);//延時
	LED2=0X3B;        //D3和D7、D8亮
	delay(100);//延時
	LED2=0X37;        //D4和D7、D8亮
	delay(100);//延時
	LED2=0X2F;        //D5和D7、D8亮
	delay(100);//延時
	LED2=0X1F;        //D6和D7、D8亮
	delay(100);//延時
	LED2=0X1E;        //D1和D6、D7、D8亮
	delay(100);//延時
	LED2=0X1D;        //D2和D6、D7、D8亮
	delay(100);//延時
	LED2=0X1B;        //D3和D6、D7、D8亮
	delay(100);//延時
	LED2=0X17;        //D4和D6、D7、D8亮
	delay(100);//延時
	LED2=0X0F;        //D5和D6、D7、D8亮
	delay(100);//延時
	LED2=0X0E;        //D1和D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X0D;        //D2和D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X0B;        //D3和D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X07;        //D4和D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X06;        //D1和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X05;        //D2和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X03;        //D3和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X02;        //D1和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X01;        //D2和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED2=0X00;        //D1、D2、D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	
	LED1=0XFE;   //第一顆LED燈(D1)亮
	delay(100);//延時
	LED1=0XFD;       //D2亮
	delay(100);//延時
	LED1=0XFB;       //D3亮
	delay(100);//延時
	LED1=0XF7;       //D4亮
	delay(100);//延時
	LED1=0XEF;       //D5亮
	delay(100);//延時
	LED1=0XDF;       //D6亮
	delay(100);//延時
	LED1=0XBF;       //D7亮
	delay(100);//延時
	LED1=0X7F;       //D8亮
	delay(100);//延時
	LED1=0X7E;       //D1和D8亮
	delay(100);//延時
	LED1=0X7D;       //D2和D8亮
	delay(100);//延時
	LED1=0X7B;       //D3和D8亮
	delay(100);//延時
	LED1=0X77;       //D4和D8亮
	delay(100);//延時
	LED1=0X6F;       //D5和D8亮
	delay(100);//延時
	LED1=0X5F;       //D6和D8亮
	delay(100);//延時
	LED1=0X3F;       //D7和D8亮
	delay(100);//延時
	LED1=0X3E;        //D1和D7、D8亮
	delay(100);//延時
	LED1=0X3D;        //D2和D7、D8亮
	delay(100);//延時
	LED1=0X3B;        //D3和D7、D8亮
	delay(100);//延時
	LED1=0X37;        //D4和D7、D8亮
	delay(100);//延時
	LED1=0X2F;        //D5和D7、D8亮
	delay(100);//延時
	LED1=0X1F;        //D6和D7、D8亮
	delay(100);//延時
	LED1=0X1E;        //D1和D6、D7、D8亮
	delay(100);//延時
	LED1=0X1D;        //D2和D6、D7、D8亮
	delay(100);//延時
	LED1=0X1B;        //D3和D6、D7、D8亮
	delay(100);//延時
	LED1=0X17;        //D4和D6、D7、D8亮
	delay(100);//延時
	LED1=0X0F;        //D5和D6、D7、D8亮
	delay(100);//延時
	LED1=0X0E;        //D1和D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X0D;        //D2和D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X0B;        //D3和D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X07;        //D4和D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X06;        //D1和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X05;        //D2和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X03;        //D3和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X02;        //D1和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X01;        //D2和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED1=0X00;        //D1、D2、D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	
	LED0=0XFE;   //第一顆LED燈(D1)亮
	delay(100);//延時
	LED0=0XFD;       //D2亮
	delay(100);//延時
	LED0=0XFB;       //D3亮
	delay(100);//延時
	LED0=0XF7;       //D4亮
	delay(100);//延時
	LED0=0XEF;       //D5亮
	delay(100);//延時
	LED0=0XDF;       //D6亮
	delay(100);//延時
	LED0=0XBF;       //D7亮
	delay(100);//延時
	LED0=0X7F;       //D8亮
	delay(100);//延時
	LED0=0X7E;       //D1和D8亮
	delay(100);//延時
	LED0=0X7D;       //D2和D8亮
	delay(100);//延時
	LED0=0X7B;       //D3和D8亮
	delay(100);//延時
	LED0=0X77;       //D4和D8亮
	delay(100);//延時
	LED0=0X6F;       //D5和D8亮
	delay(100);//延時
	LED0=0X5F;       //D6和D8亮
	delay(100);//延時
	LED0=0X3F;       //D7和D8亮
	delay(100);//延時
	LED0=0X3E;        //D1和D7、D8亮
	delay(100);//延時
	LED0=0X3D;        //D2和D7、D8亮
	delay(100);//延時
	LED0=0X3B;        //D3和D7、D8亮
	delay(100);//延時
	LED0=0X37;        //D4和D7、D8亮
	delay(100);//延時
	LED0=0X2F;        //D5和D7、D8亮
	delay(100);//延時
	LED0=0X1F;        //D6和D7、D8亮
	delay(100);//延時
	LED0=0X1E;        //D1和D6、D7、D8亮
	delay(100);//延時
	LED0=0X1D;        //D2和D6、D7、D8亮
	delay(100);//延時
	LED0=0X1B;        //D3和D6、D7、D8亮
	delay(100);//延時
	LED0=0X17;        //D4和D6、D7、D8亮
	delay(100);//延時
	LED0=0X0F;        //D5和D6、D7、D8亮
	delay(100);//延時
	LED0=0X0E;        //D1和D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X0D;        //D2和D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X0B;        //D3和D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X07;        //D4和D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X06;        //D1和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X05;        //D2和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X03;        //D3和D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X02;        //D1和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X01;        //D2和D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
	LED0=0X00;        //D1、D2、D3、D4、D5、D6、D7、D8亮
	delay(100);//延時
}
/*-----------------樣式7----------------------
	效果:心形左右半邊亮滅循環3次,然後上下半邊
	      再循環亮滅3次
--------------------------------------------*/
void YANG_7()
{
	for(z=0;z<3;z++)
	{
		LED3=0X00;
		LED2=0X00;
		LED1=0XFF;
		LED0=0XFF;
		delay(300);
		LED0=0X00;
		LED1=0X00;
		LED2=0XFF;
		LED3=0XFF;
		delay(300);
	}
	for(z=0;z<3;z++)
	{
		LED3=0X00;
		LED0=0X00;
		LED1=0XFF;
		LED2=0XFF;
		delay(300);
		LED2=0X00;
		LED1=0X00;
		LED0=0XFF;
		LED3=0XFF;
		delay(300);
	}
}
/*-----------------樣式8-------------------------
	效果:每隔1顆LED一顆燈亮,然後取反,循環效果5次
------------------------------------------------*/
void YANG_8()
{
	for(z=0;z<5;z++)
	{
		LED0=0X55;
		LED1=0X55;
		LED2=0X55;
		LED3=0X55;
		delay(200);
		LED0=~0X55;
		LED1=~0X55;
		LED2=~0X55;
		LED3=~0X55;
		delay(200);
	}
}
/*-----------------樣式9-------------------------
	效果:左上右下一顆LED繞半邊心往返點亮循環
------------------------------------------------*/
void YANG_9()
{
	for(z=0;z<5;z++)
	{
		LED3=0X7F;
		LED1=0X7F;
		delay(50);
		LED3=0XBF;
		LED1=0XBF;
		delay(50);
		LED3=0XDF;
		LED1=0XDF;
		delay(50);
		LED3=0XEF;
		LED1=0XEF;
		delay(50);
		LED3=0XF7;
		LED1=0XF7;
		delay(50);
		LED3=0XFB;
		LED1=0XFB;
		delay(50);
		LED3=0XFD;
		LED1=0XFD;
		delay(50);
		LED3=0XFE;
		LED1=0XFE;		
		delay(50);
		LED3=0XFF;
		LED1=0XFF;		
		LED2=0X7F;
		LED0=0X7F;
		delay(50);
		LED2=0XBF;
		LED0=0XBF;
		delay(50);
		LED2=0XDF;
		LED0=0XDF;
		delay(50);
		LED2=0XEF;
		LED0=0XEF;
		delay(50);
		LED2=0XF7;
		LED0=0XF7;
		delay(50);
		LED2=0XFB;
		LED0=0XFB;
		delay(50);
		LED2=0XFD;
		LED0=0XFD;
		delay(50);
		LED2=0XFE;
		LED0=0XFE;
		delay(50);
		LED2=0XFE;
		LED0=0XFE;
		delay(50);
		LED2=0XFD;
		LED0=0XFD;
		delay(50);
		LED2=0XFB;
		LED0=0XFB;
		delay(50);
		LED2=0XF7;
		LED0=0XF7;
		delay(50);
		LED2=0XEF;
		LED0=0XEF;
		delay(50);
		LED2=0XDF;
		LED0=0XDF;
		delay(50);
		LED2=0XBF;
		LED0=0XBF;
		delay(50);
		LED2=0X7F;
		LED0=0X7F;
		delay(50);
		LED2=0XFF;
		LED0=0XFF;
		LED3=0XFE;
		LED1=0XFE;		
		delay(50);
		LED3=0XFD;
		LED1=0XFD;
		delay(50);
		LED3=0XFB;
		LED1=0XFB;
		delay(50);
		LED3=0XF7;
		LED1=0XF7;
		delay(50);
		LED3=0XBF;
		LED1=0XBF;
		delay(50);
		LED3=0X7F;
		LED1=0X7F;
		delay(50);
	}
}
/*-----------------樣式10-------------------------
	效果:P3、P1和P2、P0口所有燈光交替閃爍
------------------------------------------------*/
void YANG_10()
{
	for(z=0;z<3;z++)
	{
		LED2=0X00;
		LED0=0X00;
		delay(100);
		LED2=0XFF;
		LED0=0XFF;
		LED3=0X00;
		LED1=0X00;
		delay(100);
		LED3=0XFF;
		LED1=0XFF;
	}
}
/*-----------------樣式11-------------------------
	效果:左右扭腰動作
------------------------------------------------*/
void YANG_11()
{
	for(z=0;z<5;z++)
	{
		LED3=0X7F;
		LED2=0XFE;
		LED0=0X7E;
		LED1=0XFE;
		delay(50);
		LED3=0XBF;
		LED2=0XFD;
		LED0=0XBF;
		LED1=0XFD;
		delay(50);
		LED3=0XDF;
		LED2=0XFB;
		LED0=0XDF;
		LED1=0XFB;
		delay(50);
		LED3=0XEF;
		LED2=0XF7;
		LED0=0XEF;
		LED1=0XF7;
		delay(50);
		LED3=0XF7;
		LED2=0XEF;
		LED0=0XF7;
		LED1=0XEF;
		delay(50);
		LED3=0XFB;
		LED2=0XDF;
		LED0=0XFB;
		LED1=0XDF;
		delay(50);
		LED3=0XFD;
		LED2=0XBF;
		LED0=0XFD;
		LED1=0XBF;
		delay(50);
		LED3=0XFE;
		LED2=0X7F;
		LED0=0XFE;
		LED1=0X7F;
		delay(50);
		LED3=0XFE;
		LED2=0X7F;
		LED0=0XFE;
		LED1=0X7F;
		delay(50);
		LED3=0XFD;
		LED2=0XBF;
		LED0=0XFD;
		LED1=0XBF;
		delay(50);
		LED3=0XFB;
		LED2=0XDF;
		LED0=0XFB;
		LED1=0XDF;
		delay(50);
		LED3=0XF7;
		LED2=0XEF;
		LED0=0XF7;
		LED1=0XEF;
		delay(50);
		LED3=0XEF;
		LED2=0XF7;
		LED0=0XEF;
		LED1=0XF7;
		delay(50);
		LED3=0XDF;
		LED2=0XFB;
		LED0=0XDF;
		LED1=0XFB;
		delay(50);
		LED3=0XBF;
		LED2=0XFD;
		LED0=0XBF;
		LED1=0XFD;
		delay(50);
		LED3=0X7F;
		LED2=0XFE;
		LED0=0X7E;
		LED1=0XFE;
		delay(50);
	}
}
/*-----------------樣式12-------------------------
	效果:風火輪1
------------------------------------------------*/
void YANG_12()
{
	for(z=0;z<5;z++)
	{
		LED0=0X77;
		LED1=0X77;
		LED2=0X77;
		LED3=0X77;
		delay(50);
		LED0=0XBB;
		LED1=0XBB;
		LED2=0XBB;
		LED3=0XBB;
		delay(50);
		LED0=0XDD;
		LED1=0XDD;
		LED2=0XDD;
		LED3=0XDD;
		delay(50);
		LED0=0XEE;
		LED1=0XEE;
		LED2=0XEE;
		LED3=0XEE;
		delay(50);
	}
}
/*-----------------樣式13-------------------------
	效果:風火輪2
------------------------------------------------*/
void YANG_13()
{
	for(z=0;z<5;z++)
	{
		LED0=0X7F;
		LED1=0X7F;
		LED2=0X7F;
		LED3=0X7F;
		delay(50);
		LED0=0XBF;
		LED1=0XBF;
		LED2=0XBF;
		LED3=0XBF;
		delay(50);
		LED0=0XDF;
		LED1=0XDF;
		LED2=0XDF;
		LED3=0XDF;
		delay(50);
		LED0=0XEF;
		LED1=0XEF;
		LED2=0XEF;
		LED3=0XEF;
		delay(50);
		LED0=0XF7;
		LED1=0XF7;
		LED2=0XF7;
		LED3=0XF7;
		delay(50);
		LED0=0XFB;
		LED1=0XFB;
		LED2=0XFB;
		LED3=0XFB;
		delay(50);
		LED0=0XFD;
		LED1=0XFD;
		LED2=0XFD;
		LED3=0XFD;
		delay(50);
		LED0=0XFE;
		LED1=0XFE;
		LED2=0XFE;
		LED3=0XFE;
		delay(50);
	}
}
/*-----------------樣式14-------------------------
	效果:風火輪大集合
------------------------------------------------*/
void YANG_14()
{
	for(z=0;z<3;z++)
	{
		LED0=~0X55;
		LED1=~0X55;
		LED2=~0X55;
		LED3=~0X55;
		delay(200);
		LED0=0X55;
		LED1=0X55;
		LED2=0X55;
		LED3=0X55;
		delay(200);
	}
	for(z=0;z<3;z++)
	{
		LED0=0X77;
		LED1=0X77;
		LED2=0X77;
		LED3=0X77;
		delay(50);
		LED0=0XBB;
		LED1=0XBB;
		LED2=0XBB;
		LED3=0XBB;
		delay(50);
		LED0=0XDD;
		LED1=0XDD;
		LED2=0XDD;
		LED3=0XDD;
		delay(50);
		LED0=0XEE;
		LED1=0XEE;
		LED2=0XEE;
		LED3=0XEE;
		delay(50);
	}
	for(z=0;z<3;z++)
	{
		LED0=0X7F;
		LED1=0X7F;
		LED2=0X7F;
		LED3=0X7F;
		delay(50);
		LED0=0XBF;
		LED1=0XBF;
		LED2=0XBF;
		LED3=0XBF;
		delay(50);
		LED0=0XDF;
		LED1=0XDF;
		LED2=0XDF;
		LED3=0XDF;
		delay(50);
		LED0=0XEF;
		LED1=0XEF;
		LED2=0XEF;
		LED3=0XEF;
		delay(50);
		LED0=0XF7;
		LED1=0XF7;
		LED2=0XF7;
		LED3=0XF7;
		delay(50);
		LED0=0XFB;
		LED1=0XFB;
		LED2=0XFB;
		LED3=0XFB;
		delay(50);
		LED0=0XFD;
		LED1=0XFD;
		LED2=0XFD;
		LED3=0XFD;
		delay(50);
		LED0=0XFE;
		LED1=0XFE;
		LED2=0XFE;
		LED3=0XFE;
		delay(50);
	}
	for(z=0;z<3;z++)
	{
		LED0=0XFE;
		LED1=0XFE;
		LED2=0XFE;
		LED3=0XFE;
		delay(50);
		LED0=0XFD;
		LED1=0XFD;
		LED2=0XFD;
		LED3=0XFD;
		delay(50);
		LED0=0XFB;
		LED1=0XFB;
		LED2=0XFB;
		LED3=0XFB;
		delay(50);
		LED0=0XF7;
		LED1=0XF7;
		LED2=0XF7;
		LED3=0XF7;
		delay(50);
		LED0=0XEF;
		LED1=0XEF;
		LED2=0XEF;
		LED3=0XEF;
		delay(50);
		LED0=0XDF;
		LED1=0XDF;
		LED2=0XDF;
		LED3=0XDF;
		delay(50);
		LED0=0XBF;
		LED1=0XBF;
		LED2=0XBF;
		LED3=0XBF;
		delay(50);
		LED0=0X7F;
		LED1=0X7F;
		LED2=0X7F;
		LED3=0X7F;
		delay(50);
	}
	for(z=0;z<3;z++)
	{
		LED0=~0X55;
		LED1=~0X55;
		LED2=~0X55;
		LED3=~0X55;
		delay(200);
		LED0=0X55;
		LED1=0X55;
		LED2=0X55;
		LED3=0X55;
		delay(200);
	}
}
/*-----------------樣式15----------------------
	效果:所有LED燈全亮,延時0.5S後熄滅,循環5次
--------------------------------------------*/
void YANG_15()    	
{
	for(z=0;z<5;z++)
	{
	LED0=0x00;
	LED1=0x00;
	LED2=0x00;
	LED3=0x00;
	delay(50);
	LED0=0xFF;
	LED1=0xFF;
	LED2=0xFF;
	LED3=0xFF;
	delay(50);
	}
}
void main()
{
	Chu();
	YANG_1();
	Chu();
	YANG_2();
	Chu();
	YANG_3();
	Chu();
	YANG_4();
	Chu();
	YANG_5();
	Chu();
	YANG_8();
	Chu();
	YANG_6();
	Chu();
	YANG_7();
	Chu();
	YANG_8();
	Chu();
	YANG_9();
	Chu();
	YANG_10();
	Chu();
	YANG_11();
	Chu();
	YANG_12();
	Chu();
	YANG_13();
	Chu();
	YANG_14();
	Chu();
	YANG_15();
}

仿真電路圖如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章