基于單片機(jī)的汽車水溫表設(shè)計(jì)講解_第1頁
基于單片機(jī)的汽車水溫表設(shè)計(jì)講解_第2頁
基于單片機(jī)的汽車水溫表設(shè)計(jì)講解_第3頁
基于單片機(jī)的汽車水溫表設(shè)計(jì)講解_第4頁
基于單片機(jī)的汽車水溫表設(shè)計(jì)講解_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于單片機(jī)的汽車水溫表設(shè)計(jì)作者張旭 覃慶環(huán)摘要隨著汽車工業(yè)的迅速發(fā)展和人們生活水平及需要的不斷提高,越來越多的汽車走入了 大眾的生活,而在汽車的發(fā)展過程中對汽車水溫表的設(shè)計(jì)和實(shí)現(xiàn)技術(shù)要求又尤為重要本論文是主要介紹基于51單片機(jī)汽車水溫表的設(shè)計(jì)思路、流程及應(yīng)用;論文結(jié)合并參 考各類有關(guān)汽車水溫表書籍,主要闡述汽車水溫表的總體原理設(shè)計(jì)、 硬件設(shè)計(jì)與軟件設(shè)計(jì), 以及水溫表顯示調(diào)試方法。關(guān)鍵詞:單片機(jī),汽車QS18B20,水溫表;I1前言 -0-2汽車水溫表簡介 -1-2.1汽車水溫表概述 -22.2 常見汽車水溫表的工作原理 -2-3水溫表總體原理及設(shè)計(jì) -4-3.1硬件的總體設(shè)計(jì) -43.1.1

2、硬件系統(tǒng)子模塊 -4-3.2軟件的總體設(shè)計(jì) -4-4水溫表的硬件設(shè)計(jì) -5-4.1單片機(jī)最小系統(tǒng)電路 -54.2 數(shù)碼管顯示電路-54.3 溫度采集電路-6-5水溫表的軟件設(shè)計(jì) -105.1 主流程圖-115.2 讀取溫度DS18B20模塊的流程 -11-6水溫表的調(diào)試 -136.1硬件電路調(diào)試 -136.2 軟件調(diào)試-13-7總結(jié)-14-8參考文獻(xiàn)-15-附錄一水溫表程序、八冃U言從第一輛汽車誕生到現(xiàn)在已有一百多年的歷史,隨著社會和科學(xué)技術(shù)的發(fā)展,如今汽車已經(jīng)走進(jìn)了尋常百姓家,成為人們必備的交通工具之一;而且我國經(jīng)濟(jì)發(fā)展水平與汽車 產(chǎn)業(yè)發(fā)展水平有著密切的關(guān)系,汽車產(chǎn)業(yè)是衡量我國經(jīng)濟(jì)發(fā)展水平的

3、重要指標(biāo),汽車工業(yè) 在我國已經(jīng)占著舉足輕重的地位。隨著汽車電子技術(shù)和計(jì)算機(jī)控制技術(shù)的發(fā)展,各類汽車 公司廠商都運(yùn)用大量的電子技術(shù)和計(jì)算機(jī)技術(shù),從而改善汽車經(jīng)濟(jì)性、安全性和舒適性, 并且提高了汽車技術(shù)性能。然而汽車水溫表測量準(zhǔn)確、顯示正確,對汽車發(fā)動機(jī)來說尤為 重要。2汽車水溫表簡介2.1汽車水溫表概述汽車水溫表是用來指示汽車發(fā)動機(jī)冷卻水的工作溫度,并向司乘人員顯示發(fā)動機(jī)工作 水溫是否工作正常。它由裝在氣缸蓋上的溫度傳感器和轉(zhuǎn)在儀表盤上的水溫表組成。2.2常見汽車水溫表的工作原理常見的汽車水溫表有電熱式、電磁式和蒸氣壓力是三類,它們與不同的感應(yīng)器相配合,進(jìn)行水溫測定。2.2.1電熱式水溫表工作原

4、理當(dāng)汽車發(fā)動機(jī)水溫升高使雙金屬片向離開固定觸點(diǎn)的方向彎曲,使觸點(diǎn)彼此接觸的壓 力減弱;通過壓力的減弱增加打開的時間,使通過加熱線圈的電流平均值減小,水溫表指 針指向高溫。水溫降低時,觸電壓力增大,平均電流增大,水溫表的雙金屬片彎曲怎大, 指針指向低溫。如圖2-1所示;圖2- 1電熱式水溫表2.2.2電磁式水溫表工作原理電磁式水溫表內(nèi)有兩個鐵芯式線圈,在線圈交叉位置上,裝有小磁片、配重和指針等 組成的轉(zhuǎn)子,傳感器為溫度系數(shù)熱敏電阻。低溫時,傳感器熱敏電阻阻值為1000Q,此時, 線圈L2和大電阻串聯(lián),通過的電流,大部分流入L1,在綜合電場是指針停在刻度 32C處。 當(dāng)溫度升高時,傳感器受溫度的影

5、響,熱敏電阻阻值變?。s為150Q), L2所通過電流,L1相對減少,磁場的綜合作用是指針向高溫 100C刻度移動。如圖2-2所示;圖2-2電磁式水溫表3.1.1蒸氣壓力式水溫表工作原理當(dāng)水溫表的感溫包受熱時,充灌在其中的介質(zhì)(氯乙烷或乙醚等)受熱蒸發(fā)(乙醚液體 在大氣壓力下的沸點(diǎn)是34C),蒸氣壓力通過毛細(xì)管進(jìn)入彈簧管, 壓力迫使彈簧向外擴(kuò)張, 彈簧管的自由端與連桿的一頭銷釘連接,連桿的另一端與扇形齒輪固定。傳動機(jī)構(gòu)中,扇 形齒輪與中心齒輪嚙合傳動,并使裝在中心齒輪軸上的指針在刻度盤上指出被測介質(zhì)溫度 值。感溫包內(nèi)液體體積受感溫包與彈簧管相對位置影響。如圖2-3所示;圖2-3蒸氣壓力式水溫表

6、3水溫表總體原理及設(shè)計(jì)3.1硬件總體設(shè)計(jì)設(shè)計(jì)并制作一個基于單片機(jī)的汽車水溫表的電路,其結(jié)構(gòu)框圖如圖2-1:圖3- 1系統(tǒng)結(jié)構(gòu)框圖3.1.1硬件系統(tǒng)子模塊(1) 單片機(jī)最小系統(tǒng)電路部分(2) 溫度采集電路部分(3) 數(shù)碼管溫度顯示電路部分3.2軟件總體設(shè)計(jì)良好的設(shè)計(jì)方案可以減少軟件設(shè)計(jì)的工作量,提高軟件的通用性,擴(kuò)展性和可讀性。本系統(tǒng)的設(shè)計(jì)方案和步驟如下:(1) 根據(jù)需求按照系統(tǒng)的功能要求,逐級劃分模塊。(2) 明確各模塊之間的數(shù)據(jù)流傳遞關(guān)系,力求數(shù)據(jù)傳遞少,以增強(qiáng)各模塊的獨(dú)立性,便于軟件編制和調(diào)試。(3) 確定軟件開發(fā)環(huán)境,選擇設(shè)計(jì)語言,完成模塊功能設(shè)計(jì),并分別調(diào)試通過。(4) 按照開發(fā)式軟件

7、設(shè)計(jì)結(jié)構(gòu),將各模塊有機(jī)的結(jié)合起來,即成一個較完善的系統(tǒng)。 首先接通電源系統(tǒng)開始工作,系統(tǒng)開始工作后,通過溫度傳感器開始實(shí)時檢測,調(diào)用顯示 子程序顯示檢測結(jié)果。圖4 1單片機(jī)最小系統(tǒng)圖鍵兩端并聯(lián)4水溫表硬件設(shè)4.1單片機(jī)最小系統(tǒng)電路因?yàn)?9S52單片機(jī)內(nèi)部自帶8K的ROM和256字節(jié)的RAM,因此不必構(gòu)建單片機(jī)系統(tǒng)的擴(kuò)展電路。如圖3- 1,單片機(jī)最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的一點(diǎn)是單片 機(jī)的31腳EA/VP必須接高電平,否則系統(tǒng)將不能運(yùn)行。因?yàn)樵撃_不接時為低電平,單片機(jī) 將直接讀取外部程序存儲器,而系統(tǒng)沒有外部程序存儲器,所以EA/VP必須接VCC。在按393837363534333

8、22122232425262728101130294.2數(shù)碼管顯示電路(1) 數(shù)碼管顯示說明各個數(shù)碼管的段碼都是單片機(jī)的數(shù)據(jù)口輸出,即各個數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動態(tài)顯示的方式,即先只讓最低位顯示0(含點(diǎn)),經(jīng)過一段延時,再只讓次低位顯示1,如此類推。由視覺暫留,只要我們的延時時間足夠短, 就能夠使得數(shù)碼的顯示看起來非常的穩(wěn)定清楚,過程如表3-1。表4-1數(shù)碼管編碼表段碼位碼顯示器狀態(tài)08H01H0abH02H 112H04H2匚22H08H 3 a1H10H424H 120H504H40H 6 aaH80H7本論文中使用了 3個數(shù)碼管,其中前兩位使用動態(tài)

9、掃描顯示實(shí)測溫度,在設(shè)置加熱溫度 的時候,兩個數(shù)碼管是閃爍,以提示目前處在溫度設(shè)置狀態(tài)。第三位數(shù)碼管靜態(tài)顯示符號4.3溫度采集電路(1)DS18B20 介紹Dallas最新單線數(shù)字溫度傳感器DS18B20簡介新的“一線器件”體積更小、適用電壓更 寬、更經(jīng)濟(jì)。Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持“一線總 線”接口的溫度傳感器。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò), 為測量系統(tǒng)的構(gòu)建引入全新概念。DS18B20、DS1822 “一線總線”數(shù)字化溫度傳感器同DS18B20一樣,DS18B20也支持“一線總線”接口,測量溫度范圍為 -55C +12

10、5C,在-10C +85C范圍內(nèi),精度為土 0.5C。DS1822的精度較差為土 2C?,F(xiàn)場溫度直接以“一線總線” 的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。其 DS18B20的管腳配置和封裝結(jié)構(gòu)如圖3-4 所示。(BOTTOM VIEW)TO-92(DS18B20)圖 4-2 DS18B20 封裝引腳定義: DQ為數(shù)字信號輸入/輸出端; GND為電源地; VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。(2)DS18B20的單線(1 wire bus)系統(tǒng)單線總線結(jié)構(gòu)是DS18B20的突出特點(diǎn),也是理解和編程的難點(diǎn)。從兩個角度來理解單 線總線:第一,單線總線只定義了一個信號線,而且D

11、S18B20智能程度較低(這點(diǎn)可以與微控制器和SPI器件間的通信做一個比較),所以DS18B20和處理器之間的通信必然要通過 嚴(yán)格的時序控制來完成。第二,DS18B20的輸出口是漏級開路輸出,這里給出一個微控制 器和DS18B20連接原理圖。這種設(shè)計(jì)使總線上的器件在合適的時間驅(qū)動它。顯然,總線上 的器件與(wired AND )關(guān)系。這就決定:(1)微控制器不能單方面控制總線狀態(tài)。之 所以提出這點(diǎn),是因?yàn)橄喈?dāng)多的文獻(xiàn)資料上認(rèn)為,微控制器在讀取總線上數(shù)據(jù)之前的I/O 口的置1操作是為了給DS18B20 一個發(fā)送數(shù)據(jù)的信號。這是一個錯誤的觀點(diǎn)。如果當(dāng)前 DS18b20發(fā)送0,即使微控制器I/O 口

12、置1,總線狀態(tài)還是0;置1操作是為了是I/O 口截止(cut off),以確保微控制器正確讀取數(shù)據(jù)。(2)除了 DS18B20發(fā)送0的時間段,其他時間其輸 出口自動截止。自動截止是為確保:1時,在總線操作的間隙總線處于空閑狀態(tài),即高態(tài)。 2時,確保微控制器在寫1的時候DS18B20可以正確讀入。由于DS18B20采用的是1 Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸, 而對AT89S52單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法 來模擬單總線的協(xié)議時序來完成對 DS18B20芯片的訪問。 DS18B20的復(fù)位時序,如圖3-5VDDGND*主機(jī)發(fā)出良位脈沖最大

13、值960ue垢s主機(jī)接收所茜腿短.時間妾DS18B20 發(fā)出討 應(yīng)答脈沖祕DS1SB2Q的豆位時ITISP圖4-3DS18B20的復(fù)位時序圖 DS18B20的讀時序?qū)τ贒S18B20的讀時序分為讀0時序和讀1時序兩個過程。對于DS18B2 0的讀時隙是從主機(jī)把單總線拉低之后,在 15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要 60us才能 完成。DS18B20的讀時序圖如圖3-6所示。圖4-4 DS18B20的讀時序 DS18B20的寫時序?qū)τ贒S18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。對于DS18B20寫0時序和寫

14、1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣10總線上的“ 0”電平,當(dāng)要寫1 時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。如圖3-7所示。圖4-5 DS18B20的寫時序圖(3)DS18B20的供電方式在圖3-8中示出了 DS18B20的寄生電源電路。當(dāng)DQ或VDD引腳為高電平時,這個電路 便“取”的電源。寄生電路的優(yōu)點(diǎn)是雙重的,遠(yuǎn)程溫度控制監(jiān)測無需本地電源,缺少正常 電源條件下也可以讀ROM。為了使DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時, DQ線上必須提供足夠的功率。有兩種方法確保 DS

15、18B20在其有效變換期內(nèi)得到足夠的電源電流。第一種方法是發(fā) 生溫度變換時,在 DQ線上提供一強(qiáng)的上拉,這期間單總線上不能有其它的動作發(fā)生。如 圖3-8所示,通過使用一個 MOSFET把DQ線直接接到電源可實(shí)現(xiàn)這一點(diǎn),這時DS18B20 工作在寄生電源工作方式,在該方式下VDD引腳必須連接到地。Micro-p rivtsior+3+5. 5v單軾線圖4-6DS18B20供電方式1另一種方法是DS18B20工作在外部電源工作方式,如圖 3-9所示。這種方法的優(yōu)點(diǎn) 是在DQ線上不要求強(qiáng)的上拉,總線上主機(jī)不需要連接其它的外圍器件便在溫度變換期間 使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線

16、上傳送。此外,在單總線上 可以并聯(lián)多個DS18B20,而且如果它們?nèi)坎捎猛獠侩娫垂ぷ鞣绞?,那么通過發(fā)出相應(yīng)的 命令便可以同時完成溫度變換。外接電渾Micro-pracesKOiCjND .LX) v !)圖4-7 DS18B20供電方式 2+34與-5v(4)DS18B20設(shè)計(jì)中應(yīng)注意的幾個問題DS18B20具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用接口線少等優(yōu)點(diǎn),但在實(shí) 際應(yīng)用中也應(yīng)注意以下幾方面的問題:較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由 于DS18B20與微處理器間采用串行數(shù)據(jù)傳送。因此, 在對DS18B20進(jìn)行讀寫編程時,必 須嚴(yán)格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在

17、DS18B20有關(guān)資料中均未提及IWire 上所掛DS18B20數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個DS18B20,在實(shí)際應(yīng)用中并非如此。當(dāng)IWire上所掛DS18B20超過8個時,就需要考慮微處理器的總線驅(qū)動問題,這一點(diǎn) 在進(jìn)行多點(diǎn)測溫系統(tǒng)設(shè)計(jì)時要加以注意。連接DS18B2 0的總線電纜是有長度限制的。實(shí)際應(yīng)用中,測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接 VCC 和地線,屏蔽層在源端單點(diǎn)接地。本文以廣泛應(yīng)用的數(shù)字溫度傳感器 DS18B20為例,說明了 IWire總線的操作過程和基本 原理。事實(shí)上,基于IWire總線的產(chǎn)品還有很多種,如IWire總線的E2PROM

18、、實(shí)時時鐘、 電子標(biāo)簽等。他們都具有節(jié)省I/O資源、結(jié)構(gòu)簡單、開發(fā)快捷、成本低廉、便于總線擴(kuò)展等 優(yōu)點(diǎn),因此有廣闊的應(yīng)用空間,具有較大的推廣價值。本設(shè)計(jì)將溫度傳感器 DS18B20與單片機(jī)TXD引腳相連,讀取溫度傳感器的數(shù)值。DS18B20與單片機(jī)連接圖如圖所示4-8所示。圖4-8 DS18B20與單片機(jī)連接圖5水溫表的軟件設(shè)計(jì)本系統(tǒng)采用的是循環(huán)查詢方式,來顯示和控制溫度的。主要包括四段程序的設(shè)計(jì):DS18B20讀溫度程序,數(shù)碼管的驅(qū)動程序,鍵盤掃描程序,以及抱經(jīng)處理程序。51主程序流程圖開始1f初始化1T讀 D18B201溫度轉(zhuǎn)換顯示溫度返回圖5-1主程序流程圖5.2讀取溫度DS18B20模

19、塊的流程圖由于DS18B20采用的是一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對 AT89S52單片機(jī)來說, 硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來 完成對DS18B20芯片的訪問。DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念。因此系統(tǒng)對DS18B2 0的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化 DS18B20 (發(fā)復(fù)位脈沖)-發(fā)ROM功能命 令一發(fā)存儲器操作命令一處理數(shù)據(jù) DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方 便、占用口線少等優(yōu)點(diǎn),DS18B20必須首先調(diào)用啟動溫度轉(zhuǎn)換函數(shù),根據(jù)數(shù)據(jù)手冊上對應(yīng)轉(zhuǎn)換時間來超作,如 為12位轉(zhuǎn)換,則

20、應(yīng)該是最大750mS,另外在對DS18B20超作時,時序要求非常嚴(yán)格,因此 最好禁止系統(tǒng)中斷。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。 DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信 號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機(jī)作為主設(shè)備,而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行 寫命令后,主機(jī)需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20的讀時序:(1)對于DS18B20的讀時序分為讀0時序和讀1時序兩個過程。(2)對于DS1

21、8B20的讀時隙是從主機(jī)把單總線拉低之后, 在15秒之內(nèi)就得釋放單總線, 以讓DS18B2 0把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個讀時序過程,至少需要 60us才 能完成。DS18B20的寫時序:(1)對于DS18B20的寫時序仍然分為寫0時序和寫1時序兩個過程。(2) 對于DS18B20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低 至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣10總線上的“ 0”電平,當(dāng) 要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單總線。系統(tǒng)程序設(shè)計(jì)主要包括三部分:讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、顯示溫度

22、子程序圖5-2讀取溫度DS18B20模塊的流程圖 程序代碼為:un sig ned int ReadTemperature(void)un sig ned char a=0; un sig ned int b=0;un sig ned int t=0;In it_DS18B20();Write On eChar(OxCC); /跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換DelayMs(10);In it_DS18B20();Write On eChar(0xCC); /跳過讀序號列號的操作Write On eChar(0xBE); /讀取溫度寄存器等a=Rea

23、d On eChar(); 低位b=Read On eChar(); / 高位 b /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義#define DataPort P0 /定義數(shù)據(jù)端口 程序中遇到 DataPort則用P0替換sbit LATCH仁P2八2;/定義鎖存使能端口 段鎖存sbit LATCH2=P2八3;/位鎖存sbit DQ=P1A3;bit ReadTempFlag;/定義讀時間標(biāo)志unsignedcharcodedofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; 顯示段碼值 09

24、unsigned char code dofly_WeiMa=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/分別對應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼unsigned char TempData8; /存儲顯示值的全局變量/*uS延時函數(shù),含有輸入?yún)?shù) unsigned char t無返回值unsigned char是定義無符號字符變量,其值的范圍是0255這里使用晶振12M,精確延時請使用匯編,大致延時長度如下T=tx2+5 uS*/void DelayUs2x(unsigned char t)while(-t);/*mS延時函數(shù),含有輸入?yún)?shù)unsigned ch

25、ar t無返回值unsigned char是定義無符號字符變量,其值的范圍是0255這里使用晶振12M,精確延時請使用匯編*/void DelayMs(unsigned char t)while(t-)大致延時1mSDelayUs2x(245);DelayUs2x(245);/*18b20初始化*/bit lnit_DS18B20(void)bit dat=0;DQ = 1;DQ 復(fù)位DelayUs2x(5);II 稍做延時DQ = 0;II單片機(jī)將DQ拉低DelayUs2x(200); /精確延時 大于 480us 小于 960usDelayUs2x(200);DQ = 1;II拉高總線De

26、layUs2x(50); II1560us 后 接收 60-240us的存在脈沖dat=DQ;II如果x=0則初始化成功,x=1則初始化失敗DelayUs2x(25); /稍作延時返回return dat;/*讀取一個字節(jié) */ unsigned char ReadOneChar(void) unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; /給脈沖信號dat=1;DQ = 1; /給脈沖信號if(DQ)dat|=0x80;DelayUs2x(25);return(dat);/*寫入一個字節(jié)*/void WriteOn

27、eChar(unsigned char dat) unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;DelayUs2x(25);DQ = 1;dat=1;DelayUs2x(25);/*讀取溫度*/unsigned int ReadTemperature(void) unsigned char a=0;unsigned int b=0;unsigned int t=0;lnit_DS18B20();WriteOneChar(OxCC); /跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉(zhuǎn)換DelayMs(1

28、0);Init_DS18B20();前兩個就是溫度WriteOneChar(OxCC); /跳過讀序號列號的操作WriteOneChar(OxBE); /讀取溫度寄存器等(共可讀 9個寄存器)a=ReadOneChar();/ 低位b=ReadOneChar();/ 高位b=8;t=a+b;return(t);void Display(unsigned char FirstBit,unsigned char Num)數(shù)碼管顯示函數(shù)void lnit_Timer0(void); 定時器初始化/*主函數(shù)*/void main (void)unsigned int TempH,TempL,temp;Init_Timer0();while (1)/ 主循環(huán)if(ReadTempFlag=1)ReadTempFlag=0;temp=ReadTemperature();沖嫌甫卑II J08X0l0k%(00k%Hdiuai)e|A|uena-A|jop=ee)eadiiiaiW+ II J0k/(OOk%Hdiuai)e|A|uena_A|jop=餌ECJdiue丄 iO=ke)eadujai 圜感 /(O=OOk/(OOOk%Hdmai)(o=O

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論