51单片机入门(2)LED点亮的背后

这篇具有很好参考价值的文章主要介绍了51单片机入门(2)LED点亮的背后。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一节提到了51单片机开发环境的搭建,这节我们开始正式进入51单片机的学习——点亮LED。
所有的控制类芯片学习的第一个实践就是点亮LED,这是最简单、最基本的操作,但这个实现过程却可能攘括了单片机的整个工作流程,所以要想学好单片机,点灯实验是一定要掌握的。

  • 先简单介绍本文将用到的硬件及软件:
    硬件平台:普中51开发板-单核A2
    软件:Keil5(C51)、STC-ISP(或其他ISP软件)、Proteus8.9(用于仿真,非必须)

LED是什么

发光二极管,简称为LED,是一种常用的发光器件,它在照明领域应用广泛。 发光二极管可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。
这种电子元件早在1962年出现,早期只能发出低光度的红光,之后发展出其他单色光的版本,时至今日能发出的光已遍及可见光、红外线及紫外线,光度也提高到相当的光度。而用途也由初时作为指示灯、显示板等;
随着技术的不断进步,发光二极管已被广泛地应用于显示器和照明。——百度百科

说直接点LED就是一种灯,需要接上一定的电压(正极+负极)即可点亮。

下图是LED的电路图形符号,左边是正极,右边是负极。

51单片机入门(2)LED点亮的背后

我之前写过一篇文章详细介绍LED,感兴趣的可以看看,传送门:🚀(点我)

51单片机点灯的原理

  • 如果不使用单片机,而是直接用5V(51单片机的IO高电平为5V)电源点亮LED,那么我们可以直接在LED两端接上电源和地(见下图)。
    由于LED存在额定电流(大约在10mA左右,电流太大会烧坏LED),所以我们要串联一个电阻(470欧姆即可)。

51单片机入门(2)LED点亮的背后

  • 如果用51单片机点亮LED,我们可以选择用单片机IO端连接LED的负极或正极,如果接LED的负极(如下图),那么IO端默认电平需要设置为高电平(即默认灯灭),LED另一个引脚需要接VCC(5V),下图中R5(10k电阻)作用是上拉(保证在不稳定情况下IO端为高电平),当需要点亮LED时,将51单片机对应的IO(如下图的P2.0)拉低即可。
    如果IO端接LED正极,那么单片机IO端默认电平需要设置为低电平,上拉电阻需要改成下拉(接地),LED的另一端(负极)接GND,点亮LED时,需要将单片机对应IO拉高。

51单片机入门(2)LED点亮的背后

实验代码

在写代码前,我们需要先创建一个Keil工程,创建工程的步骤已经在上一节讲述,传送门:🚀(点我)。这里就不进行赘述。

点灯的代码如下:

#include <reg52.h>   //此文件中定义了单片机的一些特殊功能寄存器

sbit led_out = P2^0; //将单片机的P2.0端口定义为led_out

/******************************************************************************
 * @ 函数名  : main
 * @ 功  能  : 主函数
 * @ 参  数  : 无
 * @ 返回值  : 无
 ******************************************************************************/
 
void main()
{
	led_out = 0; //P2.0端口设置为低电平(点亮LED)
	while(1)
	{
						
	}		
}
  • reg52.h:<reg52.h>表示你调用了52或者51单片机的资源,也就是可以直接对单片机的相关寄存器与引脚进行操作,里面涉及和很多内容,这里只要知道它是一个必须加的一个头文件即可。
  • sbit led_out = P2^0;sbit是定义特殊功能寄存器的位变量(bitsbit都是C51扩展的变量类型,即C51特有的,而不是C语言标准变量类型),这里我们只需要把sbit当成一个类型即可,就像char、int,只不过char指的是一个字节,而sbit指的是字节里的一个位。
    上面还提到特殊功能寄存器(SFR),SFR是80C51单片机中各功能部件对应的寄存器,用于存放相应功能部件的控制命令,状态或数据,SFR(sfr)也是一种扩充数据类型,占用一个内存单元(1字节)。上面式子中的P2就是一个SFR,在reg52.h中(见下图),定义了P2寄存器的地址,如果我们对P2进行赋值,就等同于对51单片机的特殊功能寄存器赋值,而P2对应的功能就是单片机P2.0~P2.7这8个IO引脚的状态(高低电平)。
    知道了sbitP2的含义,那么理解sbit led_out = P2^0;就不难了,即定义P2.0引脚的状态为led_outP2^0也是C51的特有用法。
    ^在C语言中是按位异或的作用,但在C51中它多了一个作用,即可以指定寄存器的某一位,前面提到P2是一个1字节的变量,它有8个位,分别对应P2.0~2.7,如果直接对P2赋值,那就等同于同时控制单片机的8个IO端口状态,但是使用P2^x(0<=x<=7),就能单独控制单片机的某一个IO端口。

51单片机入门(2)LED点亮的背后

  • led_out = 0;:从上面的内容我们可以得知led_out代表了单片机端口P2.0的状态,所以我们对它赋值,就等同于控制P2.0这个IO的电平状态,通过查看开发板的原理图(如下图),我们发现如果将P2.0端口置为低电平,那么LED1的正负极就能形成压差,从而实现点亮LED。

51单片机入门(2)LED点亮的背后

  • while(1){}:这是一个死循环,由于单片机上电后要不停的工作,所以我们不能让main函数结束,而是让它不停地执行while函数内部的工作(本实验while循环为空)。

编译+烧录

程序编写完成后,接下来的操作就是编译+烧录了,这些步骤已经在本系列第一篇文章中讲述,传送门:🚀(点我)。不过这里还是会简单描述一下操作过程:

  • 点击编译按钮,如果怕出现意外,可以点第三个(重新编译),编译完成后Build Output窗口会显示编译结果,如果没有错误和警告,且生成了hex文件,说明编译成功。

51单片机入门(2)LED点亮的背后

  • 将刚才生成的hex文件烧录到单片机中,即可看到LED被点亮了。

51单片机入门(2)LED点亮的背后

实验效果

  • 实际效果:可以看到右边的LED1被点亮。(不知道是不是开发板坏了,亮了一个数码管)

51单片机入门(2)LED点亮的背后

  • 仿真效果:与P2.0连接的LED被点亮。
    【Proteus软件的安装和使用可以参考我的另一篇博客(带安装包下载链接),传送门:🚀(点我)

51单片机入门(2)LED点亮的背后


如果文章对你有帮助,请留下你的点赞吧👍,这是我继续更新的最大动力🚀。文章来源地址https://www.toymoban.com/news/detail-402872.html


到了这里,关于51单片机入门(2)LED点亮的背后的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】点亮LED灯(四种形式)

    💖作者简介:大家好,我是泽奀。全栈领域新星创作者🥇  📝个人主页:weixin_52632755的博客_泽奀_CSDN博客 🎉点赞➕评论➕收藏 == 养成习惯 😋 💬本系列哔哩哔哩江科大51单片机的视频为主以及自己的总结梳理📚  https://blog.csdn.net/weixin_52632755/category_11316267.html 介绍两个比

    2023年04月13日
    浏览(38)
  • 如何使用单片机点亮LED灯,并使用按键控制[51单片机]

    首先先看一下我的板子,如果我们板子不相同,可能操作也不太相同 我们就不讲底层原理了,直接看,我们可以看到板子上有 8个LED灯   那这个8个LED用什么来控制呢,我们先看底层的线路图,所有的LEDD都连接到了P2带后缀的接口上, 那么只需要操作这几个接口的高低电频,

    2024年02月05日
    浏览(42)
  • 51单片机——LED 点阵点亮一个点,小白详解

    LED点阵介绍:        LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等。         通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏,比如16*16点阵可以使用4个8*8点阵构成。因

    2024年02月09日
    浏览(42)
  • 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯,根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下: #include “reg52.h” sbit led1= P3^7; void main() { led1 = 0;//给led1一个低电平,点亮 } 结果图: 图中有一盏LED灯为我这个51单片机自带的电源接通灯,被代码点亮的只有一盏 实现2盏LED灯的交替闪烁

    2024年02月07日
    浏览(38)
  • 51单片机点亮LED的5中方法(由简单到困难)

    本文将介绍用各种不同的方法和算法点亮51单片机LED的程序,包括详细的注释和说明。 以上代码使用了P1口的第0位控制LED的亮灭。当LED=0时,输出低电平,LED亮;当LED=1时,输出高电平,LED灭。 以上代码使用了延时函数和定时器来控制LED的闪烁。在这段代码中,我们定义了一

    2024年02月09日
    浏览(35)
  • 51单片机 | LED点阵实验 | 点亮一个点 | 显示数字 | 显示图像

      开发板上使用了 64 个红色 LED 按照行列排布组成的 8*8 LED 点阵。下面介绍 LED 点阵的使用。    LED 点阵 是由发光二极管排列组成的显示器件,在我们日常生活的电器中随处可见,被广泛应用于汽车报站器,广告屏等。如下所示:   通常应用较多的是 8*8 点阵,然后使

    2023年04月08日
    浏览(38)
  • 一周学完C51单片机(1)点亮LED灯以及按键控制

    首先找到单片机的原理图,找到LED模块。我这里是P2口是连接了LED灯,通过此原理图我们可以看到 我们只需将单片机的IO口置为低电平,就可以点亮LED灯。 因为代码比较简单,我就分别展示一下代码,一颗LED灯的亮灭,流水灯 延时函数可以通过小工具来实现,选择好系统的频

    2024年02月08日
    浏览(44)
  • 【74HC595】51单片机(普中A2开发板)LED点阵屏点亮以及74HC595芯片的使用笔记

    纯小白写的文章,如有问题,欢迎评论区讨论,反驳,指正。 如果你只想了解74HC595如何使用,建议只看2.3。 通过查看普中A2开发板的原理图(图1)可以知道,通过P0(P0_0、P0_1…P0_7)口和DPa、DPb…DPh来控制哪一颗LED点亮。我这个开发板上的点阵模块没有按照他给的原理图上

    2024年02月05日
    浏览(75)
  • 51单片机定时器。实验(六):定时器实验:使用AT89S51单片机的定时器/计数器T1控制LED每隔3秒点亮一次(即亮3秒,灭3秒,如此反复)

    目录 题目: proteus仿真: 代码: 分析题目: 定时器: 工作方式寄存器TMOD设置: 控制寄存器TCON设置: 设定计数初值:  定时器四种工作方式: 实验过程讲解: 配置定时器:设置TMOD寄存器 设定定时器初值:THx和TLx(x=0,1) 设置IE寄存器: 启动定时器: 中断检测: 使用

    2023年04月20日
    浏览(50)
  • 51单片机 8*8LED点阵(入门教学)

    LED 点阵介绍 LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随 处可见,被广泛应用于汽车报站器,广告屏等。 通常应用较多的是 8*8 点阵,然后使用多个 8*8 点阵可组成不同分辨率的 LED 点阵显示屏,比如16*16 点阵可以使用 4 个 8*8 点阵构成。因此理解

    2024年02月02日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包