求助:湿度精确到小数点后一位,始终弄不出来,不知道是什么原因!
[复制链接]
SHT21的驱动我用的是胡磊前辈的驱动。
计算温湿度程序,我基本上没做到什么改动:
如下:
// 命令--0xF3测量温度 //命令---0xF5测量湿度
long ReadSht21(char test_temp_or_humi) { unsigned long temp; unsigned long Humidity; unsigned char HumidityH,HumidityL;
unsigned long temperature;
I2C_Start(); if(I2CWRByte(SHT21ADDR&0xfe)==ACK) { if(I2CWRByte(test_temp_or_humi)==ACK) { do { Delay(30); I2C_Start(); }while(I2CWRByte(SHT21ADDR|0x01)==NACK);
HumidityH = I2CRDByte(ACK); HumidityL = I2CRDByte(ACK); I2CRDByte(NACK); I2CStop(); HumidityL &= 0xfc; //低两位置零 temp = HumidityH*256+HumidityL;
if (test_temp_or_humi==((char)0xf5)) { // Humidity =(temp*125)/(long)65536-6;
temp = (long )temp*125; temp = temp/(long)65536.0; Humidity = temp-6.0; return Humidity*10; } else { temp=((long)17572)*temp; temp=temp/((long)65536); temperature =temp-((long)4685); return temperature; //输出 } } } return 0; }
但是无论我怎么改,读出的湿度值都是整数的湿度值,我想读出的湿度精确到小数点后一位,不知道怎么处理,不知道是不是哪里出了什么问题,请朋友们多多指教!谢谢!
[ 本帖最后由 lzm2008 于 2011-9-13 15:49 编辑 ]
|