蓝桥杯单片机组省赛十二届第一场(关于矩阵,温度ds18b20,时间ds1302的学习,以及继电器等外设的综合利用)

news2024/11/25 16:54:09

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、该题目如下
  • 二、使用步骤
    • 1.矩阵键盘实现
    • 2.温度传感器ds18b20的实现
  • 总结



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

一、该题目如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析题目,具体框架是矩阵键盘伴随着数值的输出,当数值满足条件时,去加加,然后执行对应的函数即可完成题目。具体的一些模块代码如下供参考。

二、使用步骤

1.矩阵键盘实现

矩阵键盘必须要求J5中的端口插在BIN上,且当555分频器在用时矩阵键盘P3^4引脚被占用,本人就上一个实验做得频率检测导致这个bug卡了好几次
代码如下(示例):

void Scaner_key_value()
{
   R1=R2=R3=R4=1;L1=L2=L3=L4=0;
	 if((P3&0x0f)!=0x0f)
	 {
	      if(R1==0) key_value=7;
		  else if(R2==0) key_value=6;
	      else if(R3==0) key_value=5;
		  else if(R4==0) key_value=4;
		    
		  R1=R2=R3=R4=0;L1=L2=L3=L4=1;
	      if(L1==0) {key_value=key_value+0;while(L1==0);}
		  else if(L2==0) {key_value=key_value+4;while(L2==0);}
          else if(L3==0) {key_value=key_value+8;while(L3==0);}
		  else if(L4==0) {key_value=key_value+12;while(L4==0);}
				
	 }
	 if(key_value==12)
     {
		    cnt++;
			  key_value=0;
			  mnt=0;
			   dis_t_c=0;
			  if(cnt==3) cnt=0;
		 }
	  if(key_value==13)
		{
		     mnt++;
			   key_value=0;
			   if(mnt==2) mnt=0;
		
		}			
}

开始保证的左引脚置1,右引脚置0,然后检测行,然后再进行按键判断再给列数赋值。随后给予右引脚置1,左引脚置0,判断列,给予行对应的加数判断即可,此方法代码量少,但是逻辑有点复杂且防抖功能不好添加。
另外一种矩阵键盘如下,一个一个的检测代码如下:

 L1=0;
	 L2=L3=L4=1;
	 R1=R2=R3=R4=1;
	 if(R1==0)
   {
	   while(R1==0)
    {
			 key=7;
			 
	   }
	 }
   if(R2==0)
   {
	   while(R2==0)
    {
			 key=6;
			
	   }
	  }
	  if(R3==0)
   {
	   while(R3==0)
    {
			 key=5;
			 
	   }
	  }
	   if(R4==0)
   {
	   while(R4==0)
    {
			 key=4;
			
	   }
	  }
	 
		L2=0;
	 L1=L3=L4=1;
	 R1=R2=R3=R4=1;
	 if(R1==0)
   {
	   while(R1==0)
    {
			 key=11;
			 
	   }
	 }
   if(R2==0)
   {
	   while(R2==0)
    {
			 key=10;
			
	   }
	  }
	  if(R3==0)
   {
	   while(R3==0)
    {
			 key=9;
			 
	   }
	  }
	   if(R4==0)
   {
	   while(R4==0)
    {
			 key=8;
			
	   }
	  }
	 
		L3=0;
	 L2=L1=L4=1;
	 R1=R2=R3=R4=1;
	 if(R1==0)
   {
	   while(R1==0)
    {
			 key=15;
			 
	   }
	 }
   if(R2==0)
   {
	   while(R2==0)
    {
			 key=14;
			
	   }
	  }
	  if(R3==0)
   {
	   while(R3==0)
    {
			 key=13;
			 
	   }
	  }
	   if(R4==0)
   {
	   while(R4==0)
    {
			 key=12;
			
	   }
	  }
	 
		L4=0;
	 L2=L3=L1=1;
	 R1=R2=R3=R4=1;
	 if(R1==0)
   {
	   while(R1==0)
    {
			 key=19;
			 
	   }
	 }
   if(R2==0)
   {
	   while(R2==0)
    {
			 key=18;
			
	   }
	  }
	  if(R3==0)
   {
	   while(R3==0)
    {
			 key=17;
			 
	   }
	  }
	   if(R4==0)
   {
	   while(R4==0)
    {
			 key=16;
			
	   }
	  }
	 
} 

2.温度传感器ds18b20的实现

一下这些牢记

/*温度传感器要点
1.注意temp赋值前要进行初始化为0x0000。
2.注意给温度传感器Ds18b20给予初始化时,一个0xcc跳过ROM(就是跳过存储设备),一个0x44转化数据
中间给予一个延时,最好把数码管刷新放进去,然后再次初始化Ds18b20继续一个0xcc跳过存储设备,0xbc代表
着读取ds18b20中的数据。
3.最关键的一步ds18b20中的头文件onewire.h必须要将延时扩大10倍。
4.ds18b20芯片得到的数据是两个字节,从地位字节开始再到高字节介绍,且数据和位的关系如下,按下表进行转换即可
*/

分析次表的到后四位是小数部分且为0.0625的整倍数,高四位代表的正负,所以想到得到对应的温度,必须将第四位合理的去除,数字合理的放大,保留一位小数放大十倍即可。
在这里插入图片描述

代码如下(示例):

void Dis_DS18B20()
{   
	  unsigned char Hse=0,Lse=0;
	  init_ds18b20();
      Write_DS18B20(0xcc);
	  Write_DS18B20(0x44);
	  
	  Tm_delay(80);//这个延时必须加
	
	  init_ds18b20();
      Write_DS18B20(0xcc);
	  Write_DS18B20(0xbe);
	  
	  Lse=Read_DS18B20();
	  Hse=Read_DS18B20();
	 /* temp=0x0000;
	  temp=Hse;
	  temp=(temp<<8)|Lse;
	  temp=temp>>4;
	  temp=10*temp;
	  temp=temp+(Lse&0x0f)*0.625;*/
	
	 temp=0x0000;//一定要初始化不然报错
	 temp=(Lse>>4)*10+Hse*160+(Lse&0x0f)*0.625;
	 /*temp=Hse;
   temp=(temp<<8)|Lse;
	 temp=temp>>4;
	 temp=10*temp;
	 temp=temp+(Lse&0x0f)*0.625;*/
}

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

相关文章

使用Containerd搭建K8s集群【v1.25】

[toc] 一、安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 一台或多台机器,操作系统 CentOS7.x-86_x64硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多集群中所有机器之间网络互通可以访问外网,需要拉取镜像禁止swap分区二、准备环境 角色IP…

重磅新品 / 酷炫展品 / 强大生态,广和通玩转 MWC Barcelona 2023

2月27日&#xff0c;2023世界移动通信大会&#xff08;MWC Barcelona 2023&#xff09;在西班牙巴塞罗那正式开幕。全球知名移动运营商、设备制造商、技术提供商、物联网企业齐聚一堂&#xff0c;以领先的技术、创新的场景、前瞻的洞察向全行业输送最新鲜的行业观点。作为全球领…

python的opencv操作记录13——区域生长及分水岭算法

文章目录图像区域基本算法——形态学运算腐蚀与膨胀开运算与闭运算opencv中的形态学运算距离计算——distanceTransform函数连通域连通的定义计算连通域——connectedComponents连通域实验基于区域的分割区域生长算法自定义一个最简单区域生长算法实现区域分割一般区域分割open…

解决vscode无法自动更新

一&#xff0e;前言 要在&#xff56;&#xff53;&#xff43;&#xff4f;&#xff44;&#xff45;里面安装插件&#xff0c;被提示版本不匹配&#xff0c;然后得更新&#xff0c;然后我发现我的&#xff07;帮助&#xff07;菜单栏下没有检查更新&#xff0c;然后我去&…

19- CNN进行Fashion-MNIST分类 (tensorflow系列) (项目十九)

项目要点 Fashion-MNIST总共有十个类别的图像。代码运行位置 CPU: cputf.config.set_visible_devices(tf.config.list_physical_devices("CPU"))fashion_mnist keras.datasets.fashion_mnist # fashion_mnist 数据导入训练数据和测试数据拆分: x_valid, x_train…

WebAPI

WebAPI知识详解day11.Web API 基本认知作用和分类什么是DOM&#xff1f;DOM树的概念DOM对象2.获取DOM对象通过css选择器获取dom对象通过其他方法获取dom3.设置/修改DOM元素内容方法1. document.write() 方法方法2. 对象.innerText 属性方法3. 对象.innerHTML4.设置/修改DOM元素…

【TypeScript】的上手学习指南!

目录TS简介TypeScript是什么&#xff1f;为什么要推荐使用TypeScript生态支持安装TypeScriptTS简介 TypeScript是什么&#xff1f; TypeScript官网 简介&#xff1a;TypeScript是JavaScript类型的超集&#xff0c;它可以编译成纯JavaScript。TypeScript可以在任何浏览器、任何计…

JVM之执行引擎详解

1、概述javac将.java文件编译成.class文件&#xff0c;然后.class文件通过类加载子系统将字节码加载到运行时数据区&#xff0c;这时运行时数据区中的数据是java字节码&#xff0c;字节码是不能直接运行在操作系统之上&#xff0c;因为字节码指令并非等价于本地机器指令&#x…

Python练习题

作业1&#xff1a;判断一个数&#xff0c;是否是2的指数 2的指数 0000 0010 0000 0001 0000 0100 0000 0011 0000 1000 0000 0111 0001 0000 0000 1111 提示&#xff1a;所有2的指数&#xff1a;n&(n - 1) 0 exponent int(…

mybatisplus复习(黑马)

学习目标能够基于MyBatisPlus完成标准Dao开发能够掌握MyBatisPlus的条件查询能够掌握MyBatisPlus的字段映射与表名映射能够掌握id生成策略控制能够理解代码生成器的相关配置一、MyBatisPlus简介MyBatisPlus&#xff08;简称MP&#xff09;是基于MyBatis框架基础上开发的增强型工…

Linux:进程间通信

目录 进程间通信目的 进程间通信分类 管道 System V IPC POSIX IPC 什么是管道 站在文件描述符角度-深度理解管道 管道使用 管道通信的四种情况 管道通信的特点 进程池管理 命名管道 创建一个命名管道 命名管道的打开规则 命名管道通信实例 匿名管道与命名管道的…

C语言实现三子棋【详解+全部源码】

大家好&#xff0c;我是你们熟悉的恒川 今天我们用C语言来实现三子棋 实现的过程很难&#xff0c;但我们一定要不放弃 三子棋1. 配置运行环境2. 三子棋游戏的初步实现2.1 建立三子棋分布模块2.2 创建一个名为board的二维数组并进行初始化2.3 搭建棋盘3. 接下来该讨论的事情3.1 …

【微信小程序】-- 网络数据请求(十九)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

Jmeter接口测试教程之【参数化技巧总结】,总有一个是你不知道的

目录&#xff1a;导读 一、随机值 二、随机字符串 三、时间戳 四、唯一字符串UUID 说起接口测试&#xff0c;相信大家在工作中用的最多的还是Jmeter。 大家看这个目录就知道jmeter的应用有多广泛了&#xff1a;https://www.bilibili.com/video/BV1e44y1X78S/? JMeter是一个…

C#:Krypton控件使用方法详解(第十一讲) ——kryptonScrollBar

今天介绍的Krypton控件中的kryptonScrollBar。下面介绍这个控件的外观属性&#xff1a;BackColor属性&#xff1a;表示控件的背景色&#xff0c;属性值如下图所示&#xff1a;BackgroundImage属性&#xff1a;表示用于该控件的背景图像&#xff0c;属性值可以为本地导入图片。B…

final修饰符使用中遇到的一些问题

文章目录final修饰符1. final不能用来修饰构造方法2. final修饰变量的一些注意问题2.1 final修饰成员变量2.2 final修饰引用类型2.2.1 演示代码中lombok链式编程介绍final修饰符 final具有“不可改变”的含义&#xff0c;它可以修饰非抽象类、非抽象成员方法和变量。 用final…

day3 动态的web 开发一个带有Servlet(Java小程序)的webapp

文章目录对于一个动态的web应用来说&#xff0c;一个请求和响应的过程有多少个角色参与&#xff0c;角色和角色之间有多少个协议开发一个带有Servlet&#xff08;Java小程序&#xff09;的webapp&#xff08;重点&#xff09;对于一个动态的web应用来说&#xff0c;一个请求和响…

【算法经典题集】二分(持续更新~~~)

&#x1f63d;PREFACE&#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐ 评论&#x1f4dd;&#x1f4e2;系列专栏&#xff1a;算法经典题集&#x1f50a;本专栏涉及到的知识点或者题目是算法专栏的补充与应用&#x1f4aa;种一棵树最好是十年前其次是现在二分整数二分机器人…

java25种设计模式之工厂模式

Java设计模式 - 工厂模式 工厂模式是一种创建模式&#xff0c;因为此模式提供了更好的方法来创建对象。 在工厂模式中&#xff0c;我们创建对象而不将创建逻辑暴露给客户端。 例子 在以下部分中&#xff0c;我们将展示如何使用工厂模式创建对象。 由工厂模式创建的对象将是…

AI for Science系列(一) :飞桨加速CFD(计算流体力学)原理与实践

AIScience专栏由百度飞桨科学计算团队出品&#xff0c;给大家带来在AI科学计算领域中的一系列技术分享&#xff0c;欢迎大家关注和积极讨论&#xff0c;也希望志同道合的小伙伴加入飞桨社区&#xff0c;互相学习&#xff0c;一起探索前沿未知。 作为系列分享的第一篇&#xff0…