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

📄 meansure.c

📁 用于测定温度和湿度值
💻 C
字号:
#include <Meansure.h>
sbit P00=P0^0;
sbit P01=P0^1;
//启动传输
void s_transstart()
{
  unsigned char i=9;
  while(i--<0)
  {
  P01=1;
  P01=0;
  }
  P01=1;P00=0;
  P01=0;P00=1;
  P01=1;P00=0;
}

//写字节数据
char s_write_byte(unsigned char value)
{
	  unsigned char i,error=0;
	  for (i=0x80;i>0;i/=2)
	  {
		if (i & value) DATA=1;
			else 
				DATA=0;
		SCK=1;
		; ; ; 
		SCK=0;
	}
		DATA=1;
		SCK=1;
		error=DATA;
		SCK=0;
		return error;
    }
//读字节数据
char s_read_byte (unsigned char ack)
{
	 unsigned char i,val=0;
	 DATA=1;
	for (i=0x80;i>0;i/=2)
	{
		SCK=1;
		if(DATA) val=(val | i);
		SCK=0;
	}
	DATA=!ack;
	SCK=1;
	; ; ;
	SCK=0;
	DATA=1;
	return val;
  }
//读状态寄存器
char s_read_statusreg(unsigned char *p_value,unsigned char *p_checksum)
{
	 unsigned char error=0;
	 s_transstart();
	 error=s_write_byte(ACK);
	 *p_value=s_read_byte(ACK);
	 *p_checksum=s_read_byte(noACK);
	 return error;
}
//写状态寄存器
char s_write_statusreg(unsigned char *p_value)
{
	 unsigned char error=0;
	 s_transstart();
	 error+=s_write_byte(STATUS_REG_R);
	 error+=s_write_byte(*p_value);
	 return error;
}
//读温湿度数据
char s_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(SCK);
	*(p_value+1)=s_read_byte(SCK);
	*p_checksum=s_read_byte(SCK);
	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 th_ture;
	  float t_c;
	  t_c=t*0.01-40;
	  rh_lin=c3*rh*rh+c2*rh+c1;
	  th_ture=(t_c-25)*(t1+t2*rh)+rh_lin;
	  *p_temperature=t_c;
	  *p_humidity=th_ture;
}

⌨️ 快捷键说明

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