单片机学习(14)--DS18B20温度传感器
DS18B20温度传感器
- 13.1DS18B20温度传感器基础知识
- 1.DS18B20介绍
- 2.引脚及应用电路
- 3.内部结构框图
- 4.存储器框图
- 5.单总线介绍
- 6.单总线电路规范
- 7.单总线时序结构
- 8.DS18B20操作流程
- 9.DS18B20数据帧
- 13.2DS18B20温度读取和温度报警器代码
- 1.DS18B20温度读取
- (1)工程目录
- (2)main.c函数
- (3)DS18B20.c函数
- (4)OneWire.c函数
- 2.DS18B20温度报警器
- (1)工程目录
- (2)main.c函数
13.1DS18B20温度传感器基础知识
1.DS18B20介绍
DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点
测温范围:-55°℃到+125°℃
通信接口:1-Wire(单总线)·其它特征:可形成总线结构、内置温度报警功能、可寄生供电

2.引脚及应用电路

3.内部结构框图

64-BITROM:作为器件地址,用于总线通信的寻址
SCRATCHPAD(暂存器):用于总线的数据交互
EEPROM:用于保存温度触发阈值和配置参数
4.存储器框图

5.单总线介绍
单总线(1-WireBUS)是由Dallas公司开发的一种通用数据总线
一根通信线**:DQ**
异步、半双工
单总线只需要一根通信线即可实现数据的双向传输,当采用寄生供电时,还可以省去设备的VDD线路,此时,供电加通信只需要DQ和GND两根线
6.单总线电路规范
设备的DO均要配置成开漏输出模式
DO添加一个上拉电阻,阻值一般为4.7K左右
若此总线的从机采取寄生供电,则主机还应配一个强上拉输出电路

7.单总线时序结构
初始化:主机将总线拉低至少480us.然后释放总线,等待15-60us后,存在的从机会拉低总线60~240us以响应主机,之后从机将释放总线
发送一位:主机将总线拉低60120us.然后释放总线,表示发送0;主机将总线拉低115us.然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us

发送一位:主机将总线拉低60120us.然后释放总线,表示发送0;主机将总线拉低115us.然后释放总线,表示发送1。从机将在总线拉低30us后(典型值)读取电平,整个时间片应大于60us


8.DS18B20操作流程
初始化:从机复位,主机判断从机是否响应
ROM操作:ROM指令+本指令需要的读写操作
功能操作:功能指令+本指令需要的读写操作

9.DS18B20数据帧

13.2DS18B20温度读取和温度报警器代码
1.DS18B20温度读取
(1)工程目录

(2)main.c函数
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "DS18B20.h"float T;void main()
{LCD_Init();LCD_ShowString(1,1,"Temperature:");while(1){DS18B20_ConvertT();T=DS18B20_ReadT();if(T<0){LCD_ShowChar(2,1,'-');T=-T;}else{LCD_ShowChar(2,1,'+');}LCD_ShowNum(2,2,T,3);LCD_ShowChar(2,5,'.');LCD_ShowNum(2,6,(unsigned long)(T*10000)%10000,4);}
}
(3)DS18B20.c函数
#include <REGX52.H>
#include "OneWire.h"#define DS18B20_SKIP_ROM 0xCC
#define DS18B20_CONVERT_T 0x44
#define DS18B20_READ_SCRATCHPAD 0xBEvoid DS18B20_ConvertT(void)
{OneWire_Init();OneWire_SendByte(DS18B20_SKIP_ROM);OneWire_SendByte(DS18B20_CONVERT_T);
}float DS18B20_ReadT(void)
{unsigned char TLSB,TMSB;int Temp;float T;OneWire_Init();OneWire_SendByte(DS18B20_SKIP_ROM);OneWire_SendByte(DS18B20_READ_SCRATCHPAD);TLSB=OneWire_ReceiveByte();TMSB=OneWire_ReceiveByte();Temp=(TMSB<<8)|TLSB;T=Temp/16.0;return T;
}
(4)OneWire.c函数
#include <REGX52.H>
sbit OneWire_DQ=P3^7;unsigned char OneWire_Init(void)
{unsigned char i;unsigned char AckBit;OneWire_DQ=1;OneWire_DQ=0;i = 227;while (--i);//Delay 500usOneWire_DQ=1;i = 29;while (--i);//Delay 70usAckBit=OneWire_DQ;i = 227;while (--i);//Delay 500usreturn AckBit;
}void OneWire_SendBit(unsigned char Bit)
{unsigned char i;OneWire_DQ=0;i = 3;while (--i);//Delay 10usOneWire_DQ=Bit;i = 22;while (--i);//Delay 50usOneWire_DQ=1;
}unsigned char OneWire_ReceiveBit(void)
{unsigned char i;unsigned char Bit;OneWire_DQ=0;i = 1;while (--i);//Delay 5usOneWire_DQ=1;i = 1;while (--i);//Delay 5us Bit=OneWire_DQ;i = 22;while (--i);//Delay 50us return Bit;
}void OneWire_SendByte(unsigned char Byte)
{unsigned char i;for(i=0;i<8;i++){OneWire_SendBit(Byte&(0x01<<i));}
}unsigned char OneWire_ReceiveByte(void)
{unsigned char i;unsigned char Byte=0x00;for(i=0;i<8;i++){if(OneWire_ReceiveBit()){Byte|=(0x01<<i);}}return Byte;
}
2.DS18B20温度报警器
(1)工程目录

(2)main.c函数
#include <REGX52.H>
#include "DS18B20.h"
#include "AT24C02.h"
#include "LCD1602.h"
#include "Key.h"
#include "Delay.h"float T,TShow;
char TLow,THigh;
unsigned char KeyNum;
void main()
{DS18B20_ConvertT();Delay(1000);THigh=AT24C02_ReadByte(0);TLow=AT24C02_ReadByte(1);if(THigh>125||TLow<-55||THigh<=TLow){THigh=20;TLow=15;}LCD_Init();LCD_ShowString(1,1,"T:");LCD_ShowString(2,1,"TH:");LCD_ShowString(2,9,"TL:");LCD_ShowSignedNum(2,4,THigh,3);LCD_ShowSignedNum(2,12,TLow,3);while(1){KeyNum=Key();/*温度读取及显示*/DS18B20_ConvertT();T=DS18B20_ReadT();if(T<0){LCD_ShowChar(1,3,'-');TShow=-T;}else{LCD_ShowChar(1,3,'+');TShow=T;}LCD_ShowNum(1,4,TShow,3);LCD_ShowChar(1,7,'.');LCD_ShowNum(1,8,(unsigned char)(TShow*100)%100,2);/*阈值判断及显示*/if(KeyNum){if(KeyNum==1){THigh++;if(THigh>125){THigh=125;}}if(KeyNum==2){THigh--;if(THigh<=TLow){THigh++;}}if(KeyNum==3){TLow++;if(TLow>=THigh){TLow--;}}if(KeyNum==4){TLow--;if(THigh<-55){TLow=-55;}}LCD_ShowSignedNum(2,4,THigh,3);LCD_ShowSignedNum(2,12,TLow,3);AT24C02_WriteByte(0,THigh);Delay(5);AT24C02_WriteByte(0,TLow);Delay(5);}if(T>THigh){LCD_ShowString(1,13,"OV:H");}else if(T<TLow){LCD_ShowString(1,13,"OV:L");}else{LCD_ShowString(1,13," ");}}
}
只能先敲出程序,慢慢理解了
相关文章:
单片机学习(14)--DS18B20温度传感器
DS18B20温度传感器 13.1DS18B20温度传感器基础知识1.DS18B20介绍2.引脚及应用电路3.内部结构框图4.存储器框图5.单总线介绍6.单总线电路规范7.单总线时序结构8.DS18B20操作流程9.DS18B20数据帧 13.2DS18B20温度读取和温度报警器代码1.DS18B20温度读取(1)…...
ue 材质贴图Tiling repeat
材质问题,如下 贴图显然不符合逻辑,太大,并且是一次性贴图 换一个红砖纹理,就看清了,砖太大了 修改: 拖出一个TexCoord,代表坐标,拖出一个参数,代表次数,如…...
【图像超分辨率】一个简单的总结
文章目录 图像超分辨率(Image Super-Resolution, ISR)1 什么是图像超分辨率?2 图像超分辨率通常有哪些方法?(1)基于插值的方法(2)基于重建的方法(3)基于学习的方法(LR im…...
WEB与低代码:B/S架构在开发中的应用与优势
在互联网迅猛发展的今天,WEB应用已经成为人们日常生活和工作中不可或缺的一部分。随着技术的进步和需求的多样化,开发高效、灵活且易于维护的WEB应用变得尤为重要。B/S架构(Browser/Server Architecture)作为一种常见的WEB应用架构…...
内容营销专家刘鑫炜揭秘:姜萍一夜暴红背后的品牌传播密码
在互联网的浪潮下,品牌传播的方式愈发多样和复杂。近日,江苏省涟水中等专业学校的十七岁中专生姜萍因在世界级数学竞赛中取得优异成绩而一夜暴红,成为网络上的热议焦点。 在这个充满变数的时代,谁也无法预测下一个网红会是谁。然…...
安装VEX外部编辑器
Houdini20配置VEX外部编辑器方法_哔哩哔哩_bilibili 下载并安装Visual Studio Code软件:Download Visual Studio Code - Mac, Linux, Windows 在Visual Studio Code软件内,安装相关插件,如: 中文汉化插件vex插件 安装Houdini Expr…...
ISO 19110全局要求类/req/global/bound-association-role要求的详细解释
/req/global/bound-association-role 要求: 如果模型允许在一个关联角色(association role)中存在“rolePlayer”关联,并且该角色属于一个“globalProperty”角色,那么这种绑定必须通过一个绑定的关联角色实体(bound …...
武汉凯迪正大等简述电缆电容检测:原理、应用与重要性
为了确保电缆的安全稳定运行评估电缆绝缘质量以及检测潜在故障,需要对电缆做一些必要的检测。本文将依照凯迪正大的一些经验对电缆电容检测的原理、应用及其重要性进行简单的序述。 一、电缆电容检测的原理 电缆电容检测基于电容的基本特性,电容是指两个…...
python调用阿里云OSS对象存储
1)安装SDK import oss2 print(oss2.__version__) 如果能返回SDK版号,则安装成功 2)配置访问凭证 import oss2 from project1 import settings #以下参数在阿里云账号中可以查到 auth=oss2.Auth(settings.ACCESS_KEY_ID, settings.ACCESS_KEY_SECRET) endpoint=settings.E…...
530、二叉搜索树的最小绝对差
给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 代码如下: class Solution { private: int result INT_MAX; TreeNode* pre NULL; void traversal(TreeNode…...
docker配置redis主从复制
下载redis,复制redis.conf 主节点(6379) 修改redis.conf # bind 127.0.0.1 # 注释掉这里 protected-mode no # 改为no port 6379从节点(6380) 修改redis.conf bind 127.0.0.1 protected-mode no # 改为no port 6380 replicaof 172.17.0.2 6379 # 这里的ip为主节点容器的i…...
IPython调试秘籍:pdb调试器深度解析与实战
🐞 IPython调试秘籍:pdb调试器深度解析与实战 在Python编程中,调试是开发过程中不可或缺的一环。IPython,作为一个强大的交互式Python解释器,内置了pdb调试器,使得代码调试变得异常便捷。本文将深入探讨如…...
MySQL 死锁处理
查询是否锁表 SHOW OPEN TABLES WHERE In_use > 0; 查看正在锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; 查看等待锁的事务 SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS; 查看进程信息 SHOW PROCESSLIST; 或者 SELECT * FROM INFORMATION_SCHE…...
scatterlist的相关概念与实例分析
概念 scatterlist scatterlist用来描述一块内存,sg_table一般用于将物理不同大小的物理内存链接起来,一次性送给DMA控制器搬运 struct scatterlist {unsigned long page_link; //指示该内存块所在的页面unsigned int offset; //指示该内存块在页面中的…...
leetCode.97. 交错字符串
leetCode.97. 交错字符串 题目思路 代码 class Solution { public:bool isInterleave(string s1, string s2, string s3) {int n s1.size(), m s2.size();if ( s3.size() ! n m ) return false;vector<vector<bool>> f( n 1, vector<bool> (m 1));s1 …...
算力时代,算能(SOPHGO)的算力芯片/智算板卡/服务器选型
数字经济时代,算力成为支撑经济社会发展新的关键生产力,全球主要经济体都在加快推进算力战略布局。随着大模型持续选代,模型能力不断增强,带来算力需求持续增长。算力对数字经济和GDP的提高有显著的带动作用,根据IDC、…...
ManageEngine连续荣登Gartner 2024年安全信息和事件管理魔力象限
我们很高兴地宣布,ManageEngine再次在Gartner的安全信息和事件管理(SIEM)魔力象限中榜上有名,这是我们连续第七年获得这一认可。 Gartner ManageEngine Log360是一款全面的SIEM解决方案,旨在帮助组织有效处理日志数据…...
51单片机第11步_在C语言中插入汇编语言
本章重点介绍如何在C语言中插入汇编语言。要不是有记录,真不知道怎么搞。 /* 你在 Project Workspace窗口中,将光标移到DELAY.c处,点下鼠标右键,选择"Options for file DELAY.c", 点击右边的"Generate Assembler SRC File"和“Assemble SRC …...
【Qt+opencv】图片与视频的操作
文章目录 前言图片的操作图片的读取图片的写入示例代码 视频的操作打开视频关闭视频 总结 前言 在现代计算机视觉应用中,图像和视频处理起着至关重要的作用。这些应用范围广泛,包括图像识别、物体跟踪、3D建模等。为了实现这些功能,我们需要…...
Kubernetes面试整理-PersistentVolumes和PersistentVolumeClaims的使用和配置
在 Kubernetes 中,PersistentVolumes (PV) 和 PersistentVolumeClaims (PVC) 提供了一种分离存储和使用存储的机制。PV 是集群中存储资源的抽象表示,而 PVC 是用户对存储资源的请求。通过这种机制,用户可以动态地申请和管理存储资源。 PersistentVolumes (PV) PersistentVol…...
Taotoken用量看板如何帮助团队管理大模型API成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何帮助团队管理大模型API成本 作为团队的技术负责人,在引入大模型能力支持多个项目时,一…...
OpenWrt嵌入式Linux开发入门:从编译到部署的完整实践指南
1. 项目概述:为什么选择OpenWrt作为嵌入式开发的起点 如果你对Linux系统有一定了解,并且想踏入嵌入式开发的大门,或者你是一个网络爱好者,想让家里的路由器“脱胎换骨”,那么OpenWrt绝对是一个绕不开的名字。它不是一…...
【限时技术白皮书】ElevenLabs希伯来文语音工程手册(v2.3.1):含BERT-Heb分词器适配补丁、ta’amei ha-miqra韵律注入模块及CI/CD集成脚本
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs希伯来文语音工程概览 ElevenLabs 作为前沿的文本转语音(TTS)平台,自2023年起逐步扩展对希伯来语(Hebrew)的支持,涵盖音…...
8255 Boot流程深度解析与Bring Up实战避坑指南
1. 8255芯片启动流程全景解析 第一次拿到8255芯片开发板时,最让我困惑的就是这个"安全岛"架构的启动流程。和传统芯片不同,8255的启动更像是一场精心编排的交响乐,SAIL(安全岛)、APPS(应用处理器…...
让 SACF 自动捕获授权对象,把新授权检查安全带进生产系统
很多 ABAP 老系统里,最敏感的改造不是性能优化,也不是把一个古早 FORM 重构成类方法,而是在已经稳定运行多年的业务代码里补授权检查。原因很直接,少一次授权检查,审计和安全团队会觉得风险很大,多一次授权检查,生产用户可能第二天就打不开业务功能。SACF,也就是 Switc…...
G-Helper终极指南:全面掌握华硕笔记本性能优化与硬件控制
G-Helper终极指南:全面掌握华硕笔记本性能优化与硬件控制 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook,…...
WeChatExporter完整指南:如何在macOS上免费备份微信聊天记录
WeChatExporter完整指南:如何在macOS上免费备份微信聊天记录 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 微信聊天记录中包含了我们珍贵的回忆、重要的工作…...
【大白话说Java面试题 第55题】【JVM篇】第15题:JVM有哪些垃圾收集算法?
📌 PDF:大白话说Java面试题 — 02-JVM篇 第15题:JVM有哪些垃圾收集算法 📚 回答: 核心概念: JVM 的垃圾收集算法是垃圾回收的核心机制,决定了如何高效地标记和回收内存中的垃圾对象。常见的垃…...
在Nodejs服务中集成多模型API实现智能客服场景
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Nodejs服务中集成多模型API实现智能客服场景 智能客服是当前许多在线服务提升用户体验的关键组件。对于Node.js后端开发者而言&a…...
AssetStudio终极指南:5步解锁Unity游戏资源的完整实战教程
AssetStudio终极指南:5步解锁Unity游戏资源的完整实战教程 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and additio…...
