C51单片机LED灯的控制

点亮流水灯共有三种方式https://blog.csdn.net/qq_41379312/article/details/78835394

1、一盏一盏的操作:即先令第一盏灯亮,延时,再令它熄灭,延时,再让下一盏灯重复操作即可;(略)

2、利用数组方法点亮:先定义一个数组,其中存入相应8盏灯亮的数字(即0xfe,0xfd,0xfb,0xf7,0xef,oxdf,0xbf,0x7f:依次代表只有第一盏灯,第二盏灯....亮),再利总线,按顺序点亮八盏灯;(后面对数码管的控制将用类似的方法)


3、利用移位方法点亮(这种方法,程序看起来简单些,但实质上还是一个一个的控制)。下面是位移方法的程序

共阳,P2端控制。

下面的代码是两种灯得控制:

#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;

void delay(uint num)
{
	uint x=110;
	for(num;num>0;num--)
		for(x;x>0;x--);	
}

void LED1()//LED共阳接法,接在P2端,流水灯
{
	uint  i;
	uchar led;
	led=0xfe; 
	for(i=1;i<=8;i++)
	{
		P2=led;
	    delay(10000);
		led<<=1;
	}
}

void LED2()//LED共阳接法,接在P2端,灯间隔亮
{
	uint  i;
	uchar led;
	led=0xff;
	led=0x01;
	for(i=1;i<=8;i++)
	{
		P2=~led;
	    delay(5000);
		led<<=1;
	}
}

void main()
{
	//LED1();
	LED2();
}

猜你喜欢

转载自blog.csdn.net/sinat_38816924/article/details/80114938