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

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

3天内不再提示

基于51单片机点亮一个LED灯(一)

CHANBAEK 来源:无限琢磨 作者: 工具人 2023-11-01 11:44 次阅读

不论学习什么单片机,最简单的外设莫过于IO口的高低电平控制。而对于一个IO口的高低电平控制入门阶段将是从点亮一个LED开始的。

本章将介绍在如何创建号的工程模板上,通过控制51单片机的GPIO口,点亮一个LED灯。

发光二极管

发光二极管(Light EmittingDiode)简称LED,是一种会发光的半导体组件且具备二极管的电子特性,具有正向导通的特性

发光二极管的参数

正向导通电压:

发光二极管通常的正向导通电压是1.8V到2.2V之间

工作电流

工作电流一般在1mA~20mA之间

其中,当电流在1mA ~ 5mA之间变化时,随之通过LED的电流越来 越大,肉眼可以感觉到这个小灯越来越亮,而当电流从5mA~20mA之间变化时,肉眼看到发光二极管的亮度变化不是很明显。当电流超过20mA时,LED就会有烧坏的危险。通常在led管脚上串联一个电阻,目的是为了限制通过LED的电流不要太大,起到了限流的作用。

如何识别原理图

拿到一块开发板的同时,我们还需要查阅它的原理图,读懂它的电路连接方式。

如下图:

图片

从上图可以看出,图中的P5.5表示两处是连接在一起的。表示连接在单片机的第19引脚,对应为STC15W的5.5串口。

在例如图中的LED流水灯,LED控制管脚连接在单片机的IO口上。LED采用共阳接法,及所有的LED阳极(既正极,阴极为负极)管脚接在电源VCC,同时LED还串联着一个电阻接到单片机的P2口上。根据电路常识,要LED发光,既对应的单片机IO口需要的电平为低电平。反之,高电平则熄灭。

图片其他也是在原理图上的都可以以此类推。

软件设计

对单片机原理图有所理解之后,接下来就是对单片机进行程序的编写以及烧录。

问题一:如何点亮LED。

图片

第一次要实现的功能就是点亮D1位置的LED,如图所示,D1位置的发光二极管连接在单片机的P2.0 IO口,即让P2.0输出低电平

图片

图片

#include< reg51.h >//引入包51单片机的一个头文件sbit LED_D1=P2^0;// 将单片机的P2.0IO口定义为LED_D1intmain(){while(1) { LED_D1=0;// “0”即为低电平,“1”即为高电平,} }

当编译器编译成功没有报错的时候,在软件界面下方会显示以上的编译结果信息,表示没有任何问题。

当代码编写没有任何问题的时候,接下里就需要对单片机进行烧录。

首先,在状态栏点击魔术棒-->Output-->打勾“Create HEX File”-->生成目标文件 ”.hex“ 文件。

在程序目录下可以查看目标文件——“.hex”文件。

图片

也可以通过点击下图所示位置,更改文件位置或者查看文件目录。

图片

打开烧录软件

第一步:选择对应的单片机芯片

第二部:查看COM口(也就是单片机连接电脑,所查的USB口)

第三步:打开程序文件,也就是刚刚上一步所生成的目标文件——.hex文件。

第四步:在下图“4”位置会显示经过解码的程序文件。

第五步:点击“下载/编程”按钮

第六步:在下图,位置“6”会显示操作成功的文字。既烧录成功。

注意:在每一次烧录时,应该对单片机进行一次断电上电,该步骤称为单片机的冷启动,才能继续烧录程序。

图片

此时单片机上的LED灯为发光。

图片

问题二:如果要点亮所有的LED,需要怎么做呢?

图片

源码复制

#include< reg51.h >//引入包51单片机的一个头文件sbit LED_D1=P2^0;// 将单片机的P2.0IO口定义为LED_D1sbit LED_D2=P2^1;// 将单片机的P2.0IO口定义为LED_D2sbit LED_D3=P2^2;// 将单片机的P2.0IO口定义为LED_D3sbit LED_D4=P2^3;// 将单片机的P2.0IO口定义为LED_D4sbit LED_D5=P2^4;// 将单片机的P2.0IO口定义为LED_D5sbit LED_D6=P2^5;// 将单片机的P2.0IO口定义为LED_D6sbit LED_D7=P2^6;// 将单片机的P2.0IO口定义为LED_D7sbit LED_D8=P2^7;// 将单片机的P2.0IO口定义为LED_D8、intmain(){while(1) { LED_D1=0;// “0”即为低电平,“1”即为高电平,LED_D2=0; LED_D3=0; LED_D4=0; LED_D5=0; LED_D6=0; LED_D7=0; LED_D8=0; } }

进行同样的烧录下载后,效果如下

图片

手机调整曝光度后的效果。

问题三:如何简化程序。

显然这种写法会显得很累赘,假如有100个LED灯,那么不就是需要写100次的“sbit LED_D1=P2^0”,显然是不可能的。这种叫位操作。在某一些方面这一写法很方便,但是在如上面的情况就显得很麻烦。

图片

源码复制

#include< reg51.h >intmain(){while(1) { P2=0;//或者P2=0X00 }}

其中“P2”就等同于

图片

而“P2=0;”则等同于

图片

或者可以将程序中的“P2=0;”写成“P2=0x00;”,“0x”表示的是16进制,转成二进制则为“0000 0000”,现在的手机计算机都可以实现进制的转换。

那如果用以上的写法,单独的控制某一个LED的亮灭需要怎么做呢?则需要我们需要点亮(熄灭)的LED,在对位的位置置“0”(“1”)。

例如:我们要D4LED熄灭,采用以上写法,则值需要在D4 LED置“1”即可,转换成十六进制则为“0x10”。

图片

注意:进制的转换,应从最低位开始算起。

程序编写以及烧录结果

图片

源码复制

#include< reg51.h >intmain(){while(1) { P2=0x08; } }

图片

其他的以此类推。

问题四:如何让LED闪烁起来。

程序编写以及烧录结果。

图片

源码复制

#include< reg51.h >//引入包51单片机的一个头文件sbit LED_D1=P2^0;intmain(){inti;while(1) { i=10000; LED_D1=0;while(i--); LED_D1=1;while(i--); } }
LED_D1=0;while(i--);//两句代码的含义为 LED_D1保持低电平一段时间,该时间为while(i--);
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6017

    文章

    44269

    浏览量

    626932
  • led灯
    +关注

    关注

    22

    文章

    1573

    浏览量

    107302
  • 发光二极管
    +关注

    关注

    13

    文章

    1172

    浏览量

    65937
  • 51单片机
    +关注

    关注

    271

    文章

    5685

    浏览量

    121847
  • GPIO
    +关注

    关注

    16

    文章

    1164

    浏览量

    51408
收藏 人收藏

    评论

    相关推荐

    如何入门51单片机?如何利用51单片机点亮一个led

    如何入门 51 单片机?如何利用 51 单片机 点亮一个 led
    发表于10-20 07:28

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

    STM32 单片机51 单片机一个更好用呢?如何去实现 种基于 51
    发表于11-02 06:52

    51单片机点亮LED

    当我们学过 51 单片机之后就知道在 51 单片机点亮
    发表于12-07 06:39

    如何利用51单片机点亮LED

    如何利用 51 单片机 点亮 LED
    发表于01-24 07:27

    使用51单片机点亮LED的程序免费下载

    本文档的主要内容详细介绍的是使用 51 单片机 点亮 LED的程序免费下载。
    发表于08-28 17:29 30次下载
    使用<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>点亮</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>LED</b>的程序免费下载

    如何使用单片机点亮LED

    我们学 单片机,第 一个程序就是 点亮 LED ,那么我 单片机
    发表于07-16 17:39 4次下载
    如何使用<b class='flag-5'>单片机</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    51单片机——LED点亮

    点亮 LED原理 单片机 点亮 LED利用 LED阳极为正阴极为负才会导通
    发表于11-11 19:21 19次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>——<b class='flag-5'>LED</b><b class='flag-5'>灯</b>的<b class='flag-5'>点亮</b>

    51单片机如何跳出wile循环_51单片机闪烁LED

    闪烁 LED 51 单片机是较为简单的8位 单片机,意思是 次能处理8位2进制数据。这
    发表于11-23 10:06 21次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>如何跳出wile循环_<b class='flag-5'>51</b><b class='flag-5'>单片机</b>闪烁<b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    51单片机点亮

    本文只是为了记录本人大学学习 51 单片机些记录过程主要是纯干货接下来会出 系列的 单片机的教程本文教大家
    发表于11-23 16:20 9次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>点亮</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>灯</b>

    51单片机实验8:led点阵(2):点亮数字图案

    51 单片机实验8: led点阵(2): 点亮 数字图案
    发表于11-23 16:36 6次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>实验8:<b class='flag-5'>led</b>点阵(2):<b class='flag-5'>点亮</b><b class='flag-5'>一</b><b class='flag-5'>个</b>数字图案

    51单片机点亮LEDLED闪烁

    ) //循环 { }}使用 51 单片机 点亮 LED#include <
    发表于11-23 17:06 5次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b> <b class='flag-5'>点亮</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>LED</b> <b class='flag-5'>LED</b>闪烁

    51单片机——点亮LED

    51 单片机—— 点亮 LED 文章目录
    发表于11-23 18:06 16次下载
    <b class='flag-5'>51</b><b class='flag-5'>单片机</b>——<b class='flag-5'>点亮</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    基于89C51单片机的IO输出点亮1LED方法1源程序

    基于89C 51 单片机的IO输出- 点亮1 LED 方法1源程序
    发表于05-16 10:03 10次下载

    基于51单片机点亮LED

    入门 51 单片机步,就是学会 点亮 LED
    发表于07-11 11:38 1454次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    基于51单片机点亮LED(二)

    前面学习完怎么对 单片机 IO口的高低电平的控制,并且成功 点亮LED,接下来学习 下流水灯的
    的头像 发表于11-01 11:47 705次阅读
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>点亮</b><b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>(二)