STM32+SHTC3读取温湿度

shtc3.c

#include "shtc3.h"
#include "delay.h"
#include "myiic.h"

float Temperature=0;
float Humidity=0;

void Shtc3_Init(void)
{
	IIC_Init();
}
void Shtc3_Read_Result(void)
{
	u16 tem,hum;
	u16 buff[6];
	/*shtc3唤醒*/
	IIC_Start();
	IIC_Send_Byte(0xE0);
	IIC_Wait_Ack();
	IIC_Send_Byte(0x35);
	IIC_Wait_Ack();
	IIC_Send_Byte(0x17);
	IIC_Wait_Ack();
	IIC_Stop();
	delay_us(250);
	/*shtc3测量*/
	IIC_Start();
	IIC_Send_Byte(0xE0);
	IIC_Wait_Ack();
	IIC_Send_Byte(0x5C);
	IIC_Wait_Ack();
	IIC_Send_Byte(0x24);
	IIC_Wait_Ack();
	IIC_Stop();
	delay_ms(50);
	/*shtc3读取*/
	IIC_Start();
	IIC_Send_Byte(0xE1);
	IIC_Wait_Ack();
	buff[0]=IIC_Read_Byte(1);
	buff[1]=IIC_Read_Byte(1);
	buff[2]=IIC_Read_Byte(1);
	buff[3]=IIC_Read_Byte(1);
	buff[4]=IIC_Read_Byte(1);
	buff[5]=IIC_Read_Byte(1);
	IIC_Stop();
	delay_us(250);
	/*进入睡眠模式*/
	IIC_Start();
	IIC_Send_Byte(0xE0);
	IIC_Wait_Ack();
	IIC_Send_Byte(0xB0);
	IIC_Wait_Ack();
	IIC_Send_Byte(0x98);
	IIC_Wait_Ack();
	IIC_Stop();
	delay_us(250);
	hum = ((buff[0]<<8) | buff[1]);//湿度拼接
	tem = ((buff[3]<<8) | buff[4]);//温度拼接
	/*转换实际温度*/
	Temperature= (175.0*(float)tem/65535.0-45.0) ;// T = -45 + 175 * tem / (2^16-1)
	Humidity= (100.0*(float)hum/65535.0);// RH = hum*100 / (2^16-1)
  hum=0;
	tem=0;
}

shtc3.h

#ifndef _SHTC3_H
#define _SHTC3_H
#include "sys.h"
extern float Temperature;
extern float Humidity;
//#define SHTC3_ADDR (0X70)
//#define SHTC3_CMD_DEV_WRITE       (0xE0)
//#define SHTC3_CMD_DEV_READ        (0xE1)
//#define SHTC3_CMD_SOFT_RESET      0x805D
//#define SHTC3_CMD_READ_ID         0xEFC8
//#define SHTC3_CMD_WAKEUP          0x3517
//#define SHTC3_CMD_SLEEP           0xB098
//#define SHTC3_CMD_READ_TEMP_DATA  0x7866
//#define SHTC3_CMD_READ_HUM_DATA   0x5C24

void Shtc3_Init(void);
void Shtc3_Read_Result(void);

#endif

IIC用自己得就可以,我用的原子哥的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值