51单片机8(LED闪烁)

news2024/9/21 20:30:57

一、软件设计:

1、本章所要实现的功能是:点亮D1指示灯,即让P2.0管脚输出一个低电平。完成后可再控制D1指示灯闪烁,即间隔一段时间点亮和熄灭D1指示灯。那么如何让LED进行闪烁,那么只需要循环的让这个·低指针先亮一会,再熄灭,让它不断地循环,这样一亮一灭,这个指示灯就在闪烁了,这里就有一个延时的问题,那如何来产生这个延时?

2、我们知道单片机,它执行每条代码指令,它都是需要时间的,那在前面介绍C语言的时候,我们讲解过这个循环语句,因此我们只需要编写一个循环的函数,让CPU不干其他的事,专门用来循环运行那些可延时的一个功能。

3、根据我们人的肉眼余晖效应,时间不能太短,太短,我们会无法观察到LED的一个状态变化,所以我们这里来写一下我们的这个LED闪烁的这个程序:

(1)在原有的点亮第一个LED灯的代码程序上,我们最主要的就是编写一个延时函数,那延时函数怎么写。前面我们学C语言基础的时候,我们说过函数它的一个结构,首先,返回值的一个类型,那这里延时函数仅仅只是一个延时,没有返回值,所以是个void类型。

(2)那函数名可以自己定义,只要符合变量定义的一个规范就可以了,通常我们在给函数或者变量进行定义名字的时候,我们通常要有一些能代表它功能,不要随便想一个拼音名字或者什么意义都没有的英文字符在这里,那大家在后续维护我们的这个程序的时候,就不知道这个东西是干什么的。

(3)那既然我们现在编写的这个函数是实现延时的一个功能,所以这里我就用了一个delay延时,我这里写的的是延时10微秒,为什么10微秒,等一下我们会给大家看一下,这里先写一下,这个延时函数,我们这个函数有一个入口的一个参数,也就是形式参数,通过这个形式参数,我们再调用这个延时函数的时候,我们在传入一个值给我们的函数,让它传入的值的不同,延时就不同,这样就给我们使用这个函数,增加了一个灵活性。

(4)然后呢,我们变量的名字,就命名为10 muse。

(5)函数的结构就是这样的,通过函数的这个名称类型,还有函数的参数,然后一个大括号,大括号后面没有分号,然后呢,这个函数的内容,我们是实现一个延时,我们通过循环,刚才也说了,我这个循环,啥都不干,我在这里让它一直的减减,那么就是说我这里个参数,我在调用函数的时候,假入我给这个变量传入一个十,那么十进来之后,这里是不是十减减,那么十变成了九,那我这个是一个循环,那九又减一次,一直减到0,当减到零的时候,这个循环条件是不是假,一变成了假,那这个循环体是不是直接退出来,循环体里面,我们什么都不做,就是一个空语句,空语句,然后呢,就直接退出while循环,退出while循环往下执行,是不是结束了我们的函数,这是我们函数运行的一个过程,这就是我们延时的一个函数。

(6)为什么我们这里定义成10微秒,这是根据我们的这个仿真出来的一个时间,它大概就是10微秒,也就是说当传入Ten__us=1时,大约延时10us,我们现在用的delay函数,它都是一个大概的时间,因为循环执行的时间,不是很精确,它对应的记忆指令呢,不是说就固定的,它有可能是10微秒,当我们自己通过循环来占用CPU,起到一个延时效果的时候,这种延时是不精确的,如果你要去搞一个精确的延时,那需要我们后面学习定时器,我们才能做到这种精确的延时,等我们后面学习了就会,大家先在这里大概的一个延时就可以了,因为我们现在是让LED闪烁,我们只要大概的一个时间,我们肉眼能分辨出来就可以了,不需要那么精确.

(7)现在我们来介绍一下,为什么是10微秒,等一下我们要调用的时候,我会带大家进行一个软件的仿真,查看一下它大概的时间。这里我们现在是让D1指示灯点亮了,那我现在是让LED有一个闪烁,要让它闪烁,是不是在循环体里面,我们要让它英文的一个符号,中文是不行的,还有中文的这个,假设我们现在出现一个中文的这个分号,这里会报错。

(8)让LED闪烁,我们就让这个LED进行一个低电平,这是点亮。点亮一会呢,我就延一个时间,这就是我们为什么在前面要定义一个参数,就是因为这样,我们调用的时候,我们根据传入的参数值不同,让它的延时时间不同,这里我延时,一个延时50000,随便先打上一个值,等一下我们来看一下大概的这个时间,然后呢,点亮一会,再让它熄灭。熄灭的话是不是让它输出高电平,然后熄灭再让它延时一会,刚才我们说了这个调用函数的时候,大概是10个微秒,所以10个微秒的话,我们算一下,10个微秒,那我这里是500就相当于5毫秒,再加两个零就是500毫秒,500毫秒换算到我们实际仿真出来的一个时间大概就是450毫秒。这就实现了我们LED的一个闪烁。

4、所以我们编译之后,程序没有错误,没有警告。这样一来,我们这个就可以将我们的这个hex文件下载到我们的开发板里面看一下我们的D1指示灯有没有闪烁,闪烁的时间是不是比较快或者比较慢,如果是快,那我们就调节一下这个延时,只要在我们的这个范围内。

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

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

相关文章

Docker搭建Harbor

1.什么是Harbor Harbor 是 vMware 公司开源的企业级 Docker 〖egistry 项日,其日标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。Harbor以 Docker 公司开源的 Registry 为基础,提供了图形管理UI 、基于角色的访问控制(Role Based Accesscontr…

地图项目涉及知识点总结

序:最近做了一个在地图上标记点的项目,用户要求是在地图上显示百万量级的标记点,并且地图仍要可用(能拖拽,能缩放)。调研了不少方法和方案,最终实现了相对流畅的地图系统,加载耗时用…

LLaMA 数据集

LLaMA的训练数据集来源多样,涵盖了多个不同的数据集和预处理步骤。以下是详细的描述: 公开数据来源和预处理 CommonCrawl [67%]: 使用CCNet管道(Wenzek等人,2020年)对2017年至2020年间的五个CommonCrawl转…

基于 Springboot + vue + java 美食分享平台(美食管理系统)

目录 📚 前言 📑摘要 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 E-R表 💬 用户表 💬 美食分享文章表 💬个人博客表 💬 美食分类表 💬 …

如何根据项目需求选择采集卡及相关硬件

在选择适合的采集卡和硬件设备时,尤其是在要求高精度的应用场景中(如压机测试中的1μm位移计),需要综合考虑多个因素。以下是选择硬件的几个关键原则: 1. 精度要求 对于需要高精度的应用,硬件的精度必须能…

Java代码批量处理sql语句

背景:数据源迁移,目标数据源和原始数据源的语法不同,要把建表语句全都改成新的语法。 一个个sql文件去替换实在是麻烦,可以把原始的sql文件放在一个文件夹,然后用程序一跑,改完语法的sql语句就放在新的文件…

口袋奇兵游戏攻略:云手机辅助战锤入侵策略指南!

在《口袋奇兵》中,战锤入侵是一个重要的游戏环节,了解如何有效地参与战锤入侵能够帮助玩家获取更多的资源和提升自己的战力。本文将详细介绍战锤入侵的策略和技巧,帮助玩家在战锤入侵活动中取得更好的成绩。除了找到强力的游戏辅助&#xff0…

miniconda+xinference的大模型推理部署指南

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 基于Dify的智能分类方案:大模型结合KNN算法(附代码&#xff…

【视觉SLAM】 十四讲ch5习题

1.*寻找一个相机(你手机或笔记本的摄像头即可),标定它的内参。你可能会用到标定板,或者自己打印一张标定用的棋盘格。 参考我之前写过的这篇博客:【OpenCV】 相机标定 calibrateCamera Code来源是《学习OpenCV3》18.…

喜报!CACTER实力入选《嘶吼2024网络安全产业图谱》多项领域

CACTER实力入选多项细分领域 7月16日,嘶吼安全产业研究院正式发布《嘶吼2024网络安全产业图谱》,旨在全面展示网络安全产业的构成及其重要组成部分,探索网络安全产业的竞争格局和发展前景。 CACTER凭借卓越的技术实力和可靠的产品服务&#…

[论文笔记] Pai-megatron-patch cpu-offload 改到 Qwen2

Add MPI Support for tp-comm-overlap and Cpu-Offload for Mcore Distrib… by jerryli1981 Pull Request #283 alibaba/Pai-Megatron-Patch GitHub 以上是在 llama-70B 上实现的 cpu-offload 方法。 下面是在主分支上,仿照 LLaMA-70B,在 Qwen2 上…

手把手教你搭建Docker私有仓库Harbor

1、什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部署…

HarmonyOS工程目录结构

应用级配置文件app.json5 应用唯一标识、版本号、应用图标、应用名称等信息 模块级配置文件module.json5 oh-package.json5 三方库的管理 其他配置 用于编译构建,包括构建配置文件、编译构建任务脚本、混淆规则文件、依赖的共享包信息等。 build-profile.json…

Java学习Day9之数据库链接java

package aboutdb1; import java.sql.*; import java.util.Scanner; public class newDBsystem {private static Connection getConnection() throws Exception {Class.forName("com.mysql.cj.jdbc.Driver"); // 加载MySQL JDBC驱动Connection con DriverManager.get…

阿尔泰科技工业电脑IPC-8363工控机

概述: IPC-8363是一款支持 LGA 1200 Intel 10th/11th Generation Core™ i9/i7/i5/i3, Celeron and Pentium processor 的工业电脑。配置2组独立 SO-DIMM DDR4 2666/2933MHz内存,最大可扩展至128GB。 主要技术指标: 产品图示: 系…

php 小白新手从入门到精通教程(第3版)

前言 PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根…

qt初入门8:下拉框,输入框模糊查询,提示简单了解 (借助QCompleter)

实现一个简单的模糊查询的逻辑,输入框能提示相关项。 主要借助qt的QCompleter 类( Qt 框架中提供的一个用于自动补全和模糊搜索的类),结合一些控件,比如QComboBox和QLineEdit,实现模糊查询的功能。 1&…

在线实习项目|泰迪智能科技企业级项目学习,暑期大数据人工智能学习

在线实习介绍 实习时间:每个项目周期七周左右 面向对象:大数据、计算机相关专业学生;大三、大四毕业年度学生 在线实习收获 1、获得项目实战技能,积累项目经验 2、获得在线实习证明 项目特点…

能源化工5G防爆终端能给行业带来什么重要作用?

在能源化工领域,5G防爆终端的引入无疑为行业带来了革命性的变革与重要作用。这些集成了先进5G通信技术和防爆设计的高端设备,不仅提升了生产作业的安全性,还极大地增强了运营效率与智能化水平。 高速、低延迟的5G网络为防爆终端提供了前所未有…

安全防御2

实验要求: 实验过程: 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换): 新建电信区: 新建移动区: 将对应接口划归到各自区域: 新建…