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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 26051|回復: 8
收起左側

STM32 SHT10溫濕度傳感器的信號采集

  [復制鏈接]
ID:99624 發表于 2015-12-27 04:08 | 顯示全部樓層 |閱讀模式
本帖最后由 51黑ren 于 2015-12-27 04:09 編輯

    首先講講SHT10這款溫室度傳感器。SHT1x(包括SHT10,SHT11和SHT15)屬于Sersirion溫濕度傳感器家族中的貼片封裝系列。更之前我講過的DHT11這款溫濕度傳感器相比,體積小了許多,特別適合用于產品中。SHT10溫濕度傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件(文縐縐的),傳感器內部有一個精度高達14為位的A/D轉換器,適應串行接口電路實現無縫連接。該產品具有品質卓越、響應速度速度快,抗干擾能力強、性價比高等優點。
     1、接口定義:
  SHT10的接口定義如下圖所示:
                                                            
           如上圖所示,1腳為GND,4腳為VDD。它的供電電壓范圍為2.4~5.5V,建議的電壓為3.3V,在電源引腳(VDD、GND)之間必須加上一個0.1uf的電容,應于去耦濾波用。它的2腳DATA為數據引腳,3腳SCK為時鐘控制引腳,沒有發現這兩個引腳很像IIC所使用的引腳功能?沒錯,這個傳感器確實可以認為是IIC接口,但是又有卻別。該傳感器不能按照IIC的協議編址,但是,如果IIC總線上沒有掛接別的元件,傳感器可以直接連到IIC總線上,但是單片機必須按照傳感器的協議工作。傳感器與單片機的接線如下圖所示:
                                    

    2、傳感器的通訊
      
     2.1、“啟動傳輸”時序
用一組“啟動傳輸”時序來完成數據傳輸的初始化。它包括:當SCK時鐘高電平時DATA翻轉為低電平,緊接著SCK變成低電平,隨后是在SCK時鐘高電平,隨后是在SCK時鐘高電平DATA翻轉位高電平。時序如下:

                       

     2.2、復位時序
如果與SHT1x 通訊中斷,可通過下列信號時序復位:當DATA 保持高電平時,觸發SCK 時鐘9 次或更多。時序圖如下:
                    
    2.3、命令集
傳感器的命令包含三個地址位(目前只支持000,這就是他只能掛接在空閑的IIC總線上的原因)和五個命令位。。SHT1x 會以下述方式表示已正確地接收到指令:在第8 個SCK 時鐘的下降沿之后,將DATA 下拉為低電平(ACK 位)。在第9 個SCK 時鐘的下降沿之后,釋放DATA(恢復高電平)。命令集如下:
                           

     2.4、溫濕度測量
發布一組測量命令(‘00000101’表示相對濕度RH,‘00000011’表示溫度T)后,控制器要等待測量結束。這個過程需要大約20/80/320ms,分別對應8/12/14bit 測量。確切的時間隨內部晶振速度,最多可能有-30%的變化。。SHT1x 通過下拉DATA 至低電平并進入空閑模式,表示測量的結束?刂破髟谠俅斡|發SCK 時鐘前,必須等待這個“數據備妥”信號來讀出數據。檢測數據可以先被存儲,這樣控制器可以繼續執行其它任務在需要時再讀出數據。
在收到CRC 的確認位之后,表明通訊結束。如果不使用CRC-8 校驗,控制器可以在測量值LSB 后,通過保持ACK高電平終止通訊。在測量和通訊完成后,SHT1x 自動轉入休眠模式。

    2.5、狀態寄存器
SHT1x 的某些高級功能可以通過給狀態寄存器發送指令來實現,如選擇測量分辨率,電量不足提醒,使用 OTP 加載或啟動加熱功能等。狀態寄存器度、寫如下:


狀態寄存器寫


狀態寄存器讀

狀態寄存器的具體描述如下表所示:



測量分辨率:默認分辨率 14bit (溫度) 和 12bit (濕度) 可以被降低為 12 和 8bit. 尤其適用于要求測量速度極高或者功耗極低的應用。
電量不足檢測功能:在電壓不足 2.47V 發出警告。精度為±0.05 V。
加熱:可通過向狀態寄存器內寫入命令啟動傳感器內部加熱器.。加熱器可以使傳感器的溫度高于周圍環境 5 – 10°C12 。功耗大約為 8mA @ 5V 。
OPT加載:開啟此功能,標定數據將在每次測量前被上傳到寄存器。如果不開啟此功能,可減少大約 10ms的測量時間。
上面的寄存器如果沒有什么特殊要求或應用于特定的場合,則無需配置,選擇默認就可以了。

     2.6、通訊過程
傳感器的通訊過程為:發送”啟動傳輸“時序,初始化傳感器——>發送命令——>等待傳感器應答,及測量結束——>接收傳感器的16位數據值——>接收8為的CRC校驗數據——>休眠,等待下一次傳輸開始。
傳輸的過程的測量時序可以由下圖示意:

  上圖中 TS = 傳輸開始, MSB = 高有效字節,LSB =低有效字節, LSb = 低有效位。
下面舉個實際測量時的相對濕度測量時序例子。時序如下:

這張圖可以知道:我們接收到的數據數值為”0000 0100 0011 0001“ = 1073 = 35.50% RH (位含溫度補償),至于怎么計算的,請接著往下看。

     2.7、信號轉化  
       2.7.1 溫度的轉化
設T 2 1 SOt為從傳感器上讀出來的測量數值,我們需要用下面的公式將測量數值轉換成整整的溫度值。
T = d1 + d2 * SOt  (其中d1,d2的值根據實際情況選擇,選項如下)



      2.7.2 濕度的轉換
濕度的轉換公式如下:。其中濕度的轉化參數如下選擇:根據采樣的精度不同而不同。

99%以上的濕度已經接近飽和必須經過處理顯示100%RH13.請注意 濕度傳感器對電壓無依賴性。測量值與相對濕度的轉化如下圖所示:

  相對濕度根據上面的參數與公式算出來之后,還需要考慮當前環境溫度而進行適當的補償。補償的公式及其參數選擇如下:


       2.7.3、露點的計算
露點的定義:露點溫度指空氣在此溫度下能保持最多的水汽,當溫度冷卻到露點,空氣變得飽和,就會出現霧、露或霜。
SHT1x 并不直接進行露點測量,,但露點可以通過溫度和濕度讀數計算得到.。由于溫度和濕度在同一塊集成電路上測量,SHT1x 可測量露點。 一塊集成電路上測量,SHT1x 可測量露點。 下面直接給出結論性的露點計算公式了。
LogEW=(0.66077+7.5*T/(237.3+T)+(log10(RH)-2)         
露點:Dp=((0.66077-logEW)*237.3/(logEW-8.16077)         
例如:RH=10% T=25C  ->EW=23.7465->露點=-8.69℃
  RH=90% T=50C  ->EW=92.4753->露點=47.89℃

   2.8、STM32上的SHT10驅動程序
      2.8.1、SHT10.h文件的編寫
這個文件主要定義些重要的參數,以及更硬件相關的一些定義。

  1. /*************************************************************
  2.                              \(^o^)/
  3.   Copyright (C), 2013-2020, ZheJiang University of Technology
  4.   File name  : SHT10.h
  5.   Author     : ziye334   
  6.   Version    : V1.0
  7.   Data       : 2014/3/10      
  8.   Description: Digital temperature and humidity sensor driver code
  9.   
  10. *************************************************************/
  11. #ifndef __SHT10_H__
  12. #define __SHT10_H__
  13. #include "stm32f10x.h"

  14. enum {TEMP, HUMI};

  15. /* GPIO相關宏定義 */
  16. #define SHT10_AHB2_CLK        RCC_APB2Periph_GPIOD
  17. #define SHT10_DATA_PIN        GPIO_Pin_0
  18. #define SHT10_SCK_PIN        GPIO_Pin_1
  19. #define SHT10_DATA_PORT        GPIOD
  20. #define SHT10_SCK_PORT        GPIOD

  21. #define SHT10_DATA_H()        GPIO_SetBits(SHT10_DATA_PORT, SHT10_DATA_PIN)                         //拉高DATA數據線
  22. #define SHT10_DATA_L()        GPIO_ResetBits(SHT10_DATA_PORT, SHT10_DATA_PIN)                         //拉低DATA數據線
  23. #define SHT10_DATA_R()        GPIO_ReadInputDataBit(SHT10_DATA_PORT, SHT10_DATA_PIN)         //讀DATA數據線

  24. #define SHT10_SCK_H()        GPIO_SetBits(SHT10_SCK_PORT, SHT10_SCK_PIN)                                 //拉高SCK時鐘線
  25. #define SHT10_SCK_L()        GPIO_ResetBits(SHT10_SCK_PORT, SHT10_SCK_PIN)                         //拉低SCK時鐘線

  26. /* 傳感器相關宏定義 */
  27. #define        noACK        0
  28. #define ACK                1
  29.                                                                 //addr  command         r/w
  30. #define STATUS_REG_W        0x06        //000         0011          0          寫狀態寄存器
  31. #define STATUS_REG_R        0x07        //000         0011          1          讀狀態寄存器
  32. #define MEASURE_TEMP         0x03        //000         0001          1          測量溫度
  33. #define MEASURE_HUMI         0x05        //000         0010          1          測量濕度
  34. #define SOFTRESET       0x1E        //000         1111          0          復位


  35. void SHT10_Config(void);
  36. void SHT10_ConReset(void);
  37. u8 SHT10_SoftReset(void);
  38. u8 SHT10_Measure(u16 *p_value, u8 *p_checksum, u8 mode);
  39. void SHT10_Calculate(u16 t, u16 rh,float *p_temperature, float *p_humidity);
  40. float SHT10_CalcuDewPoint(float t, float h);


  41. #endif
復制代碼



2.8.2、SHT10.c驅動程序的編寫
不廢話了,直接貼代碼:
  1. /*************************************************************
  2.                              \(^o^)/
  3.   Copyright (C), 2013-2020, ZheJiang University of Technology
  4.   File name  : SHT10.c
  5.   Author     : ziye334   
  6.   Version    : V1.0
  7.   Data       : 2014/3/10      
  8.   Description: Digital temperature and humidity sensor driver code
  9.   
  10. *************************************************************/
  11. #include "SHT10.h"
  12. #include <math.h>


  13. /*************************************************************
  14.   Function   :SHT10_Dly  
  15.   Description:SHT10時序需要的延時
  16.   Input      : none        
  17.   return     : none   
  18. *************************************************************/
  19. void SHT10_Dly(void)
  20. {
  21.         u16 i;
  22.         for(i = 500; i > 0; i--);
  23. }


  24. /*************************************************************
  25.   Function   :SHT10_Config  
  26.   Description:初始化 SHT10引腳
  27.   Input      : none        
  28.   return     : none   
  29. *************************************************************/
  30. void SHT10_Config(void)
  31. {
  32.         GPIO_InitTypeDef GPIO_InitStructure;        
  33.         //初始化SHT10引腳時鐘
  34.         RCC_APB2PeriphClockCmd(SHT10_AHB2_CLK ,ENABLE);
  35.                
  36.         //PD0 DATA 推挽輸出        
  37.         GPIO_InitStructure.GPIO_Pin = SHT10_DATA_PIN;
  38.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  39.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  40.         GPIO_Init(SHT10_DATA_PORT, &GPIO_InitStructure);
  41.         //PD1 SCK 推挽輸出
  42.         GPIO_InitStructure.GPIO_Pin = SHT10_SCK_PIN;
  43.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  44.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  45.         GPIO_Init(SHT10_SCK_PORT, &GPIO_InitStructure);

  46.         SHT10_ConReset();        //復位通訊
  47. }


  48. /*************************************************************
  49.   Function   :SHT10_DATAOut
  50.   Description:設置DATA引腳為輸出
  51.   Input      : none        
  52.   return     : none   
  53. *************************************************************/
  54. void SHT10_DATAOut(void)
  55. {
  56.         GPIO_InitTypeDef GPIO_InitStructure;
  57.         //PD0 DATA 推挽輸出        
  58.         GPIO_InitStructure.GPIO_Pin = SHT10_DATA_PIN;
  59.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  60.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         
  61.         GPIO_Init(SHT10_DATA_PORT, &GPIO_InitStructure);
  62. }


  63. /*************************************************************
  64.   Function   :SHT10_DATAIn  
  65.   Description:設置DATA引腳為輸入
  66.   Input      : none        
  67.   return     : none   
  68. *************************************************************/
  69. void SHT10_DATAIn(void)
  70. {
  71.         GPIO_InitTypeDef GPIO_InitStructure;
  72.         //PD0 DATA 浮動輸入        
  73.         GPIO_InitStructure.GPIO_Pin = SHT10_DATA_PIN;
  74.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  75.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  76.         GPIO_Init(SHT10_DATA_PORT, &GPIO_InitStructure);
  77. }


  78. /*************************************************************
  79.   Function   :SHT10_WriteByte  
  80.   Description:寫1字節
  81.   Input      : value:要寫入的字節        
  82.   return     : err: 0-正確  1-錯誤   
  83. *************************************************************/
  84. u8 SHT10_WriteByte(u8 value)
  85. {
  86.         u8 i, err = 0;
  87.         
  88.         SHT10_DATAOut();                          //設置DATA數據線為輸出

  89.         for(i = 0x80; i > 0; i /= 2)  //寫1個字節
  90.         {
  91.                 if(i & value)
  92.                         SHT10_DATA_H();
  93.                 else
  94.                         SHT10_DATA_L();
  95.                 SHT10_Dly();
  96.                 SHT10_SCK_H();
  97.                 SHT10_Dly();
  98.                 SHT10_SCK_L();
  99.                 SHT10_Dly();
  100.         }
  101.         SHT10_DATAIn();                                  //設置DATA數據線為輸入,釋放DATA線
  102.         SHT10_SCK_H();
  103.         err = SHT10_DATA_R();                  //讀取SHT10的應答位
  104.         SHT10_SCK_L();

  105.         return err;
  106. }

  107. /*************************************************************
  108.   Function   :SHT10_ReadByte  
  109.   Description:讀1字節數據
  110.   Input      : Ack: 0-不應答  1-應答        
  111.   return     : err: 0-正確 1-錯誤   
  112. *************************************************************/
  113. u8 SHT10_ReadByte(u8 Ack)
  114. {
  115.         u8 i, val = 0;

  116.         SHT10_DATAIn();                                  //設置DATA數據線為輸入
  117.         for(i = 0x80; i > 0; i /= 2)  //讀取1字節的數據
  118.         {
  119.                 SHT10_Dly();
  120.                 SHT10_SCK_H();
  121.                 SHT10_Dly();
  122.                 if(SHT10_DATA_R())
  123.                         val = (val | i);
  124.                 SHT10_SCK_L();
  125.         }
  126.         SHT10_DATAOut();                          //設置DATA數據線為輸出
  127.         if(Ack)
  128.                 SHT10_DATA_L();                          //應答,則會接下去讀接下去的數據(校驗數據)
  129.         else
  130.                 SHT10_DATA_H();                          //不應答,數據至此結束
  131.         SHT10_Dly();
  132.         SHT10_SCK_H();
  133.         SHT10_Dly();
  134.         SHT10_SCK_L();
  135.         SHT10_Dly();

  136.         return val;                                          //返回讀到的值
  137. }


  138. /*************************************************************
  139.   Function   :SHT10_TransStart  
  140.   Description:開始傳輸信號,時序如下:
  141.                      _____         ________
  142.                DATA:      |_______|
  143.                          ___     ___
  144.                SCK : ___|   |___|   |______        
  145.   Input      : none        
  146.   return     : none   
  147. *************************************************************/
  148. void SHT10_TransStart(void)
  149. {
  150.         SHT10_DATAOut();                          //設置DATA數據線為輸出

  151.         SHT10_DATA_H();
  152.         SHT10_SCK_L();
  153.         SHT10_Dly();
  154.         SHT10_SCK_H();
  155.         SHT10_Dly();
  156.         SHT10_DATA_L();
  157.         SHT10_Dly();
  158.         SHT10_SCK_L();
  159.         SHT10_Dly();
  160.         SHT10_SCK_H();
  161.         SHT10_Dly();
  162.         SHT10_DATA_H();
  163.         SHT10_Dly();
  164.         SHT10_SCK_L();

  165. }


  166. /*************************************************************
  167.   Function   :SHT10_ConReset  
  168.   Description:通訊復位,時序如下:
  169.                      _____________________________________________________         ________
  170.                DATA:                                                      |_______|
  171.                         _    _    _    _    _    _    _    _    _        ___     ___
  172.                SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______|   |___|   |______
  173.   Input      : none        
  174.   return     : none   
  175. *************************************************************/
  176. void SHT10_ConReset(void)
  177. {
  178.         u8 i;

  179.         SHT10_DATAOut();

  180.         SHT10_DATA_H();
  181.         SHT10_SCK_L();

  182.         for(i = 0; i < 9; i++)                  //觸發SCK時鐘9c次
  183.         {
  184.                 SHT10_SCK_H();
  185.                 SHT10_Dly();
  186.                 SHT10_SCK_L();
  187.                 SHT10_Dly();
  188.         }
  189.         SHT10_TransStart();                          //啟動傳輸
  190. }



  191. /*************************************************************
  192.   Function   :SHT10_SoftReset  
  193.   Description:軟復位
  194.   Input      : none        
  195.   return     : err: 0-正確  1-錯誤   
  196. *************************************************************/
  197. u8 SHT10_SoftReset(void)
  198. {
  199.         u8 err = 0;

  200.         SHT10_ConReset();                              //通訊復位
  201.         err += SHT10_WriteByte(SOFTRESET);//寫RESET復位命令

  202.         return err;
  203. }


  204. /*************************************************************
  205.   Function   :SHT10_ReadStatusReg  
  206.   Description:讀狀態寄存器
  207.   Input      : p_value-讀到的數據;p_checksun-讀到的校驗數據      
  208.   return     : err: 0-正確  0-錯誤   
  209. *************************************************************/
  210. u8 SHT10_ReadStatusReg(u8 *p_value, u8 *p_checksum)
  211. {
  212.         u8 err = 0;

  213.         SHT10_TransStart();                                        //開始傳輸
  214.         err = SHT10_WriteByte(STATUS_REG_R);//寫STATUS_REG_R讀取狀態寄存器命令
  215.         *p_value = SHT10_ReadByte(ACK);                //讀取狀態數據
  216.         *p_checksum = SHT10_ReadByte(noACK);//讀取檢驗和數據
  217.         
  218.         return err;
  219. }



  220. /*************************************************************
  221.   Function   :SHT10_WriteStatusReg  
  222.   Description:寫狀態寄存器
  223.   Input      : p_value-要寫入的數據值      
  224.   return     : err: 0-正確  1-錯誤   
  225. *************************************************************/
  226. u8 SHT10_WriteStatusReg(u8 *p_value)
  227. {
  228.         u8 err = 0;

  229.         SHT10_TransStart();                                         //開始傳輸
  230.         err += SHT10_WriteByte(STATUS_REG_W);//寫STATUS_REG_W寫狀態寄存器命令
  231.         err += SHT10_WriteByte(*p_value);         //寫入配置值

  232.         return err;
  233. }



  234. /*************************************************************
  235.   Function   :SHT10_Measure  
  236.   Description:從溫濕度傳感器讀取溫濕度
  237.   Input      : p_value-讀到的值;p_checksum-讀到的校驗數        
  238.   return     : err: 0-正確 1—錯誤   
  239. *************************************************************/
  240. u8 SHT10_Measure(u16 *p_value, u8 *p_checksum, u8 mode)
  241. {
  242.         u8 err = 0;
  243.         u32 i;
  244.         u8 value_H = 0;
  245.         u8 value_L = 0;

  246.         SHT10_TransStart();                                                 //開始傳輸
  247.         switch(mode)                                                         
  248.         {
  249.         case TEMP:                                                                 //測量溫度
  250.                 err += SHT10_WriteByte(MEASURE_TEMP);//寫MEASURE_TEMP測量溫度命令
  251.                 break;
  252.         case HUMI:
  253.                 err += SHT10_WriteByte(MEASURE_HUMI);//寫MEASURE_HUMI測量濕度命令
  254.                 break;
  255.         default:
  256.                 break;
  257.         }
  258.         SHT10_DATAIn();
  259.         for(i = 0; i < 72000000; i++)                             //等待DATA信號被拉低
  260.         {
  261.                 if(SHT10_DATA_R() == 0) break;             //檢測到DATA被拉低了,跳出循環
  262.         }
  263.         if(SHT10_DATA_R() == 1)                                //如果等待超時了
  264.                 err += 1;
  265.         value_H = SHT10_ReadByte(ACK);
  266.         value_L = SHT10_ReadByte(ACK);
  267.         *p_checksum = SHT10_ReadByte(noACK);           //讀取校驗數據
  268.         *p_value = (value_H << 8) | value_L;
  269.         return err;
  270. }


  271. /*************************************************************
  272.   Function   :SHT10_Calculate  
  273.   Description:計算溫濕度的值
  274.   Input      : Temp-從傳感器讀出的溫度值;Humi-從傳感器讀出的濕度值
  275.                p_humidity-計算出的實際的濕度值;p_temperature-計算出的實際溫度值        
  276.   return     : none   
  277. *************************************************************/
  278. void SHT10_Calculate(u16 t, u16 rh, float *p_temperature, float *p_humidity)
  279. {
  280.         const float d1 = -39.7;
  281.         const float d2 = +0.01;
  282.         const float C1 = -2.0468;
  283.         const float        C2 = +0.0367;
  284.         const float C3 = -0.0000015955;        
  285.         const float T1 = +0.01;
  286.         const float T2 = +0.00008;

  287.         float RH_Lin;                                                                                  //RH線性值        
  288.         float RH_Ture;                                                                                 //RH真實值
  289.         float temp_C;

  290.         temp_C = d1 + d2 * t;                                                              //計算溫度值        
  291.         RH_Lin = C1 + C2 * rh + C3 * rh * rh;                            //計算濕度值
  292.         RH_Ture = (temp_C -25) * (T1 + T2 * rh) + RH_Lin;        //濕度的溫度補償,計算實際的濕度值

  293.         if(RH_Ture > 100)                                                                        //設置濕度值上限
  294.                 RH_Ture        = 100;
  295.         if(RH_Ture < 0.1)
  296.                 RH_Ture = 0.1;                                                                        //設置濕度值下限

  297.         *p_humidity = RH_Ture;
  298.         *p_temperature = temp_C;

  299. }


  300. /*************************************************************
  301.   Function   :SHT10_CalcuDewPoint  
  302.   Description:計算露點
  303.   Input      : h-實際的濕度;t-實際的溫度        
  304.   return     : dew_point-露點   
  305. *************************************************************/
  306. float SHT10_CalcuDewPoint(float t, float h)
  307. {
  308.         float logEx, dew_point;

  309.         logEx = 0.66077 + 7.5 * t / (237.3 + t) + (log10(h) - 2);
  310.         dew_point = ((0.66077 - logEx) * 237.3) / (logEx - 8.16077);

  311.         return dew_point;
  312. }


  313. 2.8.3、main函數的編寫:
  314. int main(void)
  315. {  
  316.         u16 humi_val, temp_val;
  317.         u8 err = 0, checksum = 0;
  318.         float humi_val_real = 0.0;
  319.         float temp_val_real = 0.0;
  320.         float dew_point = 0.0;
  321.         
  322.         BSP_Init();
  323.         printf("\nSHT10溫室度測試程序!!!\n");
  324.         SHT10_Config();
  325.         while(1)
  326.         {
  327.                 err += SHT10_Measure(&temp_val, &checksum, TEMP);                  //獲取溫度測量值
  328.                 err += SHT10_Measure(&humi_val, &checksum, HUMI);                  //獲取濕度測量值
  329.                 if(err != 0)
  330.                         SHT10_ConReset();
  331.                 else
  332.                 {
  333.                         SHT10_Calculate(temp_val, humi_val, &temp_val_real, &humi_val_real); //計算實際的溫濕度值
  334.                         dew_point = SHT10_CalcuDewPoint(temp_val_real, humi_val_real);                 //計算露點溫度
  335.                 }
  336.                 printf("當前環境溫度為:%2.1f℃,濕度為:%2.1f%%,露點溫度為%2.1f℃\r\n", temp_val_real, humi_val_real, dew_point);
  337.                 LED1_Toggle();
  338.                 Delay_ms(1000);
  339.         }
  340. }
復制代碼




回復

使用道具 舉報

ID:118396 發表于 2016-5-18 14:07 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:52002 發表于 2017-3-5 20:27 | 顯示全部樓層
感謝分享,最近在學習iic知識
回復

使用道具 舉報

ID:62289 發表于 2017-3-5 20:59 | 顯示全部樓層
真給力!!
回復

使用道具 舉報

ID:81465 發表于 2017-5-3 15:48 | 顯示全部樓層
謝謝分享,剛好學到
回復

使用道具 舉報

ID:55247 發表于 2017-5-16 10:18 | 顯示全部樓層
BSP_Init();這個函數怎么定義的?
回復

使用道具 舉報

ID:261582 發表于 2018-1-26 20:26 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:261582 發表于 2018-1-26 20:26 | 顯示全部樓層
謝謝分享,剛好學到
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久一区二区三区 | 成人3d动漫一区二区三区91 | 亚洲精品区 | 久久久久黄 | 精国产品一区二区三区四季综 | 一区二区免费 | 国产在线一区二区三区 | 在线成人www免费观看视频 | 亚洲三级在线观看 | 精品乱码一区二区 | 瑟瑟激情 | 日韩视频一区二区在线 | 欧美a在线观看 | 久久99国产精品 | 成人性视频免费网站 | 自拍偷拍亚洲一区 | 草久在线视频 | 亚洲一区中文 | 在线黄 | 91久久国产综合久久91精品网站 | 亚洲在线视频 | 亚洲欧美激情视频 | 欧美一级特黄aaa大片在线观看 | 免费成人在线网站 | 久久久久久网站 | 日韩中文字幕一区二区 | 午夜影院网站 | 本地毛片 | 国产成人精品一区二区三区视频 | 中文字幕加勒比 | 黄色免费三级 | 天天爽一爽 | 国产精品日韩一区二区 | 亚洲一区视频在线 | 日日干日日操 | 欧美国产日韩在线观看 | 夜夜骑天天干 | 一区二区国产精品 | 一区二区视频在线观看 | 色视频成人在线观看免 | 日韩久久综合 |