單片機之落幕燈

這次給大家分享一個LED落幕燈

電路圖跟上篇流水燈電路相同,忘記的話翻看我上篇博客,廢話不多說,直接上代碼:

#include<reg52.h>  //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16;//對數據類型進行聲明定義
typedef unsigned char u8;//對數據類型進行聲明定義

#define LED P1     //定義單片機P1端口

void delay(u16 i)  //延時函數
{

	while(i--);
}

void main()    //主函數
{
	while(1)
	{
		LED=0XFE;   //第一顆LED燈(D1)亮
		delay(50000);//延時
		LED=0XFD;       //D2亮
		delay(50000);//延時
		LED=0XFB;       //D3亮
		delay(50000);//延時
		LED=0XF7;       //D4亮
		delay(50000);//延時
		LED=0XEF;       //D5亮
		delay(50000);//延時
		LED=0XDF;       //D6亮
		delay(50000);//延時
		LED=0XBF;       //D7亮
		delay(50000);//延時
		LED=0X7F;       //D8亮
		delay(50000);//延時
		LED=0X7E;       //D1和D8亮
		delay(50000);//延時
		LED=0X7D;       //D2和D8亮
		delay(50000);//延時
		LED=0X7B;       //D3和D8亮
		delay(50000);//延時
		LED=0X77;       //D4和D8亮
		delay(50000);//延時
		LED=0X6F;       //D5和D8亮
		delay(50000);//延時
		LED=0X5F;       //D6和D8亮
		delay(50000);//延時
		LED=0X3F;       //D7和D8亮
		delay(50000);//延時
		LED=0X3E;        //D1和D7、D8亮
		delay(50000);//延時
		LED=0X3D;        //D2和D7、D8亮
		delay(50000);//延時
		LED=0X3B;        //D3和D7、D8亮
		delay(50000);//延時
		LED=0X37;        //D4和D7、D8亮
		delay(50000);//延時
		LED=0X2F;        //D5和D7、D8亮
		delay(50000);//延時
		LED=0X1F;        //D6和D7、D8亮
		delay(50000);//延時
		LED=0X1E;        //D1和D6、D7、D8亮
		delay(50000);//延時
		LED=0X1D;        //D2和D6、D7、D8亮
		delay(50000);//延時
		LED=0X1B;        //D3和D6、D7、D8亮
		delay(50000);//延時
		LED=0X17;        //D4和D6、D7、D8亮
		delay(50000);//延時
		LED=0X0F;        //D5和D6、D7、D8亮
		delay(50000);//延時
		LED=0X0E;        //D1和D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X0D;        //D2和D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X0B;        //D3和D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X07;        //D4和D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X06;        //D1和D4、D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X05;        //D2和D4、D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X03;        //D3和D4、D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X02;        //D1和D3、D4、D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X01;        //D2和D3、D4、D5、D6、D7、D8亮
		delay(50000);//延時
		LED=0X00;        //D1、D2、D3、D4、D5、D6、D7、D8亮
		delay(50000);//延時
	}
}

這個程序的效果是像珠子一樣逐漸下落,越積越多,燈8顆燈全亮起時重新開始。
還有下面這個,效果像是帷幕從兩邊打開然後再合上,代碼如下:

#include<reg52.h>   //此文件中定義了單片機的一些特殊功能寄存器

typedef unsigned int u16;//對數據類型進行聲明定義
typedef unsigned char u8;//對數據類型進行聲明定義

#define LED P1   //定義單片機P1端口

void delay(u16 i)//延時函數
{
	while(i--);
}

void main()   //主函數
{
	while(1)   //循環
	{
		P1=0X7E;          //D1、D7亮
		delay(50000);//延時
		P1=0X3C;          //D1、D2、D7、D8亮
		delay(50000);//延時
		P1=0X18;          //D1、D2、D3、D6、D7、D8亮
		delay(50000);//延時
		P1=0X00;          //D1、D2、D3、D4、D5、D6、D7、D8亮
		delay(50000);//延時
		P1=0X18;          //D1、D2、D3、D6、D7、D8亮
		delay(50000);//延時
		P1=0X3C;          //D1、D2、D7、D8亮
		delay(50000);//延時
		P1=0X7E;          //D1、D7亮
		delay(50000);//延時
		P1=0XFF;          //全滅
		delay(50000);//延時
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章