SHT31温湿度传感器+SH79F1615中颖的芯片
主程序:
- /*所有包含的头文件*/
- #include <SH79F1615.H>
- #include <intrins.h>
- #include "myiic.h"
- #include "sht30.h"
- //==========================================================================//
- /**************************************************************************
- * 函数名: main
- * 函数功能:主函数
- * 输入参数: 无
- * 返回参数: 无
- * 备注:
- ***************************************************************************/
- void main(void)
- {
- IIC_Init();
- while(1)
- {
- Read_sht30();
- Convert_sht30();
- delay_ms(5000);
- }
- }
复制代码
sht30.c单片机源程序如下:
- #include "sht30.h"
-
- #include "myiic.h"
- unsigned char BUFt[2]={0};
- unsigned char BUFh[2]={0};
- unsigned int hum_value=0;
- unsigned int hum_sum=0;
- unsigned char count=0;
- /*unsigned char crc8(char *buf)
- {
- unsigned char i,j,crc;
-
- crc=0;
- for(j=1;j<7;j++)
- {
- crc=crc^(*buf);
- for(i = 8; i > 0; i--)
- {
- if(crc & 0x80)
- {
- crc = (crc<< 1)^0x31;
- }
- else
- {
- crc = crc<< 1;
- }
- }
- buf++;
- }
- return crc;
- }*/
- unsigned char Get_Crc8(unsigned char *ptr,unsigned int len)
- {
- unsigned char crc;
- unsigned char 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_sht30(unsigned char msb,unsigned char 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);
- }
- unsigned char crc1=0;
- unsigned char crc2=0;
- unsigned char tem ;
- unsigned char hum ;
- void Read_sht30(void)
- {
- unsigned char a=0;
- Cmd_Write_sht30(0x20,0x32); //数据采集频率1 m/s
- delay_ms(5000);
- IIC_Start(); //起始信号
- IIC_Send_Byte(0x88+1); //发送设备地址+读信号
- while(IIC_Wait_Ack());
- BUFt[0]=IIC_Read_Byte(1); //发送ACK
- BUFt[1]=IIC_Read_Byte(1); //发送ACK
- a=IIC_Read_Byte(1); //
- BUFh[0]=IIC_Read_Byte(1); //发送ACK
- BUFh[1]=IIC_Read_Byte(1); //发送ACK
- IIC_Stop(); //发送停止信号
- delay_ms(5);
- }
- //数据转换
- void Convert_sht30(void)
- {
- tem=((unsigned long)175*(BUFt[0]*256+BUFt[1]))/65535-45; //摄氏度
- hum=((unsigned long)100*(BUFh[0]*256+BUFh[1]))/65535;
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
全部资料下载地址:
SHT30(51代码).zip
(112.91 KB, 下载次数: 279)
|