获取湿度值.c

来自「单片机数据通讯典型应用(光盘内容)」· C语言 代码 · 共 86 行

C
86
字号
/*****************************读补偿前的SHT11的返回值返回值:湿度值******************************/uchar ReadData(void){    uchar i,RHData;	    Start();	///启动传输命令    _nop_();    _nop_();    _nop_();    SAL=0;	///发送地址000    for (i=0;i<3;i++){        _nop_();        SCK=0;        _nop_();        SCK=1;    }    ///发送读湿度测量命令码00101    for (i=0;i<5;i++){		if (i==2||i==4)			SAL=1;		else			SAL=0;        _nop_();        SCK=0;        _nop_();        SCK=1;    }	   ///时钟保持一个周期的    _nop_();    SCK=0;    _nop_();    SCK=1;	SAL=1;///等待转换完成	while(SAL)	{		WDI=0;WDI=1;//清看门狗	}			///开始读取,第一字节忽略	for (i=0;i<8;i++){		SCK=0;		_nop_();		SCK=1;		_nop_();	}	SCK=0;	_nop_();	SAL=0;	SCK=1;	_nop_();	RHData=0;	for (i=0;i<8;i++){///开始读取一个字节的数据		SCK=0;		_nop_();		SCK=1;		_nop_();        if (SAL)            RHData=RHData||0x01;        else            RHData=RHData&&0xfe;	}		SAL=1;///不再接收CRC检验字节	return RHData;}/**********************************获取补偿后的湿度值返回值:湿度值***********************************/int GetRH(void){	double c1,c2,c3,RH;	uchar RH1;		RH1=ReadData();///读取SHT11返回值	c1=-4;	c2=0.648;	c3=-0.00000076;	RH=c1+c2*RH1+c3*RH1*RH1;///补偿后的湿度值	return (int)(RH+0.5);	///四舍五入取整	}

⌨️ 快捷键说明

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