51单片机9(使用左移实现流水灯编程)

一、序言:下面我们来给大家介绍一下这个流水灯,流水灯如何来实现?我们依然使用这个工程来完成它。

1、那要使用实现这个流水灯,那我们只需要让D1到D8逐个的点亮,那同样要实现它足够的点亮,也会涉及到延时,那么这个延时的实现呢,我们这里就不再重复。

2、那么要实现这个循环,点亮呢,可以最容易理解的方法就是点亮D1,把D2到D8熄灭,然后延时一段时间再点亮D2,把D1,D3到D8熄灭,以此来类推,以此类推,那么这样就可以很简单的去实现LED流水灯。

3、当然,我们不推荐这种方法,在前面呢,我们学习了C语言相关的这个基础知识,我们知道里面有一个移位以及循环语句的操作,那么根据流水灯实现的原理,也就是I口,是由D,我们看到连接的D1是连接在P2.0,D8是连接在P2.7,那么他的要逐个的点亮,是不是相当于我们的管脚,P20,P21,P22,P23。这个管脚相当于它是由低到高进行逐个的输出,低电平的特点。那么我们可以将移位操作以及循环操作结合,因为它要一个一个这样的操作,就相当于循环八次对吗?那怎么来实现这么一个代码呢。

4、首先,我们先来介绍我们的移位和for语句的一个使用来让这个指示灯进行循环,那么我们要让这个八个灯循环的一个点亮,那我这里是不是要对这八个I口都要进行操作,那为了方便,我这里是通过一个宏定义,宏定义的方式,我就不单独定义广角号,我就通过define,那么在定义的这个宏的时候,使用的这个C语言的一个语句呢,是通过一个井号再加define,这是关键字。

5、通常我们在定义宏定义的时候,都会使用大写字母,那我现在要定义控制八个灯,那这八个灯,是连接在PR端口的,所以我这里是LED命名为LED端口。在哪里,P2。这里是使用宏定义的方式将我们的P2端口定义,定义P2端口是连接我们的LED,所以这里,直接可以代替P2来使用,如果说我们客户自己使用别的开发板,你可能连接到P0或者P1,那你只需要改这个端口名称就可以了,把这个2改成0或者1。那这样我们后续的代码都是用这个,就不需要再改了,这样就提高了我们的代码的一个移植性,移植性和兼容性。

4、接下来,我们再来进行一个循环的一个操作,如何来让它进行一个循环点亮。LED要实现一个跑马灯,是不是要在不断地循环,不断的循环呢?那我们的代码依然是要放在while循环里面,不断的让它在这里反复的进行操作。

5、那要进行一个循环,我们就要一个一个的点亮,那这里就要用到for循环,for循环它的条件是我们就要用一个变量来u8类型,因为这个条件,我只要循环8次,所以定一个字节的变量就足够了,我们定一个i吧,定义个i,那么这个i呢,我们起到一个次数的,一个累加到for循环里面

6、首先for语句,我们前面说过,第一个是它的一个初始条件,我们i=0,I就是它的一个循环条件,循环一个条件I小于8,说明等一下,我们后面是i++。就是说我们每一次这个加了一次,又要跳到这个条件来对比,如果是满足它进行,就会进入到我们的for语句里面,执行它的循环体,这相当于我们要执行8次,每一次是只加1的i+1,那么就相当于循环8次了。

7、那么这循环体里面怎么实现呢?我们看一下,首先让D1指示灯点亮,D1指示灯点亮,是不是P20输出一个低电平,那么接着延迟一段时间,让D2指示灯点亮,D2指示灯是不是让这个P21输出低电平,其他的输出高电平。这里我们可以写一下,首先我们让其输出低电平,其他的输出高电平,延迟一段时间之后,D2指示灯点亮,D2输出低电平,其他的输出高电平。以此类推,相当于这个0,是不是一直往下,一直往下的移位。

8、通过发现的这个规律,我们知道了其实就是将这个P2端口,P2端口一直由低到高进行移位,那么由低到高我们P2端口最低位是P2.0,然后最高位就是P2.7,所以我们要让这个零,一直往前移,那就相当于左移。

9、我们再回到这个PPt,我们单片机的管脚是P2.7,是高位。P2.6要一直到P2.0,这是对应的低位,我们相当于我们的一个字节,这是7位是最高的6543210,这是低位,所以我们由低到高位进行零相移动的话,是不是从低位往高,相当于左移。那么零往左移是不是就是这样零左移,左移多少,左移i这个i是跟着我们的这个循环的一个次数来的,当i=0的时候,满足这个条件,那进入循环体,i是等于0,这个0是不是相当于我们的i口所有的都是0,因为它是8位,如果只写一个0,相当于8位都是0,那这是不符合我们的一个功能要求,我们只希望第一个P2.0为零,其他的为1。 

二、代码:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PNC103/103B-PORPSVOC/波洛斯数据手册高性能32位音频处理器

PNC 103/103B是针对降噪市场推出的一颗音频处理芯片,搭载POROSVOC业内领先的DNN神经网络降噪算法或搭载POROSVOC AECAES回声消除算法,可广泛且快速应用于音视频,对讲,话务等领域。 该芯片采用32bit RSIC架构内核,并加入…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(一)-3GPP TR 22.829 V17.1.0技术报告

本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。 下载…

MyBatis where标签替换WHERE 1 = 1会提升性能吗

MyBatis <where>标签替换WHERE 1 1会提升性能吗 查看项目早期数据库查询语句时&#xff0c;发现很多地方写了WHERE 1 1&#xff0c;怀疑这里有性能损失&#xff0c;想替换成<where>标签。 验证 已知索引 CREATE INDEX BP_LOG_BP_DATE_IDX ON QXX.BP_LOG (BP_…

pxe高效网络批量装机

文章目录 一&#xff0c; PXE远程安装服务&#xff08;一&#xff09;三种系统装机的方式&#xff08;二&#xff09;linux装机1. 加载 Boot Loader2. 加载启动安装菜单3. 加载内核和 initrd4. 加载根文件系统5. 运行 Anaconda 安装向导 &#xff08;三&#xff09;实现过程&am…

games103作业2(未完)

PBD方法 首先是每个质点的力的分析&#xff0c;不考虑碰撞和弹簧弹力的情况下&#xff0c;每个质点受重力的影响&#xff0c;所以需要对每个质点进行速度和位置的重力影响更新。 float t 0.0333f; float damping 0.99f; int[] E; float[] L; Vector3[] V; Vector3 gra…

Ubuntu系统安装mysql之后进行远程连接

1.首先要配置数据库允许进行远程连接 1.1 打开MySQL配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf1.2 修改 bind-address 行 #按i进入插入模式 bind-address 0.0.0.0 #按 Esc 键退出插入模式。 #输入:wq 然后按 Enter 保存并退…

【机器翻译】基于术语词典干预的机器翻译挑战赛

文章目录 一、赛题链接二、安装库1.spacy2.torch_text 三、数据预处理赛题数据类定义 TranslationDataset批量处理函数 collate_fn 四、编码器和解码器Encoder 类Decoder 类Seq2Seq 类注意事项 五、主函数1. load_terminology_dictionary(dict_file)2. train(model, iterator, …

windows USB 设备驱动开发- USB Type-C支持(二)

Microsoft 提供 USB Type-C 连接器系统软件接口 (UCSI) 符合规范的 ACPI 传输驱动程序。 如果你的设计包含带有 ACPI 传输的嵌入式控制器&#xff0c;请在系统的 BIOS/EC 中实现 UCSI&#xff0c;并加载随机 UCSI 驱动程序&#xff08;UcmUcsiCx.sys 和 UcmUcsiAcpiClient.sys&…

【Linux】:重定向和缓冲区

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来关于重定向和缓冲区的相关知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精…

海事无人机解决方案

海事巡察 海事巡察现状 巡查效率低下&#xff0c;存在视野盲区&#xff0c;耗时长&#xff0c;人力成本高。 海事的职能 统一管理水上交通安全和防治船舶污染。 管理通航秩序、通航环境。负责水域的划定和监督管理&#xff0c;维护水 上交通秩序&#xff1b;核定船舶靠泊安…

Spring Boot集成groovy快速入门Demo

1.什么是groovy&#xff1f; Groovy 是构建在 JVM 上的一个轻量级却强大的动态语言&#xff0c;它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。 Groovy 就是用 Java 写的&#xff0c;Groovy 语法与 Java 语法类似&#xff0c;Groovy 代码能够与 Java 代码很好地结合&…

QQ频道导航退出

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140413538 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

C#中的MD5摘要算法与哈希算法

文章目录 一、哈希算法基础二、MD5 算法原理三、MD5摘要算法四、哈希算法五、C#实现示例MD5算法示例哈希算法示例字符串MD5值对比 六、总结 一、哈希算法基础 哈希算法是一种单向密码体制&#xff0c;它将任意长度的数据转换成固定长度的字符串。这种转换是不可逆的&#xff0…

Java二十三种设计模式-工厂方法模式(2/23)

工厂方法模式&#xff1a;设计模式中的瑞士军刀 引言 在软件开发中&#xff0c;工厂方法模式是一种常用的创建型设计模式&#xff0c;它用于处理对象的创建&#xff0c;将对象的实例化推迟到子类中进行。这种模式不仅简化了对象的创建过程&#xff0c;还提高了代码的可维护性…

WordPress:无法创建新文章?创建新帖子时候页面空白

wordPress中我们新建文章的时候&#xff0c;会遇到页面空白&#xff0c;这个问题是怎么导致呢&#xff1f;我们可以打开F12开发者模式看下报错信息&#xff0c;这是一个警告信息 Warning: Creating default object from empty value in /pub 到数据库 wp_posts中查看生成了很…

SpringBoot新手快速入门系列教程十一:自动生成API文档,Springboot3.x集成SpringDoc

本次项目我们用Maven来做&#xff0c;最近发现gradle其实很多项目的支持比较差&#xff0c;所以项目还是用Maven来新建项目。对比了市面上的几种API生成第三方库&#xff0c;只有springdoc 是能够按照文档就能部署出来的。 官网&#xff1a; OpenAPI 3 Library for spring-bo…

Mac电脑下运行java命令行出现:错误: 找不到或无法加载主类

mac 电脑 问题复现 随手写了一个main方法&#xff0c;想用命令行操作 进入 BlockDemo.java 所在目录&#xff1a; wnwangnandeMBP wn % cd /Users/wn/IdeaProjects/test/JianZhiOffer/src/main/java/com/io/wn wnwangnandeMBP wn % ls -l total 16 -rw-r--r-- 1 wangnan …

Qt文件下载工具

在Qt中实现文件下载功能&#xff0c;通常可以通过多种方式来完成&#xff0c;包括使用 QNetworkAccessManager 和 QNetworkReply 类&#xff0c;或者使用更高级别的 QHttpMultiPart 类。以下是两种常见的实现方法&#xff1a; 方法1&#xff1a;使用 QNetworkAccessManager 和…

芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略

♥️作者&#xff1a;小宋1021 &#x1f935;‍♂️个人主页&#xff1a;小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识&#xff0c;和大家一起努力呀&#xff01;&#xff01;&#xff01; &#x1f388;&#x1f388;加油&#xff01; 加油&#xff01…

tessy 集成测试:小白入门指导手册

目录 1,创建集成测试模块且分析源文件 2,设置测试环境 3,TIE界面设置相关函数 4,SCE界面增加用例 5,编辑数据 6,用例所对应的测试函数序列 7,添加 work task 函数 8,为测试场景添加函数 9,为函数赋值 10,编辑时间序列的数值 11,执行用例 12,其他注意事项…