51单片机入门之点亮一个LED

点亮一个LED灯


准备

1.一个51开发板
2.安装Keil软件

LED

贴片发光二极管正向导通电压通常是在 1.8V
到 2.2V 之间,工作电流一般在 1mA~20mA 之间

原理图
在这里插入图片描述
在电路设计时发光二极管自身压降大概为 2V,当接入的 VCC 电压是 5V,则R43承受的电压就是3V,同时电流范围在1mA~20mA 之间,由欧姆定律我们可以求出:
U=3V, I=1mA, R=3KΩ; I=20mA,R=150Ω。所以R34的取值范围在150~3k之间。阻值大小的变化,可以直接控制整条通路的电流的变化,因此这个电阻我们通常称之为“限流电阻”。

LED的亮灭:电源从正极到负极有电压差,且电路是导通的,所以会有电流通过,LED小灯发光。所以我们通过让 P0.0 这个引脚输出一个高电平或一个低电平来控制小灯的亮灭。
当P0.0 这个引脚输出一个高电平(5V),这个时候,VCC的 电压和右侧的 P0.0 的电压是一致的,没有电压差,没有电压差也就不会产生电流,没有电流 LED 小灯处于熄灭状态;
当单片机输出一个低电平(0V),这时候产生了电压差,有电流通过,LED小灯发光。

接下来我们就用编程来实现控制小灯的亮和灭。


程序

1.特殊语句(51单片机独有的编程语句)

sfr P0 = 0x80; 即定义一个单片机特殊功能寄存器
#keli软件已经预先写好只要文件开头添加一行#include<reg52.h>即可

sbit LED = P0^0; 即对SFR里边的 8 个开关中的其中一个进行定义。
经过定义后 LED就等于P0.0

2.源代码

#include <reg52.h> //包含特殊功能寄存器定义的头文件

sbit LED = P0^0; //位地址声明

void main() //本程序没有返回值,用 void 表示
{ 
 LED = 0;
 while(1);  //执行程序一次,后停留下来等待
}

如果设计电路板的电路图和原理图一样的话,可以成功点亮小灯。但在我们的开发板上还有一个总开关, P0.0 是1个LED的开关,而我们现在的程序并没有打开这个总开关。

#include <reg52.h> 

sbit LED = P0^0;
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
 ENLED = 0;
 ADDR3 = 1;
 ADDR2 = 1;
 ADDR1 = 1;
 ADDR0 = 0;
 LED = 0; //点亮小灯
 while (1);
 }

3.接下来进行程序的编译编译好后我们再将程序下载至我们的开发板上
如图
在这里插入图片描述
实物图
在这里插入图片描述
August 2,2020


-END

猜你喜欢

转载自blog.csdn.net/weixin_45840339/article/details/107742783