标题: SHT31温湿度传感器的51单片机程序(SH79F1615中颖芯片) [打印本页]

作者: 风车车坐大巴    时间: 2018-1-9 16:57
标题: 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, 下载次数: 280)




作者: 13017685967    时间: 2018-1-9 18:14
厉害了6666水一波
作者: ~IOT夙愿    时间: 2018-4-27 19:20
感谢楼主分享
作者: launching    时间: 2018-4-28 08:43
谢谢,回去试试
作者: jxsunyao    时间: 2018-9-5 17:12
非常好,非常好
作者: ljh024    时间: 2018-11-29 16:38
您好,谢谢楼主分享,请教一下,SHT30的地址我看资料里写的是0X44,0X45,资料我也看的很懵,明明低位是读写地址,官方资料里说成0x44和0X45两个地址,但是看您的程序里地址是0x88,不知道这个地址到底是多少呢?
作者: 1092648746    时间: 2018-12-11 21:33
刚接触这模块,不知道为啥总是没数据
作者: bruck    时间: 2019-1-30 00:40
谢谢提供
作者: 摩尔曼斯克    时间: 2019-10-7 16:17
谢谢楼主分享,下载来看看
作者: 六号啦    时间: 2020-1-19 09:39
工作正好接触到 SHT31   学习一下,谢谢楼主分享

作者: 混沌度日    时间: 2020-3-11 22:52
这是sht30的代码,sht31通用嘛?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1