51单片机编程4-LED实验

1.我所用的51单片机的LED模块的原理图
在这里插入图片描述
说明:由于共阳极的接法,所以若P20=0的话相应的led就会被点亮。
2.代码
学过c语言的一看就懂
(1)点亮第一个LED

#include "reg52.h"    //类似与你学过的Java的import,与c++的就是一样的
sbit led=P2^0;	   //将单片机的P2.0端口定义为led
void main()
{
	while(1)
	{
		led=0;	//P2.0端口设置为低电平
	}		
}

(2)LED闪烁

#include "reg52.h"			
typedef unsigned int u16;	  //对数据类型进行声明定义
sbit led=P2^0;		

void delay(u16 i)//延迟函数,i最大为65535=2^16-1
{
	while(i--);	//循环来达到延时
}
void main()//主函数通过对寄存的不同赋值达到闪烁
{
	while(1)
	{
		led=0;
		delay(50000); //大约延时450ms
		led=1;
		delay(50000); //大约延时450ms	
	}		
}

(2)LED流水灯
预处理命令:

      #define 名字 单片机端口
例如:'#define PI 3.1415926 `

循环左移右移函数:instrins.h函数库中

_crol_(左移的值,左移的位数);
_cror_(右移的值,右移的位数)
/**************************************************************************************
*		              LED流水灯实验												  *
实验目标:下载程序后LED呈现流水灯效果进行左移右移滚动 																			  
***************************************************************************************/

#include "reg52.h"			 
#include<intrins.h>		 

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

#define led P2	   //使用led代替P2口
void delay(u16 i)
{
	while(i--);	
}

 
void main()
{
	u8 i;
	led=0xfe;//1111 1110
	delay(50000);  	
	while(1)
	{	
 	
		for(i=0;i<7;i++)	 //将led左移一位
		{
			led=_crol_(led,1);
			delay(50000);  	
		}
		for(i=0;i<7;i++)	//将led右移一位
		{
			led=_cror_(led,1);
			delay(50000);  
		}	
	}		
}

猜你喜欢

转载自blog.csdn.net/jackson_hao/article/details/85701506