单片机之落幕灯

这次给大家分享一个LED落幕灯

电路图跟上篇流水灯电路相同,忘记的话翻看我上篇博客,废话不多说,直接上代码:

#include<reg52.h>  //此文件中定义了单片机的一些特殊功能寄存器
#define LED P1     //定义单片机P1端口
typedef unsigned int u16;//对数据类型进行声明定义
typedef unsigned char u8;//对数据类型进行声明定义
unsigned int j;

unsigned char code tabel[37]=       //定义落幕灯数组
	{
		0XFE,0XFD,0XFB,0XF7,0XEF,
		0XDF,0XBF,0X7F,0X7E,0X7D,
		0X7B,0X77,0X6F,0X5F,0X3F,
		0X3E,0X3D,0X3B,0X37,0X2F,
		0X1F,0X1E,0X1D,0X1B,0X17,
		0X0F,0X0E,0X0D,0X0B,0X07,
		0X06,0X05,0X03,0X02,0X01,
		0X00
	};
	
void delay(u16 i)  //延时函数
{
	while(i--);
}

void main()    //主函数
{
	while(1)
	{
		for(j=0;j<37;j++)
		{
			P1=tabel[j];
			delay(50000);
		}
	}
}

这个程序的效果是像珠子一样逐渐下落,越积越多,灯8颗灯全亮起时重新开始。
还有下面这个,效果像是帷幕从两边打开然后再合上,代码如下:

#include<reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器
#define LED P1   //定义单片机P1端口

typedef unsigned int u16;//对数据类型进行声明定义
typedef unsigned char u8;//对数据类型进行声明定义
unsigned int z;

unsigned char code tabel[9]=      
	{
		0X7E,0X3C,0X18,0X00,0X18,0X3C,0X7E,0xFF
	};

void delay(u16 i)//延时函数
{
	while(i--);
}

void main()   //主函数
{
	while(1)   //循环
	{
		for(z=0;z<8;z++)
		{
			P1=tabel[z];
			delay(50000);
		}
	}
}
发布了6 篇原创文章 · 获赞 6 · 访问量 307

猜你喜欢

转载自blog.csdn.net/qq_45385706/article/details/104506112