OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9083|回复: 9

分享一份测试可用的sht31温湿度传感器源码

[复制链接]

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-9-12
在线时间
26 小时
发表于 2018-10-23 15:58:04 | 显示全部楼层 |阅读模式
#include "delay.h"
#include "usart.h"
#include "myiic.h"
#include "sht31.h"
float mys_water;
/*------本次测试单片机型号:STM32F401。适用于STMF4系列,其它型号自行更改GPIO-----*/
/*STM32F401只有usart1.usart2.usart6,没有usart3*/
int main(void)
{
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        //设置系统中断优先级分组2
        delay_init(168);                                                                                                                                //延时初始化
        uart_init(9600);                                                                                                                                //串口初始化波特率为115200
        IIC_Init();
       
        while(1)
        {
                        Read_sht31();
                        Convert_sht31();
                        delay_ms(1000);       
               
        }
}



myth.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-9-12
在线时间
26 小时
 楼主| 发表于 2018-10-23 15:59:43 | 显示全部楼层
/*-------sht31.c源码------*/
#include "sht31.h"
#include "delay.h"
#include "myiic.h"
#include "usart.h"
u8 BUFt[2]={0};
u8 BUFh[2]={0};
u8 rxbufsht31[6];
u8 crc1=0;
u8 crc2=0;
uint8_t tem ;
uint8_t hum ;


u8 Get_Crc8(u8 *ptr,u16 len)
{
        u8 crc;
        u8 i;
        crc=0;
        while(len--)
        {
                crc^=*ptr++;
                for(i=0;i<8;i++)
                {
                        if(crc&0x01)crc=(crc>>1)^0x8C;
                        else crc >>= 1;
                }
        }
        return crc;
}
void Cmd_Write_sht31(uint8_t msb,uint8_t lsb)
{
  IIC_Start();                          //起始信号
  IIC_Send_Byte(0x88+0);                                   //发送设备地址+写信号
        while(IIC_Wait_Ack());                                        //从机应答

  IIC_Send_Byte(msb);                                            //发送命令
        while(IIC_Wait_Ack());

        IIC_Send_Byte(lsb);                                            //发送命令
        while(IIC_Wait_Ack());

  IIC_Stop();                           //发送停止信号
        delay_ms(5);
}


/*传感器将首先发送温度值,然后发送相对湿度值。在收到湿度值的校验和后,就应该发送一个NACK和停止条件*/
void Read_sht31(void)
{          
                u8 i;
                Cmd_Write_sht31(0x21,0x26);         //数据采集频率1 mps,周期性数据采集模式的测量命令
                IIC_Start();           //起始信号
    IIC_Send_Byte(0x88+1);        //发送设备地址+读信号
                while(IIC_Wait_Ack());
                delay_us(5);
                for(i=0;i<6;i++)
                {
                       
                        if(i==5)*(rxbufsht31+i)=IIC_Read_Byte(0);        //读取湿度校验后发送NACK
                        else *(rxbufsht31+i)=IIC_Read_Byte(1);                //读取并发送ACK
                }
       
    IIC_Stop();                                                          //发送停止信号
                BUFt[0]=rxbufsht31[0];                                                                                  //存入温度数据
                BUFt[1]=rxbufsht31[1];  
       
                BUFh[0]=rxbufsht31[3];                                                                                  //存入湿度数据
                BUFh[1]=rxbufsht31[4];  
    delay_ms(5);
}

//数据转换
void Convert_sht31(void)
{
        tem=175*(BUFt[0]*256+BUFt[1])/65535-45; //摄氏度
        hum=100*(BUFh[0]*256+BUFh[1])/65535;
        BUFt[0]=0;
        BUFt[1]=0;
        BUFh[0]=0;
        BUFh[1]=0;
        printf("温度:%d\n",tem);
        printf("湿度:%d\n",hum);
}


回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-9-12
在线时间
26 小时
 楼主| 发表于 2018-10-23 16:01:18 | 显示全部楼层
其他就不粘贴了,直接打包
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-9-12
在线时间
26 小时
 楼主| 发表于 2018-10-23 16:02:59 | 显示全部楼层
sht30也是可以的

IIC实验.rar

7.13 MB, 下载次数: 8488

回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2018-9-12
在线时间
26 小时
 楼主| 发表于 2018-10-23 16:05:16 | 显示全部楼层
之前本来打算专门用一个号来分享源码的,可是号登不上,密码咋滴就忘记了呢,气死了
回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2018-10-23 17:11:53 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-5-6
在线时间
7 小时
发表于 2019-7-11 15:57:52 | 显示全部楼层
楼主压缩包损坏了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-8-16
在线时间
3 小时
发表于 2021-2-28 23:12:01 | 显示全部楼层
谢谢分享,下载看看
回复 支持 反对

使用道具 举报

8

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2014-7-4
在线时间
7 小时
发表于 2023-8-7 09:14:00 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

0

主题

286

帖子

0

精华

高级会员

Rank: 4

积分
949
金钱
949
注册时间
2018-4-21
在线时间
264 小时
发表于 2024-2-18 19:00:01 | 显示全部楼层
感谢分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表