单片机LED流水灯的演变过程

news2024/11/13 13:02:26

文章目录

  • 前言
  • 一、代码的重要三部曲
  • 二、使用步骤
    • 1.LED 过程
  • 三、几种流水灯方式
    • 1.循环移位
    • 2.数组
    • 3.移位运算符“>>”、“<<”
    • 4. 位操作
  • 四、效果图
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

课程需要:


提示:以下是本篇文章正文内容,下面案例可供参考

一、代码的重要三部曲

1.头文件
#include <reg51.h>
2.主函数
void main()
{
	while(1){

	}
}
3.死循环

二、使用步骤

1.LED 过程

代码如下(示例):

#include <reg51.h>  //1.头文件

sbit led0 = P1^0;
sbit led1 = P1^1;
sbit led2 = P1^2;
sbit led3 = P1^3;
sbit led4 = P1^4;
sbit led5 = P1^5;
sbit led6 = P1^6;
sbit led7 = P1^7;



unsigned char ta[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void delay(unsigned int ms)
{
        unsigned int i;
        i=ms;
        while(i--);
}

//#include <xxx.h>
/*

目标 P1.0  闪烁

高电平驱动

0000 0001   0X01
0000 0010   0X02
0000 0100   0X04
0000 1000   0X08
0001 0000   0X10
0010 0000   0X20
0100 0000   0X40
1000 0000   0X80


P1=~ta[i];
低电平驱动

1111 1110   0XFE
1111 1101   0XFD
1111 1011   0X0B
1111 0111   0X07
1110 1111   0XEF
1101 1111   0XDF
1011 1111   0XBF
0111 1111   0X7F

*/
void main()  //2.主函数
{
    char i;// -128  -  127
//    unsigned char t; // 0-255
//    int i;  //-32768 -32767  
//    unsigned int i;//0-65535
   
    //死循环上面的代码只执行一次
    //设备硬件初始化
    while(1)//3.死循环 
    {
    // 死循环里面的代码就反复执行
        
//       led0=1;  //1us
//       led1=0;led2=0; led3=0; led4=0; led5=0; led6=0; led7=0;   
       //延时
//        P1=0X01;  // 0000 0001
//        delay(1000);
//        P1=0X02;  // 0000 0010
        
//       led0=0;  //1us
//       led1=1;led2=0; led3=0; led4=0; led5=0; led6=0; led7=0;  
        //延时
//        delay(1000);
//        i=1000;
//        while(i--);
        
        for(i=0;i<8;i++){
        
            P1=ta[i];
         
            delay(60000);
        }
    
    }
}

三、几种流水灯方式

1.循环移位

#include <intrins.h>		//包含移位函数_crol_(  )的头文件

P1=_crol_(P1,1) ;   // 函数_crol_(P1,1)把P1中的数据循环左移1位

0000 0001  左移一次   0000 0010

1000 0000  再左移一次   0000 0001   区别于第三种方法

2.数组

上面已经介绍

unsigned char ta[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

.....
        for(i=0;i<8;i++){
        
            P1=ta[i];
         
            delay(60000);
        }

3.移位运算符“>>”、“<<”

temp=0x01;			//左移初值赋给temp
0000 0001   0000 0010  左移是将高位丢掉,低位补0

1000 0000

0000 0000  最后会变成全零 ,又需要重新赋值

temp=0x01;			//左移初值赋给temp

4. 位操作

上面也讲了

sibt led0 =P1^0;

一位一位给

四、效果图

在这里插入图片描述

总结

很全面的流水灯操作

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

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

相关文章

获取Book里所有sheet的名字,且带上超链接

应用背景&#xff1a; 当一个excel有很多sheet的时候&#xff0c;来回切换sheet会比较复杂&#xff0c;所以我希望excel的第一页有目录&#xff0c;可以随着sheet的增加&#xff0c;减少&#xff0c;改名而随时可以去更新&#xff0c;还希望有超链接可以直接跳到该sheet。 可以…

EDR下的线程安全

文章目录 前记进程断链回调执行纤程内存属性修改early birdMapping后记reference 前记 触发EDR远程线程扫描关键api&#xff1a;createprocess、createremotethread、void&#xff08;指针&#xff09;、createthread 为了更加的opsec&#xff0c;尽量采取别的方式执行恶意代…

Web自动化测试:如何生成高质量的测试报告

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 运行了所有测试用例&#xff0c;控制台输入的结果&#xff0c;如果很多测试用例那也不能够清晰快…

C语言----strcpy和strcat的使用和模拟实现

一&#xff0c;strcpy()函数 strcpy() 函数是 C语言中一个非常重要的字符串处理函数&#xff0c;其功能是将一个字符串复制到另一个字符串中。该函数原型如下&#xff1a; char*strcpy(char*dest,const char*src) 其中&#xff0c;dest 表示目标字符串&#xff0c;即将被复制到…

AttributeError: ‘_MSDataLoaderIter‘ object has no attribute ‘_put_indices‘

问题描述 复现代码过程中遇到错误&#xff1a;AttributeError: _MSDataLoaderIter object has no attribute _put_indices 解决方案 出错的原因是代码中使用了不存在的属性"_put_indices"。这个错误可能与你使用的版本不兼容有关。在pytorch1.x版本中&#xff0c;&q…

江苏开放大学2023年春《液压与气压传动060246》第2形考作业占形考成绩的25%参考答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 电大搜题 多的用不完的题库&#xff0c;支持文字、图片搜题&am…

Unable to authenticate, need: BASIC realm=“Sonatype Nexus Repository Manager“

问题 使用公司的私有源&#xff0c;执行 npm i 的时候突然报错了&#xff1a; 解决 执行命令 npm config list找到 .npmrc 去掉对应的这一行即可&#xff0c;或者使用 nrm 工具执行 nrm del xxx 删掉私有源&#xff0c;然后在添加私有源也可。可以参考我这篇&#xff1a;使…

七个项目管理经典案例分析

案例一 赵晓东是海正公司的员工&#xff0c;最近感到很烦恼。公司签下了一份价值超过100万的合同&#xff0c;由于双方老板关系密切&#xff0c;都希望项目能够尽快启动&#xff0c;所以在签订合同时没有举行正式的签字仪式。合同签署后&#xff0c;公司老总立即指定赵晓东和其…

【C++】虚拟继承 组合

目录 一、虚拟继承 &#x1f31f;【非虚拟内存分布】 &#x1f31f;【虚拟继承内存分布】 &#x1f31f;【虚拟继承读取】 &#x1f31f;【练习检验】 &#x1f31f;【继承的总结和反思】 二、组合 &#x1f31f;【继承和组合】 &#x1f31f;【前言回顾】 上一篇文章我们…

计算机程序的编译和链接

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

day51 动态规划part8

139. 单词拆分 中等 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 难点&#xff1a;很难想到要用完…

【VALL-E-02】核心原理

本文系个人知乎专栏文章迁移 VALL-E 网络是GPT-SOVITS很重要的参考 知乎专栏地址&#xff1a; 语音生成专栏 相关文章链接&#xff1a; 【VALL-E-01】环境搭建 【VALL-E-02】核心原理 【参考】 【1】Neural Codec Language Models are Zero-Shot Text to Speech Synthesiz…

【MATLAB源码-第168期】基于matlab的布谷鸟优化算法(COA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 布谷鸟优化算法&#xff08;Cuckoo Optimization Algorithm, COA&#xff09;是一种启发式搜索算法&#xff0c;其设计灵感源自于布谷鸟的独特生活习性&#xff0c;尤其是它们的寄生繁殖行为。该算法通过模拟布谷鸟在自然界中…

总结虚函数表机制——c++多态底层原理

前言&#xff1a; 前几天学了多态。 然后过去几天一直在测试多态的底层与机制。今天将多态的机制以及它的本质分享给受多态性质困扰的友友们。 本节内容只涉及多态的原理&#xff0c; 也就是那张虚表的规则&#xff0c;有点偏向底层。 本节不谈语法&#xff01;不谈语法&#x…

Redis中RDB的dirty机制和AOF中的后台重写机制

RDB的dirty计数器和lastsave属性 服务器除了维护saveparams数组之外&#xff0c;还维持着一个dirty计数器,以及一个lastsave属性: 1.dirty计数器记录距离上一次成功执行SAVE命令或者BGSAVE命令之后&#xff0c;服务器对数据库状态(服务器中的所有数据库)进行了多少次修改(包括…

2.4 如何运行Python程序

如何运行Python程序&#xff1f; Python是一种解释型的脚本编程语言&#xff0c;这样的编程语言一般支持两种代码运行方式&#xff1a; 1) 交互式编程 在命令行窗口中直接输入代码&#xff0c;按下回车键就可以运行代码&#xff0c;并立即看到输出结果&#xff1b;执行完一行…

YOLOv5从入门到入土!(一)训练教程

一、下载 代码地址&#xff1a;https://github.com/ultralytics/yolov5 前往YOLOv5官方github&#xff0c;按照图中步骤下载代码及预训练权重。 二、训练 将下载的预训练权重路径填入train.py的weights参数中&#xff0c;并补全其余必要文件。 关于data.yaml看往期教程&#x…

fifo ip核 ————读写时钟同步

1.原理 timescale 1ns/1ns module tb_fifo();reg sys_clk ; reg sys_rst_n ; reg [7:0] pi_data ; reg rd_req ; reg wr_req ; reg [2:0] cnt;wire empty ; wire full ; wire [7:0] po_data ; wire [7:0] usedw ;initial begins…

下载网页上的在线视频 网络视频 视频插件下载

只需要在浏览器上安装一个插件&#xff0c;就可以下载大部分的视频文件&#xff0c;几秒到一两个小时的视频&#xff0c;基本都不是问题。详细解决如下&#xff1a; 0、因为工作需要&#xff0c;需要获取某网站上的宣传视频&#xff0c;我像往常一样&#xff0c;查看视频的url…

VUE:内置组件<Teleport>妙用

一、<Teleport>简介 <Teleport>能将其插槽内容渲染到 DOM 中的另一个位置。也就是移动这个dom。 我们可以这么使用它: 将class为boxB的盒子移动到class为boxA的容器中。 <Teleport to".boxA"><div class"boxB"></div> &…