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

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

💖作者简介:大家好,我是泽奀。全栈领域新星创作者🥇 

📝个人主页:weixin_52632755的博客_泽奀_CSDN博客

🎉点赞➕评论➕收藏 == 养成习惯😋

💬本系列哔哩哔哩江科大51单片机的视频为主以及自己的总结梳理📚 

https://blog.csdn.net/weixin_52632755/category_11316267.html

  • 介绍两个比较好用的软件 1、网易有道词典         2、福昕阅读器(PDF)
  • 网易有道词典对我这种英语渣渣来说就是福星了
  • 福昕阅读器我个人认为也是我比较喜欢去用的一款阅读器了。 

目录

🤗LED介绍 

🤔LED原理图

😎如何控制IO口输出高低电平 

🤨进制转换

🤩点亮一个LED代码

😮程序下载

😏LED灯闪烁 

😁LED流水灯

😃LED流水灯高阶操作


🤗LED介绍 

  • 中文名:发光二极管。
  • 英文名:Light Emitting Diode。
  • 简称:LED。
  • 应用:LED显示屏交通信号灯广告灯液晶屏背光源等。
  • 特点:节能是LED灯最突出的特点环保、跟其它的灯光源相比之下,LED灯会更加"干净"(干净不是指的是表面,而是这个LED灯它其实是属于一种冷光源)、响应速度快等。

【51单片机】点亮LED灯(四种形式) 二极管灯在电路图当中所表示的一个符号,在电路图当中左边正极右边负极

  • 在LED当中只有正极接入正极负极接入负极它才会有电流流通进去

【51单片机】点亮LED灯(四种形式) 这个是二极管实物里面的一些知识点

  • 51开发板用的是普通的贴片发光的二极管,这种二极管通常是正向导通电压1.8~2.2V。
  • 工作电流一般在1~20mA。其中,当电流在1~5mA变化的时候,随着通过LED的电流越大,人们的肉眼会明显的感觉到这个灯越来越亮,而当电流处于5~20mA变化时候,看到的发光二极管的亮度变化就不太明显了。当电流超过20mA时候,LED灯就会有烧坏的危险了。
  • 电流越大,烧坏的速度也就会变快。所以,在使用过程当中应该要特别区注意它的电流参数上面的设计要求,这很重要。

🤔LED原理图

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

  • 这里的VCC就是电源的正极,左边红色的字其实就是一个网络的一个标号也被称之为网络编号,这里的引脚低电平这个LED灯才是亮的。
  • 那我们可以看下正极出来之后,通过一个电阻(这个电阻其实是④个一体的),那么这上面说电阻是1kΩ的是怎么样看出来的,其实就是我们仔细看单片机开发板上的RP9和RP10上面都有个数字是102。那么其实原理图上写的102就是1000Ω,前面两位数是一个有效数字10,第三位数字就是倍率00其实102拆开来 = 10*10^2,那么473呢?也是一样473 = 47*10^3 = 47 000 = 47k,1001 = 1000 = 1k。这就是电阻的一个读数的方式包括电容啊以及其它的一些元器件其实一个这样的一个方式来的。
  • 那我们继续看到这个图纸经过这个电阻,这个电阻在这里的作用是起到一个限流的作用,从而这个电阻也被称作是:限流电阻。就比如说假设VCC = 5V,LED 直接 5V 的话,由于电流过大会把这个LED灯给烧毁。所以在这里的串联电阻就很好的起到了一个限流的作用。而到达LED已经接入到正极了,那么LED负极在接入的话。此时LED灯就将会点亮了,高低电平的一个应用。高电平就是5V,低电平就是0V,单片机把这种电平叫做TTL电平。P2口决定了你的高低电平,也就是CPU通过配置这些控制的寄存器来控制我们的硬件电路来执行我们想要去完成的一个功能!

😎如何控制IO口输出高低电平 

首先要有一个单片机是MCU那么单片机里面就有一个CPU(代码都是在这里面执行的),我们外部都是有引脚都是P2口的引脚。那么CPU是怎么样控制引脚的呢?那么就要说说寄存器里面其实就是存储器以八个为一组的,就比如说是单片机里面就有一个寄存器它是P2口的寄存器,那么它就有八位每一位背后都有一根导线在通过驱动器增大它的电流,然后在连到我们这个IO口的端口上后面其实也都是一样的。这种东西就叫做是驱动器。那么我们的CPU可以通过我们的这个软件直接访问我们的这个寄存器:假设我们给它写①那么我们这个就可以通驱动器就可以给我们的IO口置高电平,那么如果是写零的话那么我们的IO口就是低电平0,同理。给高低电平是不是就是给P2口当中转换的寄存器,我们的硬件电路都是这个样子的。

  • 一句话就是说:CPU通过配置这些控制的寄存器来控制我们的硬件电路,硬件电路来执行我们想要去完成的功能

🤨进制转换

那么如果我们要让第一个LED灯点亮,其余的全是灭的话该怎么办。很简单给第一个LED灯低电平0,其余的LED都给上一个高电平1。这样你的LED灯就可以实现点亮第一个了。

P2 = 1111 1110 这种写法是❌(因为它会默认你是十进制) ,           P2 = 0xFE 这样才是✔。

所以这里就会遇到一个问题进制的转换,只是需要把二进制转换成十六进制就可以了      。 

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

如果还不了解的话,可以看看原码,补码和反码 - wqbin - 博客园 这篇博客😉 

🤩点亮一个LED代码

#include <REGX52.H>
int main(void)
{
	P2=0xFE;	//1111 1110
	while(1)
	{
		
	}
}
  1. 双斜杠:其实就是把后面的内容给注释掉,编译器是不会看的是留给我们编程序的人来看的,这个就是单行注释。/* 注释内容 */这个是多行注释。
  2. P2 = 0xFE,P2当中的0x:是一个前缀,代表后面的是十六进制数。
  3. FE就是十六进制我们把 1111 1110 转换成十六进制。
  4. #include <REGX52.H>这个是我们单片机的头文件,在上面代码中如果没有这个头文件的话,我们的程序就无法去识别P2口了。
  5. while循环在这里的作用是:其实就是一直绕着这个圈跑来跑去,这样就不用一直从main主函数那里走来走去了。表达式的值为真(1)它就会一直去执行里面是一个逻辑表达式的值也就是判断条件和表达式的值为真还是为假,非0即使真。
  6. 那么就是程序下载到STC系列的单片机下载软件上去就可以了。

那么如果我们想要控制LED灯 亮灭亮灭 亮灭亮灭 怎么办呢?其实很容易。

P2 = 0x55;// 0101 0101        其它保持不变这样就可以了😁 

😮程序下载

  1. 选择单片机的型号,现在用的单片机的型号是 STC89C52RC,注意:不要选错了。
  2. 单击"打开程序文件",打开建立工程的那个文件夹,找到xxx.hex文件,单击打开。
  3. 选择刚才查到的COM入口,波特率使用默认就可以了。
  4. 这里的所有选项都选择默认设置,不要随意更改,有的选项错误可能会导致麻烦。
  5. 因为STC单片机要冷启动下载的,就是我们先点击下载,然后你再给你的单片机上电,所以先要关闭板子的电源开关,然后再单击Download按钮,等待软件提示你上点后,再按下板子的电源开关,就可以下载到单片机里了。

😏LED灯闪烁 

介绍:点亮LED小灯的程序就是让LED = 0(低电平)。熄灭小灯的程序也是非常容易的,就是LED = 1(高电平)。这样点亮和熄灭都会了,那么如果在亮和灭之间加个延迟呢,反复不停的点亮和熄灭小灯,那么就可以实现这个LED灯闪烁了。

这里解答大家可能会有的疑问:

  1. LED灯为什么是低电平亮:LED具有单向导电性,当 LED 的正端接了高电位,负端连接了低电位,且正负端电位差超过1.8V以上时,LED就会亮起来。
  2. 为什么LED灯闪烁要加延迟:因为在单片机当中每次都是以MHZ(也就是运行上百万次),所以它们就会执行的特别快。那么就会闪烁的特别快,以我们人类的肉眼是根本看不出来的,所以需要延迟函数。
  3. 怎么样才能反复不停的亮和灭:这个很容易加上while循环,循环的表达式的值为真"1"
  4. 延迟函数的程序:点击软件生成延时器(在STC-ISP中)它可以生成代码来帮助我们,延时函数当中的系统频率也就是晶振要注意一下,我的是12MHZ的。还有8051的指令集也要改一下:SCY-Y1。这个时候我们只需要复制代码、生成代码、即可生成函数。然后在主函数前面右键点击Paste(ctrl+v)粘贴就可以了。
  5. 这里说下我们提到的晶振:晶振又被称之为晶体震荡器,从这个名字就可以看出来,它注定一声都要不停的振荡它起到的作用是:单片机当中的系统提供的一个基准信号,类似于部队的训练时候喊口号的人,单片机的内部所有的系统都是以这个时钟型号为基准的来进行着工作。实际作用:利用一种能将电能和机械能相互转换的晶体,在公振的状态下工作可以提供一个稳定精确的单频震荡。

#include <REGX52.H>
#include <INTRINS.H>    //_nop_();需要的头文件
void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
int main(void)
{
	while(1)
	{
		P2=0xFE;		//1111 1110
		Delay500ms();	//调用函数
		P2=0xFF;		//1111 1111
		Delay500ms();	//调用函数
	}
}

😁LED流水灯

前面学习了点亮一个LED灯又学了LED小灯闪烁,现在我们就可以进一步的去学习让LED灯依次一个接上一个的开始亮起来,也就是我们常常说的流水灯的实现了。 

通过下面的这个程序我们不难看出来,可以通过P2来控制所有的8个LED灯的亮灭状态。从下面的程序当中我们可以看出依次给P2赋值的是:0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F

#include <REGX52.H>
#include <INTRINS.H>
void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;
	_nop_();
	i = 4;
	j = 205;
	k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}
int main(void)
{
	while(1)
	{
		P2=0xFE;//1111 1110
		Delay500ms();
		P2=0xFD;//1111 1101
		Delay500ms();
		P2=0xFB;//1111 1011
		Delay500ms();
		P2=0xF7;//1111 0111
		Delay500ms();
		P2=0xEF;//1110 1111
		Delay500ms();
		P2=0xDF;//1101 1111
		Delay500ms();
		P2=0xBF;//1011 1111
		Delay500ms();
		P2=0x7F;//0111 1111
		Delay500ms();
	}
}

😃LED流水灯高阶操作

为什么说这个是高阶操作呢?是因为这个程序我们想让流水灯延迟多少行秒就可以延迟多少行秒,注意这个延迟毫秒并不只是改变之前延迟500ms,它是可以在每个延迟函数阶段,分别延迟出不同的速度,上面的这样一开仿佛就单一,而这个是进行变化的。

#include <REGX52.H>

void Delay1ms(unsigned int xms);	//@12.000MHz
void Delay1ms(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;
	while(xms)
	{
		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}
int main(void)
{
	while(1)
	{
		P2=0xFE;//1111 1110
		Delay1ms(1000);
		P2=0xFD;//1111 1101
		Delay1ms(900);
		P2=0xFB;//1111 1011
		Delay1ms(800);
		P2=0xF7;//1111 0111
		Delay1ms(700);
		P2=0xEF;//1110 1111
		Delay1ms(600);
		P2=0xDF;//1101 1111
		Delay1ms(500);
		P2=0xBF;//1011 1111
		Delay1ms(300);
		P2=0x7F;//0111 1111
		Delay1ms(100);
	}
}

【51单片机】点亮LED灯(四种形式)    文章来源地址https://www.toymoban.com/news/detail-412121.html

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

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

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

相关文章

  • 如何使用单片机点亮LED灯,并使用按键控制[51单片机]

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

    2024年02月05日
    浏览(42)
  • STM32/51单片机编程入门(点亮LED)

    目录 一、Proteus电路仿真软件上的C51程序设计及仿真 1.原理图绘制 2.Keil5上的51程序编写 3.仿真 二、安装mdk5软件和stm32包,完成一个stm32的简单程序 1.mdk5软件中编写程序 2.stm32仿真程序调试 三、STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置的一般步骤

    2024年02月02日
    浏览(56)
  • 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)
  • 学习笔记|LED点亮原理|三极管在数字电路中的应用|Keil中的Tab设置|C51中对准双向口|STC32G单片机视频开发教程(冲哥)|第四集-上:点亮LED

    为什么LED能点亮? 概念引入:输出电压=VCC就是高电平,输出电压 =GND(一般是OV)就是低电平,分别用1和0来表示,这个是理想值。 现在STC 的带硬件USB的MCU支持用硬件USB下载,因为用的是USB-HID通信协议,不需要安装任何驱动。STC打狗棒、降龙棍、开天斧、屠龙刀核心板以及STC开

    2024年02月14日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包