搜索
bottom↓
回复: 1

上传BMP085气压计的文档,想问问这里的计算公式是什么意...

[复制链接]

出0入0汤圆

发表于 2012-9-6 17:26:35 | 显示全部楼层 |阅读模式
这是提供的参考程序。一直看不懂这个公式是怎么来的。。基于什么原理??
void read_BMP085(void)
{

           long ut;
        long up;
        long x1, x2, b5, b6, x3, b3, p;
        unsigned long b4, b7;

        ut = bmp085ReadTemp();           // 读取温度
//        ut = bmp085ReadTemp();           // 读取温度
        up = bmp085ReadPressure();  // 读取压强
//        up = bmp085ReadPressure();  // 读取压强
        x1 = ((long)ut - ac6) * ac5 >> 15;
        x2 = ((long) mc << 11) / (x1 + md);
        b5 = x1 + x2;
        temperature = (b5 + 8) >> 4;
       
         //****************

        b6 = b5 - 4000;
        x1 = (b2 * (b6 * b6 >> 12)) >> 11;
        x2 = ac2 * b6 >> 11;
        x3 = x1 + x2;
        b3 = (((long)ac1 * 4 + x3) + 2)/4;
        x1 = ac3 * b6 >> 13;
        x2 = (b1 * (b6 * b6 >> 12)) >> 16;
        x3 = ((x1 + x2) + 2) >> 2;
        b4 = (ac4 * (unsigned long) (x3 + 32768)) >> 15;
        b7 = ((unsigned long) up - b3) * (50000 >> OSS);
        if( b7 < 0x80000000)
             p = (b7 * 2) / b4 ;
           else  
                    p = (b7 / b4) * 2;
        x1 = (p >> 8) * (p >> 8);
        x1 = (x1 * 3038) >> 16;
        x2 = (-7357 * p) >> 16;
         pressure = p + ((x1 + x2 + 3791) >> 4);
}


void  Init_BMP085(void)
{
        ac1 = Single_Read(BMP085_Addr,0xAA);
        ac1 = (ac1<<8)|Single_Read(BMP085_Addr,0xAB);

    ac2 = Single_Read(BMP085_Addr,0xAC);
        ac2 = (ac2<<8)| Single_Read(BMP085_Addr,0xAD);

        ac3 = Single_Read(BMP085_Addr,0xAE);
        ac3 = (ac3<<8)| Single_Read(BMP085_Addr,0xAF);

        ac4 = Single_Read(BMP085_Addr,0xB0);
        ac4 = (ac4<<8)| Single_Read(BMP085_Addr,0xB1);

        ac5 = Single_Read(BMP085_Addr,0xB2);
        ac5 = (ac5<<8)| Single_Read(BMP085_Addr,0xB3);

        ac6 = Single_Read(BMP085_Addr,0xB4);
        ac6 = (ac6<<8)| Single_Read(BMP085_Addr,0xB5);

        b1 = Single_Read(BMP085_Addr,0xB6);
        b1 = (b1<<8)| Single_Read(BMP085_Addr,0xB7);

        b2 = Single_Read(BMP085_Addr,0xB8);
        b2 = (b2<<8)| Single_Read(BMP085_Addr,0xB9);

        mb = Single_Read(BMP085_Addr,0xBA);
        mb = (mb<<8)| Single_Read(BMP085_Addr,0xBB);

        mc = Single_Read(BMP085_Addr,0xBC);
        mc = (mc<<8)| Single_Read(BMP085_Addr,0xBD);

        md = Single_Read(BMP085_Addr,0xBE);
        md = (md<<8)| Single_Read(BMP085_Addr,0xBF);

}

这是PDF文档

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-10-29 18:26:21 | 显示全部楼层
楼主测得大气压实多少Kpa啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表