温湿度传感器SHT21

        SHT21是一款基于IIC的温湿度传感器,它的引脚及定义如下:

         标准的IIC器件,没有其他多余的引脚,应用框图如下:

         温度的测量范围是-40到125℃,湿度测量范围0-100%RH,具体参数及采样精度见下图:

        芯片采用IIC通信,有关IIC通信原理可参考:

IIC通信原理-CSDN博客文章浏览阅读298次,点赞5次,收藏8次。这样看起来,区分起止信号与数据电平是不是就更加容易些了,但是嘛由于只有一根数据线了,缺点就是无法同时收发了,因此它是半双工通信的。一般的IIC器件,比如EEPROM,此时会发送要写入或读取的地址,如往0x0000地址写入数字1,那么会先发送0x0000,等到回码后再发送0x01,之后在收到应答后结束通信。前面在讲UART时提到过通信传输所需要的几个必要条件,首先得知道什么时候通信开始,什么时候通信结束,然后就是如何去解析数据了,根据这几点,我们来谈谈IIC是如何实现通信的。从图上可以看到,IIC规定的。https://blog.csdn.net/u011436603/article/details/136007075         温湿度的获取也很简单,启动IIC,读取相应寄存器的值,再根据手册提供的公式转换一下即可。温度和湿度使用不同的指令分别进行测量,具体的指令码如下:

采集温度时:                 

  1. 启动IIC
  2. 发送设备地址+写指令 
  3. 发送测量温度指令
  4. 发送设备地址+读指令
  5. 读数据
  6. 结束IIC
  7. 换算温度值       

 采集湿度时:                 

  1. 启动IIC
  2. 发送设备地址+写指令 
  3. 发送测量湿度指令
  4. 发送设备地址+读指令
  5. 读数据
  6. 结束IIC
  7. 换算湿度值 

关于数值的获取及转换公式手册写的也很清楚

温度转换

湿度转换

具体的代码如下:

float SHT2x_MeasureTempHM(void)
{float TEMP;u8 tmp1, tmp2;u16 ST;SHT2x_SCL_OUTPUT();SHT2x_SDA_OUTPUT();SHT2x_I2cStartCondition();                            SHT2x_I2cWriteByte(I2C_ADR_W);SHT2x_I2cWriteByte(TRIG_TEMP_MEASUREMENT_HM);//测温度SHT2x_I2cStartCondition();SHT2x_I2cWriteByte(I2C_ADR_R);SHT2x_SCL_HIGH();SHT2x_SCL_INPUT();while(Bit_RESET == SHT2x_SCL_STATE()){delay_us(20);}tmp1 = SHT2x_I2cReadByte();SHT2x_I2cAcknowledge();tmp2 = SHT2x_I2cReadByte();SHT2x_I2cNoAcknowledge();SHT2x_I2cStopCondition();ST = (tmp1 << 8) | (tmp2 << 0);ST &= ~0x0003;TEMP = ((float)ST * 0.00268127) - 46.85;SHT2x_SCL_OUTPUT();return (TEMP);	  
}float SHT2x_MeasureHumiHM(void)
{float HUMI;u8 tmp1, tmp2;    u16 SRH;SHT2x_SCL_OUTPUT();SHT2x_I2cStartCondition();                               SHT2x_I2cWriteByte(I2C_ADR_W);SHT2x_I2cWriteByte(TRIG_HUMI_MEASUREMENT_HM);//测湿度SHT2x_I2cStartCondition();SHT2x_I2cWriteByte(I2C_ADR_R);SHT2x_SCL_HIGH();SHT2x_SCL_INPUT();while( Bit_RESET==SHT2x_SCL_STATE()){delay_us(2);}tmp1 = SHT2x_I2cReadByte();SHT2x_I2cAcknowledge();tmp2 = SHT2x_I2cReadByte();SHT2x_I2cNoAcknowledge();SHT2x_I2cStopCondition();SRH = (tmp1 << 8) | (tmp2 << 0);SRH &= ~0x0003;HUMI = ((float)SRH * 0.00190735) - 6;SHT2x_SCL_OUTPUT();return (HUMI);
}

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

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

相关文章

HM_2019在面积不变情况下编辑网格

首先&#xff0c;应该保存其形状&#xff0c;计算他的面积。让面积不变作为一个约束&#xff0c;然后进行网格的形变。

面试官:你知道几种数组扁平化的方法?

面试官&#xff1a;你知道几种数组扁平化的方法&#xff1f; 数组扁平化相信不少掘友在一些面试中被问到过&#xff0c;这在我们日常编程中也是一个常规操作&#xff0c;它需要我们将一个多维数组转化成一个一维数组。当然&#xff0c;我相信很多掘友都能回答上这个问题&#x…

【网站项目】154大学生创新创业平台竞赛管理子系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

uniapp+node.js前后端做帖子模块:分享帖子和分享页面(社区管理平台的小程序)

目录 0前提1.一些准备1.1表帖子表 post 1.2总体思路 2.前端3.后端 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01; ✏️ 评论&#xff0c;你的意见是我进步的财富&#xff01; 0前提 温馨提示…

d2-crud-plus 使用小技巧(二)—— 路由跳转查询

需求 项目中要在a.vue界面点击表格中数据&#xff0c;携带参数跳转到b.vue界面&#xff0c;并进行查询。需要在d2-crud-plus框架下实现。 解决方法 使用插槽将要点击的数据添加上点击事件&#xff0c;在点击事件中添加路由跳转&#xff0c;并携带参数。 在目标界面使用对外…

单页面应用的优缺点

单页面应用&#xff08;SPA&#xff0c;Single Page Application&#xff09;是一种特殊的Web应用&#xff0c;其所有页面操作和交互都通过JavaScript、AJAX、HTML5和CSS3等前端技术在浏览器中完成&#xff0c;无需每次请求都重新加载整个页面。这种应用的设计模式在近年来越来…

js中的递归

理解 在函数内部可以调用其他函数,如果这个函数在内部调用了自身,那么这个函数就是递归函数 递归的优点 代码简洁性,递归可以用简介的代码实现复杂的问题逻辑清晰易于理解 递归缺点 调用栈溢出,递归中如何递归层次过深,超过了js引擎的调用栈深度限制,就会导致出现 "最…

GIN与Echo:选择正确Go框架的指南

您是否在Go中构建Web应用&#xff1f;选择正确的框架至关重要&#xff01;GIN和Echo是两个热门选择&#xff0c;每个都有其优势和特点。本指南将详细介绍每个框架的特性、速度、社区热度以及它们各自擅长的项目类型。最后&#xff0c;您将能够为您的下一个Web项目选择完美的框架…

C++11常用知识分享(一)【列表初始化 || 简化声明 || 范围for || 左右值 || 可变参数模板】

目录 一. 列表初始化 1&#xff09;用法 2) initializer_list 小节&#xff1a; 二&#xff0c;简化声明 1) &#xff0c;auto 2) &#xff0c;decltype类 3)&#xff0c;nullptr 三&#xff0c;范围for 四&#xff0c;C11后&#xff0c;STL容器变化 五&#xff0c…

一篇文章教会你如何在IOS真机上完美运行React Native

一篇文章教会你如何在IOS真机上完美运行React Native 项目初始化项目配置可能遇到的问题没有账号也没有Team设备上没有打开开发者模式&#xff0c;也没有信任开发者证书 无线调试 项目初始化 在终端使用**npx react-native init ProjectName**初始化React Native项目。 进入项…

运维随录实战(5)之centos搭建jenkins

一,搭建jenkins准备 下载安装jdk环境 -》版本 jdk11 下载安装maven环境 -》版本 maven 3.8.8 git -》版本 1.8.3.1 yum install git jenkins安装版本:2.414.3 下载地址:https://get.jenkins.io/war-stable/2.414.3/jenkins.war 注:jenkins版本与jdk版本有一定的对应关…

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

117.移除链表元素(力扣)

题目描述 代码解决 class Solution { public:ListNode* removeElements(ListNode* head, int val) {//删除头节点while(head!NULL&&head->valval){ListNode*tmphead;headhead->next;delete tmp;}//删除非头节点ListNode*curhead;while(cur!NULL&&cur-&g…

安卓虚拟机ART和Dalvik

目录 一、JVM和Dalvik1.1 基于栈的虚拟机字节码指令执行过程 1.2 基于寄存器的虚拟机 二、ART与Dalvikdex2aotAndroid N的运作方式 三、总结 一、JVM和Dalvik Android应用程序运行在Dalvik/ART虚拟机&#xff0c;并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。 Dalvik…

python入门第十七节常用的高级函数

常用的高级函数 常用的高阶函数filter(function, iterable)map(func, *iterables)reduce(function, iterable[, initial]) 常用的高阶函数 定义&#xff1a;参数或返回值为其他函数的函数 filter(function, iterable) function&#xff1a;函数&#xff08;function 必需能够…

Vue.js 实用技巧:深入理解 Vue.set 方法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

20 个不同的 Python 函数实例

Python 是一种广泛使用的高级编程语言&#xff0c;其函数是 Python 编程中至关重要的概念之一。函数是一段可以重复使用的代码块&#xff0c;可以接收输入参数并返回输出结果。使用函数能够提高代码的可读性、可维护性和重用性。 基础知识 在 Python 中&#xff0c;函数使用关…

异常值检测-箱线图 头歌代码注释

方法一&#xff1a; import pandas as pd import matplotlib.pyplot as plt from scipy import stats import numpy as npdata pd.read_csv("src/death.csv", index_colUnnamed: 0)data data.dropna(axis1, threshdata.shape[0] * 0.2) data data.dropna(axis0, …

【如何在Docker中,修改已经挂载的卷(Volume)】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 提示&#xff1a;添加投票&#xff01;&#xff01;&#xff01; 目录 简述概要知识图谱 简述概要 如何在Docker中&#xff0c;修改已经挂载的卷&#xff08;Volume&#xff09; 知识图谱 在Docker中&#xff0c;修改已经挂载…

C#双向链表实现:在当前节点后插入新数据的方法Insert()

目录 1.定义一个泛型节点类并自动属性 2.定义链表类&#xff0c;并实现Append、Print、MoveFirst、 Insert 3.Main方法 1.定义一个泛型节点类并自动属性 /// <summary> /// 定义泛型节点类 /// </summary> /// <typeparam name"T">泛型运算符&…