色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

溫濕度采集實(shí)驗(yàn)

汽車電子技術(shù) ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-03-01 15:52 ? 次閱讀

11.1 實(shí)驗(yàn)簡(jiǎn)介

11.1.1 溫度采集方案概述

本實(shí)驗(yàn)采用三種方式來獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以實(shí)驗(yàn)僅使用DHT11,DS18B20和內(nèi)部溫度傳感器進(jìn)行。

11.1.2 單線協(xié)議

單總線協(xié)議是美國(guó)的達(dá)拉斯公司推出的一款總線通信協(xié)議,所謂單線協(xié)議,就是通過一根線傳輸所有的數(shù)據(jù),通俗地講就是根據(jù)低電平的時(shí)間來判斷總線上的數(shù)據(jù)是0還是1,比如拉低總線10us,就認(rèn)為發(fā)送的是1,拉低總線50us,就認(rèn)為發(fā)送的是0,單總線協(xié)議中,有3種時(shí)序,即寫時(shí)序,讀時(shí)序和檢測(cè)時(shí)序。我們?cè)?a  target="_blank">51單片機(jī)開發(fā)中已經(jīng)嘗試用51單片機(jī)通過單總線協(xié)議讀取DS18B20的溫度值,故這里不再詳細(xì)描述協(xié)議的具體內(nèi)容。

11.2 傳感器介紹

11.2.1 內(nèi)部溫度傳感器

STM32F103有一個(gè)內(nèi)部溫度傳感器,可以用于測(cè)量CPU以及周圍的溫度,這個(gè)溫度傳感器在內(nèi)部和ADC模塊的通道16相連,這個(gè)通道用于將傳感器輸出的電壓值轉(zhuǎn)換為數(shù)字編碼,根據(jù)手冊(cè)得到推薦的采樣時(shí)間是17.1us,STM32內(nèi)部溫度傳感器支持的溫度范圍為-40~+125℃,精度在±1.5℃左右。

   根據(jù)手冊(cè)提供的電壓與溫度轉(zhuǎn)換公式如下所示。

圖片

其中V25代表傳感器在25℃時(shí)候的數(shù)值,典型值為1.43

K代表溫度與Vsense曲線的平均斜率,典型值為4.3mV/℃

Vsense代表實(shí)際溫度傳感器輸出的數(shù)值。

通過上面的公式,我們就可以方便地計(jì)算出當(dāng)前的實(shí)際溫度。

11.2.2 DS18B20溫度傳感器

DS18B20是一款測(cè)溫范圍在-55~+125℃,精度在±0.5℃的高精度數(shù)字式溫度傳感器,可以通過單線接口直接讀取出被測(cè)物體的溫度,測(cè)溫精度可以通過編程實(shí)現(xiàn),工作電壓3~5.5V。值得一提的是,DS18B20內(nèi)部具有64位序列號(hào)是出廠就被設(shè)定的,每一個(gè)DS18B20的序列號(hào)均不相同,其中前8位是產(chǎn)品家族碼,中間48位是序列號(hào),最后8位是CEC校驗(yàn)碼,這就可以實(shí)現(xiàn)1根總線上掛接多個(gè)DS18B20

(1)復(fù)位與應(yīng)答脈沖

單總線上的所有通信都是以初始化序列開始。主機(jī)輸出低電平,保持低電平時(shí)間至少480us,以產(chǎn)生復(fù)位脈沖。接著主機(jī)釋放總線,4.7K的上拉電阻將單總線拉高,延時(shí)1560us,并進(jìn)入接收模式。接著從設(shè)備拉低總線60~240us,以產(chǎn)生低電平應(yīng)答脈沖,若為低電平,再延時(shí)480us

(2)寫時(shí)序

寫時(shí)序包括寫0時(shí)序和寫1時(shí)序。所有寫時(shí)序至少需要60us,且在2次獨(dú)立的寫時(shí)序之間至少需要1us的恢復(fù)時(shí)間,兩種寫時(shí)序均起始于主機(jī)拉低總線。寫1時(shí)序:主機(jī)輸出低電平,延時(shí)2us,然后釋放總線,延時(shí)60us。寫0時(shí)序:主機(jī)輸出低電平,延時(shí)60us,然后釋放總線,延時(shí)2us。

(3)讀時(shí)序

必須馬上產(chǎn)生讀時(shí)序,以便從機(jī)能夠傳輸數(shù)據(jù)。所有讀時(shí)序至少需要60us,且在2次獨(dú)立的讀時(shí)序之間至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)序都由主機(jī)發(fā)起,至少拉低總線1us。主機(jī)在讀時(shí)序期間必須釋放總線,并且在時(shí)序起始后的15us之內(nèi)采樣總線狀態(tài)。典型的讀時(shí)序過程為:主機(jī)輸出低電平延時(shí)2us,然后主機(jī)轉(zhuǎn)入輸入模式延時(shí)12us,然后讀取單總線當(dāng)前的電平,然后延時(shí)50us。

(4)DS18B20測(cè)溫時(shí)序

DS18B20的典型溫度讀取過程為:復(fù)位->發(fā)送跳過ROM讀取命令(0XCC)->發(fā)開始轉(zhuǎn)換命令(0X44)->延時(shí)復(fù)位->發(fā)送跳過ROM讀取命令(0XCC)->發(fā)讀存儲(chǔ)器命令(0XBE)->連續(xù)讀出兩個(gè)字節(jié)溫度->結(jié)束。

11.2.3 DHT11溫濕度傳感器

DHT11是一款濕溫度一體化的數(shù)字傳感器。該傳感器包括一個(gè)電阻式測(cè)濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8單片機(jī)相連接。通過單片機(jī)等微處理器簡(jiǎn)單的電路連接就能夠?qū)崟r(shí)的采集本地濕度和溫度。DHT11與單片機(jī)之間能采用簡(jiǎn)單的單總線進(jìn)行通信,僅僅需要一個(gè)I/O口。傳感器內(nèi)部濕度和溫度數(shù)據(jù)40Bit的數(shù)據(jù)一次性傳給單片機(jī),數(shù)據(jù)采用校驗(yàn)和方式進(jìn)行校驗(yàn),有效的保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。DHT11功耗很低,5V電源電壓下,工作平均最大電流0.5mA。

   DHT11的電參數(shù)如下所示。

(1)工作電壓:3.3V~5.5V

(2)工作電流:平均0.5mA

(3)測(cè)量范圍:濕度2090%RH,溫度050℃

(4)測(cè)量精度:濕度±5%,溫度±2%℃

(5)分辨率:濕度1%,溫度1℃

DHT11數(shù)字式溫濕度傳感器采用單總線數(shù)據(jù)格式。即,單個(gè)數(shù)據(jù)引腳端口完成輸入輸出雙向傳輸。其數(shù)據(jù)包由5個(gè)字節(jié)組成。數(shù)據(jù)分小數(shù)部分和整數(shù)部分,一次完整的數(shù)據(jù)傳輸為40bit,高位先出。DHT11的數(shù)據(jù)格式為:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bit溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)+8bit校驗(yàn)和。其中校驗(yàn)和數(shù)據(jù)為前四個(gè)字節(jié)相加。傳感器數(shù)據(jù)輸出的是未編碼的二進(jìn)制數(shù)據(jù)。數(shù)據(jù)(濕度、溫度、整數(shù)、小數(shù))之間應(yīng)該分開處理。

   DHT11的 **開始時(shí)序** ,即:拉低數(shù)據(jù)線,保持至少18ms,然后拉高數(shù)據(jù)線20~40us,然后讀取DHT11的響應(yīng),正常的話,DHT11會(huì)拉低數(shù)據(jù)線,保持40~50us,作為響應(yīng)信號(hào),然后DHT11拉高數(shù)據(jù)線,保持40~50us后,開始輸出數(shù)據(jù)。

11.3 STM32片內(nèi)ADC簡(jiǎn)介

11.3.1 內(nèi)部ADC概述

STM32F103擁有1~3個(gè)ADC,這些ADC可以獨(dú)立使用,也可以使用雙重模式(提高采樣率)。STM32的ADC是12位逐次逼近型的模擬數(shù)字轉(zhuǎn)換器。它有18個(gè)通道,可測(cè)量16個(gè)外部和2個(gè)內(nèi)部信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對(duì)齊或右對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中。模擬看門狗特性允許應(yīng)用程序檢測(cè)輸入電壓是否超出用戶定義的高/低閥值。STM32F103系列最少都擁有2個(gè)ADC,我們選擇的STM32F103ZET包含有3個(gè)ADC。

   STM32的ADC最大的轉(zhuǎn)換速率為1Mhz,也就是轉(zhuǎn)換時(shí)間為1us(在ADCCLK=14M,采樣周期為1.5個(gè)ADC時(shí)鐘下得到),不要讓ADC的時(shí)鐘超過14M,否則將導(dǎo)致結(jié)果準(zhǔn)確度下降。STM32將ADC的轉(zhuǎn)換分為2個(gè)通道組:規(guī)則通道組和注入通道組。規(guī)則通道相當(dāng)于你正常運(yùn)行的程序,而注入通道就相當(dāng)于中斷。在程序正常執(zhí)行的時(shí)候,中斷是可以打斷執(zhí)行的。同這個(gè)類似,注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換,在注入通道被轉(zhuǎn)換完成之后,規(guī)則通道才得以繼續(xù)轉(zhuǎn)換。

11.3.2 ADC相關(guān)寄存器

(1)ADC控制寄存器1:ADC_CR1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- AWDEN AWDENJ - FUALMOD[3:0]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DISCNUM[2:0] DISCENJ DISCEN JAUTO AWDSGL SCAN JEOCIE AWDIE EOCIE AWDCH[4:0]

Bit 23:在規(guī)則通道上開啟模擬看門狗

0:在規(guī)則通道上禁用模擬看門狗

   1:在規(guī)則通道上使用模擬看門狗

Bit 22:在注入通道上開啟模擬看門狗

0:在注入通道上禁用模擬看門狗

   1:在注入通道上使用模擬看門狗

Bit 19~Bit16:雙模式選擇

0000:獨(dú)立模式

   0001:混合的同步規(guī)則+注入同步模式

   0010:混合的同步規(guī)則+交替觸發(fā)模式

   0011:混合同步注入+快速交叉模式

   0100:混合同步注入+慢速交叉模式

   0101:注入同步模式

   0110:規(guī)則同步模式

   0111:快速交叉模式

   1000:慢速交叉模式

   1001:交替觸發(fā)模式

Bit 15~Bit 13:間斷模式通道計(jì)數(shù)

000:1個(gè)通道

   001:2個(gè)通道

   ……

   111:8個(gè)通道

Bit 12:在注入通道上的間斷模式

0:注入通道組上禁用間斷模式

   1:注入通道組上使用間斷模式

Bit 11:在規(guī)則通道上的間斷模式

0:規(guī)則通道組上禁用間斷模式

   1:規(guī)則通道組上使用間斷模式

Bit 10:自動(dòng)的注入通道組轉(zhuǎn)換

0:關(guān)閉自動(dòng)的注入通道組轉(zhuǎn)換

   1:開啟自動(dòng)的注入通道組轉(zhuǎn)換

Bit 9:掃描模式中在一個(gè)單一的通道上使用看門狗

0:在所有的通道上使用模擬看門狗

   1:在單一通道上使用模擬看門狗

Bit 8:掃描模式

0:關(guān)閉掃描模式

   1:使用掃描模式

Bit 7:允許產(chǎn)生注入通道轉(zhuǎn)換結(jié)束中斷

0:禁止JEOC中斷

   1:允許JEOC中斷

Bit 6:允許產(chǎn)生模擬看門狗中斷

0:禁止模擬看門狗中斷

   1:允許模擬看門狗中斷

Bit 5:允許產(chǎn)生EOC中斷

0:禁止EOC中斷

   1:允許EOC中斷

Bit 4~Bit 0:模擬看門狗通道選擇位

00000:ADC模擬輸入通道0

   00001:ADC模擬輸入通道1

   ……

   01111:ADC模擬輸入通道15

   10000:ADC模擬輸入通道16

   10001:ADC模擬輸入通道17

(2)ADC控制寄存器2:ADC_CR2

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- TSVREF SWSTART SWSTARTJ EXTTRIG EXTSEL[2:0] -
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
JEXTTRIG JEXTSEL[2:0] ALIGN - DMA - RSTCAL CAL CONT ADON

Bit 23:溫度傳感器和VREFINT使能

0:禁止溫度傳感器和VREFINT

   1:?jiǎn)⒂脺囟葌鞲衅骱蚔REFINT

Bit 22:開始轉(zhuǎn)換規(guī)則通道

0:復(fù)位狀態(tài)

   1:開始轉(zhuǎn)換規(guī)則通道

Bit 21:開始轉(zhuǎn)換注入通道

0:復(fù)位狀態(tài)

   1:開始轉(zhuǎn)換注入通道

Bit 20:規(guī)則通道的外部觸發(fā)轉(zhuǎn)換模式

0:不用外部事件啟動(dòng)轉(zhuǎn)換

   1:使用外部事件啟動(dòng)轉(zhuǎn)換

Bit 19~Bit 17:選擇啟動(dòng)規(guī)則通道組轉(zhuǎn)換的外部事件

ADC1和ADC2的觸發(fā)配置如下

   000定時(shí)器1的CC1事件

   001:定時(shí)器1的CC2事件

   010:定時(shí)器1的CC3事件

   011:定時(shí)器2的CC2事件

   100:定時(shí)器3的TRGO事件

   101:定時(shí)器4的CC4事件

   110:EXTI11/TIM8_TRGO事件,僅大容量產(chǎn)品具有TIM8_TRGO功能

   111:SWSTART

   ADC3的觸發(fā)配置如下

   000:定時(shí)器3的CC1事件

   001:定時(shí)器2的CC3事件

   010:定時(shí)器1的CC3事件

   011:定時(shí)器8的CC1事件

   100:定時(shí)器8的TRGO事件

   101:定時(shí)器5的CC1事件

   110:定時(shí)器5的CC3事件

   111:SWSTART

Bit 15:注入通道的外部觸發(fā)轉(zhuǎn)換模式

0:不用外部事件啟動(dòng)轉(zhuǎn)換;

1:使用外部事件啟動(dòng)轉(zhuǎn)換。

Bit 14~Bit 12:選擇啟動(dòng)注入通道組轉(zhuǎn)換的外部事件

ADC1和ADC2的觸發(fā)配置如下

   000:定時(shí)器1的TRGO事件

   001:定時(shí)器1的CC4事件

   010:定時(shí)器2的TRGO事件

   011:定時(shí)器2的CC1事件

   100:定時(shí)器3的CC4事件

   101:定時(shí)器4的TRGO事件

   110:EXTI線15/TIM8_CC4事件,僅大容量產(chǎn)品具有TIM8_CC4

   111:JSWSTART

   ADC3的觸發(fā)配置如下

   000:定時(shí)器1的TRGO事件

   001:定時(shí)器1的CC4事件

   010:定時(shí)器4的CC3事件

   011:定時(shí)器8的CC2事件

   100:定時(shí)器8的CC4事件

   101:定時(shí)器5的TRGO事件

   110:定時(shí)器5的CC4事件

   111:JSWSTART

Bit 11:數(shù)據(jù)對(duì)齊

0:右對(duì)齊

   1:左對(duì)齊

Bit 8:直接存儲(chǔ)器訪問模式

0:不使用DMA模式

   1:使用DMA模式

Bit 3:復(fù)位校準(zhǔn)

0:校準(zhǔn)寄存器已初始化

   1:初始化校準(zhǔn)寄存器

Bit 2:A/D校準(zhǔn)

0:校準(zhǔn)完成

   1:開始校準(zhǔn)

Bit 1:連續(xù)轉(zhuǎn)換

0:?jiǎn)未无D(zhuǎn)換模式

   1:連續(xù)轉(zhuǎn)換模式

Bit 0:開/關(guān)A/D轉(zhuǎn)換器

0:關(guān)閉ADC轉(zhuǎn)換/校準(zhǔn),并進(jìn)入斷電模式

   1:開啟ADC并啟動(dòng)轉(zhuǎn)換

(3)ADC采樣事件寄存器1:ADC_SMPR1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- SMP17[2:0] SMP16[2:0] SMP15[2:1]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SMP15_0 SMP14[2:0] SMP13[2:0] SMP12[2:0] SMP11[2:0] SMP10[2:0]

SMPx[2:0]:選擇通道x的采樣時(shí)間

0001.5周期

   0017.5周期

   01013.5周期

   01128.5周期

   10041.5周期

   10155.5周期

   11071.5周期

   111239.5周期

(4)ADC采樣事件寄存器2:ADC_SMPR2

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- SMP9[2:0] SMP8[2:0] SMP7[2:0] SMP6[2:0] SMP5[2:1]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SMP5_0 SMP4[2:0] SMP3[2:0] SMP2[2:0] SMP1[2:0] SMP0[2:0]

SMPx[2:0]:選擇通道x的采樣時(shí)間

0001.5周期

   0017.5周期

   01013.5周期

   01128.5周期

   10041.5周期

   10155.5周期

   11071.5周期

   111239.5周期

(5)ADC規(guī)則序列寄存器1:ADC_SQR1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- L[3:0] SQ16[4:1]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SQ16_0 SQ15[4:0] SQ14[4:0] SQ13[4:0]

Bit 23~Bit 20:規(guī)則通道序列長(zhǎng)度

0000:1個(gè)轉(zhuǎn)換

   0001:2個(gè)轉(zhuǎn)換

   ……

   1111:16個(gè)轉(zhuǎn)換

Bit 19Bit 15:規(guī)則序列中的第16個(gè)轉(zhuǎn)換,這些位由軟件定義轉(zhuǎn)換序列中的第16個(gè)轉(zhuǎn)換通道的編號(hào)(017)

Bit 14~Bit 10:規(guī)則序列中的第15個(gè)轉(zhuǎn)換

Bit 9~Bit 5:規(guī)則序列中的第14個(gè)轉(zhuǎn)換

Bit 4~Bit 0:規(guī)則序列中的第13個(gè)轉(zhuǎn)換

(6)ADC規(guī)則序列寄存器2:ADC_SQR2

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- SQ12[4:0] SQ11[4:0] SQ10[4:0]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SQ10_0 SQ9[4:0] SQ8[4:0] SQ7[4:0]

Bit 29~Bit 25:規(guī)則序列中的第12個(gè)轉(zhuǎn)換

Bit 24~Bit 20:規(guī)則序列中的第11個(gè)轉(zhuǎn)換

Bit 19~Bit 15:規(guī)則序列中的第10個(gè)轉(zhuǎn)換

Bit 14~Bit 10:規(guī)則序列中的第9個(gè)轉(zhuǎn)換

Bit 9~Bit 5:規(guī)則序列中的第8個(gè)轉(zhuǎn)換

Bit 4~Bit 0:規(guī)則序列中的第7個(gè)轉(zhuǎn)換

(7)ADC規(guī)則序列寄存器3:ADC_SQR3

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- SQ6[4:0] SQ5[4:0] SQ4[4:0]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
SQ4_0 SQ3[4:0] SQ2[4:0] SQ1[4:0]

Bit 29~Bit 25:規(guī)則序列中的第6個(gè)轉(zhuǎn)換

Bit 24~Bit 20:規(guī)則序列中的第5個(gè)轉(zhuǎn)換

Bit 19~Bit 15:規(guī)則序列中的第4個(gè)轉(zhuǎn)換

Bit 14~Bit 10:規(guī)則序列中的第3個(gè)轉(zhuǎn)換

Bit 9~Bit 5:規(guī)則序列中的第2個(gè)轉(zhuǎn)換

Bit 4~Bit 0:規(guī)則序列中的第1個(gè)轉(zhuǎn)換

(8)ADC數(shù)據(jù)寄存器:ADC_DR和ADC_JDR

數(shù)據(jù)寄存器分為DR和JDR,其中DR中存儲(chǔ)的是規(guī)則序列轉(zhuǎn)換后的值,JDR存儲(chǔ)的則是注入序列轉(zhuǎn)換后的值。其中ADC_DR寄存器的結(jié)構(gòu)如下圖所示。
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
ADC2_DATA[15:0]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
DATA[15:0]

Bit 31~Bit16:ADC2轉(zhuǎn)換的數(shù)據(jù),在ADC1中:雙模式下,這些位包含了ADC2轉(zhuǎn)換的規(guī)則通道數(shù)據(jù)

Bit 15~Bit 0:規(guī)則轉(zhuǎn)換的數(shù)據(jù):包含了規(guī)則通道的轉(zhuǎn)換結(jié)果,數(shù)據(jù)是左對(duì)齊或右對(duì)齊

(9)ADC狀態(tài)寄存器:ADC_SR

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- STRT JSTART JEOC EOC AWD

Bit 4:規(guī)則通道開始位

0:規(guī)則通道轉(zhuǎn)換未開始

   1:規(guī)則通道轉(zhuǎn)換已開始

Bit 3:注入通道開始位

0:注入通道組轉(zhuǎn)換未開始

   1:注入通道組轉(zhuǎn)換已開始

Bit 2:注入通道轉(zhuǎn)換結(jié)束位

0:轉(zhuǎn)換未完成

   1:轉(zhuǎn)換完成

Bit 1:轉(zhuǎn)換結(jié)束位

0:轉(zhuǎn)換未完成

   1:轉(zhuǎn)換完成

Bit 0:模擬看門狗標(biāo)志位

0:沒有發(fā)生模擬看門狗事件

   1:發(fā)生模擬看門狗事件

11.4 內(nèi)部溫度傳感器例程

功能實(shí)現(xiàn):采用內(nèi)部溫度傳感器讀取溫度顯示在TFTLCD上。

(1)創(chuàng)建adc.h文件,并輸入以下代碼。

#ifndef _ADC_H_
#define _ADC_H_


#include "sys.h"
/*********************************************************************************************************
                    函    數(shù)    列    表
*********************************************************************************************************/
void ADC_Init( void ) ;                                          //初始化ADC1
u16 Get_Adc_Average( u8 ch, u8 times ) ;                                //獲取通道ch的轉(zhuǎn)換均值
short Get_Temprate( void ) ;                                      //獲取溫度值


#endif

(2)創(chuàng)建adc.c文件,并輸入以下代碼。

#include "adc.h"
#include "delay.h"
/***************************************************
Name    :ADC_Init
Function  :初始化ADC1
Paramater  :None
Return    :None
***************************************************/
void ADC_Init()
{
  //先初始化IO口
   RCC->APB2ENR |= 1<<2 ;                                        //使能PORTA口時(shí)鐘
  GPIOA->CRL &= 0XFFFFFF0F ;                                      //PA1 anolog輸入
  RCC->APB2ENR |= 1<<9 ;                                        //ADC1時(shí)鐘使能
  RCC->APB2RSTR |= 1<<9 ;                                        //ADC1復(fù)位
  RCC->APB2RSTR &= ~( 1<<9 ) ;                                    //復(fù)位結(jié)束
  RCC->CFGR &= ~( 3<<14 ) ;                                      //分頻因子清零
  //SYSCLK/DIV2=12M ADC時(shí)鐘設(shè)置為12M,ADC最大時(shí)鐘不能超過14M
  RCC->CFGR |= 2<<14 ;
  ADC1->CR1 &= 0xF0FFFF ;                                        //工作模式清零
  ADC1->CR1 |= 0<<16 ;                                        //獨(dú)立工作模式
  ADC1->CR1 &= ~( 1<<8 ) ;                                      //非掃描模式
  ADC1->CR2 &= ~( 1<<1 ) ;                                      //單次轉(zhuǎn)換模式
  ADC1->CR2 &= ~( 7<<17 ) ;
  ADC1->CR2 |= 7<<17 ;                                        //軟件控制轉(zhuǎn)換
  ADC1->CR2 |= 1<<20 ;                                        //使用用外部觸發(fā)
  ADC1->CR2 &= ~( 1<<11 ) ;                                      //右對(duì)齊
  ADC1->CR2 |= 1<<23 ;                                        //使能溫度傳感器
  ADC1->SQR1 &= ~( 0xF<<20 ) ;
  ADC1->SQR1 &= ~( 1<<20 ) ;                                      //1個(gè)轉(zhuǎn)換在規(guī)則序列中
  //設(shè)置通道1的采樣時(shí)間
  ADC1->SMPR2 &= ~( 3<<0 ) ;                                      //通道1采樣時(shí)間清空
   ADC1->SMPR2 |= 7<<3 ;                                        //通道1 239.5周期,提高采樣時(shí)間可以提高精確度
  ADC1->SMPR1 &= ~( 7<<18 ) ;                                      //清除通道16原來的設(shè)置
  ADC1->SMPR1 |= 7<<18 ;                                        //通道16 239.5周期,提高采樣時(shí)間可以提高精確度
  ADC1->CR2 |= 1<<0 ;                                          //開啟AD轉(zhuǎn)換器
  ADC1->CR2 |= 1<<3 ;                                          //使能復(fù)位校準(zhǔn)
  while( ( ADC1->CR2&0x08 )==0x08 ) ;                                  //等待校準(zhǔn)結(jié)束
  ADC1->CR2 |= 1<<2 ;                                          //開啟AD校準(zhǔn)
  while( ( ADC1->CR2&0x04 )==0x04 ) ;                                  //等待校準(zhǔn)結(jié)束
}
/***************************************************
Name    :ADC_Init
Function  :獲取通道ch的轉(zhuǎn)換均值
Paramater  :
      ch:通道編號(hào)
      times:獲取次數(shù)
Return    :通道ch的轉(zhuǎn)換均值
***************************************************/
u16 Get_Adc_Average( u8 ch, u8 times )
{
  u32 temp_val=0 ;
  u8 t ;
  for( t=0; t

(3)創(chuàng)建main文件,并輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "lcd.h"
#include "adc.h"


int main()
{
  short Temp ;
  u8 Str[] = "Temperature:+000.00 'C" ;
  STM32_Clock_Init( 9 ) ;                                        //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LCD_Init() ;                                            //LCD初始化
  ADC_Init() ;                                            //ADC初始化
  while( 1 )
  {
    Temp = Get_Temprate() ;
    if( Temp<0 )
    {
      Temp = -Temp ;
      Str[ 12 ] = '-' ;                                      //顯示負(fù)號(hào)
    }
    else
      Str[ 12 ] = ' ' ;                                      //無符號(hào)    
    Str[ 13 ] = 0x30+Temp/10000 ;
    Str[ 14 ] = 0x30+Temp%10000/1000 ;
    Str[ 15 ] = 0x30+Temp%1000/100 ;
    Str[ 17 ] = 0x30+Temp%100/10 ;
    Str[ 18 ] = 0x30+Temp%10 ;
    LCD_ShowString( 100, 100, Str ) ;                                //顯示溫度值
    delay_ms( 500 ) ;
  }
}

11.5 DS18B20例程

功能實(shí)現(xiàn):讀取DS18B20的溫度顯示在TFTLCD上。

(1)創(chuàng)建ds18b20.h文件,并輸入以下代碼。

#ifndef _DS18B20_H_
#define _DS18B20_H_


#include "sys.h"
/*********************************************************************************************************
                    端    口    分    配
*********************************************************************************************************/
#define  DS18B20_DQ_OUT  PGout( 11 )                                    //數(shù)據(jù)端口
#define  DS18B20_DQ_IN  PGin( 11 )
/*********************************************************************************************************
                    函    數(shù)    列    表
*********************************************************************************************************/
void DS18B20_Init( void ) ;                                        //初始化DS18B20
short DS18B20_Get_Temp( void ) ;                                    //獲取溫度


#endif

(2)創(chuàng)建ds18b20.c文件,并輸入以下代碼。

#include "ds18b20.h"
#include "delay.h"
/***************************************************
Name    :DS18B20_Write_Byte
Function  :發(fā)送1個(gè)字節(jié)
Paramater  :
      Byte:發(fā)送的字節(jié)
Return    :None
***************************************************/
void DS18B20_Write_Byte( u8 Byte )
{
    u8 i ;
  GPIOG->CRH &= 0xFFFF0FFF ;
  GPIOG->CRH |= 0x00003000 ;
  for( i=0; i<8; i++ )
  {
    if( ( Byte&0x01 )==0x01 )
    {
      DS18B20_DQ_OUT = 0;
      delay_us( 2 ) ;
      DS18B20_DQ_OUT = 1 ;
      delay_us( 60 ) ;
    }
    else
    {
      DS18B20_DQ_OUT = 0 ;
      delay_us( 60 ) ;
      DS18B20_DQ_OUT = 1 ;
      delay_us( 2 ) ;
    }
    Byte >>= 1 ;
  }
}
/***************************************************
Name    :DS18B20_Read_Byte
Function  :讀取1個(gè)字節(jié)
Paramater  :None
Return    :讀取的字節(jié)
***************************************************/
u8 DS18B20_Read_Byte()
{
  u8 i, Byte=0 ;
  for( i=0; i<8; i++ )
  {
    Byte >>= 1 ;
    GPIOG->CRH &= 0xFFFF0FFF ;
    GPIOG->CRH |= 0x00003000 ;
    DS18B20_DQ_OUT = 0 ; 
    delay_us( 2 ) ;
    DS18B20_DQ_OUT = 1 ; 
    GPIOG->CRH &= 0xFFFF0FFF ;
    GPIOG->CRH |= 0x00008000 ;
    delay_us( 12 ) ;
    if( DS18B20_DQ_IN )
      Byte |= 0x80 ;
    delay_us( 50 ) ;
  }
  return Byte ;
}
/***************************************************
Name    :DS18B20_Check
Function  :等待DS18B20的回應(yīng)
Paramater  :None
Return    :None
***************************************************/
void DS18B20_Check()      
{
  GPIOG->CRH &= 0xFFFF0FFF ;
  GPIOG->CRH |= 0x00003000 ;
  DS18B20_DQ_OUT = 0 ;                                        //拉低DQ
  delay_us( 750 );                                          //拉低750us
  DS18B20_DQ_OUT = 1 ;                                        //DQ=1
  delay_us( 15 ) ;                                          //15us
  GPIOG->CRH &= 0xFFFF0FFF ;
  GPIOG->CRH |= 0x00008000 ;
  while( DS18B20_DQ_IN ) ;                                      //等待應(yīng)答
  while( DS18B20_DQ_IN==0 );                                      //等待應(yīng)答結(jié)束
}
/***************************************************
Name    :DS18B20_Init
Function  :初始化DS18B20
Paramater  :None
Return    :None
***************************************************/
void DS18B20_Init()
{
  RCC->APB2ENR |= 1<<8 ;                                        //使能PORTG口時(shí)鐘 
  GPIOG->CRH &= 0xFFFF0FFF ;                                      //PORTG.11 推挽輸出
  GPIOG->CRH |= 0x00003000 ;
  GPIOG->ODR |= 1<<11 ;                                        //輸出1
  DS18B20_Check() ;
}
/***************************************************
Name    :DS18B20_Get_Temp
Function  :得到溫度值
Paramater  :None
Return    :溫度值
***************************************************/
short DS18B20_Get_Temp()
{
  u8 TL,TH;
  short temp ;
  DS18B20_Check() ;
  DS18B20_Write_Byte( 0xCC ) ;                                    //跳過ROM讀取
  DS18B20_Write_Byte( 0x44 ) ;                                    //開啟轉(zhuǎn)換
  DS18B20_Check() ;   
  DS18B20_Write_Byte( 0xCC ) ;                                    //跳過ROM讀取
  DS18B20_Write_Byte( 0xBE ) ;                                    //開始轉(zhuǎn)換
  TL = DS18B20_Read_Byte() ;                                      //LSB
  TH = DS18B20_Read_Byte() ;                                      //MSB
  if( TH>7 )
  {
    TH = ~TH ;
    TL = ~TL ;
  }
  temp = TH ;                                              //獲得高八位
  temp <<= 8 ;    
  temp += TL ;                                            //獲得低八位
  temp = ( float )temp*0.625 ;                                    //轉(zhuǎn)換     
  if( TH>7 )
    return temp ;                                          //返回溫度值
  else
    return -temp ;
}

(3)創(chuàng)建1.c文件,并輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "lcd.h"
#include "ds18b20.h"


int main()
{
  short Temp ;
  u8 Str[] = "Temperature:+000.00 'C" ;
  STM32_Clock_Init( 9 ) ;                                        //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LCD_Init() ;                                            //LCD初始化
  DS18B20_Init() ;                                          //DS18B20初始化
  while( 1 )
  {
    Temp = DS18B20_Get_Temp();                                    //讀取溫度
    if( Temp<0 )
    {
      Temp = -Temp ;
      Str[ 12 ] = '-' ;                                      //顯示負(fù)號(hào)
    }
    else
      Str[ 12 ] = ' ' ;                                      //無符號(hào)    
    Str[ 13 ] = 0x30+Temp/10000 ;
    Str[ 14 ] = 0x30+Temp%10000/1000 ;
    Str[ 15 ] = 0x30+Temp%1000/100 ;
    Str[ 17 ] = 0x30+Temp%100/10 ;
    Str[ 18 ] = 0x30+Temp%10 ;
    LCD_ShowString( 100, 100, Str ) ;                                //顯示溫度值
    delay_ms( 500 ) ;
  }
}

11.6 DHT11例程

功能實(shí)現(xiàn):讀取DHT11的溫度與濕度數(shù)據(jù)顯示在TFTLCD上。

(1)創(chuàng)建dht11.h文件,并輸入以下代碼。

#ifndef _DHT11_H_
#define _DHT11_H_


#include "sys.h"
/*********************************************************************************************************
                    端    口    分    配
*********************************************************************************************************/
#define  DHT11_DQ_OUT  PGout( 11 )                                    //數(shù)據(jù)端口
#define  DHT11_DQ_IN    PGin( 11 )
/*********************************************************************************************************
                    函    數(shù)    列    表
*********************************************************************************************************/
u8 DHT11_Init( void ) ;                                          //初始化DHT11
u8 DHT11_Get_Data( u8 *temp, u8 *humi ) ;                                //獲取溫濕度


#endif

(2)創(chuàng)建dht11.c文件,并輸入以下代碼。

#include "dht11.h"
#include "delay.h"
/***************************************************
Name    :DHT11_Check
Function  :檢查DHT11
Paramater  :None
Return    :
      0:存在
      1:不存在
***************************************************/
u8 DHT11_Check()      
{
  u8 retry ;
  GPIOG->CRH &= 0xFFFF0FFF ;                                      //PG11推挽輸出
  GPIOG->CRH |= 0x00003000 ;
  DHT11_DQ_OUT = 0 ;                                          //拉低DQ
  delay_ms( 20 ) ;                                          //拉低至少18ms
  DHT11_DQ_OUT = 1 ;                                          //DQ=1
  delay_us( 30 );                                            //主機(jī)拉高20~40us
  GPIOG->CRH &= 0xFFFF0FFF;                                      //PG11上拉輸入
  GPIOG->CRH |= 0x00008000;
  //DHT11會(huì)拉低40~80us
  retry = 0 ;
  while( ( DHT11_DQ_IN==1 )&&( retry<100 ) )
  {
    retry ++ ;
    delay_us( 1 ) ;
  };
  if( retry>=100 )
    return 1 ;
  else
    retry = 0 ;
  //DHT11拉低后會(huì)再次拉高40~80us
  while( ( DHT11_DQ_IN==0 )&&( retry<100 ) )
  {
    retry ++ ;
    delay_us( 1 ) ;
  };
  if( retry>=100 )
    return 1 ;
  return 0 ;
}
/***************************************************
Name    :DHT11_Read_Byte
Function  :讀取1個(gè)字節(jié)
Paramater  :None
Return    :讀取的字節(jié)
***************************************************/
u8 DHT11_Read_Byte()
{
  u8 i, Byte=0;
  for (i=0;i<8;i++)
  {
    Byte <<= 1 ;
    while( DHT11_DQ_IN ) ;                                      //等待變?yōu)榈碗娖?    while( DHT11_DQ_IN==0 ) ;                                    //等待變高電平
    delay_us( 40 ) ;                                        //等待40us
    if( DHT11_DQ_IN )
      Byte |= 0x01 ;
  }
  return Byte ;
}
/***************************************************
Name    :DHT11_Get_Data
Function  :獲取溫濕度
Paramater  :
      temp:溫度值(范圍:0~50°)
      humi:濕度值(范圍:20%~90%)
Return    :
      0:正常
      1:讀取失敗
***************************************************/
u8 DHT11_Get_Data( u8 *temp, u8 *humi )
{        
  u8 i, buf[ 5 ] ;
  if( DHT11_Check()==0 )
  {
    //讀取40位數(shù)據(jù)
    for( i=0; i<5; i++ )
      buf[ i ] = DHT11_Read_Byte() ;
    if( ( buf[ 0 ]+buf[ 1 ]+buf[ 2 ]+buf[ 3 ] )==buf[ 4 ] )
    {
      *humi = buf[ 0 ] ;
      *temp = buf[ 2 ] ;
    }
  }
  else
    return 1 ;
  return 0 ;
}
/***************************************************
Name    :DHT11_Init
Function  :初始化DHT11
Paramater  :None
Return    :
      0:存在
      1:不存在
***************************************************/
u8 DHT11_Init()
{
  RCC->APB2ENR |= 1<<8 ;                                        //使能PG時(shí)鐘
  GPIOG->CRH &= 0xFFFF0FFF ;                                      //PG11推挽輸出
  GPIOG->CRH |= 0x00003000 ;
  GPIOG->ODR |= 1<<11 ;                                        //輸出1
  if( DHT11_Check() )
    return 1 ;
  return 0 ;
}

(3)創(chuàng)建1.c文件,并輸入以下代碼。

#include "sys.h"
#include "delay.h"
#include "usart1.h"
#include "lcd.h"
#include "dht11.h"


int main()
{
  u8 Temp, Humi;
  u8 Str1[ 20 ] ;
  u8 Str2[ 20 ] ;
  STM32_Clock_Init( 9 ) ;                                        //STM32時(shí)鐘初始化
  SysTick_Init( 72 ) ;                                        //SysTick初始化
  USART1_Init( 72, 115200 ) ;                                      //初始化串口1波特率115200
  LCD_Init() ;                                            //LCD初始化
  while( DHT11_Init() )                                        //DHT11初始化
  {
    LCD_ShowString( 100, 100, "DHT11 Error!!!" ) ;
    delay_ms( 200 ) ;
    LCD_ShowString( 100, 100, "              " ) ;
    delay_ms( 200 ) ;
  }
  while( 1 )
  {
    //讀取溫濕度
    if( DHT11_Get_Data( &Temp, &Humi )==0 )
    {
      sprintf( ( char * )Str1, "Temperature:%02d C", Temp ) ;
      LCD_ShowString( 100, 100, Str1 ) ;                              //顯示溫度值
      sprintf( ( char * )Str2, "Humidity:%02d RH%%", Temp ) ;
      LCD_ShowString( 100, 116, Str2 ) ;                              //顯示濕度值
    }
    delay_ms( 500 ) ;
  }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 溫度傳感器
    +關(guān)注

    關(guān)注

    48

    文章

    2940

    瀏覽量

    156016
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355734
  • 單總線協(xié)議
    +關(guān)注

    關(guān)注

    1

    文章

    4

    瀏覽量

    1865
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    溫濕度采集

    發(fā)現(xiàn)的一個(gè)溫濕度采集,看看是否有用
    發(fā)表于 11-02 14:07

    多點(diǎn)溫濕度報(bào)警系統(tǒng)的原理是什么?

    的檢測(cè)就顯得尤為重要。傳統(tǒng)的實(shí)驗(yàn)室溫度濕度檢測(cè)方案基本使用溫濕度傳感器采集信號(hào),經(jīng)放大、濾波、校準(zhǔn)、模數(shù)轉(zhuǎn)換、顯示等硬件電路實(shí)現(xiàn),這種方案由于硬件系統(tǒng)復(fù)雜,調(diào)試?yán)щy,使用時(shí)系統(tǒng)小元件故
    發(fā)表于 03-26 06:35

    庫房無線溫濕度監(jiān)控方案 無線溫濕度監(jiān)控系統(tǒng) 倉儲(chǔ)物流無線溫濕度

    材料科學(xué)研究總院北京冶金自動(dòng)化研究院溫度采集系統(tǒng)中科院上海精密機(jī)械研究所數(shù)字溫濕度采樣系統(tǒng)大連建筑科學(xué)研究院實(shí)驗(yàn)室恒溫恒濕檢測(cè)工程哈爾濱計(jì)量科學(xué)技術(shù)研究院質(zhì)量技術(shù)監(jiān)督局溫濕度監(jiān)測(cè)
    發(fā)表于 03-01 10:15

    基于STM32的溫濕度采集系統(tǒng)設(shè)計(jì)

    前言溫度和濕度值是重要的物理參數(shù),例如精密機(jī)械加工、實(shí)驗(yàn)室、溫室大棚、糧庫、重要活動(dòng)場(chǎng)所、會(huì)議室、居住場(chǎng)所等都需要對(duì)溫度和濕度進(jìn)行實(shí)時(shí)采集和控制,因此設(shè)計(jì)
    發(fā)表于 08-10 08:17

    溫濕度傳感器與LM-8052NET實(shí)現(xiàn)網(wǎng)絡(luò)化遠(yuǎn)程采集溫濕度

    溫濕度是自然界中和人類打交道最多的兩個(gè)物理參數(shù),無論是在生產(chǎn)實(shí)驗(yàn)場(chǎng)所,還是在居住休閑場(chǎng)所,溫濕度采集或控制都十分頻繁和重要,而且,網(wǎng)絡(luò)化遠(yuǎn)程采集
    發(fā)表于 07-02 09:16 ?1349次閱讀

    基于單片機(jī)的AM2320的溫濕度采集

    基于單片機(jī)的AM2320的溫濕度采集
    發(fā)表于 11-05 11:42 ?51次下載

    基于STM32的溫室溫濕度采集系統(tǒng)

    基于STM32的溫室溫濕度采集系統(tǒng)
    發(fā)表于 09-28 11:07 ?79次下載
    基于STM32的溫室<b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b>系統(tǒng)

    溫濕度采集系統(tǒng)功能介紹

    簡(jiǎn)稱溫濕度采集系統(tǒng)采用SENSIRION公司的數(shù)字式溫濕度傳感器,高可靠性,一致性好,漂移小,可水洗精度不受影響。
    的頭像 發(fā)表于 10-08 10:23 ?9668次閱讀
    <b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b>系統(tǒng)功能介紹

    ZIGBEE溫濕度傳感采集模塊的應(yīng)用

    工業(yè)方面應(yīng)用就相當(dāng)廣泛了,各種金屬煉廠車間,需要保證一定的溫濕度,以防工人出現(xiàn)身體不適,同時(shí)也可運(yùn)用在車間,以防溫濕度異常造成生產(chǎn)設(shè)備出現(xiàn)問題;食品生產(chǎn),制藥,釀酒,產(chǎn)品烘烤等生產(chǎn)產(chǎn)線設(shè)備應(yīng)用溫濕度
    發(fā)表于 05-14 15:14 ?1086次閱讀

    實(shí)現(xiàn)(4)---CC2530實(shí)現(xiàn)采集溫濕度(純采集

    和氣體濃度的采集之后再將這兩個(gè)分別和協(xié)議棧融合,成為真正可以實(shí)現(xiàn)無線傳輸?shù)母兄獙印#?)實(shí)驗(yàn)器材:CC2530,DHT11溫濕度傳感器,CC2530仿真器,電腦、IAR軟件。(2)目的:1.通過該
    發(fā)表于 11-29 21:06 ?22次下載
    實(shí)現(xiàn)(4)---CC2530實(shí)現(xiàn)<b class='flag-5'>采集</b><b class='flag-5'>溫濕度</b>(純<b class='flag-5'>采集</b>)

    基于I2C下的溫濕度采集實(shí)驗(yàn)

    目錄 一、I2C相關(guān)了解及介紹1、基本介紹2、I2C 物理層3、I2C 協(xié)議層二、什么是“軟件I2C”和“硬件I2C”1、軟件I2C2、硬件I2C三、編程實(shí)現(xiàn)溫濕度采集1、編程要求2、工程文件及其
    發(fā)表于 12-07 09:21 ?3次下載
    基于I2C下的<b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b><b class='flag-5'>實(shí)驗(yàn)</b>

    STM32入門學(xué)習(xí)筆記之溫濕度采集實(shí)驗(yàn)1

    實(shí)驗(yàn)采用三種方式來獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以
    的頭像 發(fā)表于 02-16 11:13 ?3546次閱讀
    STM32入門學(xué)習(xí)筆記之<b class='flag-5'>溫濕度</b><b class='flag-5'>采集</b><b class='flag-5'>實(shí)驗(yàn)</b>1

    STM32入門學(xué)習(xí)筆記之溫濕度采集實(shí)驗(yàn)2

    實(shí)驗(yàn)采用三種方式來獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以
    的頭像 發(fā)表于 02-16 11:13 ?768次閱讀

    STM32入門學(xué)習(xí)筆記之溫濕度采集實(shí)驗(yàn)3

    實(shí)驗(yàn)采用三種方式來獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以
    的頭像 發(fā)表于 02-16 11:13 ?873次閱讀

    STM32入門學(xué)習(xí)筆記之溫濕度采集實(shí)驗(yàn)4

    實(shí)驗(yàn)采用三種方式來獲取溫濕度值,一種是STM32芯片內(nèi)部自帶的溫度傳感器,一種是基于單總線協(xié)議的DS18B20溫度傳感器,還有一種就是溫濕度傳感器DHT11或者DHT22,但是在成本上DHT22比較高,所以
    的頭像 發(fā)表于 02-16 11:14 ?808次閱讀
    主站蜘蛛池模板: 一道本无吗d d在线播放| 肉色无边(高h)| 色偷偷网址| 亚洲色综合狠狠综合区| 99re久久超碰视频精品| 国产产一区二区三区久久毛片国语| 老司机午夜影院味味| 欧美特黄三级成人| 久久99亚洲AV无码四区碰碰| 国产欧美另类久久久精品免费| cntv官网| 国产精品-区区久久久狼| 最近中文字幕完整版免费高清 | 羞羞答答影院在线| 伊人久久大香线蕉综合高清| 在镜头里被CAO翻了H| 处破女免费播放| 久久日本精品国产精品| 特黄AAAAAAA片免费视频| 中文无码在线观| 国产精品大陆在线视频| 免费可以看污动画软件| 亚洲国产高清福利视频| 成人在线视频免费| 兰桂坊人成社区亚洲精品| 午夜免费小视频| xxnx动漫| 狂躁美女BBBBBB视频| 亚洲国产在线精品国| 潮 喷女王cytherea| 六度影院最新| 亚洲人成www在线播放| 国产AV精品久久久免费看| 男生射女生| 影音先锋男人av橹橹色| 国产人A片在线乱码视频| 日本人六九视频| 99久久精品6在线播放| 久久国产一区二区三区| 亚洲 综合 欧美在线 热| 大陆老熟女60岁|