DS18B20温度传感器

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 750usDS18B20_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; //拉低 DQdelay_10us(75); //拉低 750usDS18B20_PORT=1; //DQ=1delay_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; //如果超时则强制返回 1else time_temp=0;while((!DS18B20_PORT)&&time_temp<20) //等待 DQ 为高电平{time_temp++;delay_10us(1);}if(time_temp>=20)return 1; //如果超时则强制返回 1return 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 ROMds18b20_write_byte(0xbe);//读存储器datl=ds18b20_read_byte();//低字节dath=ds18b20_read_byte();//高字节value=(dath<<8)+datl;//合并为 16 位数据if((value&0xf800)==0xf800)//判断符号位,负温度{value=(~value)+1; //数据取反再加 1temp=value*(-0.0625);//乘以精度}else //正温度{temp=value*0.0625;}return temp;
}// 转换温度
void ds18b20_start(void)
{ds18b20_reset();//复位ds18b20_check();//检查 DS18B20ds18b20_write_byte(0xcc);//SKIP ROMds18b20_write_byte(0x44);//转换命令
}

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

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

相关文章

企业架构LNMP学习笔记61

Nginx作为tomcat的前段反向代理&#xff1a; 在实际业务环境中&#xff0c;用户是直接通过域名访问&#xff0c;基于协议一般是http、https等。默认tomcat运行在8080端口。一般会通过前端服务器反向代理到后端的tomcat的方式&#xff0c;来实现用户可以通过域名访问tomcat的we…

微信收款码费率0.38太坑了

作为一个有多年运营经验的商家&#xff0c;我本人在申请收款功能时曾经走过了不少弯路。我找遍了市面上的知名的支付公司&#xff0c;但了解到的收款手续费率通常都在0.6左右&#xff0c;最低也只能降到0.38。这个过程吃过不少苦头。毕竟&#xff0c;收款功能是我们商家的命脉&…

AI聊天ChatGPT系统源码卡密验证开源版

ChatGPT卡密验证版源码是一个基于PHP7.4和MySQL5.6的聊天AI源码&#xff0c;它不仅支持暗黑模式、反应速度极快&#xff0c;而且充值方面采用后台生成卡密方式&#xff0c;方便快捷&#xff0c;如果您有能力将其接入在线支付&#xff0c;即可进一步拓展充值方式&#xff0c;为更…

KMeans算法全面解析与应用案例

目录 一、聚类与KMeans介绍聚类的基础概念KMeans算法的重要性 二、KMeans算法原理数据集和特征空间距离度量算法步骤 三、KMeans案例实战案例背景&#xff1a;客户细分数据集说明Python实现代码输出与解释 四、KMeans的优缺点优点计算效率高算法简单易于实现 缺点需要预设K值对…

一、机器学习基础知识:基本概念与Python开发环境

文章目录 1、机器学习的不同类型1.1 监督学习1.2 无监督学习1.3 强化学习 2、Python开发环境2.1 Python第三方库2.2 AnacondaPycharm集成开发环境 1、机器学习的不同类型 机器学习属于人工智能的一个分支&#xff0c;专门用于对数据进行自动分析以发现相关规律&#xff0c;从而…

视频监控/视频汇聚/安防视频监控平台EasyCVR配置集群后有一台显示离线是什么原因?

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…

芯片验证就是一次旅行

如果你国庆希望去一个你不曾去过的城市旅行&#xff0c;比如“中国苏州”。对游客来说&#xff0c;它是个蛮大的城市&#xff0c;有许多景点可以游玩&#xff0c;还有许多事情可以做。但实际上&#xff0c;即使最豪也最清闲的游客也很难看苏州的所有方方面面。同样的道理也适用…

肖sir__mysql中数据库后端无法展示

mysql中数据库后端无法展示&#xff1a; 错误现象 解决方法&#xff1a; mysql中数据库后端无法展示&#xff1a;my.cnf (5,7数据库) 在 mysql 配置文件中加入&#xff1a; sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 或者重启数据库

Android Kotlin 基础详解

1,基础语法 1.1 可变变量与不可变变量 可以多次赋值的变量是可变变量&#xff0c;用关键字var表示&#xff1a; var <标识符> : <类型> <初始化值> 注意&#xff0c;在kotlin中成员变量不会赋默认值&#xff0c;不像java一样&#xff0c;必须手动添加默…

Android12之容器类SortedVector、KeyedVector、Vector、VectorImpl总结(一百六十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

「大数据-2.1」HDFS集群启停命令

目录 一、HDFS集群一键启停脚本 1. HDFS集群的一键启动脚本 2. HDFS集群的一键关闭脚本 二、单进程启停 1. hadoop-daemon.sh脚本 2. hdfs脚本 三、总结 1. 一键启停脚本 2. 独立进程启停 一、HDFS集群一键启停脚本 Hadoop HDFS组件内置了HDFS集群的一键启停脚本。 1. HDFS集群…

ubuntu20.04 jammy 安装ros2

ubunut22.04 jammy&#xff08;5.15&#xff09; ros2版本: humble 安装参考&#xff1a; Ubuntu (Debian packages) — ROS 2 Documentation: Humble documentationl 按照官方给的操作指南进行操作即可&#xff0c;到安装软件包的时候&#xff0c;若只为开发&#xff0…

【LeetCode热题100】--56.合并区间

56.合并区间 排序&#xff1a; 如果按照区间的左端点排序&#xff0c;那么在排完序的列表中&#xff0c;可以合并的区间一定是连续的&#xff0c;如下图所示&#xff0c;标记为蓝色、黄色和绿色的区间分别可以合并为一个大区间&#xff0c;它们在排完序的列表中是连续的 算法&a…

安科瑞AMC16-DETT铁塔jizhan直流电能计量模块,直流计量用

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 9月20日&#xff0c;在杭州亚运会火炬传递的现场&#xff0c;不少人通过网络与亲友连线&#xff0c;共同见证火炬传递的历史时刻。上午6时&#xff0c;杭州铁塔的一线通信保障人员共27人就已经在本次火炬传递收官点位奥体中心西广场附近&a…

【操作系统笔记九】并发安全问题

用户态抢占和内核态抢占 内核中可以执行以下几种程序&#xff1a; ① 当前运行的进程&#xff1a;陷阱程序&#xff08;系统调用&#xff09; 和 故障程序&#xff08;page fault&#xff09; &#xff0c;进程运行在内核态的时候&#xff0c;其实就是在执行进程在用户态触发的…

关于安卓SVGA浅尝(一)svgaplayer库的使用

关于安卓SVGA浅尝&#xff08;一&#xff09;使用 相关链接 SVGA官网 SVGA-github说明文档 背景 项目开发&#xff0c;都会和动画打交道&#xff0c;动画的方案选取&#xff0c;就有很多选择。如Json动画&#xff0c;svga动画&#xff0c;gif等等。各有各的优势。目前项目中…

【PCIE702-1】基于Kintex UltraScale系列FPGA的高性能PCIe总线数据预处理载板

PCIE702-1是一款基于PCIE总线架构的高性能数据预处理FMC载板&#xff0c;板卡采用Xilinx的高性能Kintex UltraScale系列FPGA作为实时处理器&#xff0c;实现各个接口之间的互联。板卡具有1个FMC&#xff08;HPC&#xff09;接口&#xff0c;1路PCIe x8主机接口&#xff0c;板载…

AxureRP制作静态站点发布互联网,实现公网访问【内网穿透】

AxureRP制作静态站点发布互联网&#xff0c;内网穿透实现公网访问 文章目录 AxureRP制作静态站点发布互联网&#xff0c;内网穿透实现公网访问前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4…

【实战项目之个人博客】

目录 项目背景 项目技术栈 项目介绍 项目亮点 项目启动 1.创建SSM&#xff08;省略&#xff09; 2.配置项目信息 3.将前端页面加入到项目中 4.初始化数据库 5.创建标准分层的目录 6.创建和编写项目中的公共代码以及常用配置 7.创建和编写业务的Entity、Mapper、…

认识HTTP和HTTPS协议

HTTPS 是什么 HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. 为什么要引入加密层呢&#xff1f; HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况. HTTPS就是在HTTP的基础上进行了加密&#xff0c;进一步的保…