久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 25430|回復: 34
打印 上一主題 下一主題
收起左側

BMP180數據手冊+STM32例程+51單片機例程

  [復制鏈接]
跳轉到指定樓層
樓主
ID:205817 發(fā)表于 2017-5-29 13:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如題,正巧在做一個bmp180課題,找的一點資料


里面有如下文件:
51單片機BMP180氣壓計例程
STM32_bmp180例程
STM32F103氣壓計BMP180例程


BMP180數據手冊pdf格式文件(附件中可下載):


STM32單片機源程序如下:
  1. #include "BMP180.h"
  2. #include "delay.h"
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //氣壓傳感器BMP180的STM32驅動,本程序只供學習使用
  5. //////////////////////////////////////////////////////////////////////////////////
  6.   
  7. //初始化IIC
  8. void IIC_Init(void)
  9. {
  10.       
  11. GPIO_InitTypeDef GPIO_InitStructure;
  12. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE );
  13.    
  14. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
  15. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽輸出
  16. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  17. GPIO_Init(GPIOB, &GPIO_InitStructure);
  18. GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11); //PB10,PB11 輸出高

  19. }
  20. //產生IIC起始信號
  21. void IIC_Start(void)
  22. {

  23. SDA_OUT();     //sda線輸出
  24. IIC_SDA=1;   
  25. IIC_SCL=1;
  26. delay_us(4);
  27. IIC_SDA=0;//START:when CLK is high,DATA change form high to low
  28. delay_us(4);
  29. IIC_SCL=0;//鉗住I2C總線,準備發(fā)送或接收數據

  30. }
  31. //產生IIC停止信號
  32. void IIC_Stop(void)
  33. {

  34. SDA_OUT();//sda線輸出
  35. IIC_SCL=0;
  36. IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
  37. delay_us(4);
  38. IIC_SCL=1;
  39. IIC_SDA=1;//發(fā)送I2C總線結束信號
  40. delay_us(4);  

  41. }
  42. //等待應答信號到來
  43. //返回值:1,接收應答失敗
  44. //        0,接收應答成功
  45. u8 IIC_Wait_Ack(void)
  46. {

  47. u8 ucErrTime=0;
  48. SDA_IN();      //SDA設置為輸入
  49. IIC_SDA=1;delay_us(1);  
  50. IIC_SCL=1;delay_us(1);
  51. while(READ_SDA)
  52. {

  53. ucErrTime++;
  54. if(ucErrTime>250)
  55. {

  56. IIC_Stop();
  57. return 1;

  58. }

  59. }
  60. IIC_SCL=0;//時鐘輸出0   
  61. return 0;

  62. }
  63. //產生ACK應答
  64. void IIC_Ack(void)
  65. {

  66. IIC_SCL=0;
  67. SDA_OUT();
  68. IIC_SDA=0;
  69. delay_us(2);
  70. IIC_SCL=1;
  71. delay_us(2);
  72. IIC_SCL=0;

  73. }
  74. //不產生ACK應答   
  75. void IIC_NAck(void)
  76. {

  77. IIC_SCL=0;
  78. SDA_OUT();
  79. IIC_SDA=1;
  80. delay_us(2);
  81. IIC_SCL=1;
  82. delay_us(2);
  83. IIC_SCL=0;

  84. }     
  85. //IIC發(fā)送一個字節(jié)
  86. //返回從機有無應答
  87. //1,有應答
  88. //0,無應答
  89. void IIC_Send_Byte(u8 txd)
  90. {
  91.                         
  92.     u8 t;  
  93. SDA_OUT();   
  94.     IIC_SCL=0;//拉低時鐘開始數據傳輸
  95.     for(t=0;t<8;t++)
  96.     {
  97.                
  98.         //IIC_SDA=(txd&0x80)>>7;
  99. if((txd&0x80)>>7)
  100. IIC_SDA=1;
  101. else
  102. IIC_SDA=0;
  103. txd<<=1;  
  104. delay_us(2);   //對TEA5767這三個延時都是必須的
  105. IIC_SCL=1;
  106. delay_us(2);
  107. IIC_SCL=0;
  108. delay_us(2);
  109.      
  110. }

  111. }   
  112. //讀1個字節(jié),ack=1時,發(fā)送ACK,ack=0,發(fā)送nACK  
  113. u8 IIC_Read_Byte(unsigned char ack)
  114. {

  115. unsigned char i,receive=0;
  116. SDA_IN();//SDA設置為輸入
  117.     for(i=0;i<8;i++ )
  118. {

  119.         IIC_SCL=0;
  120.         delay_us(2);
  121. IIC_SCL=1;
  122.         receive<<=1;
  123.         if(READ_SDA)receive++;  
  124. delay_us(1);
  125.      
  126. }
  127.     if (!ack)
  128.         IIC_NAck();//發(fā)送nACK
  129.     else
  130.         IIC_Ack(); //發(fā)送ACK  
  131.     return receive;

  132. }

  133. u8 BMP180_ReadOneByte(u8 ReadAddr)
  134. {
  135.    
  136. u8 temp=0;      
  137.     IIC_Start();
  138. IIC_Send_Byte(BMP180_WR_ADDR);   //發(fā)送寫命令
  139. IIC_Wait_Ack();  
  140.     IIC_Send_Byte(ReadAddr);   //發(fā)送要讀的寄存器地址
  141. IIC_Wait_Ack();   
  142. IIC_Start();     
  143. IIC_Send_Byte(BMP180_RD_ADDR);           //進入接收模式  
  144. IIC_Wait_Ack();
  145.     temp=IIC_Read_Byte(0);  
  146.     IIC_Stop();//產生一個停止條件   
  147. return temp;

  148. }



  149. // u16 BMP180_ReadTowByte(u8 ReadAddr)
  150. // {
  151.    
  152. // u16 temp=0;      
  153. //     IIC_Start();
  154. // IIC_Send_Byte(BMP180_WR_ADDR);   //發(fā)送寫命令
  155. // IIC_Wait_Ack();  
  156. //     IIC_Send_Byte(ReadAddr);   //發(fā)送要讀的寄存器地址
  157. // IIC_Wait_Ack();   
  158. // IIC_Start();     
  159. // IIC_Send_Byte(BMP180_RD_ADDR);           //進入接收模式  
  160. // IIC_Wait_Ack();
  161. // IIC_Send_Byte(BMP180_RD_ADDR);           //進入接收模式  
  162. // IIC_Wait_Ack();
  163. //     temp=IIC_Read_Byte(0);  
  164. //     IIC_Stop();//產生一個停止條件   
  165. // return temp;
  166. //
  167. }
  168. //在AT24CXX指定地址寫入一個數據
  169. //WriteAddr  :寫入數據的目的地址   
  170. //DataToWrite:要寫入的數據
  171. void BMP180_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
  172. {
  173.            
  174.     IIC_Start();

  175. IIC_Send_Byte(BMP180_WR_ADDR);    //發(fā)送寫命令
  176.   
  177. IIC_Wait_Ack();  
  178.     IIC_Send_Byte(WriteAddr);   //發(fā)送地址
  179. IIC_Wait_Ack();      
  180. IIC_Send_Byte(DataToWrite);     //發(fā)送字節(jié)  
  181. IIC_Wait_Ack();        
  182.     IIC_Stop();//產生一個停止條件
  183. delay_us(1);

  184. }

  185. // int BMP180_CRC_Read(u8 addr)
  186. // {

  187. // u16 temp;
  188. // temp = (BMP180_ReadOneByte(addr)<<8)|BMP180_ReadOneByte(addr+1);   
  189. // return temp;
  190. //
  191. }
  192. short BMP180_CRC_Read(u8 addr)
  193. {

  194.         u8 msb,lsb;
  195.         short data;
  196.         IIC_Start();
  197.         IIC_Send_Byte(BMP180_WR_ADDR);   //發(fā)送寫命令
  198.         IIC_Wait_Ack();  
  199.         IIC_Send_Byte(addr);   //發(fā)送要讀的寄存器地址
  200.         IIC_Wait_Ack();
  201.         IIC_Start();
  202.         IIC_Send_Byte(BMP180_RD_ADDR);
  203.          
  204.         IIC_Wait_Ack();
  205.         msb=IIC_Read_Byte(1);
  206.         //IIC_Wait_Ack();
  207.         lsb=IIC_Read_Byte(0);
  208.         //IIC_Wait_Ack();
  209.         IIC_Stop();
  210.         delay_us(5);
  211.         data= msb << 8;
  212.         data|= lsb;
  213.         return data;

  214. }
  215. u16 BMP085_Get_UT(void)
  216. {

  217.         IIC_Start();
  218.         IIC_Send_Byte(BMP180_WR_ADDR);//發(fā)送寫命令
  219.         //IIC_Wait_Ack();
  220.         IIC_Send_Byte(0xf4);        //發(fā)送字
  221.         //IIC_Wait_Ack();
  222.         IIC_Send_Byte(0x2E);
  223.         IIC_Stop();
  224.         delay_ms(5);
  225. ……………………

  226. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
BMP180數據手冊 STM32例程 51例程.zip (1.65 MB, 下載次數: 725)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復

使用道具 舉報

來自 2#
ID:371423 發(fā)表于 2018-8-18 21:49 | 只看該作者
恕我直言,文件里面51那部分函數寫的跟翔一樣,typedef覆蓋了一部分數據類型,有些關鍵字還有缺失,比如unsigned少了第一個u,變成了nsigned這樣。縮進亂七八糟,空格和換行哪里都是。說是例程,實際上是從例程把主函數刪去,只剩下BMP180相關的部分了,可以明顯看到殘留的各種頭文件和殘缺的顯示函數。
倒不是說樓主怎么樣,也許這程序也不是樓主大人寫的,但是這質量,不忍直視。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

來自 3#
ID:371423 發(fā)表于 2018-8-18 22:21 | 只看該作者
之前說的有些言重了,我把BMP180的51部分驅動函數排版了一下,函數聲明已經在C文件里寫了,不再需要h頭文件。聲明一下,還沒有進行測試,只是將樓主的函數整理了一下而已。傳上來給大家驗證好了。

BMP180.zip (1.74 KB, 下載次數: 139)

評分

參與人數 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:217778 發(fā)表于 2017-7-7 00:16 | 只看該作者
樓主好人,謝謝分享
回復

使用道具 舉報

5#
ID:249600 發(fā)表于 2017-11-15 10:42 | 只看該作者
多謝樓主分享!!正在找相關的資料呢
回復

使用道具 舉報

6#
ID:263209 發(fā)表于 2017-12-19 11:10 | 只看該作者
你好,樓主,我用了你在資料里面發(fā)的51單片機例程,是不是需要相應配套的主函數。。還
回復

使用道具 舉報

7#
ID:265439 發(fā)表于 2017-12-22 19:40 | 只看該作者
謝謝分享
回復

使用道具 舉報

8#
ID:259873 發(fā)表于 2017-12-30 22:31 | 只看該作者
下載還要積分真是的。才開始啥都不會啊。。。。。。
回復

使用道具 舉報

9#
ID:329290 發(fā)表于 2018-5-14 08:41 | 只看該作者
謝謝分享
回復

使用道具 舉報

10#
ID:339914 發(fā)表于 2018-5-28 16:39 | 只看該作者
樓主好人,謝謝分享2333
回復

使用道具 舉報

11#
ID:43600 發(fā)表于 2018-5-30 11:26 | 只看該作者
Just need, Thanks !!!
回復

使用道具 舉報

12#
ID:342435 發(fā)表于 2018-5-31 19:53 | 只看該作者
感謝樓主 正需要用這個呢
回復

使用道具 舉報

13#
ID:343102 發(fā)表于 2018-6-1 20:12 | 只看該作者
多謝樓主分享!
回復

使用道具 舉報

14#
ID:343102 發(fā)表于 2018-6-1 21:55 | 只看該作者
謝謝分享,下來學習學習。
回復

使用道具 舉報

15#
ID:291796 發(fā)表于 2018-6-13 22:00 | 只看該作者
編譯失敗,不能使用
回復

使用道具 舉報

16#
ID:345352 發(fā)表于 2018-6-26 20:45 來自觸屏版 | 只看該作者
厲害,底層還是比較少人研究的
回復

使用道具 舉報

17#
ID:297157 發(fā)表于 2018-7-5 09:48 | 只看該作者
牛啊,謝謝分享,一起加油!
回復

使用道具 舉報

18#
ID:380510 發(fā)表于 2018-7-29 15:47 | 只看該作者
牛逼啊 可是怎么才能下載呢
回復

使用道具 舉報

19#
ID:380510 發(fā)表于 2018-7-29 15:49 | 只看該作者
下載那 牛逼啊大兄弟
回復

使用道具 舉報

20#
ID:382569 發(fā)表于 2018-8-3 15:25 | 只看該作者
感謝樓主的分享
回復

使用道具 舉報

21#
ID:384623 發(fā)表于 2018-8-9 15:04 | 只看該作者
樓主好人,謝謝分享
回復

使用道具 舉報

22#
ID:384848 發(fā)表于 2018-8-10 09:22 | 只看該作者
謝謝分享
回復

使用道具 舉報

23#
ID:432447 發(fā)表于 2018-12-4 17:05 | 只看該作者
謝謝樓主。。。
回復

使用道具 舉報

24#
ID:406692 發(fā)表于 2018-12-19 16:14 | 只看該作者
謝謝樓主。
回復

使用道具 舉報

25#
ID:331281 發(fā)表于 2019-1-8 16:48 | 只看該作者
感謝,準備開發(fā)一款相關產品,很有參考價值
回復

使用道具 舉報

26#
ID:331281 發(fā)表于 2019-1-8 16:50 | 只看該作者
NPC-1024 發(fā)表于 2018-8-18 22:21
之前說的有些言重了,我把BMP180的51部分驅動函數排版了一下,函數聲明已經在C文件里寫了,不再需要h頭文件 ...

怎么辦,直接伸手要了,不過感謝整理,論壇有你更精彩1
回復

使用道具 舉報

27#
ID:496214 發(fā)表于 2019-3-27 09:24 | 只看該作者
謝謝樓上大神的分享 辛苦了
回復

使用道具 舉報

28#
ID:500212 發(fā)表于 2019-3-28 22:44 | 只看該作者
樓主真愛啊
回復

使用道具 舉報

29#
ID:158375 發(fā)表于 2019-5-31 15:56 | 只看該作者
謝謝樓主分享。
謝謝沙發(fā)。
回復

使用道具 舉報

30#
ID:361551 發(fā)表于 2019-7-12 10:16 | 只看該作者
正在用這個模塊,感覺很有用
回復

使用道具 舉報

31#
ID:705277 發(fā)表于 2020-3-15 09:29 | 只看該作者
謝謝樓主
回復

使用道具 舉報

32#
ID:721117 發(fā)表于 2020-4-8 12:02 | 只看該作者
NPC-1024 發(fā)表于 2018-8-18 22:21
之前說的有些言重了,我把BMP180的51部分驅動函數排版了一下,函數聲明已經在C文件里寫了,不再需要h頭文件 ...

多謝分享
回復

使用道具 舉報

33#
ID:79544 發(fā)表于 2021-4-26 08:44 | 只看該作者
  1. //#include<intrins.h>
  2. #include<reg52.h>
  3. sbit BMP180_SCL=P0^3;
  4. sbit BMP180_SDA=P0^4;

  5. #define BMP180_SlaveAddress 0xee//定義器件在IIC總線中的從地址
  6. #define OSS 0//Over sampling Setting(note:code is not set up to use other OSS values)

  7. void Init_BMP180();
  8. void BMP180_Calculate();

  9. long BMP180_Temperature=0;//溫度值
  10. long BMP180_Pressure=0;//壓力值
  11. long BMP180_Height=0;//相對海拔高度值

  12. int dis_data;
  13. short ac1;
  14. short ac2;
  15. short ac3;
  16. unsigned short ac4;
  17. unsigned short ac5;
  18. unsigned short ac6;
  19. short b1;
  20. short b2;
  21. short mb;
  22. short mc;
  23. short md;

  24. void BMP180_Delay5us()//@11.0592MHz
  25. {
  26.         unsigned char i;

  27.         _nop_();
  28.         i=11;
  29.         while(--i);
  30. }

  31. void BMP180_Delay4500us()//@11.0592MHz
  32. {
  33.         unsigned char i, j;

  34.         _nop_();
  35.         _nop_();
  36.         i = 49;
  37.         j = 101;
  38.         do
  39.         {
  40.                 while (--j);
  41.         } while (--i);
  42. }

  43. void BMP180_IIC_Start()
  44. {
  45.         BMP180_SDA=1;//拉高數據線
  46.         BMP180_SCL=1;//拉高時鐘線
  47.         BMP180_Delay5us();//延時
  48.         BMP180_SDA=0;//產生下降沿
  49.         BMP180_Delay5us();//延時
  50.         BMP180_SCL=0;//拉低時鐘線
  51. }

  52. void BMP180_IIC_Stop()
  53. {
  54.         BMP180_SDA=0;//拉低數據線
  55.         BMP180_SCL=1;//拉高時鐘線
  56.         BMP180_Delay5us();//延時
  57.         BMP180_SDA=1;//產生上升沿
  58.         BMP180_Delay5us();//延時
  59. }

  60. void BMP180_IIC_SendACK(bit ack)//發(fā)送應答信號,參數0:ACK1:NAK
  61. {
  62.         BMP180_SDA=ack;//寫應答信號
  63.         BMP180_SCL=1;//拉高時鐘線
  64.         BMP180_Delay5us();//延時
  65.         BMP180_SCL=0;//拉低時鐘線
  66.         BMP180_Delay5us();//延時
  67. }

  68. bit BMP180_IIC_ReceiveACK()
  69. {
  70.         BMP180_SCL=1;//拉高時鐘線
  71.         BMP180_Delay5us();//延時
  72.         CY=BMP180_SDA;//讀應答信號
  73.         BMP180_SCL=0;//拉低時鐘線
  74.         BMP180_Delay5us();//延時

  75.         return CY;
  76. }

  77. void BMP180_IIC_SendByte(unsigned char dat)
  78. {
  79.         unsigned char i;

  80.         for(i=0;i<8;i++)//8位計數器
  81.         {
  82.                 dat<<=1;//移出數據的最高位
  83.                 BMP180_SDA=CY;//送數據口
  84.                 BMP180_SCL=1;//拉高時鐘線
  85.                 BMP180_Delay5us();//延時
  86.                 BMP180_SCL=0;//拉低時鐘線
  87.                 BMP180_Delay5us();//延時
  88.         }
  89.         BMP180_IIC_ReceiveACK();
  90. }

  91. unsigned char BMP180_IIC_RecvByte()
  92. {
  93.         unsigned char i;
  94.         unsigned char dat=0;

  95.         BMP180_SDA=1;//使能內部上拉,準備讀取數據,
  96.         for(i=0;i<8;i++)//8位計數器
  97.         {
  98.                 dat<<=1;
  99.                 BMP180_SCL=1;//拉高時鐘線
  100.                 BMP180_Delay5us();//延時
  101.                 dat|=BMP180_SDA;//讀數據
  102.                 BMP180_SCL=0;//拉低時鐘線
  103.                 BMP180_Delay5us();//延時
  104.         }
  105.         return dat;
  106. }

  107. short BMP180_IIC_MultRead(unsigned char ST_Address)//讀取兩個字節(jié)
  108. {
  109.         unsigned char msb,lsb;
  110.         short _data;
  111.         BMP180_IIC_Start();//起始信號
  112.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//發(fā)送設備地址+寫信號
  113.         BMP180_IIC_SendByte(ST_Address);//發(fā)送存儲單元地址
  114.         BMP180_IIC_Start();//起始信號
  115.         BMP180_IIC_SendByte(BMP180_SlaveAddress+1);//發(fā)送設備地址+讀信號

  116.         msb=BMP180_IIC_RecvByte();//BUF[0]存儲
  117.         BMP180_IIC_SendACK(0);//回應ACK
  118.         lsb=BMP180_IIC_RecvByte();
  119.         BMP180_IIC_SendACK(1);//最后一個數據需要回NOACK

  120.         BMP180_IIC_Stop();//停止信號
  121.         Delay5ms();
  122.         _data=msb<<8;
  123.         _data|=lsb;
  124.         return _data;
  125. }

  126. long BMP180_Read_Temperature()
  127. {
  128.         BMP180_IIC_Start();//起始信號
  129.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//發(fā)送設備地址+寫信號
  130.         BMP180_IIC_SendByte(0xF4);//writeregisteraddress
  131.         BMP180_IIC_SendByte(0x2E);//writeregisterdatafortemp
  132.         BMP180_IIC_Stop();//發(fā)送停止信號
  133.         Delay_1ms(10);//maxtimeis4.5ms

  134.         return (long)BMP180_IIC_MultRead(0xF6);
  135. }

  136. long BMP180_Read_Pressure()
  137. {
  138.         long BMP180_Pressure=0;

  139.         BMP180_IIC_Start();//起始信號
  140.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//發(fā)送設備地址+寫信號
  141.         BMP180_IIC_SendByte(0xF4);//writeregisteraddress
  142.         BMP180_IIC_SendByte(0x34);//writeregisterdataforpressure
  143.         BMP180_IIC_Stop();//發(fā)送停止信號
  144.         BMP180_Delay4500us();//max time is 4.5ms

  145.         BMP180_Pressure=BMP180_IIC_MultRead(0xF6);
  146.         BMP180_Pressure&=0x0000FFFF;

  147.         return BMP180_Pressure;
  148. }

  149. void Init_BMP180()//初始化BMP180
  150. {
  151.         ac1=BMP180_IIC_MultRead(0xAA);
  152.         ac2=BMP180_IIC_MultRead(0xAC);
  153.         ac3=BMP180_IIC_MultRead(0xAE);
  154.         ac4=BMP180_IIC_MultRead(0xB0);
  155.         ac5=BMP180_IIC_MultRead(0xB2);
  156.         ac6=BMP180_IIC_MultRead(0xB4);
  157.         b1=BMP180_IIC_MultRead(0xB6);
  158.         b2=BMP180_IIC_MultRead(0xB8);
  159.         mb=BMP180_IIC_MultRead(0xBA);
  160.         mc=BMP180_IIC_MultRead(0xBC);
  161.         md=BMP180_IIC_MultRead(0xBE);
  162. }

  163. void BMP180_Calculate()
  164. {
  165.         unsigned int ut;
  166.         unsigned long up;
  167.         long x1,x2,b5,b6,x3,b3,p;
  168.         unsigned long b4,b7;

  169.         ut=BMP180_Read_Temperature();//讀取溫度
  170.         up=BMP180_Read_Pressure();//讀取壓強
  171.         x1=(((long)ut-(long)ac6)*(long)ac5)>>15;
  172.         x2=((long)mc<<11)/(x1+md);
  173.         b5=x1+x2;
  174.         BMP180_Temperature=((b5+8)>>4);
  175.         b6=b5-4000;
  176.         //Calculate B3
  177.         x1=(b2*(b6*b6)>>12)>>11;
  178.         x2=(ac2*b6)>>11;
  179.         x3=x1+x2;
  180.         b3=(((((long)ac1)*4+x3)<<OSS)+2)>>2;

  181.         //Calculate B4
  182.         x1=(ac3*b6)>>13;
  183.         x2=(b1*((b6*b6)>>12))>>16;
  184.         x3=((x1+x2)+2)>>2;
  185.         b4=(ac4*(unsigned long)(x3+32768))>>15;

  186.         b7=((unsigned long)(up-b3)*(50000>>OSS));
  187.         if(b7<0x80000000)
  188.         {
  189.                 p=(b7<<1)/b4;
  190.         }
  191.         else
  192.         {
  193.                 p=(b7/b4)<<1;
  194.         }

  195.         x1=(p>>8)*(p>>8);
  196.         x1=(x1*3038)>>16;
  197.         x2=(-7357*p)>>16;
  198.         BMP180_Pressure=p+((x1+x2+3791)>>4);

  199.         BMP180_Height=(101325-BMP180_Pressure)*9;
  200. }
復制代碼
回復

使用道具 舉報

34#
ID:791943 發(fā)表于 2022-3-25 21:05 | 只看該作者

請問這是51單片機的完整代碼嗎?
回復

使用道具 舉報

35#
ID:277928 發(fā)表于 2023-3-27 13:42 | 只看該作者
感謝樓主的熱心分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人一区二区 | 干出白浆视频 | 国产精品美女久久久久久久网站 | 欧美久 | 久久久久亚洲 | 国产精品久久久99 | 亚洲国产一区在线 | 91不卡| 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 成人久久18免费网站 | 免费国产一区二区 | 欧美日韩精品一区 | 国内自拍偷拍一区 | 在线久草 | h视频在线免费 | 国产免费一区二区三区最新6 | 国产专区在线 | 作爱视频免费看 | 91在线观看视频 | 久久成人国产 | 日韩欧美在线播放 | 久久久国产一区二区三区四区小说 | 久久久999国产精品 中文字幕在线精品 | 日韩视频精品在线 | 日韩一区二区在线视频 | 欧美黄色网| 国产在线视频一区 | 久久精品小短片 | 亚洲一区中文字幕 | 日本黄色不卡视频 | 亚洲视频一区在线观看 | 日韩精品一区二区三区中文在线 | 欧美在线一区二区三区 | 国产欧美日韩一区二区三区 | 国产午夜影院 | 亚洲高清一区二区三区 | 日日操夜夜操视频 | a级片网站 | 中文字幕一区二区三区四区五区 | 亚洲午夜三级 | 国产资源在线播放 |