DS18B20 与 单总线

2024-02-13 15:28
文章标签 ds18b20 单总线

本文主要是介绍DS18B20 与 单总线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学习链接:学习B站 up 主金善愚的DS18B20课程

一、单总线概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
单总线芯片,在其内部的 ROM 中都编制好了唯一的序列号(64位)。

在这里插入图片描述
在这里插入图片描述
单总线芯片在应用时对时序的要求非常高。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

二、单总线的基本操作

在这里插入图片描述

在这里插入图片描述

三、DS18B20的主要性能

在这里插入图片描述
电源电压范围:3 — 5.5 V

测量温度范围为 —55 ℃ — +125 ℃

分辨率为 9 ~ 12 位 (包括1位符号位),可由编程决定具体位数。

四、DS18B20的典型电路连接

1、外部供电模式下的单只 DS18B20 芯片的电路连接
在这里插入图片描述
2、外部供电模式下的多只 DS18B20 芯片的电路连接
在这里插入图片描述

五、读取单总线器件的ROM码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

六、读取单总线器件的ROM码

在这里插入图片描述

结论:读取的温度传感器的前56位进行 CRC 校验,与最后一个字节不匹配,但读出来的温度正确。

校验方法:

方法一:

CRC校验网址,选择
在这里插入图片描述
方法二:

C语言编写好的 CRC 代码,参考网址Dallas器件DS18B20的CRC8(x8+x5+x4+1)校验码生成代码:

#include <stdio.h>typedef unsigned char uint8_t;uint8_t dat[] = { 0x28,0xBD,0xE8,0x65,0x55,0x5F,0xE5 }; // 实际的DS18B20返回的值是7A。uint8_t  CheckCrc()
{uint8_t crc = 0, i, j;for (i = 0; i < sizeof dat / sizeof dat[0] ; i++){crc = crc ^ dat[i];for (j = 0; j < 8; j++){if (crc & 0x01) crc = (crc >> 1) ^ 0x8C;else crc >>= 1;}}return crc;
} int main()
{printf("0x%x", CheckCrc()); // 输出校验码 16进制格式return 0;
}

运行代码后,输出 0x51,与实际的 DS18B20 返回的值一致,说明读取 64 位的ROM成功。

做个总结:实验了两个程序:一个是读取并显示一个 DS18B20 读取的温度数据,第二个是(单总线)读取并显示两(三)个DS18B20读取到的温度数据。使用的单片机是两个STC12C5A60S2和STM32F103ZET6,读取一个 DS18B20 在STC12C5A60S2上成功,读取多个没有成功(基本完全按照视频中的代码)。在 STM32F103ZET6 上读取多个 DS18B20 采集的温度,没有按照视频中的代码,下载的如下链接的代码:单总线读取并显示三个DS18B20的温度数据在LCD1602上,可以很容易改在串口上进行显示。因为该程序的代码和视频中的代码思路是基本一致的,所以我尝试将其部分代码移植到STC12C5A60S2上(按照视频中的步骤),但是,没有成功。现在也不想弄了,原因是耐不下来心了。

代码均上传至资料库(STC12C5A60S2 程序中的 ESP8266 联网部分可以使用)。

这篇关于DS18B20 与 单总线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705896

相关文章

CC2652RB读取温度传感器DS18B20

DS18B20温度传感器 1. 简介 DS18B20数字温度传感器提供9-12位摄氏度温度测量数据,可编程非易失存储器设置温度监测的上限和下限,提供温度报警。DS18B20通过1-Wire®总线通信,只需要一条数据线 (和地线) 即可与处理器进行数据传输。器件可以工作在-55°C至+125°C范围,在-10°C至+85°C范围内测量精度为±0.5°C。此外,DS18B20还可以直接利用数据线供

【驱动篇】龙芯LS2K0300之单总线驱动

实验过程 实验目的: 在龙芯开发板上面使用单总线驱动DS18B20温度传感器 ① 根据原理图连接DS18B20模块 ② 将i2c0引脚的功能复用为GPIO ③ 注册字符设备,按照DS18B20的读写时序编写读写驱动接口 ④ 编写测试用例解析传感器的数值 原理图 将板子上面的GPIO48连接传感器的DAT引脚,其余引脚连接如下 然后记得在设备树中把i2c0部分代码注释掉,将PIN

DS18B20温度传感器完整使用介绍(配合51单片机)

DS18B20是一款由Maxim Integrated(原Dallas Semiconductor)生产的数字温度传感器,以其高精度、低功耗、灵活的接口方式和易于使用的特性,在各种温度监测应用中被广泛采用。 以下是DS18B20的详细介绍: 基本特性 数字输出:DS18B20直接输出数字信号,与传统的模拟温度传感器相比,它简化了与微控制器的接口设计,减少了对模数转换器(ADC)的需求。

树莓派通过C语言读取ds18b20的温度值

树莓派通过C语言读取ds18b20的温度值     对于极客们,树莓派是上等的DIY神器;对于项目开发者,树莓派也不失为一种省时、省力的明智选择。因为有好多人在玩树莓派,所以其开源的资料比较多,好多东西我们可以拿来即用,不用重复造轮子。下面,就跟我学习一下怎么在树莓派上用C语言读取ds18b20的温度值。     树莓派上的ds18b20驱动已经有人实现了,所以我们只需要去编写应用程序

【TB作品】MSP430F5529 单片机,智能温控系统,DS18B20

作品功能 本项目设计并实现了一个基于MSP430单片机的智能温控系统。系统可以实时显示当前温度,并且可以根据设置的临界值对环境进行加热或降温。主要功能如下: 实时显示当前温度。显示并调整温度临界值,临界值可在20~35摄氏度之间调节。当前温度高于(临界值+1)摄氏度时,绿灯亮,表示降温状态。当前温度低于(临界值-1)摄氏度时,加热片工作,表示加热状态。当前温度高于35摄氏度时,蜂鸣器报警。设置

ESP32使用RMT外设单总线设备驱动(WS2812/DS18B20/DHT11)

ESP32使用RMT外设单总线设备驱动(WS2812/DS18B20/DHT11) 📍相关红外遥控 (RMT)介绍:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/peripherals/rmt.html🎈相关内容参考:https://docs.espressif.com/pro

【TB作品】msp430f149单片机,读取ds18b20温度,显示到数码管,串口发送温度到电脑

功能 msp430f149单片机 读取ds18b20温度,显示到数码管,串口发送温度到电脑 部分程序 /************************************************** 程序功能:用DS18B20测量室温并在数码管上显示。* -------------------------------------------------* 测试说明:观察显

【TB作品】MSP430F5529单片机,温控小风扇,DS18B20温度读取,PWM风扇

功能 /* OLED SCL ----------P3.0 SDA ----------P3.1 VCC ----------3.3V GND ----------GND 风扇 DATA ----------P2.4 VCC ----------3.3V GND ----------GND DS18B20 DATA ----------P1.5 VCC --------

【TB作品】msp430g2553,读取ADXL345+读取DS18B20

硬件 OLED ADXL345 msp430g2553 ds18b20 功能 //OLED 接线 /* NEW P2.0 CSP2.1 DCP2.2 RESP2.3 D1 SDAP2.4 D0 */ //ADXL345 接线 //只需要接五根线,其余乱七八糟的不用接 //P1.4接SCL //P1.5接SDA //3.3接3.3V //CS接3.3V //GND接GND // //执行到

【TB作品】MSP430F149,ADC采集,光强GY-30,DS18B20温度采集

功能 读取了GY-30 DS18B20 P6.0ADC P6.1ADC 显示到了LCD12864 硬件 //GY30 //SCL–P1.0 //SDA–P1.1 //VCC–3.3V //GND–GND //ADDR–不接 //DS18B20 //DATA–P1.6 //VCC–3.3V //GND–GND //ADC //DATA–P1.6 //P6.0 P6.1 ADC输入口