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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4083|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用于51單片機(jī)的MS5837氣壓水壓傳感器測試?yán)?/span>

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:469511 發(fā)表于 2019-4-24 11:13 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. //初始化IIC
  2. void ms5837_IIC_Init(void)
  3. {        
  4.         DEEP = 0;
  5.         Pressure = 0;
  6.         TEMP1 = 0;
  7.         ms5837_IIC_SCL=1;
  8.         ms5837_IIC_SDA=1;
  9. }
  10. //產(chǎn)生IIC起始信號
  11. void ms5837_IIC_Start(void)
  12. {
  13.         
  14.         ms5837_IIC_SDA=1;                    
  15.         ms5837_IIC_SCL=1;
  16.         delayus(4);
  17.          ms5837_IIC_SDA=0;//START:when CLK is high,DATA change form high to low
  18.         delayus(4);
  19.         ms5837_IIC_SCL=0;//鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)
  20. }         
  21. //產(chǎn)生IIC停止信號
  22. void ms5837_IIC_Stop(void)
  23. {

  24.         ms5837_IIC_SCL=0;
  25.         ms5837_IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
  26.          delayus(4);
  27.         ms5837_IIC_SCL=1;
  28.         ms5837_IIC_SDA=1;//發(fā)送I2C總線結(jié)束信號
  29.         delayus(4);                                                                  
  30. }
  31. //等待應(yīng)答信號到來
  32. //返回值:1,接收應(yīng)答失敗
  33. //        0,接收應(yīng)答成功
  34. u8 ms5837_IIC_Wait_Ack(void)
  35. {
  36.         u8 ucErrTime=0;
  37.         
  38.         ms5837_IIC_SDA=1;
  39.         delayus(4);           
  40.         ms5837_IIC_SCL=1;
  41.         delayus(1);         
  42.         while(ms5837_IIC_SDA)
  43.         {
  44.                 ucErrTime++;
  45.                 if(ucErrTime>250)
  46.                 {
  47.                         ms5837_IIC_Stop();
  48.                         return 1;
  49.                 }
  50.         }
  51.         ms5837_IIC_SCL=0;//時(shí)鐘輸出0            
  52.         return 0;  
  53. }

  54. void ms5837_IIC_Send_Byte(u8 txd)
  55. {                        
  56.     u8 t;   
  57.          
  58.     ms5837_IIC_SCL=0;//拉低時(shí)鐘開始數(shù)據(jù)傳輸
  59.     for(t=0;t<8;t++)
  60.     {              
  61.         ms5837_IIC_SDA=(txd&0x80)>>7;
  62.         txd<<=1;           
  63.                 delayus(2);   //對TEA5767這三個(gè)延時(shí)都是必須的
  64.                 ms5837_IIC_SCL=1;
  65.                 delayus(2);
  66.                 ms5837_IIC_SCL=0;        
  67.                 delayus(2);
  68.     }               
  69. }            
  70. //讀1個(gè)字節(jié),ack=1時(shí),發(fā)送ACK,ack=0,發(fā)送nACK   
  71. u8 ms5837_IIC_Read_Byte(u8 ack)
  72. {
  73.         unsigned char i,receive=0;
  74.         ms5837_IIC_SDA=1;
  75.     for(i=0;i<8;i++ )
  76.         {
  77.         delayus(2);
  78.                     ms5837_IIC_SCL=1;
  79.         receive<<=1;
  80.         if(ms5837_IIC_SDA)receive++;   
  81.                 delayus(1);
  82.                 ms5837_IIC_SCL=0;
  83.     }        
  84.         
  85. if (ack==0)
  86. {        ms5837_IIC_SCL=0;
  87.         ms5837_IIC_SDA=1;
  88.         delayus(2);
  89.         
  90.         ms5837_IIC_SCL=1;
  91.         delayus(2);
  92. ms5837_IIC_SCL=0;}//發(fā)送nACK
  93. else{               
  94.   ms5837_IIC_SCL=0;
  95.         ms5837_IIC_SDA=0;
  96.         delayus(2);
  97.         
  98.         ms5837_IIC_SCL=1;
  99.         delayus(2);
  100.         ms5837_IIC_SCL=0;
  101.                 }         

  102.     return receive;
  103. }

  104. void MS583703BA_RESET(void)
  105. {
  106.                 ms5837_IIC_Start();
  107.                 ms5837_IIC_Send_Byte(0xEC);//CSB接地,主機(jī)地址:0XEE,否則 0X77
  108.           ms5837_IIC_Wait_Ack();
  109.     ms5837_IIC_Send_Byte(0x1E);//發(fā)送復(fù)位命令
  110.           ms5837_IIC_Wait_Ack();
  111.     ms5837_IIC_Stop();
  112.         
  113. }

  114. void MS5837_init(void)
  115. {         
  116.   u16  inth,intl;
  117.   for (i=0;i<=6;i++)
  118.         {
  119.                 ms5837_IIC_Start();
  120.     ms5837_IIC_Send_Byte(0xEC);
  121.                 ms5837_IIC_Wait_Ack();
  122.                 ms5837_IIC_Send_Byte(0xA0 + (i*2));
  123.                 ms5837_IIC_Wait_Ack();
  124.     ms5837_IIC_Stop();               
  125.                 delayus(5);
  126.                 ms5837_IIC_Start();
  127.                 ms5837_IIC_Send_Byte(0xEC+0x01);  //進(jìn)入接收模式
  128.                 delayus(1);
  129.                 ms5837_IIC_Wait_Ack();
  130.                 inth = ms5837_IIC_Read_Byte(1);                  //帶ACK的讀數(shù)據(jù)
  131.                 intl = ms5837_IIC_Read_Byte(0);                         //最后一個(gè)字節(jié)NACK
  132.                 ms5837_IIC_Stop();
  133.     Cal_C[i] = (((u16)inth << 8) | intl);
  134.         }
  135.          
  136. }


  137. /**************************實(shí)現(xiàn)函數(shù)********************************************
  138. *函數(shù)原型:unsigned long MS561101BA_getConversion(void)
  139. *功  能:    讀取 MS5837 的轉(zhuǎn)換結(jié)果
  140. *******************************************************************************/
  141. u32  MS583703BA_getConversion(u8 command)
  142. {
  143.                         unsigned long conversion = 0;
  144.         u32 temp[3];
  145.         
  146.             ms5837_IIC_Start();
  147.                         ms5837_IIC_Send_Byte(0xEC);                 //寫地址
  148.                         ms5837_IIC_Wait_Ack();
  149.                         ms5837_IIC_Send_Byte(command); //寫轉(zhuǎn)換命令
  150.                         ms5837_IIC_Wait_Ack();
  151.                         ms5837_IIC_Stop();

  152.                         delayms(20);
  153.                         ms5837_IIC_Start();
  154.                         ms5837_IIC_Send_Byte(0xEC);                 //寫地址
  155.                         ms5837_IIC_Wait_Ack();
  156.                         ms5837_IIC_Send_Byte(0);                                // start read sequence
  157.                         ms5837_IIC_Wait_Ack();
  158.                         ms5837_IIC_Stop();
  159.                  
  160.                         ms5837_IIC_Start();
  161.                         ms5837_IIC_Send_Byte(0xEC+0x01);  //進(jìn)入接收模式
  162.                         ms5837_IIC_Wait_Ack();
  163.                         temp[0] = ms5837_IIC_Read_Byte(1);  //帶ACK的讀數(shù)據(jù)  bit 23-16
  164.                         temp[1] = ms5837_IIC_Read_Byte(1);  //帶ACK的讀數(shù)據(jù)  bit 8-15
  165.                         temp[2] = ms5837_IIC_Read_Byte(0);  //帶NACK的讀數(shù)據(jù) bit 0-7
  166.                         ms5837_IIC_Stop();
  167.                         conversion = temp[0] * 65536 + temp[1] * 256 + temp[2];
  168.                
  169. return  conversion;
  170. }
復(fù)制代碼

全部資料51hei下載地址:
STC15W408AS-ms5837-02BA氣壓水壓傳感器.rar (53.08 KB, 下載次數(shù): 115)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品啪啪 | 国产精品久久久久久久久久久免费看 | 亚洲综合第一页 | 美女一区 | 日韩在线一区二区 | 亚洲综合无码一区二区 | 国产精品一二三区在线观看 | 久久精品免费观看 | 亚洲va中文字幕 | 亚洲欧美v| 国产精品久久久久久久午夜片 | 久久久国产精品视频 | 日韩精品一区二区三区中文字幕 | 日韩中文一区 | 电影午夜精品一区二区三区 | 羞羞色在线观看 | 国产精品毛片一区二区三区 | 亚洲视频中文字幕 | 成人免费视频网 | 中文福利视频 | 午夜影院在线 | 日韩精品一区二区三区中文在线 | 国产黄色网 | 国产精品免费在线 | 国产综合久久 | 中文字幕在线第一页 | 国产精品久久久久久久久免费相片 | 国产成人jvid在线播放 | 亚洲男人天堂 | 国产成人在线播放 | 久久精品一级 | 国产一区二 | 人人做人人澡人人爽欧美 | 久久99蜜桃综合影院免费观看 | 亚洲精品久久久久久一区二区 | 欧美三级视频 | 久久精品免费 | 一区二区三区国产精品 | 青青久在线视频 | 欧美一区二区三区四区视频 | 热99视频 |