首先讲讲SHT10这款温室度传感器。SHT1x(包括SHT10,SHT11和SHT15)属于Sersirion温湿度传感器家族中的贴片封装系列。更之前我讲过的DHT11这款温湿度传感器相比,体积小了许多,特别适合用于产品中。SHT10温湿度传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件(文绉绉的),传感器内部有一个精度高达14为位的A/D转换器,适应串行接口电路实现无缝连接。该产品具有品质卓越、响应速度速度快,抗干扰能力强、性价比高等优点。
1、接口定义:
SHT10的接口定义如下图所示:
如上图所示,1脚为GND,4脚为VDD。它的供电电压范围为2.4~5.5V,建议的电压为3.3V,在电源引脚(VDD、GND)之间必须加上一个0.1uf的电容,应于去耦滤波用。它的2脚DATA为数据引脚,3脚SCK为时钟控制引脚,没有发现这两个引脚很像IIC所使用的引脚功能?没错,这个传感器确实可以认为是IIC接口,但是又有却别。该传感器不能按照IIC的协议编址,但是,如果IIC总线上没有挂接别的元件,传感器可以直接连到IIC总线上,但是单片机必须按照传感器的协议工作。传感器与单片机的接线如下图所示:
2、传感器的通讯
2.1、“启动传输”时序
用一组“启动传输”时序来完成数据传输的初始化。它包括:当SCK时钟高电平时DATA翻转为低电平,紧接着SCK变成低电平,随后是在SCK时钟高电平,随后是在SCK时钟高电平DATA翻转位高电平。时序如下:
2.2、复位时序
如果与SHT1x 通讯中断,可通过下列信号时序复位:当DATA 保持高电平时,触发SCK 时钟9 次或更多。时序图如下:
2.3、命令集
传感器的命令包含三个地址位(目前只支持000,这就是他只能挂接在空闲的IIC总线上的原因)和五个命令位。。SHT1x 会以下述方式表示已正确地接收到指令:在第8 个SCK 时钟的下降沿之后,将DATA 下拉为低电平(ACK 位)。在第9 个SCK 时钟的下降沿之后,释放DATA(恢复高电平)。命令集如下:
2.4、温湿度测量
发布一组测量命令(‘00000101’表示相对湿度RH,‘00000011’表示温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320ms,分别对应8/12/14bit 测量。确切的时间随内部晶振速度,最多可能有-30%的变化。。SHT1x 通过下拉DATA 至低电平并进入空闲模式,表示测量的结束。控制器在再次触发SCK 时钟前,必须等待这个“数据备妥”信号来读出数据。检测数据可以先被存储,这样控制器可以继续执行其它任务在需要时再读出数据。
在收到CRC 的确认位之后,表明通讯结束。如果不使用CRC-8 校验,控制器可以在测量值LSB 后,通过保持ACK高电平终止通讯。在测量和通讯完成后,SHT1x 自动转入休眠模式。
2.5、状态寄存器
SHT1x 的某些高级功能可以通过给状态寄存器发送指令来实现,如选择测量分辨率,电量不足提醒,使用 OTP 加载或启动加热功能等。状态寄存器度、写如下:
2.7.1 温度的转化
设T 2 1 SOt为从传感器上读出来的测量数值,我们需要用下面的公式将测量数值转换成整整的温度值。
T = d1 + d2 * SOt (其中d1,d2的值根据实际情况选择,选项如下)
这个文件主要定义些重要的参数,以及更硬件相关的一些定义。
-
/*************************************************************
-
\(^o^)/
-
Copyright (C), 2013-2020, ZheJiang University of Technology
-
File name : SHT10.h
-
Author : ziye334
-
Version : V1.0
-
Data : 2014/3/10
-
Description: Digital temperature and humidity sensor driver code
-
-
*************************************************************/
-
#ifndef __SHT10_H__
-
#define __SHT10_H__
-
#include "stm32f10x.h"
-
-
enum {TEMP, HUMI};
-
-
/* GPIO相关宏定义 */
-
#define SHT10_AHB2_CLK RCC_APB2Periph_GPIOD
-
#define SHT10_DATA_PIN GPIO_Pin_0
-
#define SHT10_SCK_PIN GPIO_Pin_1
-
#define SHT10_DATA_PORT GPIOD
-
#define SHT10_SCK_PORT GPIOD
-
-
#define SHT10_DATA_H() GPIO_SetBits(SHT10_DATA_PORT, SHT10_DATA_PIN) //拉高DATA数据线
-
#define SHT10_DATA_L() GPIO_ResetBits(SHT10_DATA_PORT, SHT10_DATA_PIN) //拉低DATA数据线
-
#define SHT10_DATA_R() GPIO_ReadInputDataBit(SHT10_DATA_PORT, SHT10_DATA_PIN) //读DATA数据线
-
-
#define SHT10_SCK_H() GPIO_SetBits(SHT10_SCK_PORT, SHT10_SCK_PIN) //拉高SCK时钟线
-
#define SHT10_SCK_L() GPIO_ResetBits(SHT10_SCK_PORT, SHT10_SCK_PIN) //拉低SCK时钟线
-
-
/* 传感器相关宏定义 */
-
#define noACK 0
-
#define ACK 1
-
//addr command r/w
-
#define STATUS_REG_W 0x06 //000 0011 0 写状态寄存器
-
#define STATUS_REG_R 0x07 //000 0011 1 读状态寄存器
-
#define MEASURE_TEMP 0x03 //000 0001 1 测量温度
-
#define MEASURE_HUMI 0x05 //000 0010 1 测量湿度
-
#define SOFTRESET 0x1E //000 1111 0 复位
-
-
-
void SHT10_Config(
void);
-
void SHT10_ConReset(
void);
-
u8 SHT10_SoftReset(
void);
-
u8 SHT10_Measure(u16 *p_value, u8 *p_checksum, u8 mode);
-
void SHT10_Calculate(u16 t, u16 rh,
float *p_temperature,
float *p_humidity);
-
float SHT10_CalcuDewPoint(
float t,
float h);
-
-
-
#endif
-
/*************************************************************
-
\(^o^)/
-
Copyright (C), 2013-2020, ZheJiang University of Technology
-
File name : SHT10.c
-
Author : ziye334
-
Version : V1.0
-
Data : 2014/3/10
-
Description: Digital temperature and humidity sensor driver code
-
-
*************************************************************/
-
#include "SHT10.h"
-
#include
-
-
-
/*************************************************************
-
Function :SHT10_Dly
-
Description:SHT10时序需要的延时
-
Input : none
-
return : none
-
*************************************************************/
-
void SHT10_Dly(
void)
-
{
-
u16 i;
-
for(i =
500; i >
0; i--);
-
}
-
-
-
/*************************************************************
-
Function :SHT10_Config
-
Description:初始化 SHT10引脚
-
Input : none
-
return : none
-
*************************************************************/
-
void SHT10_Config(
void)
-
{
-
GPIO_InitTypeDef GPIO_InitStructure;
-
//初始化SHT10引脚时钟
-
RCC_APB2PeriphClockCmd(SHT10_AHB2_CLK ,ENABLE);
-
-
//PD0 DATA 推挽输出
-
GPIO_InitStructure.GPIO_Pin = SHT10_DATA_PIN;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
GPIO_Init(SHT10_DATA_PORT, &GPIO_InitStructure);
-
//PD1 SCK 推挽输出
-
GPIO_InitStructure.GPIO_Pin = SHT10_SCK_PIN;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
GPIO_Init(SHT10_SCK_PORT, &GPIO_InitStructure);
-
-
SHT10_ConReset();
//复位通讯
-
}
-
-
-
/*************************************************************
-
Function :SHT10_DATAOut
-
Description:设置DATA引脚为输出
-
Input : none
-
return : none
-
*************************************************************/
-
void SHT10_DATAOut(
void)
-
{
-
GPIO_InitTypeDef GPIO_InitStructure;
-
//PD0 DATA 推挽输出
-
GPIO_InitStructure.GPIO_Pin = SHT10_DATA_PIN;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
GPIO_Init(SHT10_DATA_PORT, &GPIO_InitStructure);
-
}
-
-
-
/*************************************************************
-
Function :SHT10_DATAIn
-
Description:设置DATA引脚为输入
-
Input : none
-
return : none
-
*************************************************************/
-
void SHT10_DATAIn(
void)
-
{
-
GPIO_InitTypeDef GPIO_InitStructure;
-
//PD0 DATA 浮动输入
-
GPIO_InitStructure.GPIO_Pin = SHT10_DATA_PIN;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
-
GPIO_Init(SHT10_DATA_PORT, &GPIO_InitStructure);
-
}
-
-
-
/*************************************************************
-
Function :SHT10_WriteByte
-
Description:写1字节
-
Input : value:要写入的字节
-
return : err: 0-正确 1-错误
-
*************************************************************/
-
u8 SHT10_WriteByte(u8 value)
-
{
-
u8 i, err =
0;
-
-
SHT10_DATAOut();
//设置DATA数据线为输出
-
-
for(i =
0x80; i >
0; i /=
2)
//写1个字节
-
{
-
if(i & value)
-
SHT10_DATA_H();
-
else
-
SHT10_DATA_L();
-
SHT10_Dly();
-
SHT10_SCK_H();
-
SHT10_Dly();
-
SHT10_SCK_L();
-
SHT10_Dly();
-
}
-
SHT10_DATAIn();
//设置DATA数据线为输入,释放DATA线
-
SHT10_SCK_H();
-
err = SHT10_DATA_R();
//读取SHT10的应答位
-
SHT10_SCK_L();
-
-
return err;
-
}
-
-
/*************************************************************
-
Function :SHT10_ReadByte
-
Description:读1字节数据
-
Input : Ack: 0-不应答 1-应答
-
return : err: 0-正确 1-错误
-
*************************************************************/
-
u8 SHT10_ReadByte(u8 Ack)
-
{
-
u8 i, val =
0;
-
-
SHT10_DATAIn();
//设置DATA数据线为输入
-
for(i =
0x80; i >
0; i /=
2)
//读取1字节的数据
-
{
-
SHT10_Dly();
-
SHT10_SCK_H();
-
SHT10_Dly();
-
if(SHT10_DATA_R())
-
val = (val | i);
-
SHT10_SCK_L();
-
}
-
SHT10_DATAOut();
//设置DATA数据线为输出
-
if(Ack)
-
SHT10_DATA_L();
//应答,则会接下去读接下去的数据(校验数据)
-
else
-
SHT10_DATA_H();
//不应答,数据至此结束
-
SHT10_Dly();
-
SHT10_SCK_H();
-
SHT10_Dly();
-
SHT10_SCK_L();
-
SHT10_Dly();
-
-
return val;
//返回读到的值
-
}
-
-
-
/*************************************************************
-
Function :SHT10_TransStart
-
Description:开始传输信号,时序如下:
-
_____ ________
-
DATA: |_______|
-
___ ___
-
SCK : ___| |___| |______
-
Input : none
-
return : none
-
*************************************************************/
-
void SHT10_TransStart(
void)
-
{
-
SHT10_DATAOut();
//设置DATA数据线为输出
-
-
SHT10_DATA_H();
-
SHT10_SCK_L();
-
SHT10_Dly();
-
SHT10_SCK_H();
-
SHT10_Dly();
-
SHT10_DATA_L();
-
SHT10_Dly();
-
SHT10_SCK_L();
-
SHT10_Dly();
-
SHT10_SCK_H();
-
SHT10_Dly();
-
SHT10_DATA_H();
-
SHT10_Dly();
-
SHT10_SCK_L();
-
-
}
-
-
-
/*************************************************************
-
Function :SHT10_ConReset
-
Description:通讯复位,时序如下:
-
_____________________________________________________ ________
-
DATA: |_______|
-
_ _ _ _ _ _ _ _ _ ___ ___
-
SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______| |___| |______
-
Input : none
-
return : none
-
*************************************************************/
-
void SHT10_ConReset(
void)
-
{
-
u8 i;
-
-
SHT10_DATAOut();
-
-
SHT10_DATA_H();
-
SHT10_SCK_L();
-
-
for(i =
0; i <
9; i++)
//触发SCK时钟9c次
-
{
-
SHT10_SCK_H();
-
SHT10_Dly();
-
SHT10_SCK_L();
-
SHT10_Dly();
-
}
-
SHT10_TransStart();
//启动传输
-
}
-
-
-
-
/*************************************************************
-
Function :SHT10_SoftReset
-
Description:软复位
-
Input : none
-
return : err: 0-正确 1-错误
-
*************************************************************/
-
u8 SHT10_SoftReset(
void)
-
{
-
u8 err =
0;
-
-
SHT10_ConReset();
//通讯复位
-
err += SHT10_WriteByte(SOFTRESET);
//写RESET复位命令
-
-
return err;
-
}
-
-
-
/*************************************************************
-
Function :SHT10_ReadStatusReg
-
Description:读状态寄存器
-
Input : p_value-读到的数据;p_checksun-读到的校验数据
-
return : err: 0-正确 0-错误
-
*************************************************************/
-
u8 SHT10_ReadStatusReg(u8 *p_value, u8 *p_checksum)
-
{
-
u8 err =
0;
-
-
SHT10_TransStart();
//开始传输
-
err = SHT10_WriteByte(STATUS_REG_R);
//写STATUS_REG_R读取状态寄存器命令
-
*p_value = SHT10_ReadByte(ACK);
//读取状态数据
-
*p_checksum = SHT10_ReadByte(noACK);
//读取检验和数据
-
-
return err;
-
}
-
-
-
-
/*************************************************************
-
Function :SHT10_WriteStatusReg
-
Description:写状态寄存器
-
Input : p_value-要写入的数据值
-
return : err: 0-正确 1-错误
-
*************************************************************/
-
u8 SHT10_WriteStatusReg(u8 *p_value)
-
{
-
u8 err =
0;
-
-
SHT10_TransStart();
//开始传输
-
err += SHT10_WriteByte(STATUS_REG_W);
//写STATUS_REG_W写状态寄存器命令
-
err += SHT10_WriteByte(*p_value);
//写入配置值
-
-
return err;
-
}
-
-
-
-
/*************************************************************
-
Function :SHT10_Measure
-
Description:从温湿度传感器读取温湿度
-
Input : p_value-读到的值;p_checksum-读到的校验数
-
return : err: 0-正确 1—错误
-
*************************************************************/
-
u8 SHT10_Measure(u16 *p_value, u8 *p_checksum, u8 mode)
-
{
-
u8 err =
0;
-
u32 i;
-
u8 value_H =
0;
-
u8 value_L =
0;
-
-
SHT10_TransStart();
//开始传输
-
switch(mode)
-
{
-
case TEMP:
//测量温度
-
err += SHT10_WriteByte(MEASURE_TEMP);
//写MEASURE_TEMP测量温度命令
-
break;
-
case HUMI:
-
err += SHT10_WriteByte(MEASURE_HUMI);
//写MEASURE_HUMI测量湿度命令
-
break;
-
default:
-
break;
-
}
-
SHT10_DATAIn();
-
for(i =
0; i <
72000000; i++)
//等待DATA信号被拉低
-
{
-
if(SHT10_DATA_R() ==
0)
break;
//检测到DATA被拉低了,跳出循环
-
}
-
if(SHT10_DATA_R() ==
1)
//如果等待超时了
-
err +=
1;
-
value_H = SHT10_ReadByte(ACK);
-
value_L = SHT10_ReadByte(ACK);
-
*p_checksum = SHT10_ReadByte(noACK);
//读取校验数据
-
*p_value = (value_H <<
8) | value_L;
-
return err;
-
}
-
-
-
/*************************************************************
-
Function :SHT10_Calculate
-
Description:计算温湿度的值
-
Input : Temp-从传感器读出的温度值;Humi-从传感器读出的湿度值
-
p_humidity-计算出的实际的湿度值;p_temperature-计算出的实际温度值
-
return : none
-
*************************************************************/
-
void SHT10_Calculate(u16 t, u16 rh,
float *p_temperature,
float *p_humidity)
-
{
-
const
float d1 =
-39.7;
-
const
float d2 = +
0.01;
-
const
float C1 =
-2.0468;
-
const
float C2 = +
0.0367;
-
const
float C3 =
-0.0000015955;
-
const
float T1 = +
0.01;
-
const
float T2 = +
0.00008;
-
-
float RH_Lin;
//RH线性值
-
float RH_Ture;
//RH真实值
-
float temp_C;
-
-
temp_C = d1 + d2 * t;
//计算温度值
-
RH_Lin = C1 + C2 * rh + C3 * rh * rh;
//计算湿度值
-
RH_Ture = (temp_C
-25) * (T1 + T2 * rh) + RH_Lin;
//湿度的温度补偿,计算实际的湿度值
-
-
if(RH_Ture >
100)
//设置湿度值上限
-
RH_Ture =
100;
-
if(RH_Ture <
0.1)
-
RH_Ture =
0.1;
//设置湿度值下限
-
-
*p_humidity = RH_Ture;
-
*p_temperature = temp_C;
-
-
}
-
-
-
/*************************************************************
-
Function :SHT10_CalcuDewPoint
-
Description:计算露点
-
Input : h-实际的湿度;t-实际的温度
-
return : dew_point-露点
-
*************************************************************/
-
float SHT10_CalcuDewPoint(
float t,
float h)
-
{
-
float logEx, dew_point;
-
-
logEx =
0.66077 +
7.5 * t / (
237.3 + t) + (log10(h) -
2);
-
dew_point = ((
0.66077 - logEx) *
237.3) / (logEx -
8.16077);
-
-
return dew_point;
-
}
-
-
-
2.8
.3、main函数的编写:
-
int main(
void)
-
{
-
u16 humi_val, temp_val;
-
u8 err =
0, checksum =
0;
-
float humi_val_real =
0.0;
-
float temp_val_real =
0.0;
-
float dew_point =
0.0;
-
-
BSP_Init();
-
printf(
"\nSHT10温室度测试程序!!!\n");
-
SHT10_Config();
-
while(
1)
-
{
-
err += SHT10_Measure(&temp_val, &checksum, TEMP);
//获取温度测量值
-
err += SHT10_Measure(&humi_val, &checksum, HUMI);
//获取湿度测量值
-
if(err !=
0)
-
SHT10_ConReset();
-
else
-
{
-
SHT10_Calculate(temp_val, humi_val, &temp_val_real, &humi_val_real);
//计算实际的温湿度值
-
dew_point = SHT10_CalcuDewPoint(temp_val_real, humi_val_real);
//计算露点温度
-
}
-
printf(
"当前环境温度为:%2.1f℃,湿度为:%2.1f%%,露点温度为%2.1f℃\r\n", temp_val_real, humi_val_real, dew_point);
-
LED1_Toggle();
-
Delay_ms(
1000);
-
}
-
}
原文出处: http://ziye334.blog.163.com/blog/static/224306191201421265639956/
[/code](11个月前#8楼)查看回复(2)举报回复
这里有一行备注 但是你前面没有代码 这是 sht1x的地址吗??程序好像没看到要写sht10 的地址的
求解答 新手(3年前#4楼)查看回复(1)举报回复
SHT11(IIC协议的温湿度传感器)简介和编程方法
09-03 阅读数 2万+
SHT11是瑞士Scnsirion公司推出的一款数字温湿度传感器芯片。该芯片广泛应用于暖通空调、汽车、消费电子、自动控制等领域。共主要特点如下:◆高度集成,将温度感测、湿度感测、信号变换、A/D转换和... 博文 来自: zgrjkflmkyc的专栏
sht11温湿度传感器
02-27 阅读数 939
温度、湿度转化,默认温度14bit分辨率,湿度12bit分辨率 博文 来自: ziyoulangzi019的专栏
STM32 采集SHT10传感器数据(非float)
12-21 阅读数 2409
本来想在网上直接load一个sht10驱动就直接能用用了,没想到太天真了。非但没有stm32L0cube这个库的程序而且大部分还是使用浮点运算的,你妹的,stm32好多都是不支持浮点运算的呀。所以只好... 博文 来自: wwwchenyc的博客
sht10裸机程序分析(与cc2530进行通讯)
06-20 阅读数 994
voidmain(void){Delay_ms(1000);//让设备稳定InitUart();//串口初始化while(1){DHT11();//获取温湿度P0DIR|=0x40;//IO口需要重新... 博文 来自: wearlee的博客
关于SHT10的温湿度读取函数里面分析问题(新手,麻烦大家啦,谢谢)
void main(void) { Delay_ms(1000);//让设备稳定 InitUart(); //串口初始化 while(1) { DHT11(); //获取温湿度 P0DIR |= 0x 论坛
SHT10 温湿度 传感器
12-01 阅读数 183
输出转换为物理量:相对湿度:湿度传感器相对湿度的温度补偿:温度: 博文 来自: String nzx=(I LOVE YOU)? 程序猿 :程序牛
有关SHT10驱动问题
最近写基于LPC1768的SHT10驱动,用GPIO模拟I2C。从官方的程序移植到LPC1768上,但是每次write_cmd一个字节到SHT10设备,SHT10都没有ACK。也就是最初是的发送一个字 论坛
AVR---SHT10---温湿度传感器--温度 0XFF---湿度---问题
12-06 阅读数 123
读取函数如下:/******************************************************** SHT10温湿度检测*************************... 博文 来自: String nzx=(I LOVE YOU)? 程序猿 :程序牛
有关信号采集
各位大虾,我想请教有关传感器的信号采集的问题,有做过的吗?对编程实现是怎样一个过程? 论坛
DSP之信号采集
08-15 阅读数 1万+
信号采集类的外设包括采集模拟信号的模/数转换器和提供数字信号输入、输出功能的通用输入/输出接口。模/数转换器为DSP提供了多通道模拟/数字转换能力,通用输入、输出接口可以完成数字信号的采集,当其被设置... 博文 来自: 工作笔记
nodemcu读取sht10的温湿度值不正常原因
06-11 阅读数 1806
sht10模块是几年前在淘宝买的。从X宝X士凯借的图如上。当然后做项目还是要迁移到sht2x,sht3x等,标准的i2c界面会大大简化工作。 像sht10这种,要根据时序发高低电平脉冲,实在是枯燥无味... 博文 来自: 风之羽
STM32 模块篇-温湿度传感器模块(DHT11)实验
06-21 阅读数 2万+
目 录5.03.1 概述35.03.1.1 性能描述45.03.1.2 传感器时序45.03.2 实验目的65.03.3 硬件设计75.03.4 软件设计75.03.4.1 软件设计说明85.... 博文 来自: teavamc的博客
STM32-DHT11(温湿度传感器)之学习笔记
12-16 阅读数 1414
一、模块分析:原理图和引脚连接图:由图可知DHT11(温湿度模块)是单总线的连接,数据的输入输出由一根线完成,DQ网络标号对应的引脚是PG9就是GPIO外设接口G组的第九个引脚。二、DHT11时序图:... 博文 来自: weixin_42443025的博客
SHT10温湿度传感器
04-12 阅读数 275
1、SHT1x(包括SHT10,SHT11和SHT15)属于Sensirion温湿度传感器家族中的贴片封装系列。传感器将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。传感器具有... 博文 来自: 飘飘仙儿__的博客
软件I2C sht3x温湿度传感器 学习过程记录
02-21 阅读数 250
软件I2Csht3x温湿度传感器DatasheetSHT3x-DIS官网数据手册的阅读embedded-sht例程DatasheetSHT3x-DIS这里没什么好说的,电压,协议,精度,封装之类的。直... 博文 来自: darboy
Proteus中MSP430与SHT11的IIC通信问题
05-21 阅读数 1776
调了两天,MSP430始终接收不到数据,一直以为是代码的问题,今天无意中看到别人的一片文章,才发现问题出在上拉电阻上。DATA线的上拉电阻不能太大,10k不行,换成了1k就没问题了。mark一下,顺便... 博文 来自: 沧海一根草的专栏
CC2530 SHT21 IIC 温湿度传感器驱动实现与速率测试(主机模式)
09-21 阅读数 363
转载请注明出处,谢谢!Newbit-Msming2018-6-15SHT21温湿度传感器驱动实现与速率测试(主机模式HostMaster)非主机模式:CC2530SHT21IIC温湿度传感器驱动实现与... 博文 来自: qq_21352095的博客
STM32通过硬件I2C读写控制AM2311温湿度传感器模块打印输出数据
11-30 阅读数 517
程序功能说明:1、通过I2C硬件查询方式驱动AM2311。2、获取AM2311测得的温度和湿度并串口打印输出。3、使用I2C1。程序注意事项:1、AM2311在测试完数据后会进入一个休眠模式,程序需要... 博文 来自: viewtoolsz的博客
STM32与SHT1X温湿度传感器通讯
12-30 阅读数 777
在这次项目开发中应用到了SHT1X温湿度传感器,该系列有SHT10、SHT11和SHT15,属于Sersirion温湿度传感器家族中的贴片封装系列。包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成... 博文 来自: 木南创智
SHT3X温湿度传感器水合
06-27 阅读数 1122
最近由于项目需要做了一款高精度温湿度压力采集板,温湿度传感器采用了Sensirion公司的的SHT31,其传感器特性如下图所示:驱动还算比较顺利,但是测试的时候发现读出来的温度偏高,湿度偏小,以为是传... 博文 来自: qq435873175的博客
基于AT89S52单片机的温湿度报警系统
08-31 阅读数 1593
这是给深圳的一个客户做的一个项目,虽说是工业项目吧,但难度也是比毕业设计高一点吧。原理图:dht11.h#ifndef__dht11_H#define__dht11_H#includetypedefu... 博文 来自: lifengxun20121019的专栏
stm32f103系列与传感器连接问题
买了个压力传感器,上面绿线和红线是信号线,我的板子自带这AD模块,可是应该怎么连呢? 是直接连接到AD的输入引脚那里就好了嘛?大神求解答啊!!!! 论坛
用stm32控制sht10,将测量的温度显示到串口助手
#include #include "sys.h" #include "delay.h" #define noACK 0 //用于判断是否结束SHT10通讯 #def 论坛
温湿度传感器SHT20的驱动与使用
08-23 阅读数 1万+
最近公司里的一个小的项目:基于冰库的温度检测,采用无线通讯的方式,将采集到的温度信息传送给基站,基站通过UDP传输给上位机。 实验平台 编译软件:IAREmbeddedWorkbenchfo... 博文 来自: duanfeiteng0814的博客
露点、湿度换算软件
02-02 阅读数 1276
本软件主要实行大气露点、压力露点之间的换算露点、湿度、ppmV、ppmW、饱和水气压、水气分压,天然气露点仪数据的换算,计算功能强大。 软件下载... 博文 来自: ludianyi的博客
请问计算相对湿度和露点温度程序如何编写
如题,不太清创他们直接的转换公式,不知有没相应的VB程序公式? 论坛
C++ STM32 编程 008 用Proteus运行程序
12-18 阅读数 438
将生成的.ihex文件,扩展名修改为.hex。打开Proteus8.7SP3新建一个工程,并添加STM32F103R6PNPLEDBUTTONRES(单片机,三极管,LED发光二极管,按钮,电阻)五种... 博文 来自: FRAM的博客
请教 SHT10 温湿度 计算方法
SHT10温湿度计算 12位精度AD 输出16进制 温度18 AE 湿度07 20 在不考虑露点,补偿之类,计算温湿度是怎么算的 sht文档上说1073=35.5%这个又是怎么计算的 论坛
DirectX修复工具增强版
02-09 阅读数 206万+
最后更新:2019-5-26
DirectX修复工具最新版:DirectX Repair V3.8 增强版NEW!
版本号:V3.8.0.11638
大小: 107MB/7z格式压缩,189MB…
博文
来自: VBcom的专栏
python图片处理类之~PIL.Image模块(ios android icon图标自动生成处理)
08-31 阅读数 11万+
1.从pyCharm提示下载PIL包
http://www.pythonware.com/products/pil/
2.解压后,进入到目录下
cd /Users/jianan/Dow…
博文
来自: 专注于cocos+unity+服务器全栈
centos7 开启网络连接
03-15 阅读数 3万+
1.当我们发现无法联网时,我们运行下面命令或者ping命令 ip addr
结果没有显示局域网的IP地址
2.我们去修改网卡配置文件,把网络连接打开
cd /
cd /etc/sys…
博文
来自: sfeng95的博客
二值神经网络(Binary Neural Network,BNN)
03-18 阅读数 3万+
在我刚刚过去的研究生毕设中,我在ImageNet数据集上验证了图像特征二值化后仍然具有很强的表达能力,可以在检索中达到较好的效果。而Bengio大神的这篇文章,则不止于将特征二值化,而是要将权重和每层... 博文 来自: 雨石
expat介绍文档翻译
03-22 阅读数 7万+
原文地址:http://www.xml.com/pub/a/1999/09/expat/index.html
因为需要用,所以才翻译了这个文档。但总归赖于英语水平很有限,翻译出来的中文有可能…
博文
来自: ymj7150697的专栏
Unity自动打包工具
07-11 阅读数 1万+
Unity一键打包工具,一键生成几十个平台/渠道的安装包。 博文 来自: 夜风的BLOG
RUtils -- 建立在Rserve之上的Java与R语言通信工具集
10-26 阅读数 6876
注1:RUtils是我偶然发现的一个工具包,它建立在Rserve之上,可以很大程度上简化我们的程序,关于Rserve网络上有很多相关的内容,这里不对其进行介绍,比如这里:http://blog.fen... 博文 来自: 竹叶青的专栏
搭建图片服务器《二》-linux安装nginx
09-22 阅读数 8万+
nginx是个好东西,Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl... 博文 来自: maoyuanming0806的博客
使用Unity实现卡拉OK歌词过渡效果
02-12 阅读数 1686
好长时间之前做过的一个项目 , 其中设计到用Unity模拟卡拉OK歌词过渡的效果 , 如下图所示 ↓ , 这里简单把原理部分分享一下.
演示效果 ↓
实现歌词动态调整功能
实现动态读取歌…
博文
来自: 月儿圆
链接(freemarker)
10-30 阅读数 498
http://blog.csdn.net/liaomin416100569/article/details/78349072 博文 来自: biao285869350
Docx4j 简单操作文字图片(包含页眉页脚和主体内容)
11-12 阅读数 1万+
docx4j官方提供了一些例子,本文只是其中一部分应用的简单例子。需要注意的地方是页眉和页脚,必须创建对应关系才能起作用。页眉和页脚添加图片的时候,第二个参数sourcePart是必须的,调用的cre... 博文 来自: 偶尔记一下
微信支付V3微信公众号支付PHP教程(thinkPHP5公众号支付)/JSSDK的使用
02-02 阅读数 18万+
扫二维码关注,获取更多技术分享
本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,…
博文
来自: Marswill
Keil(MDK-ARM)系列教程(一)_新建软件工程详细过程
05-26 阅读数 6万+
推荐
分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang
推荐…
博文
来自: strongerHuang的专栏
ThreadLocal的设计理念与作用
09-25 阅读数 9万+
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread... 博文 来自: u011860731的专栏
如何用一行C++代码读写数据库
08-01 阅读数 9263
这篇文章要表达的并非数据库相关的知识,而是如何使用DBIOWrapper。 DBIOWrapper是一个工作在Windows下、对ODBC式数据访问进行了小型封装的库。其设计目标是提供极简... 博文 来自: 哈哈 哈 哈哈,哈 哈 哈哈哈
强连通分量及缩点tarjan算法解析
11-16 阅读数 66万+
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量 使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点) 定义: int Ti... 博文 来自: 九野的博客
忘记Oracle数据库管理员密码的解决办法
02-13 阅读数 1万+
安装oracle 9i后,居然把刚刚更改的数据库管理员密码给忘了,又不重新安装,太麻烦了,试了好久,终于修改成功了。1、运行到C盘根目录2、输入:SET ORACLE_SID = 你的SID名称3、输... 博文 来自: llxsharp的专栏
Cocos2d-x 2.2.3 使用NDK配置编译环境
06-11 阅读数 2万+
Cocos2d-x 2.2.3 使用NDK配置编译环境2014年6月11日 Cocos2d-x 3.0以下的开发环境的配置恐怕折磨了很多人,使用cygwin配置编译环境足够让初学者蛋疼一阵子了。本篇博... 博文 来自: 巫山老妖
jquery/js实现一个网页同时调用多个倒计时(最新的)
11-25 阅读数 54万+
jquery/js实现一个网页同时调用多个倒计时(最新的)
最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!
//js
…
博文
来自: Websites
关于SpringBoot bean无法注入的问题(与文件包位置有关)
12-16 阅读数 27万+
问题场景描述整个项目通过Maven构建,大致结构如下: 核心Spring框架一个module spring-boot-base service和dao一个module server-core 提供系统... 博文 来自: 开发随笔
VirtualBox COM获取对象失败
04-17 阅读数 4万+
错误详情
获取 VirtualBox COM 对象失败.应用程序将被中断.Failed to instantiate CLSID_VirtualBox …
博文
来自: 多点折腾少点抱怨
Solaris11挂载光盘
07-15 阅读数 1745
将ISO写入光盘 cdrecord sol-11_1-repo-full.iso
弹出光盘
root@solaris:/media# eject cdrom
cdrom /dev/dsk/c7t0d…
博文
来自: 数据之路-忆梦前程
.NET和java的RSA互通,仅此而已
03-09 阅读数 7万+
RSA .net jva 互通 解决不能互通的问题 博文 来自: lubiaopan的专栏
保护模式及其编程——8086系统寄存器和系统指令
02-18 阅读数 1233
摘要:为了协助处理器完成初始化和控制系统操作,80x86提供了一个标志寄存器和几个系统寄存器。Eflags用于控制任务切换、中断处理、指令跟踪和权限访问。系统寄存器用于内存管理和控制处理器操作。
1…
博文
来自: 河西无名式
IE9 table显示问题,td出现错位的解决方法
01-21 阅读数 5461
IE9 table显示问题
IE9 大数据行table的显示会出现列错位
原因是IE9的BUG
在jsp中使用 table加载大数据量时,td会出现错位,在f…
博文
来自: yzp_soft的专栏
仿饿了么
05-10 阅读数 322
http://blog.csdn.net/zxt0601/article/details/54235736 博文 来自: 小马哥nice的博客
Web前端面试指导(三十):JavaScript有几种类型的值?你能画一下他们的内存图吗?
10-07 阅读数 7718
题目点评 数据类型是所有程序都会涉及到的,是计算机语言比较基础知识,这种问题被问到的可能性其实并不大,这样的题目只要花点时间把它记下来就好了,难易程度一般。 两大类: 栈:原始数据类型(Und... 博文 来自: 雄领IT的专栏
git丢掉本地的修改,还原修改之前的程序
09-18 阅读数 2437
今天在本地做了修改,后来又不想要这次修改的内容,想要还原到修改之前的状态,有一个比较省力的方法,直接从git服务器对应的分支获取覆盖本地的程序。 命令如下:git checkout -f 这样就... 博文 来自: leedaning的专栏
origion绘制热图
07-22 阅读数 6588
有时我们需要绘制热图,用x轴、y轴表示两维数据,用颜色表示第三维 第一步:需要准备三列数据,如图1,这里我用U表示x轴数据,它的取值范围为[0-1],间隔为0.05,E表示y轴,取值范围也是[0-1]... 博文 来自: SunCherryDream的专栏
VS2015+Qt5+OpenCV3开发环境配置
01-08 阅读数 1万+
本文介绍如何使用VS2015作为编译开发环境,调用OpenCV3.31和Qt5.9.1写图像处理的GUI。 1.目录结构 假设我们要创建一个名为VideoZoom的工程,那么首先按下图构建目录结构... 博文 来自: zhhp1001的博客