AT89C51 LED点亮程序

AT89C51 LED点亮程序

1、点亮一个灯 ,实现D1闪烁

#include<reg52.h>
//类型声明
typedef unsigned int u16;
typedef unsigned char u8;
//位定义
sbit led=P2^0;
//延时函数
void delay(u16 i)
{
   while(i--);
}
int main()
{
   while(1)
   {
     led=1;  //led为共阳接法  此时led不亮
     delay(50000);
     led=0;
     delay(50000);
   }
   return 0}

2、LED流水灯(总线法)

#include<reg52.h>
//宏定义
#define led P2
//延时函数
void delay(int i)
{
  while(i--);
}

int main()
{
	 int t,i;
	 t=10000;
   while(1)
	 {
	        //循环左移
		   for(i=0;i<8;i++)
			 {
						led=~(0x01<<i);
						delay(t);
			 }
			 //循环右移
			 for(i=0;i<8;i++)
			 {
						led=~(0x80>>i);
						delay(t);
			 }
		}
		 return 0;
}

3、LED流水灯(函数法)

#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;

#define led P0

void delay(u16 i)
{
  while(i--);
}

void main()
{
	 u8 i;
	 led=0x01;
   while(1)
	 {
	    for(i=0;i<7;i++)
		   {
			   led=_crol_(led,1);
				 delay(5000);
			 }
			  for(i=0;i<7;i++)
		   {
			   led=_cror_(led,1);
				 delay(5000);
			 }
	 }
}

4、LED混合操作

#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;

#define led P0

void delay(u16 i)
{
  while(i--);
}

void main()
{
	 u8 i;
   while(1)
	 {
	   //流水灯
			led=~(0x01);
	    for(i=0;i<7;i++)
		   {
			   led=_crol_(led,1);
				 delay(10000);
			 }
			 
			 led=(0x01);
			  for(i=0;i<7;i++)
		   {
			   led=_cror_(led,1);
				 delay(10000);
			 }
			 
			 led=(0x01);
	     for(i=0;i<7;i++)
		   {
			   led=_crol_(led,1);
				 delay(10000);
			 }
			 
			 led=~(0x01);
			  for(i=0;i<7;i++)
		   {
			   led=_cror_(led,1);
				 delay(10000);
			 }
	    //闪烁
			 led=0x55;
			 delay(30000);
			 led=~led;
			 delay(30000);
			 
			 led=0x55;
			 delay(30000);
			 led=~led;
			 delay(30000);
			 
			 led=0x00;
			 delay(30000);
			 led=~led;
			 delay(30000);
			 
			 led=0x00;
			 delay(30000);
			 led=~led;
			 delay(30000);
			 
	 }
}

猜你喜欢

转载自blog.csdn.net/wang2395/article/details/107415370