欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STM32 模塊篇-DS18B20實(shí)驗(yàn) [打印本頁]

作者: 51黑黑黑    時(shí)間: 2016-3-4 13:32
標(biāo)題: STM32 模塊篇-DS18B20實(shí)驗(yàn)
目     錄
5.04.1概述3
5.04.2 實(shí)驗(yàn)?zāi)康?
5.04.3 硬件設(shè)計(jì)5
5.04.4 軟件設(shè)計(jì)6
5.04.5 STM32系統(tǒng)時(shí)鐘配置SystemInit()9
5.04.6  GPIO引腳時(shí)鐘使能9
5.04.7  GPIO管腳電平控制函數(shù)9
5.04.8 stm32f10x_it.c文件里的內(nèi)容是10
5.04.9  ds18b20.h文件里的內(nèi)容是10
5.04.10  ds18b20.c文件里的內(nèi)容是11
5.04.11  main.c文件里的內(nèi)容是16
5.04.12 程序下載18
5.04.13 實(shí)驗(yàn)效果圖19
5.04 防水型DS18B20程序設(shè)計(jì)  
5.04.1概述


美國Dallas半導(dǎo)體公司生產(chǎn)的數(shù)字化溫度傳感器DS18B20,采用導(dǎo)熱性高的密封膠灌封,保證了溫度傳感器的高靈敏性,極小的溫度延遲。該溫度傳感器支持“一線總線”接口(1-Wire),現(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量。DS18B20數(shù)字溫度傳感器都具有唯一的編號(hào),溫度采集設(shè)備通過編號(hào)來識(shí)別對(duì)應(yīng)的溫度傳感器器。
?
在外設(shè)篇我們?cè)敿?xì)介紹了DS18B20數(shù)字溫度傳感器,下面重復(fù)簡單介紹一下DS18B20獨(dú)特的優(yōu)點(diǎn):
( 1 )采用單總線的接口方式與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與 DS18B20的雙向通訊。單總線具有經(jīng)濟(jì)性好,抗干擾能力強(qiáng),適合于惡劣環(huán)境的現(xiàn)場溫度測量,使用方便等優(yōu)點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測量系統(tǒng)的構(gòu)建引入全新概念。
( 2 )測量溫度范圍寬,測量精度高 DS18B20 的測量范圍為 -55 ℃~+ 125 ℃ ; 在 -10~+ 85°C 范圍內(nèi),精度為 ± 0.5°C。
( 3 )在使用中不需要任何外圍元件。
( 4 )持多點(diǎn)組網(wǎng)功能 多個(gè) DS18B20可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測溫。
( 5 )供電方式靈活 DS18B20可以通過內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源,從而使系統(tǒng)結(jié)構(gòu)更趨簡單,可靠性更高。
( 6 )測量參數(shù)可配置 DS18B20 的測量分辨率可通過程序設(shè)定 9~12位。
( 7)負(fù)壓特性電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。
( 8 )掉電保護(hù)功能 DS18B20 內(nèi)部含有 EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報(bào)警溫度的設(shè)定值。
    DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測溫系統(tǒng),因此也就被設(shè)計(jì)者們所青睞。
   防水探頭采用全新原裝進(jìn)口DS18B20溫度傳感器芯片,芯片每個(gè)引腳均用熱縮管隔開,防止短路,內(nèi)部封膠,防水防潮,不銹鋼頭常規(guī)的引線1米,鋼管Φ6*50mm。每個(gè)探頭經(jīng)過嚴(yán)格測試,DC3.0V~5.5V供電。
5.04.2 實(shí)驗(yàn)?zāi)康?br /> 通過我們選用的是防水型DS18B20傳感器,實(shí)驗(yàn)時(shí)把它置于盛裝熱水(冷水)水杯中,測量水溫。我們?cè)O(shè)計(jì)好的程序把測量結(jié)果輸出打印至計(jì)算機(jī)顯示。觀察水溫的變化和傳感器的靈敏度是否符合要求。
5.04.3 硬件設(shè)計(jì)
選用大黃蜂實(shí)驗(yàn)板,把防水型DS18B20通過PWM端子連接到實(shí)驗(yàn)板上,通過程序設(shè)計(jì)把采集到的水溫打印輸出到計(jì)算機(jī)顯示。硬件設(shè)計(jì)見圖5.04.1 防水型DC18B20連線圖。
圖5.04.1  防水型DC18B20連線圖
?





5.04.4 軟件設(shè)計(jì)
5.04.4.1 軟件設(shè)計(jì)說明
   防水型DS18B20是采購的成品,直接和大黃蜂實(shí)驗(yàn)板連接好后可以進(jìn)行程序設(shè)計(jì)了,按照在《外設(shè)篇 10. STM32DS18B20溫度傳感工作原理》中的講解我們就可以很輕松編寫出這篇采集程序,我們還是采用庫函數(shù)的方式進(jìn)行程序設(shè)計(jì)。
在這節(jié)程序設(shè)計(jì)中,用到了外部中斷函數(shù);prinif 重定向打印輸出函數(shù);USART串口通訊函數(shù);定時(shí)器函數(shù)。
5.04.4.2 STM32庫函數(shù)文件


?
   本節(jié)實(shí)驗(yàn)及以后的實(shí)驗(yàn)我們都是用到庫文件,其中stm32f10x_gpio.h頭文件包含了GPIO端口的定義。stm32f10x_rcc.h頭文件包含了系統(tǒng)時(shí)鐘配置函數(shù)以及相關(guān)的外設(shè)時(shí)鐘使能函數(shù),所以我們要把這兩個(gè)頭文件對(duì)應(yīng)的stm32f10x_gpio.c和stm32f10x_rcc.c加到工程中;Misc.c庫函數(shù)主要包含了中斷優(yōu)先級(jí)的設(shè)置,stm32f10x_exti.c庫函數(shù)主要包含了外部中斷設(shè)置參數(shù),tm32f10x_tim.c庫函數(shù)主要包含定時(shí)器設(shè)置,tm32f10x_usart.c庫函數(shù)主要包含串行通訊設(shè)置,這些函數(shù)也要添加到函數(shù)庫中。以上庫文件包含了本次實(shí)驗(yàn)所有要用到的函數(shù)使用功能。
5.04.4.3 自定義頭文件


?
                                 
   我們已經(jīng)創(chuàng)建了兩個(gè)公共的文件,這兩個(gè)文件主要存放我們自定義的公共函數(shù)和全局變量,以方便以后每個(gè)功能模塊之間傳遞參數(shù)。


5.04.4.4 pbdata.h文件里的內(nèi)容是



5.04.5 STM32系統(tǒng)時(shí)鐘配置SystemInit()
我們總在強(qiáng)調(diào),每個(gè)工程都必須在開始時(shí)配置并啟動(dòng)STM32系統(tǒng)時(shí)鐘,這次也不例外。
5.04.6  GPIO引腳時(shí)鐘使能



   本節(jié)實(shí)驗(yàn)用到了PA端口,所以要把PA端口的時(shí)鐘打開;串口1時(shí)鐘源是通過APB2預(yù)分頻器得到的,串口1時(shí)鐘初始化;因?yàn)橐c外部芯片通訊,所以要打開功能復(fù)用時(shí)鐘。
5.04.7  GPIO管腳電平控制函數(shù)
   在主程序中采用while(1)循環(huán)語句,等待外部中斷的到來后,主程序中讀取緩沖區(qū)的溫度值,并就打印輸出到屏幕。



5.04.8  stm32f10x_it.c文件里的內(nèi)容是
在中斷處理stm32f10x_it.c文件里中僅串口1子函數(shù)非空,進(jìn)入中斷處理函數(shù)后,只有串口1有參數(shù)輸出。


?

5.04.9  ds18b20.h文件里的內(nèi)容是
函數(shù)ds18b20.h在這里是為了紅外程序自定義的功能函數(shù),ds18b20.h的內(nèi)容如下:


?

5.04.10  ds18b20.c文件里的內(nèi)容是
我們先詳細(xì)介紹DS18B20時(shí)序圖,然后再按照時(shí)序圖要求編寫程序。
5.04.10.1  DS18B20初始化時(shí)序



?
(1).數(shù)據(jù)線拉到低電平“0”。
(2).延時(shí)480微妙(該時(shí)間的時(shí)間范圍可以從480到960微妙)。
(3).數(shù)據(jù)線拉到高電平“1”。
(4).延時(shí)等待80微妙。如果初始化成功則在15到60微妙時(shí)間內(nèi)產(chǎn)生一個(gè)由DS18B20所返回的低電平“0”.根據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)判斷。
(5).若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(3)步的時(shí)間算起)最少要480微妙。
5.04.10.2  DS18B20讀時(shí)序



(1).將數(shù)據(jù)線拉低“0”。
(2).延時(shí)4微妙。
(3).將數(shù)據(jù)線拉高“1”,釋放總線準(zhǔn)備讀數(shù)據(jù)。
(4).延時(shí)10微妙。
(5).讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。
(6).延時(shí)45微妙。
(7).重復(fù)1~7步驟,直到讀完一個(gè)字節(jié)。




1).數(shù)據(jù)線先置低電平“0”
(2).延時(shí)15微妙。
(3).按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。
(4).延時(shí)60微妙。
(5).將數(shù)據(jù)線拉到高電平。
(6).重復(fù)1~5步驟,直到發(fā)送完整的字節(jié)。
(7).最后將數(shù)據(jù)線拉高。
圖5.04.4  DS18B20寫時(shí)序
自定義函數(shù)ds18b20.c的內(nèi)容如下:






5.04.11  main.c文件里的內(nèi)容是


?

5.04.12 程序下載
在這一章節(jié)中要掌握DS18B20的工作時(shí)序,了解常用的溫度傳感器功能和原理。
請(qǐng)根據(jù)下圖所指向的7個(gè)重點(diǎn)區(qū)域配置。其中(1)號(hào)區(qū)域根據(jù)自己機(jī)器的實(shí)際情況選擇,我的機(jī)器虛擬出來的串口號(hào)是COM3。(2)號(hào)區(qū)域請(qǐng)自己選擇程序代碼所在的文件夾。(7)號(hào)區(qū)域當(dāng)程序下載完后,進(jìn)度條會(huì)到達(dá)最右邊,并且提示一切正常。(4、5、6)號(hào)區(qū)域一定要按照上圖顯示的設(shè)置。當(dāng)都設(shè)置好以后就可以直接點(diǎn)擊(3)號(hào)區(qū)域的開始編程按鈕下傳程序了。


?
本節(jié)實(shí)驗(yàn)的源代碼在光盤中:(LY-STM32 光盤資料\1.課程\2,外設(shè)篇\模塊篇04.防水DS18B20溫度傳感器實(shí)驗(yàn)\程序)
5.04.13 實(shí)驗(yàn)效果圖
把防水溫度計(jì)放入盛溫水的燒杯中,如“圖5.04.13.1 防水DS18B20測試水溫實(shí)驗(yàn)效果圖”,打開眾想科技多功能監(jiān)控軟件,然后打開串口,我們?cè)诮邮諈^(qū)可以觀察到實(shí)測采集到的水溫?cái)?shù)據(jù),水溫大約60攝氏度左右,說明我們防水型DS18B20工作正常,程序編寫的很成功。


[url=]
[/url]

作者: 青云女神    時(shí)間: 2017-8-18 11:31
你好,想問一下,我用的是正點(diǎn)原子的ds18b20的程序,一個(gè)板子用的是STM32F103RBT6的芯片,可以正常都去溫度,可是用stm32f103c8t6的芯片就不能正常讀取,是什么原因?





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1