0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机如何点亮LED灯

CHANBAEK 来源: Zi Jin Code 作者: 锟酱不是酱 2023-11-01 11:36 次阅读

学习单片机

从点亮第一颗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){}
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43977

    浏览量

    620862
  • led灯
    +关注

    关注

    22

    文章

    1554

    浏览量

    107032
  • 寄存器
    +关注

    关注

    30

    文章

    5031

    浏览量

    117741
  • 电路设计
    +关注

    关注

    6565

    文章

    2317

    浏览量

    195445
收藏 人收藏

    评论

    相关推荐

    STC15单片机为什么点亮LED的时候,点阵也要亮?

    STC15单片机为什么点亮LED的时候,点阵也要亮?
    发表于 12-21 11:22

    如何去完成一种基于51单片机点亮led的实验?

    如何去完成一种基于51单片机点亮led的实验?怎样去编写实验代码?
    发表于 07-14 07:26

    51单片机点亮led实验

    keil + protues 51单片机点亮led实验环境:keil4 + proteus 8proteus操作:1.新建工程,名字随意。工程已经搞好。2.搞个芯片进来,爽一波。添加
    发表于 07-15 08:38

    51单片机点亮led程序

    51单片机点亮led程序——点亮LED1、对照开
    发表于 07-21 08:11

    如何去实现一种基于STC89C52单片机点亮LED的设计

    如何去实现一种基于STC89C52单片机点亮LED的设计?有哪些操作步骤?
    发表于 09-23 06:28

    如何去实现一种基于51单片机点亮led的设计

    如何去实现一种基于51单片机点亮led的设计?如何对基于51单片机led
    发表于 09-28 08:20

    请问单片机点亮LED程序中为什么LED=0为亮,LED=1为灭?

    请问单片机点亮LED程序中为什么LED=0为亮,LED=1为灭?
    发表于 10-08 06:06

    如何利用51单片机点亮LED

    如何利用51单片机点亮LED
    发表于 10-09 06:18

    C51单片机如何点亮LED

    C51单片机如何点亮LED
    发表于 10-15 06:00

    如何利用TM4C123G单片机点亮LED

    如何利用TM4C123G单片机点亮LED
    发表于 10-20 07:24

    如何去实现基于一种51单片机点亮LED的程序

    如何去实现基于一种51单片机点亮LED的程序?
    发表于 10-20 08:05

    金沙滩开发板单片机如何点亮led

    金沙滩开发板单片机如何点亮led
    发表于 10-26 07:16

    如何利用51单片机点亮LED

    如何利用51单片机点亮LED
    发表于 10-28 06:47

    如何利用51单片机点亮LED实现跑马灯效果?

    如何利用51单片机点亮LED实现跑马灯效果?
    发表于 11-08 06:19

    如何使用合泰HT32F52352单片机点亮LED

    如何使用合泰HT32F52352单片机点亮LED
    发表于 01-27 07:29