找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7121|回复: 11
打印 上一主题 下一主题
收起左侧

SHT31温湿度传感器的51单片机程序(SH79F1615中颖芯片)

  [复制链接]
跳转到指定楼层
楼主
SHT31温湿度传感器+SH79F1615中颖的芯片


主程序:
  1. /*所有包含的头文件*/
  2. #include <SH79F1615.H>
  3. #include <intrins.h>
  4. #include "myiic.h"
  5. #include "sht30.h"

  6. //==========================================================================//

  7. /**************************************************************************
  8. *        函数名:  main
  9. *        函数功能:主函数
  10. *        输入参数:        无
  11. *        返回参数:        无
  12. *        备注:
  13. ***************************************************************************/
  14. void main(void)
  15. {
  16.         IIC_Init();
  17.         while(1)
  18.         {                 
  19.                 Read_sht30();        
  20.                 Convert_sht30();
  21. delay_ms(5000);
  22.         }
  23. }


复制代码

sht30.c单片机源程序如下:
  1. #include "sht30.h"

  2. #include "myiic.h"
  3. unsigned char BUFt[2]={0};
  4. unsigned char BUFh[2]={0};

  5. unsigned int hum_value=0;
  6. unsigned int hum_sum=0;
  7. unsigned char count=0;
  8. /*unsigned char crc8(char *buf)
  9. {
  10. unsigned char i,j,crc;

  11.   crc=0;
  12. for(j=1;j<7;j++)
  13. {
  14.         crc=crc^(*buf);
  15.         for(i = 8; i > 0; i--)
  16.         {
  17.             if(crc & 0x80)
  18.             {
  19.              crc = (crc<< 1)^0x31;
  20.             }
  21.     else
  22.             {
  23.              crc = crc<< 1;
  24.     }
  25.         }
  26.     buf++;
  27. }
  28. return crc;
  29. }*/

  30. unsigned char Get_Crc8(unsigned char *ptr,unsigned int len)
  31. {
  32.         unsigned char crc;
  33.         unsigned char i;
  34.         crc=0;
  35.         while(len--)
  36.         {
  37.                 crc^=*ptr++;
  38.                 for(i=0;i<8;i++)
  39.                 {
  40.                         if(crc&0x01)crc=(crc>>1)^0x8C;
  41.                         else crc >>= 1;
  42.                 }
  43.         }
  44.         return crc;
  45. }
  46. void Cmd_Write_sht30(unsigned char msb,unsigned char lsb)
  47. {
  48.   IIC_Start();                          //起始信号
  49.   IIC_Send_Byte(0x88+0);   //发送设备地址+写信号
  50.   while(IIC_Wait_Ack());                                                //从机应答
  51.   IIC_Send_Byte(msb);                                            //发送命令
  52.   while(IIC_Wait_Ack());
  53.   IIC_Send_Byte(lsb);                                            //发送命令
  54.   while(IIC_Wait_Ack());
  55.   IIC_Stop();                   //发送停止信号
  56.         delay_ms(5);
  57. }


  58. unsigned char crc1=0;
  59. unsigned char crc2=0;
  60. unsigned char tem ;
  61. unsigned char hum ;
  62. void Read_sht30(void)
  63. {           
  64.                 unsigned char a=0;
  65.                 Cmd_Write_sht30(0x20,0x32); //数据采集频率1 m/s
  66.                 delay_ms(5000);
  67.                 IIC_Start();           //起始信号
  68.                 IIC_Send_Byte(0x88+1);         //发送设备地址+读信号
  69.                 while(IIC_Wait_Ack());
  70.                 BUFt[0]=IIC_Read_Byte(1);  //发送ACK
  71.                 BUFt[1]=IIC_Read_Byte(1);  //发送ACK
  72.             a=IIC_Read_Byte(1); //
  73.                 BUFh[0]=IIC_Read_Byte(1);  //发送ACK
  74.                 BUFh[1]=IIC_Read_Byte(1);  //发送ACK
  75.                 IIC_Stop();                          //发送停止信号
  76.                 delay_ms(5);
  77. }

  78. //数据转换
  79. void Convert_sht30(void)
  80. {
  81.         tem=((unsigned long)175*(BUFt[0]*256+BUFt[1]))/65535-45; //摄氏度
  82.         hum=((unsigned long)100*(BUFh[0]*256+BUFh[1]))/65535;
  83. ……………………

  84. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

全部资料下载地址: SHT30(51代码).zip (112.91 KB, 下载次数: 279)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:273619 发表于 2018-1-9 18:14 | 只看该作者
厉害了6666水一波
回复

使用道具 举报

板凳
ID:185362 发表于 2018-4-27 19:20 | 只看该作者
感谢楼主分享
回复

使用道具 举报

地板
ID:306946 发表于 2018-4-28 08:43 来自手机 | 只看该作者
谢谢,回去试试
回复

使用道具 举报

5#
ID:394151 发表于 2018-9-5 17:12 | 只看该作者
非常好,非常好
回复

使用道具 举报

6#
ID:435455 发表于 2018-11-29 16:38 | 只看该作者
您好,谢谢楼主分享,请教一下,SHT30的地址我看资料里写的是0X44,0X45,资料我也看的很懵,明明低位是读写地址,官方资料里说成0x44和0X45两个地址,但是看您的程序里地址是0x88,不知道这个地址到底是多少呢?
回复

使用道具 举报

7#
ID:393699 发表于 2018-12-11 21:33 | 只看该作者
刚接触这模块,不知道为啥总是没数据
回复

使用道具 举报

8#
ID:151749 发表于 2019-1-30 00:40 来自手机 | 只看该作者
谢谢提供
回复

使用道具 举报

9#
ID:405257 发表于 2019-10-7 16:17 | 只看该作者
谢谢楼主分享,下载来看看
回复

使用道具 举报

10#
ID:378085 发表于 2020-1-19 09:39 | 只看该作者
工作正好接触到 SHT31   学习一下,谢谢楼主分享
回复

使用道具 举报

11#
ID:706721 发表于 2020-3-11 22:52 | 只看该作者
这是sht30的代码,sht31通用嘛?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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