51单片机---流水灯独立按键之控制速度

2023-11-05


前言

对于某些实验室的初级考核内容,以下是代码实例

一、问题

流水灯独立按键之控制速度
用按键控制led的流水灯的流速。
要求:LED从左开始,然后左右来回流水。
定义三个独立按键,按下按键,改变流速,要求实现为0.5s,1s,3s三个档位,程序刚开启为1s档位

二、代码

代码如下(示例):

# include "reg52.h"
 #include<intrins.h>
 
 sbit k1=P3^1;
 sbit k2=P3^0;
 sbit k3=P3^2;
 
 # define led P2
 
int flag1=0; 
int flag2=0; 
int flag3=0; 
 
 void delay_ms(int i)
{
   while(i--)
   {														    
     int a=111;
	 while(a--);
   }


}

void saomiao()     //扫描按键, 
{
  
	if(flag1==0) 
		{
		    if(k1!=1)
		    delay_ms(10);
	    	if(k1==0)
			{flag1=1;flag2=0;flag3=0;/*执行函数*/}
		 	 while(!k1);                            //真的很牛逼,防止按键时直接往下走。写独立按键的时候一定不要忘记。 
	    }
	
//88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
   if(flag2==0) 
		{
		    if(k2!=1)
		    delay_ms(10);
	    	if(k2==0)
			{flag2=1;flag1=0;flag3=0;/*执行函数*/}
		 	 while(!k2);                            //真的很牛逼,防止按键时直接往下走。写独立按键的时候一定不要忘记。 
	    }

//888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
   if(flag3==0) 
		{
		    if(k3!=1)
		    delay_ms(10);
	    	if(k3==0)
			{flag3=1;flag1=0;flag2=0;/*执行函数*/}
		 	 while(!k3);                            //真的很牛逼,防止按键时直接往下走。写独立按键的时候一定不要忘记。 
	    }

 
}
/*扫描函数的想法是:第一:按下一个键后让flag1=1,之后让他一直停留在这里然后再按键的时候居胥循环直到再按下一个键使flag1=0;
 第二:不影响其他程序的进行也就是程序不会陷入该函数中一直循环! 
				*/						 
void liushuideng()
{	int i;
    led=0xfe;
    delay_ms(100);
    
	while(1)
	{ 
		//*****************
				 saomiao();
				 if(flag2==~flag2)
				  {
				  	flag2=1;
				  
				  }
			//****************
				 saomiao();
				  if(flag3==~flag3)
				  {
				  	flag3=1;
				  
				  }
		//****************
				 saomiao();
				  if(flag1==~flag1)
				  {
				  	flag1=1;
				
				  }
	    for(i=0;i<8;i++)	 
		{
			
				 
			if(flag1==1)
			  {
			  	led=_crol_(led,1);
			     delay_ms(200);
				 saomiao();
				
		
			  }
			if(flag2==1)
			  {
			  	led=_crol_(led,1);
			     delay_ms(80);
				    saomiao();
				 
			  }
			if(flag3==1)
			  {
			  	led=_crol_(led,1);
			     delay_ms(20);
				  saomiao(); 
				 
			  }
			
		}
    }
 }
 
 
void main()
{
	while(1)
	{
		saomiao();
		 if(flag1==1||flag2==1||flag3==1)
		 {
		 liushuideng();
		 }
	}
}  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机---流水灯独立按键之控制速度 的相关文章

随机推荐

  • MySQL 表锁和行锁机制

    MySQL 表锁和行锁机制 行锁变表锁 是福还是坑 如果你不清楚MySQL加锁的原理 你会被它整的很惨 不知坑在何方 没事 我来给你们标记几个坑 遇到了可别乱踩 通过本章内容 带你学习MySQL的行锁 表锁 两种锁的优缺点 行锁变表锁的原因
  • 下载好看的壁纸四个网站就够了,尤其第二个,高清免费壁纸随你挑

    壁纸作为手机电脑的第一印象 我想一张好看的壁纸可以让你的心情变得十分愉悦 每个人喜欢的壁纸类型也是不同的 有些人喜欢科技 动漫 有些人却喜欢唯美 自然 但是好看的壁纸随处都有 但未必时自己想要的哪一款 所以今天我就来给大家推荐一些可以获得大
  • 【SpringBoot】Idea中web项目上传文件相对路径问题

    项目场景 springboot开发javaweb项目 在文件上传接口中 使用transferTo方法保存文件 当采用相对路径时保存会报错 问题描述 相对路径会报一个这样的错误 java io IOException java io File
  • 怎样系统的学习 AI 绘画?模型代码案例

    怎样系统的学习 AI 绘画 学习 AI 绘画需要从以下几个方面进行系统的学习 数学基础 学习 AI 绘画需要具备一定的数学基础 包括线性代数 概率论 微积分等 这些数学知识是深度学习模型的基础 有助于理解模型的数学原理和算法细节 编程基础
  • 抽签助手

    抽签助手实现 学习记录 今天突发奇想想要尝试一波抽签助手 具体代码如下 include
  • tomcat9调优2:Tomcat线程模型分析及其性能调优

    文章目录 Tomcat线程模型分析及其性能调优 Tomcat的IO模型 tomcat设计精髓点 Tomcat调优 Tomcat线程模型分析及其性能调优 Tomcat的IO模型 Tomcat 支持的多种 I O 模型和应用层协议 Tomcat
  • 基于计算机视觉实现自动报靶系统

    基于计算机视觉实现自动报靶系统 自动报靶系统是一种通过计算机视觉技术实现的靶标自动识别和跟踪的系统 该系统可以应用于一些需要高精度打靶的场合 如射击比赛 训练等 本文将介绍如何使用MATLAB实现一个基于计算机视觉的自动报靶系统 准备工作
  • LoadRunner录制图片验证码

    LoadRunner录制图片验证码 LoadRunner自身是无法捕获到图片验证码的 但是我们可以帮助LoadRunner来实现验证码的捕获 1 图片验证码 图片验证码的产生来自服务器端 由服务器生成随机数 然后写入到图片中 虽然LR可以录
  • 恢复图像-进行反卷积和非盲去卷积恢复原始图像

    这段 MATLAB 代码实现了对添加噪声的图像进行反卷积和非盲去卷积的处理 以恢复原始图像 读取失真图像 这里是标准的 img imread image jpg 转换图像的类型为double img im2double img 计算图像的大
  • 6、SpringBoot - 日志配置

    01 项目日志格式 Spring Boot 的默认日志输出类似于以下示例 2021 12 14 22 40 14 159 INFO 20132 main com kuangstudy SpringbootApplication Starte
  • Transfomer编码器中自注意力机制、前馈网络层、叠加和归一组件等讲解(图文解释)

    Transformer中的编码器不止一个 而是由一组N个编码器串联而成 一个编码的输出作为下一个编码器的输入 如下图所示 每一个编码器都从下方接收数据 再输出给上方 以此类推 原句中的特征会由最后一个编码器输出 编码器模块的主要功能就是提取
  • CCF CSP 认证 201612-2 工资计算 C语言

    include
  • 用抽象分层的方法分析Android的渲染和显示系统

    Hello World
  • Hinton关于RBM的代码注解之(二)backpropclassify.m

    源代码 http www cs toronto edu hinton MatlabForSciencePaper html 这个是关于RBM的微调步骤的代码 代价函数是交叉熵 Version 1 000 Code provided by R
  • Springboot-aop(一)

    引入依赖
  • EfficientNet与EfficientDet论文解读

    这两项工作均来自Google Brain的大佬 EfficientDet可以看做EfficientNet的工作拓展 目前EfficientNet的代码已经开源 EfficientDet已经被复现 这两项工作的纸面效果看起来特别优秀 与其他工
  • Python3中PyMongo使用举例

    MongoDB是一个基于分布式文件存储的开源数据库 由C 语言编写 与平台无关 旨在为WEB应用提供可扩展的高性能数据存储解决方案 MongoDB是一个介于关系数据库和非关系数据库之间的产品 是非关系数据库中功能最丰富 最像关系数据库的 它
  • Bart模型应用实例及解析(二)————基于泰坦尼克号数据集的分类模型

    Bart模型应用实例及解析 二 基于泰坦尼克号数据集的分类模型 前言 一 数据集 1 数据集的获取 2 数据集变量名及意义 3 数据集处理 二 完整代码 三 代码运行结果及解析 1 数据描述性分析 2 建立Bart模型以及分析 3 各模型效
  • __HAL_TIM_SET_CAPTUREPOLARITY的巨坑

    本人在写输入捕获实验的时候使用HAL库中的函数 HAL TIM SET CAPTUREPOLARITY试图切换捕获极性 keil一直报错error expected error expected expression 原以为 HAL TIM
  • 51单片机---流水灯独立按键之控制速度

    文章目录 前言 一 问题 二 代码 前言 对于某些实验室的初级考核内容 以下是代码实例 一 问题 流水灯独立按键之控制速度 用按键控制led的流水灯的流速 要求 LED从左开始 然后左右来回流水 定义三个独立按键 按下按键 改变流速 要求实