⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.c

📁 模拟I2C
💻 C
字号:
#define DATA P1_1
#define SCK  P1_0
#define ACK 1
#define noACK 0
#define MEASURE_TEMP 0x03  //测量温度命令
#define MEASURE_HUMI 0x05  //测量湿度命令
//读温湿度数据
chars_measure(unsigned char *p_value,unsigned char *p_checksum,unsigned char mode)
{
  unsigned char error=0;
  unsigned int i;
  s_transstart(); //传输开始

  switch(mode)
  {
  case TEMP:
    error+=s_write_byte(measure_temp);break;
  case HUMI:
    error+=s_write_byte(measure_humi);break;
  default:break;
  }

  for(i=0;i<65535;i++)
    if(DATA==0) break;
  if(DATA) error+=1;
  *(p_value)=s_read_byte(ACK);
  *(p_value+1)=s_read_byte(ACK);
  *p_checksum=s_read_byte(noACK);
  return error;
}
//温湿度值标度变换及温度补偿
void calc_sth15(float *p_humidity,float *p_temperature)
{
  const float c1=-4.0;
  const float c2=0.0405;
  const float c3=-0.0000028;
  const float t1=-0.01;
  const float t2=-0.00008;
  float rh=*p_humidity;
  float t=*p_temperature;
  float rh_lin;
  float trh_ture;
  float t_c;
  t_c=t*0.01-40;
  rh_lin=c3*rh*rh+c2*rh+c1;
  trh_ture=(t_c-25)*(t1+t2*rh)+rh_lin;
  *p_temperature=t_c;
  *p_humidity=rh_ture;
}
从相对温度和湿度计算露点
char calc_dewpoint(float h,float t)
{
  float logex,dewpoint;
  logex=0.66077+7.5*t/(237.3+t)+[log10(h)-2];
  dew_point=(logex-0.66077)*237.3/(0.66077+7.5-logex);
  return dew_point;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -