初探C51单片机LED

   日期:2021-02-03     浏览:109    评论:0    
核心提示:初探C51单片机LED本人在自学网上51单片机,仅此作为自己的笔记,供日后参考,欢迎大佬指正。点亮第一个LED在编写程序之前,应先了解单片机中LED的工作原理。如图LED即发光二极管,所以电流应在此图中有右向左流动,所以只需要在VCC端提供高电平,另一端提供低电平即可。假如希望点亮D8灯,则只需要在P27端提供低电平即可。如下代码即可点亮D8灯。#include "reg52.h"sbit led=P2^7;void main(){ while(1) { led=0;

初探C51单片机LED

本人在网上自学51单片机,仅此作为自己的笔记,供日后参考,欢迎大佬指正。

点亮第一个LED

在编写程序之前,应先了解单片机中LED的工作原理。如图

LED即发光二极管,所以电流应在此图中有右向左流动,所以只需要在VCC端提供高电平,另一端提供低电平即可。假如希望点亮D8灯,则只需要在P27端提供低电平即可。如下代码即可点亮D8灯。

#include "reg52.h"

sbit led=P2^7;

void main()
{ 
	while(1)
	 { 
	 	 led=0;
	 }

}

在此代码中sbit led=P2^7;表示在以后的语句中用led即可代表P27端,注意此处P为大写。其中,0代表低电平,1代表高电平。即可如图点亮

LED闪烁实验

用延时函数即可达到LED闪烁的目的。即就是说一段时间为P21端口输入低电平,此时灯亮。一段时间为P21端口输入高电平,此时灯灭。代码如下:

#include "reg52.h"

typedef unsigned char u8;
typedef unsigned int u16;

sbit led=P2^1;

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

void main()
{ 
   
   while(1)
   { 
	   led=1;
	   delay(50000);
	   led=0;
	   delay(50000);
	}
}

typedef unsigned int u16;这一句代表在后续程序中可以直接用u16代表unsigned int,而u16 是无符号整形的数 。

void delay(u16 i)代表自己写的一个延时函数 为了延时当 i = 1 是延时 10us 。

在while后的{}中即为上文所提到的思路,利用延时函数对LED进行闪烁。

LED流水灯实验

此实验的思路是运用循环左移右移函数对接在P2口上的LED依次闪烁

#include "reg52.h"
#include "intrins.h"

typedef unsigned char u8;
typedef unsigned int u16;

#define led P2

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

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

#define led P2宏定义,因为LED都接在P2口上。

led=0xfe;其中0xfe从16进制转化为2进制为1111 1110.

_crol_这是左移函数后面的小括号中led是左移的值,2是左移的位数。也就是说将我的这个代码烧录到单片机中即可实现每次隔一个灯闪烁。
下面视频即为单片机LED的闪烁实验和流水灯实验。

C51单片机LED小实验

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服