AVR---SHT10---温湿度传感器--温度 0XFF---湿度---问题

读取函数如下:

AVR---SHT10---温湿度传感器--温度 0XFF---湿度---问题_第1张图片

/********************************************************
  SHT10温湿度检测
********************************************************/
uchar SHT10_measure(uchar *p_value, uchar *p_checksum, uchar mode)
{
  uchar error=0;
  uint i;

 

  SHT10_transstart(); //启动传输

 

  switch(mode) //选择发送命令
  {
  case TEMP : error+=SHT10_write_byte(MEASURE_TEMP); break; //测量温度
  case HUMI : error+=SHT10_write_byte(MEASURE_HUMI); break; //测量湿度
  default : break;
  }

 

  for(i=0;i<65535;i++) if( ! SHT_DATA_IN_DATA) break; //等待测量结束(从机拉低)//使用一个if等待,时间可能不够长
  for(i=0;i<65535;i++) if( ! SHT_DATA_IN_DATA) break; //等待测量结束(从机拉低)

 

  if(SHT_DATA_IN_DATA) error+=1; // 如果长时间数据线没有拉低,说明测量错误

 

  *(p_value)=SHT10_read_byte(ACK); //读第一个字节,高字节 (MSB)
  *(p_value+1)=SHT10_read_byte(ACK); //读第二个字节,低字节 (LSB)
  *p_checksum =SHT10_read_byte(noACK); //read CRC校验码

 

  Uart_Send(2); Uart_Send(error);

  return error; // error=1 通讯错误
}

你可能感兴趣的:(c/c++,嵌入式物联网)