DS18B20温度传感器

news2024/10/7 10:21:14

DS18B20简介

DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线(单总线)”接口的温度传感器
这种一线总线就是 三线制 SPI

DS18B20的 配置寄存器:

TM 是测试位,出厂设置就被设置为0,不需要改动,
R1、R0 是精度位,为设置1
0 1 1 1 1 1 1 1

温度寄存器格式

读取时,低位在前,高位在后,
正温度 高位前5位为 0,负温度 高位前5位为 1
’负温度 取反后 + 1*0.0625 可得到实际温度
如何转换?
以+85度 为例:
数据输出85°,0550h 换算10进制为1360,将这个值*0.0625 = 85度
负温度:-0.5
1111 1111 1111 1000 取反  0000 0000 0000 0111
换算十六进制 0x0007, 加1  0x0008,8*0.0625= 0.5 ,加上符号 -0.5°

DS18B20 时序包括:

初始化时序

写0 、1 时序

读0、1时序

DS18B20发送所有的命令和数据都是字节的低位在前


(1)单总线初始化时序

定义初始化函数:

1、主机输出低电平

2、保持低电平480us~960us

3、释放总线,为高电平

4、拉高电平延时15~60us

// 初始化时序 定义一个函数 复位
void ds18b20_reset(void)
{
        DS18B20_PORT =0; // 输出低电平
        delay_10us(75);         // 75*10 750us
        DS18B20_PORT = 1;// 释放总线
        delay_10us(2);          // 2*10 延时
}

(2)写时序

写时序包括写1 或 0 ,写时序至少60us,2次独立的写时序需要1us 恢复,

两种写0 写1 都是总线拉低位

写0,主机拉低,延时15us,45us 采样

写1 ,主机输出低电平,延时2us,然后释放总线拉高

(3)读时序

单总线流程

复位→发 SKIP ROM 命令(0XCC)→发开始转换命令(0X44)→延时→复位→发送 SKIP ROM 命令(0XCC)→发读存储器命令 (0XBE)→连续读出两个字节数据(即温度)→结束


软件编程:


// 初始化函数
u8 ds18b20_init(void)
{
    ds18b20_reset();
    return ds18b20_check();
}

// 复位
void ds18b20_reset(void)
{
    DS18B20_PORT=0; //拉低 DQ
    delay_10us(75); //拉低 750us
    DS18B20_PORT=1; //DQ=1
    delay_10us(2);  //20US
}

// 检测ds18b20 是否存在
u8 ds18b20_check(void)
{
    u8 time_temp=0;
    
    while(DS18B20_PORT&&time_temp<20) //等待 DQ 为低电平
    {
        time_temp++;
        delay_10us(1);
    }
    if(time_temp>=20)return 1; //如果超时则强制返回 1
    else time_temp=0;
    
    while((!DS18B20_PORT)&&time_temp<20) //等待 DQ 为高电平
    {
        time_temp++;
        delay_10us(1);
    }
    if(time_temp>=20)return 1; //如果超时则强制返回 1
    return 0;
}


// 温度读取函数
float ds18b20_read_temperture(void)
{
    float temp;
    u8 dath=0;
    u8 datl=0;
    u16 value=0;
    ds18b20_start();//开始转换
    ds18b20_reset();//复位
    ds18b20_check();
    ds18b20_write_byte(0xcc);//SKIP ROM
    ds18b20_write_byte(0xbe);//读存储器
    datl=ds18b20_read_byte();//低字节
    dath=ds18b20_read_byte();//高字节
    value=(dath<<8)+datl;//合并为 16 位数据
    if((value&0xf800)==0xf800)//判断符号位,负温度
    {
        value=(~value)+1; //数据取反再加 1
        temp=value*(-0.0625);//乘以精度
    }
    else //正温度
    {
        temp=value*0.0625;
    }
    return temp;
}

// 转换温度
void ds18b20_start(void)
{
    ds18b20_reset();//复位
    ds18b20_check();//检查 DS18B20
    ds18b20_write_byte(0xcc);//SKIP ROM
    ds18b20_write_byte(0x44);//转换命令
}

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

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

相关文章

linux————ceph分布式部署

目录 一、概述 特点 1、统一存储 2、高扩展性 3、可靠性强 4、高性能 组件 1、Monitor 2、OSD 3、MOD 4、Objet 5、PG 6、RADOS 7. Libradio 8. CRUSH 9. RBD 10. RGW 11. CephFS 架构图 二、准备工作 三、ceph安装 创建集群目录 修改配置文件 安装 初…

数据结构上机1

1、题目&#xff1a; 将1~10存入数组a[10]&#xff0c;并将其逆序输出 #define _CRT_SECURE_NO_WARNINGS 1 //(1) 将1~10存入数组a[10]&#xff0c;并将其逆序输出#include <stdio.h>int main() {int a[10];// 将1到10存入数组a[10]for (int i 0; i < 10; i){a[i] i…

[硬件基础]-快速了解I2C串行通信协议

快速了解I2C串行通信协议 文章目录 快速了解I2C串行通信协议1、硬件接口2、数据帧3、数据操作4、时钟拉伸&#xff08;Clock Stretching&#xff09;5、总线仲裁6、权衡&#xff1a;功率与速度7、总结 内部集成电路协议&#xff08;Inter-Integrated Circuit Protocol&#xff…

TS编译选项——TS代码错误不生成编译文件

一、TS不生成编译文件 在tsconfig.js文件中配置noEmit属性 {"compilerOptions": {// outDir 用于指定编译后文件所在目录"outDir": "./dist", // 将编译后文件放在dis目录下// 不生成编译后的文件"noEmit": true,} } 二、TS代码错…

看到一个外贸经典案例, 分享一下

最近看到一个经典案例&#xff0c;案例可能没有多少新奇&#xff0c;但是大家的评论以及给出的解决方案却能给我们很多启发&#xff0c;一个事情要从多方面去进行假设然后一一排除去找到最合适的解决方法&#xff0c; 下面&#xff0c;让我们一起来看看这个外贸小伙伴遇到的问…

《你好,C语言》:从另一个视角学习并重新审视C语言的意义

《你好&#xff0c;C语言》&#xff1a;从另一个视角学习并重新审视C语言的意义 尽管C语言诞生了这么多年&#xff0c;但是它依然活跃在开发者一线&#xff0c;不可否认的是C语言的确有它独特的魅力。本文将从一个全新的视角&#xff0c;重新带领大家学习领悟C语言的奥秘&#…

[XR-FRAME] 1.O3 文档导览 || XR-FRAME / 有点寡淡,加上图像

开始 | 微信开放文档 文档导览 - XR-FRAME / 有点寡淡&#xff0c;加上图像 。 文档导览&#xff0c;知识点整理。 加入纹理 &#xff1a; 新学习标签&#xff1a; <xr-assets bind:progress"handleAssetsProgress" bind:loaded"handleAssetsLoaded…

TS编译选项——编译TS文件同时对JS文件进行编译

一、允许对JS文件进行编译 我们在默认情况下编译TS项目时是不能编译js文件的&#xff0c;如下图中的hello.js文件并未编译到dist目录下&#xff08;这里配置了编译文件放到dist目录下&#xff09; 如果我们想要实现编译TS文件同时对JS文件进行编译&#xff0c;就需要在tsconfi…

GIS基础教程之坐标系

本教程从以下几个方面入手&#xff1a; 坐标系的基本概念 地理坐标系 投影坐标系 如何选择坐标系 根据研究区域大小 根据研究目的&#xff08;等角&#xff1f;等面积&#xff1f;等距离&#xff1f;其他&#xff09; 推荐一个在线坐标系选择网站 GIS坐标系几种情况 数…

【dbeaver】win环境的kerberos认证和Clouders集群中Kerberos认证使用Dbeaver连接Hive和Phoenix

一、下载驱动 cloudera官网 1.1 官网页面下载 下载页面 的Database Drivers 挑选比较新的版本即可。 1.2 集群下载 Hive可能集群没有驱动包。驱动包名称&#xff1a;HiveJDBC42.jar。41结尾的包也可以使用的。注意Jar包的大小一定是十几MB的。几百KB的是thin包不可用。 …

nginx(七十九)nginx与tls/ssl续

一 nginx与tls/ssl续 说明&#xff1a; 本文是基于tls/ssl学习之后,对之前所写tls/ssl博客的补充,重复的不再啰嗦curve: [椭圆] 曲线补充&#xff1a; 会不定期的补充教育&#xff1a; 解决问题为出发点,不要停留在理论上​遗留&#xff1a; wiresahrk分析TLS 1.2 1.3 握手各…

win11系统固定到快速访问的文件夹无法调整顺序的问题

最近在使用win11系统时&#xff0c;固定到快速访问的文件夹无法调整顺序。网上搜了一大圈没有对应的解决方法&#xff0c;柳暗花明&#xff0c;在博主yin0hao的一篇文章中找到了类似的&#xff0c;跟着做了一下&#xff0c;结果问题也解决了。在此记录。 在文件资源管理器地址…

关于10万并发压测时弹性扩容失效问题回答

之前压测过2万用户在30秒内每个用户每秒5次请求&#xff0c;OPS大概在3千左右&#xff0c;但是弹性伸缩虽然在扩容预期值的时候很给力&#xff0c;也能将新加的服务器添加到负载均衡中&#xff0c;但是当cpu使用率超过80%的时候&#xff0c;我其实是有配置报警任务的&#xff0…

MySQL:基础操作(1)

下载配置mysql MySQL&#xff1a;码包安装mysql&#xff08;5.6.51&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/133186897?spm1001.2014.3001.5501 初始登录MySQL mysql -u 用户名 [-p] 一开始什么都没设置 mysql…

MIPI协议介绍-CPHY

MIPI协议概述 MIPI(Mobile Industry Processor Interface): 是MIPI联盟发起为移动应用处理器制定的开放标准.MIPI接口协议层主要包括CSI和DSI两种,其中CSI主要用于图像输出&#xff0c;如图像传感器等&#xff1b; DSI主要用于图像输入&#xff0c;如屏幕显示器等.对于camera而…

AUTOSAR扫盲贴--不是黑神话【基本概念和方法论】

猴子纵有72搬变化,也跳不出如来的手掌 目录 1. 引言 2. AUTOSAR的基本概念 2.1. AUTOSAR的架构和组成部分 2.2. AUTOSAR的规范和

验证和观察Activity生命周期【Intent跳转】

创建测试项目&#xff0c;验证和观察Activity生命周期&#xff0c;使用Intent实现Activity之间的跳转&#xff1a; 1、创建TestActivity项目&#xff1b; 2、创建SecondActivity及相应布局&#xff1b; 3、在MainActivity和SecondActivity中重写onStart()、onResume()等生命…

Momentum Contrast for Unsupervised Visual Representation Learning 论文学习

1. 解决了什么问题&#xff1f; 非监督学习在自然语言处理非常成功&#xff0c;如 GPT 和 BERT。但在计算机视觉任务上&#xff0c;监督预训练方法要领先于非监督的方法。这种差异可能是因为各自的信号空间不同&#xff0c;语言任务有着离散的信号空间&#xff08;单词、短语等…

机器学习总结

对以下文章机器学习总结 什么是深度学习?最易懂的机器学习入门文章-CSDN博客 人工智能和机器学习之间的关系 人工智能是一个最宽泛的概念&#xff0c;是一个研究领域&#xff0c;同时也是一个实现目标&#xff0c;而机器学习则是实现这一目标的一类方法。深度学习只是机器学…

N9000A 安捷伦Agilent信号分析仪

181/2461/8938利用先进的低成本信号分析工具&#xff0c;轻松完成基本的信号表征 借助可选的内置跟踪发生器&#xff0c;可以执行经济高效的激励响应测量 通过 X 系列测量应用软件增添重要功能 可以在射频和微波教育实验室中与培训套件结合使用&#xff0c;通过实践练习加深…