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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 25074|回復(fù): 34
收起左側(cè)

BMP180數(shù)據(jù)手冊(cè)+STM32例程+51單片機(jī)例程

  [復(fù)制鏈接]
ID:205817 發(fā)表于 2017-5-29 13:22 | 顯示全部樓層 |閱讀模式
如題,正巧在做一個(gè)bmp180課題,找的一點(diǎn)資料
0.png

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


BMP180數(shù)據(jù)手冊(cè)pdf格式文件(附件中可下載):
0.png

STM32單片機(jī)源程序如下:
  1. #include "BMP180.h"
  2. #include "delay.h"
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //氣壓傳感器BMP180的STM32驅(qū)動(dòng),本程序只供學(xué)習(xí)使用
  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. //產(chǎn)生IIC起始信號(hào)
  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總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)

  30. }
  31. //產(chǎn)生IIC停止信號(hào)
  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總線結(jié)束信號(hào)
  40. delay_us(4);  

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

  47. u8 ucErrTime=0;
  48. SDA_IN();      //SDA設(shè)置為輸入
  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;//時(shí)鐘輸出0   
  61. return 0;

  62. }
  63. //產(chǎn)生ACK應(yīng)答
  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. //不產(chǎn)生ACK應(yīng)答   
  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ā)送一個(gè)字節(jié)
  86. //返回從機(jī)有無(wú)應(yīng)答
  87. //1,有應(yīng)答
  88. //0,無(wú)應(yīng)答
  89. void IIC_Send_Byte(u8 txd)
  90. {
  91.                         
  92.     u8 t;  
  93. SDA_OUT();   
  94.     IIC_SCL=0;//拉低時(shí)鐘開始數(shù)據(jù)傳輸
  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);   //對(duì)TEA5767這三個(gè)延時(shí)都是必須的
  105. IIC_SCL=1;
  106. delay_us(2);
  107. IIC_SCL=0;
  108. delay_us(2);
  109.      
  110. }

  111. }   
  112. //讀1個(gè)字節(jié),ack=1時(shí),發(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設(shè)置為輸入
  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);           //進(jìn)入接收模式  
  144. IIC_Wait_Ack();
  145.     temp=IIC_Read_Byte(0);  
  146.     IIC_Stop();//產(chǎn)生一個(gè)停止條件   
  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);           //進(jìn)入接收模式  
  160. // IIC_Wait_Ack();
  161. // IIC_Send_Byte(BMP180_RD_ADDR);           //進(jìn)入接收模式  
  162. // IIC_Wait_Ack();
  163. //     temp=IIC_Read_Byte(0);  
  164. //     IIC_Stop();//產(chǎn)生一個(gè)停止條件   
  165. // return temp;
  166. //
  167. }
  168. //在AT24CXX指定地址寫入一個(gè)數(shù)據(jù)
  169. //WriteAddr  :寫入數(shù)據(jù)的目的地址   
  170. //DataToWrite:要寫入的數(shù)據(jù)
  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();//產(chǎn)生一個(gè)停止條件
  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. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
BMP180數(shù)據(jù)手冊(cè) STM32例程 51例程.zip (1.65 MB, 下載次數(shù): 725)
回復(fù)

使用道具 舉報(bào)

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

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:371423 發(fā)表于 2018-8-18 22:21 | 顯示全部樓層
之前說(shuō)的有些言重了,我把BMP180的51部分驅(qū)動(dòng)函數(shù)排版了一下,函數(shù)聲明已經(jīng)在C文件里寫了,不再需要h頭文件。聲明一下,還沒有進(jìn)行測(cè)試,只是將樓主的函數(shù)整理了一下而已。傳上來(lái)給大家驗(yàn)證好了。

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

評(píng)分

參與人數(shù) 1黑幣 +70 收起 理由
admin + 70 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:217778 發(fā)表于 2017-7-7 00:16 | 顯示全部樓層
樓主好人,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:249600 發(fā)表于 2017-11-15 10:42 | 顯示全部樓層
多謝樓主分享。≌谡蚁嚓P(guān)的資料呢
回復(fù)

使用道具 舉報(bào)

ID:263209 發(fā)表于 2017-12-19 11:10 | 顯示全部樓層
你好,樓主,我用了你在資料里面發(fā)的51單片機(jī)例程,是不是需要相應(yīng)配套的主函數(shù)。。還
回復(fù)

使用道具 舉報(bào)

ID:265439 發(fā)表于 2017-12-22 19:40 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:259873 發(fā)表于 2017-12-30 22:31 | 顯示全部樓層
下載還要積分真是的。才開始啥都不會(huì)啊。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:329290 發(fā)表于 2018-5-14 08:41 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:339914 發(fā)表于 2018-5-28 16:39 | 顯示全部樓層
樓主好人,謝謝分享2333
回復(fù)

使用道具 舉報(bào)

ID:43600 發(fā)表于 2018-5-30 11:26 | 顯示全部樓層
Just need, Thanks !!!
回復(fù)

使用道具 舉報(bào)

ID:342435 發(fā)表于 2018-5-31 19:53 | 顯示全部樓層
感謝樓主 正需要用這個(gè)呢
回復(fù)

使用道具 舉報(bào)

ID:343102 發(fā)表于 2018-6-1 20:12 | 顯示全部樓層
多謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:343102 發(fā)表于 2018-6-1 21:55 | 顯示全部樓層
謝謝分享,下來(lái)學(xué)習(xí)學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

ID:291796 發(fā)表于 2018-6-13 22:00 | 顯示全部樓層
編譯失敗,不能使用
回復(fù)

使用道具 舉報(bào)

ID:345352 發(fā)表于 2018-6-26 20:45 來(lái)自手機(jī) | 顯示全部樓層
厲害,底層還是比較少人研究的
回復(fù)

使用道具 舉報(bào)

ID:297157 發(fā)表于 2018-7-5 09:48 | 顯示全部樓層
牛啊,謝謝分享,一起加油!
回復(fù)

使用道具 舉報(bào)

ID:380510 發(fā)表于 2018-7-29 15:47 | 顯示全部樓層
牛逼啊 可是怎么才能下載呢
回復(fù)

使用道具 舉報(bào)

ID:380510 發(fā)表于 2018-7-29 15:49 | 顯示全部樓層
下載那 牛逼啊大兄弟
回復(fù)

使用道具 舉報(bào)

ID:382569 發(fā)表于 2018-8-3 15:25 | 顯示全部樓層
感謝樓主的分享
回復(fù)

使用道具 舉報(bào)

ID:384623 發(fā)表于 2018-8-9 15:04 | 顯示全部樓層
樓主好人,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:384848 發(fā)表于 2018-8-10 09:22 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:432447 發(fā)表于 2018-12-4 17:05 | 顯示全部樓層
謝謝樓主。。。
回復(fù)

使用道具 舉報(bào)

ID:406692 發(fā)表于 2018-12-19 16:14 | 顯示全部樓層
謝謝樓主。
回復(fù)

使用道具 舉報(bào)

ID:331281 發(fā)表于 2019-1-8 16:48 | 顯示全部樓層
感謝,準(zhǔn)備開發(fā)一款相關(guān)產(chǎn)品,很有參考價(jià)值
回復(fù)

使用道具 舉報(bào)

ID:331281 發(fā)表于 2019-1-8 16:50 | 顯示全部樓層
NPC-1024 發(fā)表于 2018-8-18 22:21
之前說(shuō)的有些言重了,我把BMP180的51部分驅(qū)動(dòng)函數(shù)排版了一下,函數(shù)聲明已經(jīng)在C文件里寫了,不再需要h頭文件 ...

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

使用道具 舉報(bào)

ID:496214 發(fā)表于 2019-3-27 09:24 | 顯示全部樓層
謝謝樓上大神的分享 辛苦了
回復(fù)

使用道具 舉報(bào)

ID:500212 發(fā)表于 2019-3-28 22:44 | 顯示全部樓層
樓主真愛啊
回復(fù)

使用道具 舉報(bào)

ID:158375 發(fā)表于 2019-5-31 15:56 | 顯示全部樓層
謝謝樓主分享。
謝謝沙發(fā)。
回復(fù)

使用道具 舉報(bào)

ID:361551 發(fā)表于 2019-7-12 10:16 | 顯示全部樓層
正在用這個(gè)模塊,感覺很有用
回復(fù)

使用道具 舉報(bào)

ID:705277 發(fā)表于 2020-3-15 09:29 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報(bào)

ID:721117 發(fā)表于 2020-4-8 12:02 | 顯示全部樓層
NPC-1024 發(fā)表于 2018-8-18 22:21
之前說(shuō)的有些言重了,我把BMP180的51部分驅(qū)動(dòng)函數(shù)排版了一下,函數(shù)聲明已經(jīng)在C文件里寫了,不再需要h頭文件 ...

多謝分享
回復(fù)

使用道具 舉報(bào)

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;//相對(duì)海拔高度值

  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;//拉高數(shù)據(jù)線
  46.         BMP180_SCL=1;//拉高時(shí)鐘線
  47.         BMP180_Delay5us();//延時(shí)
  48.         BMP180_SDA=0;//產(chǎn)生下降沿
  49.         BMP180_Delay5us();//延時(shí)
  50.         BMP180_SCL=0;//拉低時(shí)鐘線
  51. }

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

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

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

  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位計(jì)數(shù)器
  81.         {
  82.                 dat<<=1;//移出數(shù)據(jù)的最高位
  83.                 BMP180_SDA=CY;//送數(shù)據(jù)口
  84.                 BMP180_SCL=1;//拉高時(shí)鐘線
  85.                 BMP180_Delay5us();//延時(shí)
  86.                 BMP180_SCL=0;//拉低時(shí)鐘線
  87.                 BMP180_Delay5us();//延時(shí)
  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;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
  96.         for(i=0;i<8;i++)//8位計(jì)數(shù)器
  97.         {
  98.                 dat<<=1;
  99.                 BMP180_SCL=1;//拉高時(shí)鐘線
  100.                 BMP180_Delay5us();//延時(shí)
  101.                 dat|=BMP180_SDA;//讀數(shù)據(jù)
  102.                 BMP180_SCL=0;//拉低時(shí)鐘線
  103.                 BMP180_Delay5us();//延時(shí)
  104.         }
  105.         return dat;
  106. }

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

  116.         msb=BMP180_IIC_RecvByte();//BUF[0]存儲(chǔ)
  117.         BMP180_IIC_SendACK(0);//回應(yīng)ACK
  118.         lsb=BMP180_IIC_RecvByte();
  119.         BMP180_IIC_SendACK(1);//最后一個(gè)數(shù)據(jù)需要回NOACK

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

  126. long BMP180_Read_Temperature()
  127. {
  128.         BMP180_IIC_Start();//起始信號(hào)
  129.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//發(fā)送設(shè)備地址+寫信號(hào)
  130.         BMP180_IIC_SendByte(0xF4);//writeregisteraddress
  131.         BMP180_IIC_SendByte(0x2E);//writeregisterdatafortemp
  132.         BMP180_IIC_Stop();//發(fā)送停止信號(hào)
  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();//起始信號(hào)
  140.         BMP180_IIC_SendByte(BMP180_SlaveAddress);//發(fā)送設(shè)備地址+寫信號(hào)
  141.         BMP180_IIC_SendByte(0xF4);//writeregisteraddress
  142.         BMP180_IIC_SendByte(0x34);//writeregisterdataforpressure
  143.         BMP180_IIC_Stop();//發(fā)送停止信號(hào)
  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();//讀取壓強(qiáng)
  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. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:791943 發(fā)表于 2022-3-25 21:05 | 顯示全部樓層

請(qǐng)問這是51單片機(jī)的完整代碼嗎?
回復(fù)

使用道具 舉報(bào)

ID:277928 發(fā)表于 2023-3-27 13:42 | 顯示全部樓層
感謝樓主的熱心分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品污www一区二区三区 | 欧美亚洲高清 | 国产精品久久久久久婷婷天堂 | av一级在线观看 | 97视频成人| 欧美成人猛片aaaaaaa | 亚洲天天| 久久天堂 | 精彩视频一区二区三区 | 久久久国产精品一区 | 日韩欧美中文字幕在线观看 | 亚洲精品丝袜日韩 | 国产午夜精品视频 | 中文在线а√在线8 | 成人久久18免费网站麻豆 | 久久久久免费观看 | 日韩av在线不卡 | 国产精品自产拍在线观看蜜 | 国产69精品久久久久777 | 久久亚洲春色中文字幕久久久 | 99re| 欧美亚洲国产一区二区三区 | 视频1区| www久久爱| 国产片侵犯亲女视频播放 | 欧洲一区二区视频 | 伊人久久在线 | 中文精品一区二区 | 国产精品亚洲一区二区三区在线 | 日韩在线小视频 | 亚洲人在线 | 亚洲一二三视频 | av手机在线播放 | 亚洲风情在线观看 | 91不卡| 欧美一级视频 | 毛片免费在线观看 | 亚洲高清在线观看 | 91亚洲免费 | 免费的av | 日韩乱码在线 |