单片机如何点亮LED灯

描述

学习单片机

从点亮第一颗LED灯开始

这一节学堂,我们来学习如何点亮一LED灯

首先是威廉希尔官方网站 设计以及点亮这颗LED的方法

我们把LED灯接在P1.0上,使用的是上拉接法,如图:

单片机

现在LED接好了,那么要怎样点亮LED呢?

观察我们的威廉希尔官方网站 ,这个威廉希尔官方网站 里面LED的负极接在P1.0上,我们给P1.0写低电平的时候P1.0相当于一个负极,电流从LED正极流过,负极流出,LED导通,LED就点亮了

当我们给P1.0写高电平的时候,相当于LED两级都接上了正极,这时候LED不导通,所以LED就不能被点亮

这里可能有朋友会问,为何使用上拉接法,直接把LED的正极接在P1.0上,给P1.0写高电平LED导通就点亮,不好吗?

理论上这样威廉希尔官方网站 设计和操作更加简便,但是由于C51的IO能提供的高电平电流很弱,如果把LED直接接在IO上,IO写高电平时提供的电流不足以点亮LED灯或者点亮的LED灯亮度很低

因此我们使用上拉接法,这样流过LED的电流就会更大,LED也就更亮

知道点亮LED就是给P1.0写高电平,那么要怎样才能操作P1.0呢?

这里我们就要操作C51的IO咯

在C51中,一共有四组IO:P0 P1 P2 P3

单片机

每一组IO有八只IO,一组IO在单片机内对应一个8位的寄存器,修改这个寄存器的值(0/1)单片机就能输出0/1了

在reg52.h里面,已经对这几组IO的寄存器地址进行了定义,我们要用的时候,可以直接使用关键字:P0,P1,P2,P3

我们可以对整组IO进行修改,只需要给他赋上一个八位十六进制数值即可

P1 = 0xFF;

也可以用sbit对一组IO中的一个IO定义一个名字,直接改变这个IO的0/1

比如说我们的LED接在P1.0,那么我给P1.0的IO定义一个叫LED的关键字

sbit LED = P1^0;

注意这里的格式

sbit 名称 = IO组^IO标号;

P1.0对应的IO组是P1,P1上的.0,所以我们写作“P1^0”

一切准备就绪,上代码

下面是整个程序的代码

#include< reg52.h >


sbit LED = P1^0;


void mian()
{
  LED = 1;//复位LED状态,保证刚开始时候LED熄灭

  LED = 0;//拉低LED的负极引脚,点亮我们的LED
  while(1){}//执行到这里,结束
}

上传程序,你会发现,LED点亮了!!

我们也可以对整个P1IO组进行操作,

熄灭LED灯的时候,我们给P1所有的IO都写上1,对应0xFF

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0

熄灭LED灯的时候,我们给P1.0单独写上0,对应0xFE

P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0
#include< reg52.h >


void mian()
{
  P1 = 0xFF;//复位LED状态,保证刚开始时候LED熄灭
  P1 = 0xFE;//拉低LED的负极引脚,点亮我们的LED
  while(1){}
}
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分