6839|2

96

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

求助:湿度精确到小数点后一位,始终弄不出来,不知道是什么原因! [复制链接]

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 编辑 ]

0.jpg (6.1 KB, 下载次数: 0)

0.jpg

最新回复

  详情 回复 发表于 2011-9-13 18:17
点赞 关注
 

回复
举报

96

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
搞好了,将数据类型都定为float型就行了,但是这样对于51来说,处理起来太占空间了!
 
 

回复

702

帖子

0

TA的资源

一粒金砂(高级)

板凳
个人签名你好呀
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表