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

相关文章

51单片机-第十一节-DS18B20温度传感器(One_Wire单总线)

一、DS18B20温度传感器介绍: DS18B20是一种数字温度传感器。 测温范围:-55C - +125C 通信接口:1-Wire(单总线) 二、引脚及应用电路: 很简单,电源,接地,通讯接口。        三、内部结构: 总图: (1)备用电源 (2)器件地址 (3)控制器 (4)存储器 (5)存储器内部: B1,B2存储最低有效温度和最高有效温度。

Linux驱动开发基础(DS18B20温度模块)

所学来自百问网 目录 1.DS18B20 简介 2.硬件设计 3.软件设计 3.1 存储器介绍 3.2 通信时序 3.2.1 初始化时序 3.2.2 写时序 3.2.3 读时序 3.3 常用命令 4. 示例代码 4.1 驱动代码 4.2 应用代码 4.3 Makefile 4.4 实验效果 1.DS18B20 简介 DS18B20 温度传感器具有线路简单、

基于DS18B20的温度检测

前言         DS18B20是DALLAS半导体公司生产的单总线数字温度传感器,其输出的是数字信号,具有体积小,功耗低,抗干扰能力强,精度高的特点。         温度范围-55摄氏度至+125摄氏度,在-10摄氏度至+85摄氏度可以达到不超过 0.5摄氏度的误差。单端口节省FPGA接口资源。传感器内部含EEPROM内部存储温度阈值,测量分辨率,系统掉电保护数据。 正文

《ZigBee开发笔记》第五部分 外设篇 - 协议栈实验 第1章 CC2530温度传感器DS18B20

1实验目的 掌握 ZStack 的工作原理;知道如何添加 DS18B20 驱动到协议栈上;知道如何在协议栈上读取、发送、接收温度。 2实验设备 硬件:PC 机一台; ZB2530(底板、核心板、仿真器、USB 线、OLCD) 两套 ;DS18B20 一个 软件:win7 系统,IAR 8.20 集成开发环境、串口助手 3实验相关电路图 图 1 4实验分析 注意:本实验是以点

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