蓝桥杯篇---温度传感器 DS18B20
文章目录
- 前言
- DS18B20
- 1. DS18B20 引脚说明
- 2. 单总线通信协议
- 3. DS18B20 操作流程
- 初始化
- 写操作
- 读操作
- 4. 示例代码
- 5. 代码说明
- 6. 注意事项
- 总结
前言
以上就是今天要讲的内容,本文简单介绍了IAP15F2K61S2中温度传感器模块DS18B20的使用。
DS18B20
DS18B20 是一款数字温度传感器,采用单总线(1-Wire)通信协议。它具有以下特点:
温度范围:-55°C 到 +125°C
精度:±0.5°C(-10°C 到 +85°C)
分辨率:9 到 12 位可调
单总线接口:仅需一根数据线即可通信
供电方式:支持寄生电源或外部电源
1. DS18B20 引脚说明
VDD:电源正极(3V 到 5.5V)
VCC:芯片外部供电
VDD:芯片内部供电
VSS:接地
GND:电源地
DQ:数据线(单总线)
2. 单总线通信协议
单总线通信协议包括以下步骤:
- 初始化:主机发送复位脉冲,DS18B20 回应存在脉冲。
- ROM 命令:用于选择特定设备(如跳过 ROM 命令)。
- 功能命令:用于配置传感器或读取数据(如启动温度转换、读取温度)。
- 数据传输:主机读取或写入数据。
3. DS18B20 操作流程
初始化
- 主机拉低总线至少 480µs。
- 主机释放总线,等待 DS18B20 回应存在脉冲(60µs 到 240µs)。
- 主机检测存在脉冲。
写操作
- 主机拉低总线至少 1µs。
- 主机发送 1 位数据(拉低总线 15µs 表示写 0,拉低总线 1µs 后释放总线表示写 1)。
- 主机释放总线,等待至少 45µs。
读操作
- 主机拉低总线至少 1µs。
- 主机释放总线,等待 15µs。
- 主机读取总线状态(低电平表示 0,高电平表示 1)。
- 主机等待至少 45µs。
4. 示例代码
以下代码展示了如何在 IAP15F2K61S2 上使用 DS18B20。
#include <reg52.h>#define uchar unsigned char
#define uint unsigned intsbit DQ = P2^0; // DS18B20 数据线void Delay(uint us) {while (us--);
}void DS18B20_Init() {DQ = 1;Delay(8);DQ = 0;Delay(80); // 拉低总线至少 480µsDQ = 1;Delay(14); // 等待 DS18B20 回应存在脉冲while (DQ); // 等待 DS18B20 释放总线Delay(20);
}void DS18B20_WriteByte(uchar byte) {uchar i;for (i = 0; i < 8; i++) {DQ = 0;DQ = byte & 0x01;Delay(5); // 保持至少 15µsDQ = 1;byte >>= 1;}
}uchar DS18B20_ReadByte() {uchar i, byte = 0;for (i = 0; i < 8; i++) {DQ = 0;byte >>= 1;DQ = 1;if (DQ) byte |= 0x80;Delay(5); // 保持至少 45µs}return byte;
}void DS18B20_Start() {DS18B20_Init();DS18B20_WriteByte(0xCC); // 跳过 ROM 命令DS18B20_WriteByte(0x44); // 启动温度转换
}float DS18B20_ReadTemp() {uchar tempL, tempH;int temp;float temperature;DS18B20_Init();DS18B20_WriteByte(0xCC); // 跳过 ROM 命令DS18B20_WriteByte(0xBE); // 读取温度命令tempL = DS18B20_ReadByte(); // 读取温度低字节tempH = DS18B20_ReadByte(); // 读取温度高字节temp = (tempH << 8) | tempL; // 合并温度数据temperature = temp * 0.0625; // 转换为实际温度值return temperature;
}void main() {float temperature;while (1) {DS18B20_Start(); // 启动温度转换Delay(100000); // 等待转换完成temperature = DS18B20_ReadTemp(); // 读取温度// 在此处添加显示或处理温度的代码}
}
5. 代码说明
- DS18B20_Init():初始化 DS18B20。
- DS18B20_WriteByte():向 DS18B20 写入一个字节。
- DS18B20_ReadByte():从 DS18B20 读取一个字节。
- DS18B20_Start():启动温度转换。
- DS18B20_ReadTemp():读取温度并转换为实际温度值。
6. 注意事项
延时:确保延时准确,以满足单总线时序要求。
电源:如果使用寄生电源,需要在温度转换期间提供足够的上拉电流。
分辨率:DS18B20 的分辨率可以通过配置寄存器进行调整,默认分辨率为 12 位。
通过以上代码,你可以在 IAP15F2K61S2 上实现对 DS18B20 的温度读取操作。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了IAP15F2K61S2中温度传感器模块DS18B20的使用。
相关文章:
蓝桥杯篇---温度传感器 DS18B20
文章目录 前言DS18B201. DS18B20 引脚说明2. 单总线通信协议3. DS18B20 操作流程初始化写操作读操作 4. 示例代码5. 代码说明6. 注意事项总结 前言 以上就是今天要讲的内容,本文简单介绍了IAP15F2K61S2中温度传感器模块DS18B20的使用。 DS18B20 DS18B20 是一款数字…...
WPS或word接入智能AI
DeepSeek接入WPS 配置WPS (1)下载 OfficeAl助手插件: 插件下载地址:https://www.office-ai.cn/。 安装插件后,打开WPS,菜单栏会新增"OfficeAl助手”选项卡。 如果没有出现, 左上找到文件菜单 -> 选项 ,在…...
vue3:template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写?
问: template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写? 回答: 问: <div v-for"(item, index) in centrerTopdata.slice(0, 3)" :key"index"> div cl…...
Java练习(20)
ps:练习来自力扣 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。 class Solution {pu…...
MySQL | MySQL安装教程
MySQL | MySQL安装教程(压缩包(ZIP)安装-详细版) 🪄个人博客:https://vite.xingji.fun MySQL概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,MySQL AB公司被Sun公司收购,Sun公…...
.NET 9.0 的 Blazor Web App 项目,进度条 <progress> 组件使用注意事项
一、执行过程中,要刷新 进度条 的显示,需要 延时、释放,否则进度条不 实时 更新,最后一下到 100% // 延时,释放给前端:【必须】,否则进度条不 实时 更新,最后一下到 100await Task.D…...
李超线段树 树链剖分 学习笔记
今天学习了李超线段树。 [洛谷 P4097] 【模板】李超线段树 & [HEOI2013] Segment 刚开始学李超线段树,觉得挺简单的。其实它跟吉司机线段树有点像,只是维护的东西要少一些,并且代码更好写。 对于每个节点,考虑维护在它中点处的…...
【SpringBoot3.x+】slf4j-log4j12依赖引入打印日志报错的两种解决方法
最开始引入了1.7.5版本的slf4j-log4j依赖包,但是控制台不报错也不显示日志 在https://mvnrepository.com/找到最新的2.0.16版本之后出现报错: 进入提示的slf4j网站中可以找到从2.0.0版本开始,slf4j-log4j已经被slf4j-reload4j取代࿱…...
安装 Ollama 需要哪些步骤?(windows+mac+linux+二进制+Docker)
安装 Ollama 的步骤根据操作系统不同会有所差异,以下是针对不同操作系统的详细安装指南: Windows 系统 下载安装包:访问 Ollama 官方下载页面,下载适用于 Windows 的安装程序 OllamaSetup.exe。运行安装程序:双击下载的安装包,按照提示完成安装。默认安装路径为 C:\User…...
算法学习笔记之贪心算法
导引(硕鼠的交易) 硕鼠准备了M磅猫粮与看守仓库的猫交易奶酪。 仓库有N个房间,第i个房间有 J[i] 磅奶酪并需要 F[i] 磅猫粮交换,硕鼠可以按比例来交换,不必交换所有的奶酪 计算硕鼠最多能得到多少磅奶酪。 输入M和…...
探索DeepSeek:开源大模型领域的中国力量
在人工智能技术迅猛发展的今天,大语言模型(LLM)已成为全球科技竞争的焦点。来自中国的深度求索(DeepSeek)团队凭借其开源模型系列,正在为这一领域注入新的活力。本文将带您了解DeepSeek的技术突破、开源生态…...
372_C++_当有多个通道,开启不同告警的同一种的开关时,限制该开关的打开数量(比如视频上传开关)
GetCloudUploadNum函数 GetCloudUploadNum 函数主要用于统计和控制云端视频上传的通道数量,其主要功能如下: 功能目的// 检查每个通道的云端视频上传配置,并统计启用云端上传的通道总数 int CloudUploadNum = 0; bool InValidCloudUploadChn[MAX_CHN_NUMPARA] = {};...
【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型|Andrej Karpathy
【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型|Andrej Karpathy 大型语言模型(LLM)工作原理与使用指南核心观点模型训练三阶段1. 预训练阶段2. 后训练阶段(Post-training)3. 强化学…...
SQL自学,mysql从入门到精通 --- 第 5 天,对函数的处理
对函数的处理 新建一个成绩表 rootmysqldb 09:39: [d1]> create table score (-> name varchar(30),-> chinese int,-> math int,-> music int,-> team int,-> magic int,-> computer int-> ); Query OK, 0 rows affected (0.01 sec)rootmysqldb…...
DeepSeek R1 “顿悟时刻”(Aha Moment) 的重现与探索:基于 GRPO 的倒计时游戏训练
本文翻译整合转载于: Deepseek R1 是如何训练的Mini-R1:重现 Deepseek R1 的 “顿悟时刻” RL 教程 Deepseek R1 的发布震惊了整个行业。为什么?DeepSeek-R1 是一个开放模型,在复杂推理任务中可与 OpenAI 的 o1 相媲美,…...
【JavaScript爬虫记录】记录一下使用JavaScript爬取m4s流视频过程(内含ffmpeg合并)
前言 前段时间发现了一个很喜欢的视频,可惜网站不让下载,简单看了一下视频是被切片成m4s格式的流文件,初步想法是将所有的流文件下载下来然后使用ffmpeg合并成一个完整的mp4,于是写了一段脚本来实现一下,电脑没有配python环境,所以使用JavaScript实现,合并功能需要安装ffmpeg,…...
【线性代数】1行列式
1. 行列式的概念 行列式的符号表示: 行列式的计算结果:一个数 计算模型1:二阶行列式 二阶行列式: 三阶行列式: n阶行列式: 🍎计算行列式 计算模型2:上三角形行列式 上三角形行列式特征:主对角线下皆为0。 上三角形行列式: 化上三角形通用方法:主对角线下,…...
数据结构(考研)
线性表 顺序表 顺序表的静态分配 //线性表的元素类型为 ElemType//顺序表的静态分配 #define MaxSize10 typedef int ElemType; typedef struct{ElemType data[MaxSize];int length; }SqList;顺序表的动态分配 //顺序表的动态分配 #define InitSize 10 typedef struct{El…...
安装WPS后,导致python调用Excel.Application异常,解决办法
在使用xlwings编辑excel文件时,默认调用的是“Excel.Application”,如果安装过wps,会导致该注册表为WPS,会导致xlwings执行异常 因为安装过WPS,导致与Excel不兼容的问题,想必大家都听说过。有些问题及时删…...
【transformers.Trainer填坑】在自定义compute_metrics时logits和labels数据维度不一致问题
问题描述 我在使用 transformers.Trainer 训练我的模型时,我自定义了 compute_loss 函数和compute_metrics函数,我的模型是一个简单的二分类模型。 在自定义 compute_loss 时这样写的: def compute_loss(self, model, inputs, return_outp…...
Django创建超管用户
在 Django 中创建超级用户(superuser)可以通过命令行工具 createsuperuser 完成。以下是具体步骤: 1. 确保已进行数据库迁移 在创建超级用户前,确保已执行数据库迁移: python manage.py migrate 2. 创建超级用户 …...
vue3实战-----集成sass
vue3实战-----集成sass 1.安装2.使用3.全局样式文件中不能使用变量 1.安装 在使用scss之前需要安装sass和sass-loader两个插件。 2.使用 安装好之后就可以在组件中使用scss了。需要加上lang“scss”。 注意:scss中变量用$,less中变量用。 3.全局样式文件中不能使用变量 …...
二分查找sql时间盲注,布尔盲注
目录 一:基础知识引导 数据库:information_schema里面记录着数据库的所有元信息 二,布尔盲注,时间盲注 (1)布尔盲注案例(以sqli-labs第八关为例): (2&am…...
计算机网络-MPLS转发原理
在上一篇关于 MPLS 基础的文章中,我们了解了 MPLS 的基本概念、术语以及它在网络中的重要性。今天,我们将深入探讨 MPLS 转发的原理与流程,帮助大家更好地理解 MPLS 是如何在实际网络中工作的。 一、MPLS 转发概述 MPLS 转发的本质是将数据…...
【设计模式】【行为型模式】职责链模式(Chain of Responsibility)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
【H5自适应】高端科技类pbootcms网站模板 – 三级栏目、下载与招聘功能支持
(H5自适应)高端大气的科技类pbootcms网站模板 带三级栏目、下载和招聘功能 后台地址:您的域名/admin.php 后台账号:admin 后台密码:123456 为了提升系统安全,请将后台文件admin.php的文件名修改一下。修改之后,后台…...
【Java 面试 八股文】框架篇
框架篇 1. Spring框架中的单例bean是线程安全的吗?2. 什么是AOP?3. 你们项目中有没有使用到AOP?4. Spring中的事务是如何实现的?5. Spring中事务失效的场景有哪些?6. Spring的bean的生命周期?7. Spring中的…...
原型模式详解(Java)
原型模式(Prototype Pattern),作为一种极具代表性的创建型设计模式,其核心思想在于通过复制,亦即克隆现有的对象,来达成创建新对象的目的,而非依赖传统的构造函数途径。这一模式巧妙地基于现有对…...
TCP拥塞控制机制
TCP拥塞控制机制是TCP协议中至关重要的一部分,用于防止网络出现拥塞,保证网络的高效、稳定运行 拥塞控制的基本概念 拥塞:在计算机网络中,拥塞是指当网络中存在过多的分组时,网络性能下降的现象,如延迟增…...
自动化UI测试 | 什么是测试驱动开发(TDD)和行为驱动开发(BDD)?有何区别?
TDD(测试驱动开发)和BDD(行为驱动开发)是两种独特的软件开发技术,它们在测试的内容和方式上有所不同。尽管名称相似,但服务于不同的目的。 什么是TDD? TDD代表测试驱动开发。它是一个过程&…...
