标题:
STM32+SH20温湿度传感器源程序
[打印本页]
作者:
ZXY123456.
时间:
2020-1-11 10:30
标题:
STM32+SH20温湿度传感器源程序
SH20温湿度传感器利用I2C协议不再需要上拉电阻,直插直用,串口显示
单片机源程序如下:
#include "SHT2x.h"
#include "delay.h"
#include "myiic.h"
#include<stdio.h>
SHT2x_data SHT20;
u8 SHT2x_Init(void)
{
u8 err;
IIC_Init();
err = SHT2x_SoftReset();
return err;
}
u8 SHT2x_SoftReset(void) //SHT20软件复位
{
u8 err=0;
IIC_Start();
IIC_Send_Byte(0x80);
err = IIC_Wait_Ack();
IIC_Send_Byte(0xFE);
err = IIC_Wait_Ack();
IIC_Stop();
return err;
}
float SHT2x_GetTempPoll(void)
{
float TEMP;
u8 ack, tmp1, tmp2;
u16 ST;
u16 i=0;
IIC_Start(); //发送IIC开始信号
IIC_Send_Byte(I2C_ADR_W); //IIC发送一个字节
ack = IIC_Wait_Ack();
IIC_Send_Byte(TRIG_TEMP_MEASUREMENT_POLL);
ack = IIC_Wait_Ack();
do {
delay_ms(100);
IIC_Start(); //发送IIC开始信号
IIC_Send_Byte(I2C_ADR_R);
i++;
ack = IIC_Wait_Ack();
if(i==1000)break;
} while(ack!=0);
tmp1 = IIC_Read_Byte(1);
tmp2 = IIC_Read_Byte(1);
IIC_Read_Byte(0);
IIC_Stop();
ST = (tmp1 << 8) | (tmp2 << 0);
ST &= ~0x0003;
TEMP = ((float)ST * 0.00268127) - 46.85;
return (TEMP);
}
float SHT2x_GetHumiPoll(void)
{
float HUMI;
u8 ack, tmp1, tmp2;
u16 SRH;
u16 i=0;
IIC_Start(); //发送IIC开始信号
IIC_Send_Byte(I2C_ADR_W); //IIC发送一个字节
ack = IIC_Wait_Ack();
IIC_Send_Byte(TRIG_HUMI_MEASUREMENT_POLL);
ack = IIC_Wait_Ack();
do {
delay_ms(100);
IIC_Start(); //发送IIC开始信号
IIC_Send_Byte(I2C_ADR_R);
i++;
ack = IIC_Wait_Ack();
if(i==100)break;
} while(ack!=0);
tmp1 = IIC_Read_Byte(1);
tmp2 = IIC_Read_Byte(1);
IIC_Read_Byte(0);
IIC_Stop();
SRH = (tmp1 << 8) | (tmp2 << 0);
SRH &= ~0x0003;
HUMI = ((float)SRH * 0.00190735) - 6;
return (HUMI);
}
复制代码
所有资料51hei提供下载:
SHT20测试程序.zip
(408.2 KB, 下载次数: 29)
2020-1-11 10:30 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1