51单片机7(点亮第一个LED)
一、LED简介
1、LED,它是一个发光二极管,它具有单向导电性,那么通过5毫安的一个电流,就可以使它发光,那么电流越大,它的发光也就越强,但是电流不能过大,过大会把这个发光二极管给烧坏,也就击穿,一般呢,我们控制在3毫安到20毫安的一个电流,通过这个发光二极管的电流控制在这一块,可以让我们的这个发光二极管,可以正常的一个发光,那如果说我们的外部输入的电流大于这个电流范围的话,我们会在这个发光氨极管的两个引脚上串一个电阻,这个电阻就是限流,所以该电阻称为限流电阻,其目的是为了保障我们的这个发光二极管不至于因为电流过大而烧毁。
2、发光二极管在发光的时候,我们测量两端的电压,就这两端的电压,大概是1.7V,所以这个电压又叫做发光二极管的一个导通压降。
3、

由这两个图,我们分别列出了这个发光二极管的两种封装,一种是这种插件式的,可以直接插的。另一种是贴片式的。
二、硬件设计
1、接下来我们来看一下我们的板载LED模块的一个电路,从这个电路我们放了两张图。

(1)左边一张是我们集成版的,也就是我们的A2到A3到A4这三款开发板,它对应的这个LED模块的一个电路,因为它是集成到资源就是集成到这个单面积的管脚,而右边这张图,是我们的A5到A6到A7它的一些图,因为A5到A7这些产品,它的模块是完全独立的。之所以叫完全独立,是因为它的这些资源,没有对这个芯片的管脚进行绑定,由用户自己来连接,因此,这种灵活性就更多了吧。
(2)为了方便统一,兼容,我们可以按照这种集成式的这个管脚进行连接,同样提供的程序,也按这种管脚来,对应的,比如说这里有第一管,第一指示灯,那第一指示灯我们通过网络的标号可以知道,它是连接在P2.0关掉的。要让这个发光二极管进行发光,那必须保证P20管脚为低电平,这样我们的电流才能流进来,才能使它发光。像RP9,RP10,这叫排阻,相当于这里面就是一个电阻,只是它的封装,将四个电阻全部封装在一个小的排阻里面,方便于我们PCB的一个板机的缩小,所以呢,这是我们的这个集成式的这种电路,可以看到,它的管脚全部被绑定到我们单片机上面了,所以要控制那个灯点亮就对应使用哪个管脚输出低电平,比如,我要让D1指示灯点亮,那就将P20管脚让它输出一个低电平,让电流往这里流,如果是高电平,电流是流不过来的。
(3)我们这里使用的是471,也就是470欧,如果说,为了提高我们的亮度,我们也会使用100欧,这样我们的发光二极管也会更亮,电阻更大,电流也就更小。
(4)右边这张图是我们A5到~A7开发板对应的LED模块的一个电路,那我们这里呢,对同样的,如果说你要让第一指示灯点亮,它也是全部供阳极接法,所以要让它亮,就是要输出低电平,那这里对应的是这个管脚,因为这个管脚它全部是模块独立,这里引出来的都是一些排针,那排针的话,我可以将一根导线,一端连接到我们脚的一端,一端连接到我们单片机的P20管脚,是不是就相当于这个脚就是P2.0,跟我们的这个脚是不是对应了,通过这种方式,我们可以进行一个程序的兼容。
三、软件设计
1、本部分要实现的功能是:点亮D1指示灯,即让P2.0管脚输出一个低电平。完成后可再控制D1指示灯闪烁,即间隔一段时间点亮和熄灭D1指示灯。
2、前面我们分析了,其实只要让这个P20管脚输出一个低电平,这样我们的电流才能流向低指示灯,才能发光,对于我们的A5,A6,A7这些51的板子,这是模块独立,所以要让它发光,同样要将这个管脚连接到我们单片机对应的管脚,你才能使它发光。
3、既然我们是要D1指示灯发光,那我们知道D1指示灯他是连接在P2.0的,所以我们先定义一下这个管脚,那如何来定义这个管教呢,在C语言里面,我如何用C语言来定义我单片机的管脚,这里介绍一个方法,我们使用一个关键字,前面我们在讲解C语言的时候,sbit,这个是特殊功能继电器的一些未定义,我们在头文件里面也能看到有这样定义的一个身影。

那通过sbit可以将我们的一个寄存器,它的某一个位来进行重命名,那因为我现在要使用P2口,P2口在我们的头文件里面已经进行了一个定义了,所以我们可以直接用P2,那我们重命名,命名为LED1,这是我们重命名的,那不会写格式没关系,我们参照别人写的,那我要让它dp 20,p20是不是就相当于P2口的D零个管脚。

(1)^ 这是特殊的写法,是系统规定的
(2)这里的P2是我们的寄存器已经封装好定义的,那P2寄存器里面的D0个脚,这就是我们的P20脚。
(3)语句要加分号,这是我们的这个单片机的一个LED的一个控制管脚,因为它是连接在P20对应到我们的模块独立的开发板上面,也可以连接到P20脚。
(4)定义好我们的LED的控制引脚,下面我们就通过程序来控制它点亮,要点亮的话,我们的程序都是从main函数来执行的,进入main函数后,开始往下执行,执行我首先就要让它亮,让它亮,是不是就相当于将P20这个管脚输出一个低电平,那我既然已经重命名了,那我是不是直接就利用我定义的这个名字来代替这个P2.0,当然是可以的,然后我们让它输出一个低电平。你要对它进行数据的输入和输出,就是直接对我们定义的管脚来进行操作就行了。
(5)这样是不是将相当于把0赋值给我们的这个LED1,然后LED1也是我们定义的这个P2.0脚,相当于把0赋值给我们,也就是我们的P2.0要输出一个低电平,因为输出一个低电平,这个D1指示灯就会亮,因为它的阳极,也就是正极是接的VCC电源,所以这里输出低电平,这里就会有电流,就会流过它进行发光。
(6)当然,将LED1放到这里面来也是可以的

因为我们的单片机程序,我们所有的功能通常都会在我们的main函数里面进行运行的,而且我们会把我们所有的逻辑功能,统一放到我们的while(1)循环里面,让我们的程序不断地在这里循环运行。
(7)无论是放前面还是放里面,只要让它输出低电平即可,这里就会点亮,后面的循环你有没有改变他的状态,所以他依然是点亮的,对你这个指示灯就没有影响,然后while循环里面就是一个我们的不断循环,我们在前面介绍C语言循环语句的时候说过,while1是它的条件,这里的1是真的,所以他会在这里循环循环。
4、这是我们程序编译之后会产生一个hex文件,然后将我们的烧写软件打开,然后选择我们的这个hex文件就可以了。
5、我们的这个程序代码有多大呢,这里我们可以看一下,这个生成编译之后会产生一条信息。

我们可以看到这里面有一个data,xdata,以及code,那么code表示我们程序所占用的flash的一个大小,而这个data表示的是我们数据存储器内部RAM占用的大小,我们的这个代码flash占用了16字节,然后数据占用了RAM占用了9字节,xdata是数据存储器外部RAM,外部的RAM我们没有拓展,所以这里是0.
6、我们的程序具体有多大,可以通过code和data进行一个换算,而不是看这个hax文件,你可以看一下,这个hax文件有1KB,但不是看哪里,而是看我们这个编译的这个code和data。
相关文章:
51单片机7(点亮第一个LED)
一、LED简介 1、LED,它是一个发光二极管,它具有单向导电性,那么通过5毫安的一个电流,就可以使它发光,那么电流越大,它的发光也就越强,但是电流不能过大,过大会把这个发光二极管给烧…...
基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件
基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件 摘要 随着前端技术的迅速发展和业务场景的日益复杂,传统的整块应用开发方式已无法满足现代开发的需求。组件化开发作为一种有效的解决方案,能够将系统拆分为独立、…...
CentOS 系统监控项
在维护和优化 CentOS 系统时,实时监控硬件和资源的使用情况非常重要。为了满足工作需要,可以定时采集 CentOS 系统相关的监控数据,并将其推送到 Prometheus 进行集中监控和管理。以下是日常采集项及对应的 shell 命令,并附上每项命…...
连锁直营店小程序赋能多店如何管理
如商超便利店卖货线下场景,也有不少品牌以同城多店和多地开店经营为主,获取店铺周围客户和散流,如今线上重要性凸显,品牌电商发展是经营的重要方式之一,也是完善同城和外地客户随时便捷消费的方式之一。 多个门店管理…...
决策树算法入门到精通:全面解析与案例实现
1. 介绍决策树算法 决策树的基本概念和原理 决策树是一种基于树形结构的分类和回归方法,通过对数据集进行递归地划分,每个内部节点表示一个属性上的判断,每个叶节点代表一种类别或者数值。 决策树在机器学习中的应用场景 分类问题…...
LangChain —— 多模态大模型的 prompt template
文章目录 一、如何直接将多模态数据传输给模型二、如何使用 mutimodal prompts 一、如何直接将多模态数据传输给模型 在这里,我们演示了如何将多模式输入直接传递给模型。对于其他的支持多模态输入的模型提供者,langchain 在类中提供了内在逻辑来转化为期…...
ssh升级
文章目录 ssh升级一、解包ssh、ssl二、更新安装ssl三、手动更新手动复制库文件四、创建符号链接五、更新库路径六、验证库文件七、设置库路径环境变量八、配置、编译、安装OpenSSH:意外:缺少 zlib 的开发库解决方法: 九、刷新ssh服务、查看ss…...
51单片机10(蜂鸣器介绍)
一、蜂鸣器介绍: 1、蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作为发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器。 (1)压电式蜂鸣器,它主要由多谐的一个增胀器…...
Python爬虫:基础爬虫架构及爬取证券之星全站行情数据!
爬虫成长之路(一)里我们介绍了如何爬取证券之星网站上所有A股数据,主要涉及网页获取和页面解析的知识。爬虫成长之路(二)里我们介绍了如何获取代理IP并验证,涉及了多线程编程和数据存储的知识。此次我们将在…...
T113-i 倒车低概率性无反应,没有进入倒车视频界面
背景 硬件:T113-i + emmc 软件:uboot2018 + linux5.4 + QT应用 分支:longan 问题 T113-i系统倒车时偶发无反应,没有进入倒车视频界面。 倒车无反应问题排查 先在倒车驱动的中断检测接口里添加打印,以确定倒车无反应时系统是否检测到中断状态,如下图所示。 static int ca…...
【AI大模型】李彦宏从“卷模型”到“卷应用”的深度解析:卷用户场景卷能给用户解决什么问题
文章目录 一、理解李彦宏的发言1.1 李彦宏的核心观点1.2 背景分析 二、技术发展:从辨别式到生成式2.1 辨别式AI技术2.2 生成式AI技术2.3 技术发展的挑战 三、“卷应用”:聚焦实际应用与价值3.1 应用为王3.2 技术落地的关键 四、“卷场景”:多…...
25秋招面试算法题 (Go版本)
文章目录 科大讯飞 0713找01不能出现太多其他 科大讯飞 0713 找01 牛牛拥有一个长度为 n 的01 串,现在他想知道,对于每个字符,在它前面的最近的不同字符的下标是多少? 输入描述 本题为多组测试数据,第一行输入一个…...
在Ubuntu 14.04上安装和保护phpMyAdmin的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 虽然许多用户需要像 MySQL 这样的数据库管理系统的功能,但他们可能不太习惯仅通过 MySQL 提示符与系统进行交互。 ph…...
突破与创新:Vue.js 创始人 尤雨溪 2024 年度技术前瞻
本文将深入探讨以下主题的 尤雨溪 见解:Vite 5对Vue的影响、宏、vapor模式、常见误解、新特性或功能、未来版本对Option API的支持、VitePress等。 . 2.尤大的问答环节 2.1. Vite 5如何提升Vue的性能? Vite在提高性能方面的工作通常是针对Vite本身的。然…...
LeetCode 441, 57, 79
目录 441. 排列硬币题目链接标签思路代码 57. 插入区间题目链接标签思路两个区间的情况对每个区间的处理最终的处理 代码 79. 单词搜索题目链接标签原理思路代码 优化思路代码 441. 排列硬币 题目链接 441. 排列硬币 标签 数学 二分查找 思路 由于本题所返回的 答案在区间…...
【排序 - 插入排序 和 希尔排序】
插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是逐步构建有序序列。在排序过程中,它将未排序的元素逐个插入到已排序的部分中,从而在每次插入时扩展已排序序列的长度。 原理介绍 插入排序的基本思…...
Java使用 MyBatis-Plus 的 OR
Java使用 MyBatis-Plus 的 OR 一、前言1. 简介2. OR 查询2.1 基础 OR 查询2.2 使用 Lambda 表达式简化 二、总结 一、前言 学习使用 MyBatis-Plus 的 OR 及高级语句是提升数据库操作效率和灵活性的关键步骤。MyBatis-Plus 是 MyBatis 的增强工具包,提供了许多便捷的…...
[Linux]CentOS软件的安装
一、Linux 软件包管理器 yum 1.Linux安装软件的方式 在linux中安装软件常用的有三种方式: 源代码安装(我们还需要进行编译运行后才可以,很麻烦) rpm安装(Linux的安装包,需要下载一些rpm包,但是…...
4000厂商默认账号密码、默认登录凭证汇总.pdf
获取方式: 链接:https://pan.baidu.com/s/1F8ho42HTQhebKURWWVW1BQ?pwdy2u5 提取码:y2u5...
RK3568笔记三十六:LED驱动开发(设备树)
若该文为原创文章,转载请注明原文出处。 记录使用设备树编写一个简单的 LED 灯驱动程序 一、编程思路 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的 属性,编写测试应用程序。 • 首先向设备树添加 LED 设备…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
