51单片机学习笔记2-LED

目录

2.0 LED原理图

2.1 项目示例1:点亮一个LED

✅点亮LED主函数

2.2 项目示例2: LED闪烁

✅STC-ISP 软件自动生成软件延时函数:

✅LED 闪烁主函数

2.3 项目示例3:LED流水灯

✅基础版主函数:

✅升级版主函数:


2.0 LED原理图

LED 电平规则低电平 = LED点亮高电平 = LED熄灭

2.1项目示例1:点亮一个LED

✅点亮LED主函数

#include <REGX52.H>// 引入52单片机寄存器头文件,REGX52兼容所有51/52内核单片机 void main() { // P2=0xFE; // 二进制11111110,仅点亮P2.0 P2=0x55; // 二进制01010101,P2口LED 隔一个亮一个(偶脚亮、奇脚灭) while(1); // 死循环,保持引脚电平状态,防止程序跑飞 }

2.2项目示例2:LED闪烁

STC-ISP 软件自动生成软件延时函数:

LED 闪烁主函数

#include <REGX52.H> // 51/52单片机寄存器定义头文件,必备,用于操作P2口等IO引脚 #include <INTRINS.H> // 内核函数头文件,必须包含,因为代码中用到了 _nop_() 空操作函数 /************************** 延时函数 **************************/ void Delay500ms(void) // 延时函数名:延时500毫秒 { // @12MHz :该延时函数的适配条件【晶振=12MHz】,精准延时500ms unsigned char i, j, k; // 定义3个无符号字符型变量,用于三层循环计数实现延时 _nop_(); // 执行1个空操作指令,作用:延时微调,保证500ms延时精度,无实质逻辑 i = 4; // 外层循环初始化计数值 j = 205; // 中层循环初始化计数值 k = 187; // 内层循环初始化计数值 do // 三层嵌套循环:通过变量自减+循环,消耗CPU运行时间实现软件延时 { do { while (--k); // 内层k自减到0,再执行中层 } while (--j); // 中层j自减到0,再执行外层 } while (--i); // 外层i自减到0,延时函数执行完毕 } /************************** 主函数-程序入口 **************************/ void main(void) { while(1) // 死循环,程序上电后一直重复执行循环内的代码,永不停止 { P2=0xFE; // 赋值二进制 1111 1110 → P2.0引脚置低电平点亮对应LED,其余引脚高电平灯灭 Delay500ms();// 调用延时函数,保持LED点亮状态 500毫秒 P2=0xFF; // 赋值二进制 1111 1111 → P2口所有引脚置高电平,熄灭全部LED Delay500ms();// 调用延时函数,保持LED熄灭状态 500毫秒 } }
STC小程序生成软件延时函数中包含代码_nop_,要引入头文件:#include,否则会报错

2.3项目示例3:LED流水灯

基础版主函数:

#include <REGX52.H> // 51/52单片机寄存器头文件,用于操作P2口IO引脚,必备头文件 #include <INTRINS.H> // 单片机内核函数头文件,必须包含,因为延时函数中用到了_nop_()空操作函数 /********************* 延时函数:软件延时500毫秒 *********************/ void Delay500ms() // 函数名:延时500ms,单位:毫秒(ms) { // @12MHz :该延时函数适配【12MHz晶振】,延时精度准确,51单片机标配 unsigned char i, j, k; // 定义3个无符号字符型变量,用于三层嵌套循环计数,消耗CPU时间实现延时 _nop_(); // 执行1个CPU空操作,仅用于延时精度微调,不影响程序逻辑 i = 4; // 外层循环计数初始化 j = 205; // 中层循环计数初始化 k = 187; // 内层循环计数初始化 do // 三层do-while嵌套循环,通过变量自减至0实现精准延时 { do { while (--k); // 内层k自减,减到0后执行下一层循环 } while (--j); // 中层j自减,减到0后执行外层循环 } while (--i); // 外层i自减,减到0后延时函数执行完毕 } /********************* 主函数:程序入口,流水灯核心逻辑 *********************/ void main() { while(1) // 死循环,无限重复执行循环内代码,实现LED持续流水灯效果 { P2=0xFE; // 二进制:1111 1110 → 仅P2.0引脚置低电平,对应第一个LED点亮 Delay500ms();// 保持当前点亮状态500ms,肉眼可见的亮灯时长 P2=0xFD; // 二进制:1111 1101 → 仅P2.1引脚置低电平,对应第二个LED点亮 Delay500ms(); P2=0xFB; // 二进制:1111 1011 → 仅P2.2引脚置低电平,对应第三个LED点亮 Delay500ms(); P2=0xF7; // 二进制:1111 0111 → 仅P2.3引脚置低电平,对应第四个LED点亮 Delay500ms(); P2=0xEF; // 二进制:1110 1111 → 仅P2.4引脚置低电平,对应第五个LED点亮 Delay500ms(); P2=0xDF; // 二进制:1101 1111 → 仅P2.5引脚置低电平,对应第六个LED点亮 Delay500ms(); P2=0xBF; // 二进制:1011 1111 → 仅P2.6引脚置低电平,对应第七个LED点亮 Delay500ms(); P2=0x7F; // 二进制:0111 1111 → 仅P2.7引脚置低电平,对应第八个LED点亮 Delay500ms(); } }

升级版主函数:

修改延时函数,实现流水灯任意切换速度
#include <REGX52.H> // 51/52单片机寄存器核心头文件,用于操作P2口IO引脚,必备 #include <INTRINS.H> // 51内核函数头文件,软件生成的延时代码标配,兼容所有延时模板 /********************* 通用毫秒级延时函数 (重点核心) *********************/ void Delay1ms(unsigned int xms) // @12MHz 晶振 精准延时 { // 函数功能:自定义延时【xms 毫秒】,xms是延时的毫秒数,可调参数 unsigned char i, j; // 定义局部变量,用于1ms基准延时的循环计数 while(xms--) // 外层循环:执行 xms 次【1ms延时】,总延时 = xms * 1ms { i = 2; j = 239; do { while (--j); // 内层双层循环:执行一次 = 精准延时1毫秒 } while (--i); } } /********************* 主函数 - 正向流水灯核心逻辑 *********************/ void main() { while(1) // 死循环:无限重复执行流水灯代码,实现持续流水效果 { P2=0xFE; // 二进制:1111 1110 → 仅P2.0引脚低电平 → 第一个LED点亮 Delay1ms(200);// 保持亮灯状态 200毫秒 P2=0xFD; // 二进制:1111 1101 → 仅P2.1引脚低电平 → 第二个LED点亮 Delay1ms(200); P2=0xFB; // 二进制:1111 1011 → 仅P2.2引脚低电平 → 第三个LED点亮 Delay1ms(200); P2=0xF7; // 二进制:1111 0111 → 仅P2.3引脚低电平 → 第四个LED点亮 Delay1ms(200); P2=0xEF; // 二进制:1110 1111 → 仅P2.4引脚低电平 → 第五个LED点亮 Delay1ms(200); P2=0xDF; // 二进制:1101 1111 → 仅P2.5引脚低电平 → 第六个LED点亮 Delay1ms(200); P2=0xBF; // 二进制:1011 1111 → 仅P2.6引脚低电平 → 第七个LED点亮 Delay1ms(200); P2=0x7F; // 二进制:0111 1111 → 仅P2.7引脚低电平 → 第八个LED点亮 Delay1ms(200); } }
为什么参数用unsigned int xms而不是unsigned char
  • unsigned char取值范围:0 ~ 255→ 最多只能延时 255ms;
  • unsigned int取值范围:0 ~ 65535→ 最大可延时65 秒,完全满足 51 单片机所有项目的延时需求(流水灯、按键消抖、数码管、蜂鸣器都够用);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206306.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026-01-23

CF Problem - 1787C - Codeforces(dp好题) 题意:对于 \(a_2​,a_3​…a_{n−1}\)​,求出 \(x_i\)​ 和 \(y_i\)​,满足 \(x_i​+y_i​=a_i\)​ 且 \((x_i​−s)(y_i​−s)≥0\),并使得: \(F=a_1​x_2​+y_2​x_…

详细介绍:Elasticsearch:过多的副本数量会如何降低性能,以及该如何解决它

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

详细介绍:鸿蒙Next图片开发指南:从解码、处理到接收的完整实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2026年彩钢瓦设备厂家推荐榜单:琉璃瓦/墙面板/角驰瓦/不锈钢波浪板/数控高速/双层一机多用/冷弯耐用工业级高精度全自动及CZ型钢U型钢设备精选

2026年彩钢瓦设备行业深度解析与权威厂家推荐榜单 随着全球工业化进程的加速和建筑建材行业的持续升级,彩钢瓦及各类冷弯成型设备作为现代工业建筑、仓储物流、公共设施等领域不可或缺的基础生产装备,其市场需求与技…

TB311FU原厂刷机包免费下载_CN_ZUI_17

原厂刷机包下载 https://pan.quark.cn/s/7bcaee17dad9昭阳K10C原厂刷机包下载 转载请标注来源:https://www.cnblogs.com/mianfeijiaocheng/p/19523885 所有固件都是我手动上传的,不是机器人或程序,保持固件更新不是…

2026年 桌椅租赁服务商推荐排行榜:活动/会议/展会/户外/宴会/演出/定制/婚礼/庆典/年会/办公桌椅租赁,专业高效与场景适配度深度解析

2026年桌椅租赁服务商推荐排行榜:专业高效与场景适配度深度解析 在当今快节奏的商业与社会活动中,无论是举办一场盛大的国际会议、一个前沿的行业展会,还是一场温馨的婚礼庆典,专业、高效且与场景高度适配的桌椅租…

针对语音识别场景,企业算力平台建设的5个关键要点

从“听得见”到“听得懂”&#xff1a;企业语音识别算力平台建设的5个关键胜负手 关键词 语音识别算力、GPU集群、低延迟推理、数据并行训练、算力弹性调度、模型压缩优化、成本效益 摘要 当用户对着智能音箱说“播放周杰伦的歌”&#xff0c;或客服系统自动转写通话记录时…

知行合一的价值革命:《AI元人文:悟空而行》的范式突破与智能时代治理重构(扩展版)

知行合一的价值革命&#xff1a;《AI元人文&#xff1a;悟空而行》的范式突破与智能时代治理重构&#xff08;扩展版&#xff09; 摘要 本文旨在对《AI元人文&#xff1a;悟空而行——智能时代的价值决断与合法性重建》进行系统性阐释与深度拓展&#xff0c;将其置于跨学科的思…

AI芯片设计中的硬件加速反馈循环方案

AI芯片设计中的硬件加速反馈循环方案关键词&#xff1a;AI芯片、硬件加速、反馈循环、计算优化、能效比、实时调整、自适应架构摘要&#xff1a;在AI算力需求呈指数级增长的今天&#xff0c;传统芯片“固定架构通用计算”的模式已难以满足深度学习的高效需求。本文将以“硬件加…

一天一个Python库:idna - 处理国际化域名的神器

idna - 处理国际化域名的神器 一、什么是idna? idna 是一个用于处理国际化域名(Internationalized Domain Names, IDNA)的 Python 库。IDNA 允许域名包含非 ASCII 字符,例如中文、日文、阿拉伯文等。 它可以帮助你…

2026年 光亮剂厂家推荐排行榜:促裕抛光/电镀光亮剂,镍铜锡金银全系列高效抛光解决方案深度解析

2026年光亮剂厂家推荐排行榜:促裕抛光/电镀光亮剂,镍铜锡金银全系列高效抛光解决方案深度解析 在精密制造与表面处理领域,光亮剂作为提升产品外观品质、增强耐腐蚀性及功能性的关键化学添加剂,其重要性日益凸显。随…

TB350FU原厂刷机包免费下载_CN_ZUI_17

原厂刷机包下载https://pan.quark.cn/s/7bcaee17dad9联想平板小新Pad Plus 2023 11.5英寸原厂刷机包下载 转载请标注来源:https://www.cnblogs.com/mianfeijiaocheng/p/19523859 所有固件都是我手动上传的,不是机器人…

基于大数据的农产品价格预测数据分析与可视化系统

目录摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作摘要 该系统旨在利用大数据技术对农产品价格进行精准预测&#xff0c;并通过可视化手段直观展示分析结果&#xff0c;为农业生产者、经销商及政策制…

深度测评8个AI论文平台,专科生毕业论文轻松搞定!

深度测评8个AI论文平台&#xff0c;专科生毕业论文轻松搞定&#xff01; AI 工具如何助力论文写作&#xff1f; 在当今数字化时代&#xff0c;AI 工具已经成为许多学生和科研工作者的重要助手。尤其是对于专科生而言&#xff0c;面对毕业论文的撰写任务&#xff0c;常常会感到无…

基于大数据的出行路线规划与推荐系统 数据分析可视化大屏系统

目录 大数据驱动的出行路线规划与推荐系统数据分析可视化大屏系统技术整合与创新 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 大数据驱动的出行路线规划与推荐系统 该系统基于多源异构数据&#xff0…

二叉树层序遍历(BFS)完全指南:从基础到实战

一、层序遍历核心概念 1.1 什么是层序遍历? 层序遍历(Level Order Traversal)是一种广度优先搜索(BFS) 算法,它按照树的层次,从上到下、从左到右逐层访问每个节点。 示例二叉树:1 ← 第1层/ \2 3 ← 第2层/ \ \4 5 6 ← 第3层层序遍历结果:[[1…

基于大数据的大学生就业信息推荐系统的 爬虫数据可视化大屏分析系统

目录 大数据驱动的就业信息推荐与可视化分析系统 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 大数据驱动的就业信息推荐与可视化分析系统 该系统整合大数据技术与可视化分析&#xff0c;构建面向大学…

基于大数据的旅游景点推荐系统的设计与实现

目录摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作摘要 随着旅游业的快速发展&#xff0c;游客对个性化旅游体验的需求日益增长。传统的旅游推荐系统主要依赖人工筛选或简单规则&#xff0c;难以满足…

基于大数据的高校毕业生招聘信息推荐系统 爬虫 数据分析可视化大屏系统mpohdj33

目录大数据驱动的高校毕业生招聘信息推荐系统项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作大数据驱动的高校毕业生招聘信息推荐系统 该系统整合了爬虫技术、数据分析与可视化大屏&#xff0c;旨在为高校…

flask python旅游景点印象服务系统

目录基于Flask的旅游景点印象服务系统摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作基于Flask的旅游景点印象服务系统摘要 该系统采用Python的Flask框架开发&#xff0c;旨在为用户提供旅游景点的印…