当前位置: 首页 > news >正文

单片机基础模块学习——DS18B20温度传感器芯片

不知道该往哪走的时候,就往前走。 

一、DS18B20芯片原理图

该芯片共有三个引脚,分别为

  1. GND——接地引脚
  2. DQ——数据通信引脚
  3. VDD——正电源

数据通信用到的是1-Wier协议

  • 优点:占用端口少,电路设计方便
  •  同时该协议要求通过上拉电阻上拉到正电源
  • 该协议是总线协议,可以挂载一个以上的元件

总线协议每一个元件都有一个地址,根据地址就可以获得对应传感器的内部信息


DS18B20温度传感器在开发板上的位置如下图

 二、访问DS18B20步骤

  1. 初始化
  2. 发送地址(当总线上只有一个元件,就可以直接面向所有的传感器进行通信就可以了例如:局域网的广播)
  3. 功能性命令(触发温度采集,读取相关命令等)

    功能性命令表格

  • 第一行触发温度转换,地址是0x44
  • 第二行读取温度,地址是0xBE
  • 下面的功能是进行更深入的开发会用到,这里暂不解释

DS18B20温度存储格式

 

共有16位数据结构,S=SIGN 代表一个符号

  • 如果温度是正的,11~15位都是0;
  • 如果温度是负的,11~15位都是1;

0~3是小数位,4~10是整数位,最高到。温度传感器的精度是12bit

读取的话由于是16位的数据,可以用unsigned int类型变量存储


但真正的unsigned int类型和这个是有差别的

由上图可以发现,对应的两个数之间相差倍,因此在读取之后,想要获得真正的值就要除以16

三、模块代码

由于占用两个字节,所以用两个变量存储高八位和低八位的数,最后并在一起返回一个数

#include "onewire.h"
//
void Delay_OneWire(unsigned int t)  
{unsigned char i;while(t--){for(i=0;i<12;i++);}
}//
void Write_DS18B20(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){DQ = 0;DQ = dat&0x01;Delay_OneWire(5);DQ = 1;dat >>= 1;}Delay_OneWire(5);
}//
unsigned char Read_DS18B20(void)
{unsigned char i;unsigned char dat;for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;if(DQ){dat |= 0x80;}	    Delay_OneWire(5);}return dat;
}//
bit init_ds18b20(void)
{bit initflag = 0;DQ = 1;Delay_OneWire(12);DQ = 0;Delay_OneWire(80);DQ = 1;Delay_OneWire(10); initflag = DQ;     Delay_OneWire(5);return initflag;
}unsigned int read_temperature(void)
{unsigned char low,high;init_ds18b20();//初始化Write_DS18B20(0xCC);//对所有元件进行通信Write_DS18B20(0x44);//触发温度转换init_ds18b20();//初始化Write_DS18B20(0xCC);//对所有元件进行通信Write_DS18B20(0xBE);//读取温度low=Read_DS18B20();//返回数据high=Read_DS18B20();return (high<<8|low);
}

四、主函数代码

这里别忘记要将数据除以16才是真实数据,由于传回的是整数类型,所以要除以16.0,最后的结果才可以保留两位小数


想让数码管的后四位不显示,不要忘记敲四个空格

#include "seg.h"
#include "tim.h"
#include "led.h"
#include "init.h"
#include "onewire.h"
//Seg
unsigned char pucSeg_Buf[12],pucSeg_Code[9],pucSeg_Pos=0;//字符数组以/0结尾,所以要有9位
void Seg_Proc(void);//Timer
unsigned long ulms =0;
unsigned int uiSeg_Dly=0;
//Temperature
unsigned int uiTemp=0;
void main(void)
{Cls_Peripheral();Timer0Init();EA=1;while(1){Seg_Proc();}}void Seg_Proc(void)
{if(uiSeg_Dly<200)return;uiSeg_Dly =0;uiTemp = read_temperature();sprintf(pucSeg_Buf,"%.2f    ",uiTemp/16.0);//将指定的内容打印到字符数组里Seg_Tran(pucSeg_Buf,pucSeg_Code);
}void Time_0(void) interrupt 1
{ulms++;uiSeg_Dly++;if(ulms % 2==0){pucSeg_Pos=(pucSeg_Pos+1)%8;//实现pucSeg_Pos从0-7循环的操作Seg_Disp(pucSeg_Code,pucSeg_Pos);}
}

 

 

相关文章:

单片机基础模块学习——DS18B20温度传感器芯片

不知道该往哪走的时候&#xff0c;就往前走。 一、DS18B20芯片原理图 该芯片共有三个引脚&#xff0c;分别为 GND——接地引脚DQ——数据通信引脚VDD——正电源 数据通信用到的是1-Wier协议 优点&#xff1a;占用端口少&#xff0c;电路设计方便 同时该协议要求通过上拉电阻…...

《网络数据安全管理条例》施行,企业如何推进未成年人个人信息保护(下)

文章目录 前言三、全流程推进未成年人个人信息保护1、处理前:未成年人个人信息处理的告知同意2、处理中:加强个人信息处理流程管理3、处理后:落实个人信息保护合规审计四、大型网络平台应每年发布社会责任报告前言 《网数条例》颁布前,我国已针对未成年人个人信息保护陆续…...

书生大模型实战营3

文章目录 L0——入门岛git基础Git 是什么&#xff1f;Git 中的一些基本概念工作区、暂存区和 Git 仓库区文件状态分支主要功能 Git 平台介绍GitHubGitLabGitee Git 下载配置验证下载 Git配置 Git验证 Git配置 Git常用操作Git简易入门四部曲Git其他指令 闯关任务任务1: 破冰活动…...

Spring Boot 集成 WebClient 实战教程 实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono

该项目介绍springboot集成WebClient 实现服务的请求操作 示例中演示了,如何配置WebClient的请求头,请求参数等相关参数,实现同步、异步请求处理以及响应式编程、响应式流、响应式Mono。 为什么使用WebClient 不用RestTemplate 在 Spring Framework 5.0 及更高版本中,Res…...

C语言深入解析 printf的底层源码实现

深入解析 printf 的底层源码实现 printf 是 C 标准库中最常用的函数之一&#xff0c;用于格式化输出字符串。它的底层实现复杂且高效&#xff0c;包含多个模块化的函数和机制。本文结合 GNU C Library&#xff08;glibc&#xff09;的源码&#xff0c;详细分析 printf 的实现原…...

go 循环处理无限极数据

数据表结构&#xff1a; CREATE TABLE permission (id int(11) NOT NULL AUTO_INCREMENT COMMENT 权限ID,permission_name varchar(255) DEFAULT NULL COMMENT 权限名称,permission_url varchar(255) DEFAULT NULL COMMENT 权限路由,status tinyint(1) DEFAULT NULL COMMENT 权…...

C# Dynamic关键字

一、引言&#xff1a;开启动态编程之门 在 C# 的编程世界里&#xff0c;长久以来我们习惯了静态类型语言带来的严谨与稳定。在传统的 C# 编程中&#xff0c;变量的类型在编译时就已经确定&#xff0c;这就像是给每个变量贴上了一个固定的标签&#xff0c;在整个代码执行过程中…...

ReactNative react-devtools 夜神模拟器连调

目录 一、安装react-devtools 二、在package.json中配置启动项 三、联动 一、安装react-devtools yarn add react-devtools5.3.1 -D 这里选择5.3.1版本&#xff0c;因为高版本可能与夜神模拟器无法联动&#xff0c;导致部分功能无法正常使用。 二、在package.json中配置启…...

【教学类-89-02】20250128新年篇02——姓名藏头对联(星火讯飞+Python,五言对联,有横批)

背景需求&#xff1a; 过年了&#xff0c;我想用幼儿的名字写对联&#xff0c;但是我根本不会写&#xff0c;于是尝试让AI来写。 1.我班的孩子的名字都是2字和3字的 2.惊喜发现&#xff0c;AI它很快就能生成带名字的对联 但是观察发现&#xff0c;如果是二个名字的对联&#…...

装机爱好者的纯净工具箱

对于每一位电脑用户来说&#xff0c;新电脑到手后的第一件事通常是检测硬件性能。今天为大家介绍一款开源且无广告的硬件检测工具——入梦工具箱。 主要功能 硬件信息一目了然 打开入梦工具箱&#xff0c;首先看到的是硬件信息概览。这里不仅包含了内存、主板、显卡、硬盘等常…...

【新春不断更】数据结构与算法之美:二叉树

Hello大家好&#xff0c;我是但凡&#xff01;很高兴我们又见面啦&#xff01; 眨眼间已经到了2024年的最后一天&#xff0c;在这里我要首先感谢过去一年陪我奋斗的每一位伙伴&#xff0c;是你们给予我不断前行的动力。银蛇携福至&#xff0c;万象启新程。蛇年新春之际&#xf…...

网站结构优化:加速搜索引擎收录的关键

本文来自&#xff1a;百万收录网 原文链接&#xff1a;https://www.baiwanshoulu.com/9.html 网站结构优化对于加速搜索引擎收录至关重要。以下是一些关键策略&#xff0c;旨在通过优化网站结构来提高搜索引擎的抓取效率和收录速度&#xff1a; 一、合理规划网站架构 采用扁…...

Effective Objective-C 2.0 读书笔记—— objc_msgSend

Effective Objective-C 2.0 读书笔记—— objc_msgSend 文章目录 Effective Objective-C 2.0 读书笔记—— objc_msgSend引入——静态绑定和动态绑定OC之中动态绑定的实现方法签名方法列表 其他方法objc_msgSend_stretobjc_msgSend_fpretobjc_msgSendSuper 尾调用优化总结参考文…...

[MySQL]事务的隔离级别原理与底层实现

目录 1.为什么要有隔离性 2.事务的隔离级别 读未提交 读提交 可重复读 串行化 3.演示事务隔离级别的操作 查看与设置事务的隔离级别 演示读提交操作 演示可重复读操作 1.为什么要有隔离性 在真正的业务场景下&#xff0c;MySQL服务在同一时间一定会有大量的客户端进程…...

项目升级Sass版本或升级Element Plus版本遇到的问题

项目升级Sass版本或升级Element Plus版本遇到的问题 如果项目有需求需要用到高版本的Element Plus组件&#xff0c;则需要升级相对应的sass版本&#xff0c;Element 文档中有提示&#xff0c;2.8.5及以后得版本&#xff0c;sass最低支持的版本为1.79.0&#xff0c;所升级sass、…...

C++中,存储两个相同类型的数据,数据结构

在C中&#xff0c;存储两个相同类型的数据&#xff0c;可以使用多种数据结构。这里有几种常见且合适的选择&#xff1a; 简单的变量&#xff1a; 最直接的方式就是使用两个独立的变量。这种方法简单直观&#xff0c;但不够结构化。 cpp int a 5; int b 10; std::pair&#x…...

python实战(十五)——中文手写体数字图像CNN分类

一、任务背景 本次python实战&#xff0c;我们使用来自Kaggle的数据集《Chinese MNIST》进行CNN分类建模&#xff0c;不同于经典的MNIST数据集&#xff0c;我们这次使用的数据集是汉字手写体数字。除了常规的汉字“零”到“九”之外还多了“十”、“百”、“千”、“万”、“亿…...

[论文阅读] (37)CCS21 DeepAID:基于深度学习的异常检测(解释)

祝大家新春快乐&#xff0c;蛇年吉祥&#xff01; 《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座&#xff0c;并分享给大家&#xff0c;希望您喜欢。由于作者的英文水平和学术能力不高&#xff0c;需要不断提升&#xff0c;所以还请大家批评指正&#xff0…...

Linux - 进程间通信(2)

目录 2、进程池 1&#xff09;理解进程池 2&#xff09;进程池的实现 整体框架&#xff1a; a. 加载任务 b. 先描述&#xff0c;再组织 I. 先描述 II. 再组织 c. 创建信道和子进程 d. 通过channel控制子进程 e. 回收管道和子进程 问题1&#xff1a; 解答1&#xff…...

Kafka 消费端反复 Rebalance: `Attempt to heartbeat failed since group is rebalancing`

文章目录 Kafka 消费端反复 Rebalance: Attempt to heartbeat failed since group is rebalancing1. Rebalance 过程概述2. 错误原因分析2.1 消费者组频繁加入或退出2.1.1 消费者故障导致频繁重启2.1.2. 消费者加入和退出导致的 Rebalance2.1.3 消费者心跳超时导致的 Rebalance…...

2026届学术党必备的AI辅助写作网站实际效果

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于学术研究范畴之内&#xff0c;撰写上一篇具备高质量水平的论文&#xff0c;乃是每一位学者…...

反向海淘代购集运系统三种搭建路径对比:自研、开源二开、SaaS

「技术、数据、接口、系统问题欢迎留言私信沟通」引言&#xff1a;标准业务架构# 系统演示、API测试控制台&#xff1a;http://console.open.onebound.cn/console/?iRookie用户层&#xff08;Web / App / 小程序&#xff09;↓ 网关层&#xff08;Nginx / Gateway&#xff09;…...

DIY蓝牙街机摇杆:从零打造无线复古游戏控制器

1. 项目概述与核心思路作为一个玩了二十多年街机&#xff0c;也折腾了十几年硬件的“老炮儿”&#xff0c;我始终觉得&#xff0c;有些东西的味道是数字模拟不出来的。比如&#xff0c;用键盘或现代手柄玩《拳皇97》或《合金弹头》&#xff0c;总觉得少了点灵魂——那“咔哒咔哒…...

NHSE终极指南:5分钟掌握动物森友会存档编辑器的完整教程

NHSE终极指南&#xff1a;5分钟掌握动物森友会存档编辑器的完整教程 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 还在为《集合啦&#xff01;动物森友会》中收集稀有物品而烦恼吗&#xff1f;想…...

魔兽争霸3终极增强插件:8大功能全面提升游戏体验完整指南

魔兽争霸3终极增强插件&#xff1a;8大功能全面提升游戏体验完整指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代系统上的兼…...

Midjourney v7艺术风格跃迁路径:从基础写实到超现实叙事的5阶能力模型,含GPT-4o协同提示链模板

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney v7艺术风格跃迁路径总览 Midjourney v7 并非简单迭代&#xff0c;而是以扩散模型架构重构与多模态风格理解为内核的范式跃迁。其核心突破在于引入「语义风格锚点&#xff08;Semantic Style…...

暗黑破坏神2角色编辑器终极指南:如何轻松打造完美角色

暗黑破坏神2角色编辑器终极指南&#xff1a;如何轻松打造完美角色 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 还在为暗黑破坏神2中无尽的刷装备、练级而烦恼吗&#xff1f;Diablo Edit2是一款…...

ClawForgeAI:基于工作流编排的AIGC创意自动化平台解析

1. 项目概述&#xff1a;从“ClawForgeAI/clawforge”看AI驱动的创意工具新范式最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“ClawForgeAI/clawforge”。光看这个名字&#xff0c;你可能会有点摸不着头脑——“ClawForge”听起来像是个游戏模组工具或者某种机械设计软…...

可编程投币器集成指南:从硬件连接到游戏积分映射

1. 项目概述&#xff1a;从“投币”到“积分”的硬件魔法“Insert Coin”——对于任何一个经历过街机黄金年代的玩家来说&#xff0c;这三个字背后所承载的&#xff0c;远不止是启动游戏的指令&#xff0c;更是一种充满仪式感的期待。如今&#xff0c;我们大多通过模拟器上的一…...

xpull:轻量级声明式文件同步工具的设计原理与K8s实战

1. 项目概述&#xff1a;一个轻量级、高可用的文件同步利器在分布式系统、微服务架构乃至日常的自动化运维中&#xff0c;文件同步是一个看似基础却至关重要的环节。无论是将日志文件从边缘服务器拉取到中心进行分析&#xff0c;还是将配置文件从版本库分发到成百上千个实例&am…...