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。 

二、代码:

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

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

相关文章

使用requirements.txt文件安装cuda(GPU)版本的pytorch

使用requirements.txt文件安装cuda(GPU)版本的pytorch 问题描述解决方法 问题描述 使用requirements.txt可以轻松地帮助我们配置新环境,然而,当使用requirements.txt安装pytorch时有时会出现仅能安装cpu版本pytorch的情况。 举例…

从汇编层看64位程序运行——函数的调用和栈平衡

函数调用 不知道有没有人想过一个问题:A函数调用B函数,B函数是如何知道在调用结束后回到A函数中的? 比如下面的代码,main函数调用foo。当foo执行完毕,需要执行main函数的return 0语句。但是main和foo是割裂的&#x…

SVN 分支管理深入解析

SVN 分支管理深入解析 引言 在软件开发过程中,版本控制是一个核心环节,它帮助团队有效地管理代码变更,协作开发,并维护项目历史。SVN(Subversion)作为一种流行的版本控制系统,提供了分支(Branch)功能,允许开发者在独立的线路上进行工作,而不会影响到主代码库。本文…

探索编程的多维宇宙:LangChain支持的编程范式全解析

探索编程的多维宇宙:LangChain支持的编程范式全解析 引言 在软件开发的丰富生态系统中,不同的编程范式为解决特定问题提供了独特的方法和工具。LangChain,作为一个多语言编程工具链,其设计理念在于支持多种编程范式,…

JavaWeb---HTML

一 HTML入门 1.1 HTML&CSS&JavaScript的作用 HTML 主要用于网页主体结构的搭建 CSS 主要用于页面元素美化 JavaScript 主要用于页面元素的动态处理 1.2 什么是HTML HTML是Hyper Text Markup Language的缩写。意思是超文本标记语言。它的作用是搭建网页结构&#xff0c…

.NET在工控上位机开发中有哪些成功的案例?

简述 工业自动化的浪潮正推动着传统制造业向智能化转型。在这一进程中,.NET技术以其强大的功能和灵活性,成为工控上位机开发的有力工具。本文将带您探索那些成功运用.NET技术的工控项目,展现.NET在工控领域的卓越优势。 工控领域的.NET革新 工…

Vulnhub靶场DC-3-2练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. joomla漏洞查找2. SQL注入漏洞3. 破解hash4. 上传一句话木马5. 蚁剑连接shell6. 反弹shell7. 提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-3-2.zip 介绍&#…

一文清晰了解CSS——简单实例

首先一个小技巧: 一定要学会的vsCode格式化整理代码的快捷键,再也不用手动调格式了-腾讯云开发者社区-腾讯云 (tencent.com) CSS选择器用于选择要应用样式的HTML元素。常见的选择器包括: 类选择器:以.开头,用于选择具…

React Element介绍

React Element是React中的核心概念之一,它代表了React应用中的UI元素。React Element并不是真实的DOM节点,而是一个轻量级的、不可变的、描述性的对象,它包含了创建UI所需的类型(type)、属性(props&#xf…

前端框架前置知识之Node.js:模块化、导入导出语法、包的概念、npm介绍

什么是模块化? 在Node.js中,每一个文件都被视为一个单独的模块 概念:项目是由很多个模块文件组成的 好处:提高代码复用性,按需加载,独立作用域 使用:需要标准语法导出和导入进行使用 导入导…

在pycharm 2023.2.1中运行由R语言编写的ipynb文件

在pycharm 2023.2.1中运行由R语言编写的ipynb文件 背景与目标: 项目中包含由R语言编写的ipynb文件,希望能在pycharm中运行该ipynb文件。 最终实现情况: 未能直接在pycharm中运行该ipynb文件,但是替代的实现方法有:…

对AAC解码的理解

《对 AAC 音频解码的理解》 音频编解码技术在现代数字音频处理和传输中起着至关重要的作用,而高级音频编码(Advanced Audio Coding,简称 AAC)作为一种高效的音频压缩编码标准,被广泛应用于各种音频场景,如…

自然语言处理(NLP)——法国工程师IMT联盟 期末考试题

1. 问题1 (法语)En langue arabe lcrasante majorit des mots sont forms par des combinaisons de racines et de schmes. Dans ce mcanisme... (英语)In Arabic language the vast majority(十之八九) of…

Unity3D开发之传送带实现

/// <summary> /// 传送带 直线传送带 /// </summary> public class ConveyerBelt : MonoBehaviour {public float Speed 1;protected float mspeed;protected Vector3 direction;protected Rigidbody rd;List<GameObject> Goods new List<GameObject&…

计算机网络 VPN技术

VPN (Virtual Private Network&#xff0c;虚拟专用网络&#xff09;是一种通过公用网络&#xff08;通常是因特网&#xff09;建立专用网络的技术 VPN&#xff08;Virtual Private Network&#xff0c;虚拟专用网络&#xff09;是一种通过公用网络&#xff08;如互联网&#x…

ServiceNow UI Jelly模板注入漏洞复现(CVE-2024-4879)

0x01 产品简介 ServiceNow 是一个业务转型平台。通过平台上的各个模块,ServiceNow 可用于从人力资源和员工管理到自动化工作流程或作为知识库等各种用途。 0x02 漏洞概述 由于ServiceNow的Jelly模板输入验证不严格,导致未经身份验证的远程攻击者可通过构造恶意请求利用,在…

在线图书销售管理系统设计

在线图书销售管理系统的设计是一个涉及多个模块和功能的复杂项目&#xff0c;它旨在提高图书销售的效率&#xff0c;优化库存管理&#xff0c;提升用户体验&#xff0c;以及提供数据分析支持。以下是系统设计的一些关键组成部分&#xff1a; 1. 需求分析 用户需求&#xff1a…

R语言简单介绍及零基础学习路径

R语言介绍 R语言是一种用于统计计算和数据分析的编程语言和软件环境。它最初由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建&#xff0c;如今由R核心开发团队进行维护。 R语言广泛用于学术研究、经济学、金融、统计学、生物信息学和数据科学领域。以下是对R语言的一些详…

[综述笔记]Functional neuroimaging as a catalyst for integrated neuroscience

论文网址&#xff1a;Functional neuroimaging as a catalyst for integrated neuroscience | Nature 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔…

Stable Diffusion 使用

目录 背景 最简单用法 进阶用法 高手用法 safetensor 一、概述 二、主要特点 背景 Stable Diffusion 开源后&#xff0c;确实比较火&#xff0c;上次介绍了下 Stable Diffusion 最简单的concept。今天继续介绍下&#xff0c;以Liblib 为例&#xff0c;介绍下如何使用参…