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

下載本文檔

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

文檔簡(jiǎn)介

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

2、件的總體設(shè)計(jì) . -4- 3.1.1硬件系統(tǒng)子模塊 . -4-3.2軟件的總體設(shè)計(jì) . -4-4 水溫表的硬件設(shè)計(jì) . -5-4.1單片機(jī)最小系統(tǒng)電路 . -5- 4.2數(shù)碼管顯示電路. -5- 4.3 溫度采集電路 . -6-5 水溫表的軟件設(shè)計(jì) . -10- 5.1主流程圖 . -11- 5.2 讀取溫度DS18B20模塊的流程 . -11-6 水溫表的調(diào)試 . -13- 6.1 硬件電路調(diào)試 . -13- 6.2 軟件調(diào)試 . -13-7 總結(jié) . -14-8 參考文獻(xiàn) . -15-附錄一 水溫表程序前 言從第一輛汽車(chē)誕生到現(xiàn)在已有一百多年的歷史,隨著社會(huì)和科學(xué)技術(shù)的發(fā)展,如今汽車(chē)已經(jīng)走

3、進(jìn)了尋常百姓家,成為人們必備的交通工具之一;而且我國(guó)經(jīng)濟(jì)發(fā)展水平與汽車(chē)產(chǎn)業(yè)發(fā)展水平有著密切的關(guān)系,汽車(chē)產(chǎn)業(yè)是衡量我國(guó)經(jīng)濟(jì)發(fā)展水平的重要指標(biāo),汽車(chē)工業(yè)在我國(guó)已經(jīng)占著舉足輕重的地位。隨著汽車(chē)電子技術(shù)和計(jì)算機(jī)控制技術(shù)的發(fā)展,各類(lèi)汽車(chē)公司廠商都運(yùn)用大量的電子技術(shù)和計(jì)算機(jī)技術(shù),從而改善汽車(chē)經(jīng)濟(jì)性、安全性和舒適性,并且提高了汽車(chē)技術(shù)性能。然而汽車(chē)水溫表測(cè)量準(zhǔn)確、顯示正確,對(duì)汽車(chē)發(fā)動(dòng)機(jī)來(lái)說(shuō)尤為重要。2 汽車(chē)水溫表簡(jiǎn)介2.1汽車(chē)水溫表概述汽車(chē)水溫表是用來(lái)指示汽車(chē)發(fā)動(dòng)機(jī)冷卻水的工作溫度,并向司乘人員顯示發(fā)動(dòng)機(jī)工作水溫是否工作正常。它由裝在氣缸蓋上的溫度傳感器和轉(zhuǎn)在儀表盤(pán)上的水溫表組成。2.2常見(jiàn)汽車(chē)水溫表的工作

4、原理 常見(jiàn)的汽車(chē)水溫表有電熱式、電磁式和蒸氣壓力是三類(lèi),它們與不同的感應(yīng)器相配合,進(jìn)行水溫測(cè)定。2.2.1電熱式水溫表工作原理 當(dāng)汽車(chē)發(fā)動(dòng)機(jī)水溫升高使雙金屬片向離開(kāi)固定觸點(diǎn)的方向彎曲,使觸點(diǎn)彼此接觸的壓力減弱;通過(guò)壓力的減弱增加打開(kāi)的時(shí)間,使通過(guò)加熱線圈的電流平均值減小,水溫表指針指向高溫。水溫降低時(shí),觸電壓力增大,平均電流增大,水溫表的雙金屬片彎曲怎大,指針指向低溫。如圖2-1所示;圖 21 電熱式水溫表2.2.2電磁式水溫表工作原理電磁式水溫表內(nèi)有兩個(gè)鐵芯式線圈,在線圈交叉位置上,裝有小磁片、配重和指針等組成的轉(zhuǎn)子,傳感器為溫度系數(shù)熱敏電阻。低溫時(shí),傳感器熱敏電阻阻值為1000,此時(shí),線圈

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

6、值。感溫包內(nèi)液體體積受感溫包與彈簧管相對(duì)位置影響。如圖2-3所示;圖 23 蒸氣壓力式水溫表3水溫表總體原理及設(shè)計(jì)3.1硬件總體設(shè)計(jì)設(shè)計(jì)并制作一個(gè)基于單片機(jī)的汽車(chē)水溫表的電路,其結(jié)構(gòu)框圖如圖2-1:?jiǎn)纹瑱C(jī)AT89S51數(shù)碼管顯示溫度傳感器DS18B20圖 31 系統(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)的功能要求,逐級(jí)劃分模塊。(2) 明確各模塊之間的數(shù)據(jù)流傳遞關(guān)系,力求數(shù)

7、據(jù)傳遞少,以增強(qiáng)各模塊的獨(dú)立性,便于軟件編制和調(diào)試。(3) 確定軟件開(kāi)發(fā)環(huán)境,選擇設(shè)計(jì)語(yǔ)言,完成模塊功能設(shè)計(jì),并分別調(diào)試通過(guò)。(4) 按照開(kāi)發(fā)式軟件設(shè)計(jì)結(jié)構(gòu),將各模塊有機(jī)的結(jié)合起來(lái),即成一個(gè)較完善的系統(tǒng)。首先接通電源系統(tǒng)開(kāi)始工作,系統(tǒng)開(kāi)始工作后,通過(guò)溫度傳感器開(kāi)始實(shí)時(shí)檢測(cè),調(diào)用顯示子程序顯示檢測(cè)結(jié)果。4 水溫表硬件設(shè)4.1單片機(jī)最小系統(tǒng)電路因?yàn)?9S52單片機(jī)內(nèi)部自帶8K的ROM和256字節(jié)的RAM,因此不必構(gòu)建單片機(jī)系統(tǒng)的擴(kuò)展電路。如圖31,單片機(jī)最小系統(tǒng)有復(fù)位電路和振蕩器電路。值得注意的一點(diǎn)是單片機(jī)的31腳必須接高電平,否則系統(tǒng)將不能運(yùn)行。因?yàn)樵撃_不接時(shí)為低電平,單片機(jī)將直接讀取外部程序存

8、儲(chǔ)器,而系統(tǒng)沒(méi)有外部程序存儲(chǔ)器,所以必須接VCC。在按鍵兩端并聯(lián)一個(gè)電解電容,濾除交流干擾,增加系統(tǒng)抗干擾能力。圖41 單片機(jī)最小系統(tǒng)圖4.2 數(shù)碼管顯示電路(1)數(shù)碼管顯示說(shuō)明各個(gè)數(shù)碼管的段碼都是單片機(jī)的數(shù)據(jù)口輸出,即各個(gè)數(shù)碼管輸入的段碼都是一樣的,為了使其分別顯示不同的數(shù)字,可采用動(dòng)態(tài)顯示的方式,即先只讓最低位顯示0(含點(diǎn)),經(jīng)過(guò)一段延時(shí),再只讓次低位顯示1,如此類(lèi)推。由視覺(jué)暫留,只要我們的延時(shí)時(shí)間足夠短,就能夠使得數(shù)碼的顯示看起來(lái)非常的穩(wěn)定清楚,過(guò)程如表3-1。表4-1 數(shù)碼管編碼表段碼位碼顯示器狀態(tài)08H01H0abH02H112H04H222H08H3a1H10H424H20H504

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

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

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

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

13、DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。DS18B20的讀時(shí)序圖如圖3-6所示。圖4-4 DS18B20的讀時(shí)序 DS18B20的寫(xiě)時(shí)序?qū)τ贒S18B20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。對(duì)于DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之

14、后,在15us之內(nèi)就得釋放單總線。如圖3-7所示。圖4-5 DS18B20的寫(xiě)時(shí)序圖(3)DS18B20的供電方式在圖3-8中示出了DS18B20的寄生電源電路。當(dāng)DQ或VDD引腳為高電平時(shí),這個(gè)電路便“取”的電源。寄生電路的優(yōu)點(diǎn)是雙重的,遠(yuǎn)程溫度控制監(jiān)測(cè)無(wú)需本地電源,缺少正常電源條件下也可以讀ROM。為了使DS18B20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時(shí),DQ線上必須提供足夠的功率。有兩種方法確保 DS18B20 在其有效變換期內(nèi)得到足夠的電源電流。第一種方法是發(fā)生溫度變換時(shí),在 DQ 線上提供一強(qiáng)的上拉,這期間單總線上不能有其它的動(dòng)作發(fā)生。如圖3-8 所示,通過(guò)使用一個(gè) MOSFET

15、把 DQ 線直接接到電源可實(shí)現(xiàn)這一點(diǎn),這時(shí)DS18B20 工作在寄生電源工作方式,在該方式下 VDD 引腳必須連接到地。 圖4-6 DS18B20供電方式1另一種方法是 DS18B20 工作在外部電源工作方式,如圖 3-9 所示。這種方法的優(yōu)點(diǎn)是在 DQ 線上不要求強(qiáng)的上拉,總線上主機(jī)不需要連接其它的外圍器件便在溫度變換期間使總線保持高電平,這樣也允許在變換期間其它數(shù)據(jù)在單總線上傳送。此外,在單總線上可以并聯(lián)多個(gè) DS18B20,而且如果它們?nèi)坎捎猛獠侩娫垂ぷ鞣绞?,那么通過(guò)發(fā)出相應(yīng)的命令便可以同時(shí)完成溫度變換。 圖4-7 DS18B20供電方式2(4)DS18B20設(shè)計(jì)中應(yīng)注意的幾個(gè)問(wèn)題DS

16、18B20具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用接口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題:較小的硬件開(kāi)銷(xiāo)需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20 與微處理器間采用串行數(shù)據(jù)傳送。因此, 在對(duì)DS18B20 進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在DS18B20 有關(guān)資料中均未提及1Wire上所掛DS18B20數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中并非如此。當(dāng)1Wire上所掛DS18B20超過(guò)8個(gè)時(shí),就需要考慮微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。連接DS18B20的總線電纜是有長(zhǎng)度限制的。

17、實(shí)際應(yīng)用中,測(cè)溫電纜線建議采用屏蔽4芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC 和地線,屏蔽層在源端單點(diǎn)接地。本文以廣泛應(yīng)用的數(shù)字溫度傳感器DS18B20為例,說(shuō)明了1Wire總線的操作過(guò)程和基本原理。事實(shí)上,基于1Wire總線的產(chǎn)品還有很多種,如1Wire總線的E2PROM、實(shí)時(shí)時(shí)鐘、電子標(biāo)簽等。他們都具有節(jié)省I/O資源、結(jié)構(gòu)簡(jiǎn)單、開(kāi)發(fā)快捷、成本低廉、便于總線擴(kuò)展等優(yōu)點(diǎn),因此有廣闊的應(yīng)用空間,具有較大的推廣價(jià)值。本設(shè)計(jì)將溫度傳感器DS18B20與單片機(jī)TXD引腳相連,讀取溫度傳感器的數(shù)值。DS18B20與單片機(jī)連接圖如圖所示4-8所示。圖4-8 DS18B20與單片機(jī)連接圖5 水溫表

18、的軟件設(shè)計(jì)本系統(tǒng)采用的是循環(huán)查詢(xún)方式,來(lái)顯示和控制溫度的。主要包括四段程序的設(shè)計(jì):DS18B20讀溫度程序,數(shù)碼管的驅(qū)動(dòng)程序,鍵盤(pán)掃描程序,以及抱經(jīng)處理程序。5.1主程序流程圖初始化開(kāi)始讀D18B20溫度轉(zhuǎn)換顯示溫度返回圖 5-1 主程序流程圖5.2讀取溫度DS18B20模塊的流程圖由于DS18B20采用的是一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S52單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念。因此系統(tǒng)對(duì)DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為

19、:初始化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)DS18B20雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn), DS18B20必須首先調(diào)用啟動(dòng)溫度轉(zhuǎn)換函數(shù),根據(jù)數(shù)據(jù)手冊(cè)上對(duì)應(yīng)轉(zhuǎn)換時(shí)間來(lái)超作,如為12位轉(zhuǎn)換,則應(yīng)該是最大750mS,另外在對(duì)DS18B20超作時(shí),時(shí)序要求非常嚴(yán)格,因此最好禁止系統(tǒng)中斷。由于DS18B20是在一根I/O線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,而每一次命令和數(shù)據(jù)的

20、傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20的讀時(shí)序:(1)對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。 (2)對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。DS18B20的寫(xiě)時(shí)序:(1)對(duì)于DS18B20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。 (2)對(duì)于DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少6

21、0us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。 系統(tǒng)程序設(shè)計(jì)主要包括三部分:讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、顯示溫度子程序。圖5-2讀取溫度DS18B20模塊的流程圖程序代碼為:unsigned int ReadTemperature(void)unsigned char a=0;unsigned int b=0;unsigned int t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0x44); /

22、 啟動(dòng)溫度轉(zhuǎn)換DelayMs(10);Init_DS18B20();WriteOneChar(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); /讀取溫度寄存器等a=ReadOneChar(); /低位b=ReadOneChar(); /高位b<<=8;t=a+b;return(t); 6 水溫表的系統(tǒng)調(diào)試6.1 硬件電路調(diào)試仔細(xì)檢查所接電路,按照硬件原理圖接線,理論上是能實(shí)現(xiàn)的,如果數(shù)碼管不顯示,則應(yīng)該檢查線路是否正確,或是因?yàn)閱纹瑱C(jī)沒(méi)有工作,還有集電極和發(fā)射極是否接對(duì)。如果只顯示兩個(gè)八,則可能是DS18B20沒(méi)有接正確,檢查上拉電路是否接好。如果能注

23、意這些問(wèn)題,電路基本不會(huì)出錯(cuò)。6.2 軟件調(diào)試如果硬件電路檢查后,沒(méi)有問(wèn)題卻實(shí)現(xiàn)不了設(shè)計(jì)要求,則可能是軟件編程的問(wèn)題,首先應(yīng)檢查初始化程序,然后是讀溫度程序,顯示程序,對(duì)這些分段程序,要注意邏輯順序,調(diào)用關(guān)系,除此之外,還要熟悉各語(yǔ)句的用法,以免出錯(cuò)。還有一個(gè)容易忽略的問(wèn)題就是,源程序生成的代碼是否燒入到單片機(jī)中,如果這一過(guò)程出錯(cuò),那不能實(shí)現(xiàn)設(shè)計(jì)要求也是情理之中的事。硬件與軟件調(diào)試相結(jié)合,仔細(xì)檢查各個(gè)模塊的設(shè)計(jì),舊能順利完成任務(wù),實(shí)現(xiàn)設(shè)計(jì)要求,在調(diào)試過(guò)程中必須認(rèn)真耐心,不能有一點(diǎn)馬虎,否則遺漏一個(gè)小的問(wèn)題就會(huì)導(dǎo)致整個(gè)設(shè)計(jì)的失敗???結(jié) 通過(guò)本次的設(shè)計(jì),使我們不僅對(duì)單片機(jī)這門(mén)課程有了更深刻的認(rèn)識(shí)

24、,懂得了如何運(yùn)用課本知識(shí)結(jié)合實(shí)際來(lái)完成定時(shí)器的顯示和編程方法以及數(shù)碼顯示電路的驅(qū)動(dòng)方法,使我們能夠很快的適應(yīng)現(xiàn)代控制技術(shù)發(fā)展的需求,同時(shí)也提高了我們的思維能力和實(shí)際操作能力,為以后更好的走上工作崗位奠定了堅(jiān)實(shí)的基礎(chǔ)。 另外,這次的設(shè)計(jì)還讓我更進(jìn)一步的認(rèn)識(shí)了關(guān)于AT89S51等芯片的引腳功能以及使用方法,使我學(xué)會(huì)了應(yīng)用不同的芯片來(lái)配合完成整個(gè)設(shè)計(jì)的操作。 在做硬件電路的這段時(shí)間里,從思考設(shè)計(jì)到對(duì)電路的調(diào)試經(jīng)過(guò)了一些困難。同樣在對(duì)軟件進(jìn)行設(shè)計(jì)時(shí),也可為一路坎坷。但是通過(guò)對(duì)軟硬件不斷撞墻,不斷思考解決問(wèn)題的過(guò)程中,我學(xué)會(huì)了很多東西,同時(shí)對(duì)單片機(jī)也有了更深的認(rèn)識(shí)。在做設(shè)計(jì)的時(shí)候,很需要耐心和對(duì)事物的細(xì)

25、心,很多時(shí)候一個(gè)簡(jiǎn)單問(wèn)題的一個(gè)簡(jiǎn)單的疏忽就會(huì)導(dǎo)致整個(gè)電路的不工作,只有不斷的檢查不斷的調(diào)試,才能真正完成一個(gè)設(shè)計(jì)的制作。只有不斷的發(fā)現(xiàn)問(wèn)題解決問(wèn)題,才能從問(wèn)題中改變自己,提升自己對(duì)單片機(jī)的能力。 此設(shè)計(jì)雖然能夠完成溫度的顯示,但功能和精度有待于進(jìn)一步提高。以后可以通過(guò)加入一些算法優(yōu)化控制功能,并通過(guò)液晶顯示屏實(shí)時(shí)顯示溫度,增加、拓展一些功能。 參考文獻(xiàn)l 樂(lè)建波 編著溫度控制系統(tǒng)化學(xué)工業(yè)出版社2 謝自美 編著 電子線路設(shè)計(jì)·實(shí)驗(yàn)·測(cè)試(第二版) 華中科技大學(xué)出版社 20003 陳東光 編著單片微型計(jì)算機(jī)原理及C語(yǔ)言程序設(shè)計(jì)華中科技大學(xué)出版社 2004.44 武慶生 仇梅 編

26、著 單片機(jī)原理與應(yīng)用 電子科技大學(xué)出版社 1998.25 譚浩強(qiáng) 編著C程序設(shè)計(jì).北京:清華大學(xué)出版社1999年6 華中理工大學(xué)電子學(xué)教研室編 電子技術(shù)基礎(chǔ)模擬部分(第四版)高等教育出版社 1999.67 華中理工大學(xué)電子學(xué)教研室編 電子技術(shù)基礎(chǔ)數(shù)字部分(第四版)高等教育出版社 2000.68 王彬 任艷穎 編著Digital IC System Design 西安電子科技大學(xué)出版社 2005.99 趙麗娟 邵欣編著基于單片機(jī)的溫度監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 機(jī)械制造10 趙仁杰 編著 汽車(chē)電器設(shè)備 人民交通出版社 1998.10附錄一:系統(tǒng)源程序#include <reg52.h> /

27、包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義#define DataPort P0 /定義數(shù)據(jù)端口 程序中遇到DataPort 則用P0 替換sbit LATCH1=P22;/定義鎖存使能端口 段鎖存sbit LATCH2=P23;/ 位鎖存sbit DQ=P13;bit ReadTempFlag;/定義讀時(shí)間標(biāo)志unsigned char code dofly_DuanMa10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/ 顯示段碼值09unsigned char code dofly_WeiMa=0xfe,0xfd

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

29、定義無(wú)符號(hào)字符變量,其值的范圍是 0255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編-*/void DelayMs(unsigned char t) while(t-) /大致延時(shí)1mS DelayUs2x(245); DelayUs2x(245); /*- 18b20初始化-*/bit Init_DS18B20(void) bit dat=0; DQ = 1; /DQ復(fù)位 DelayUs2x(5); /稍做延時(shí) DQ = 0; /單片機(jī)將DQ拉低 DelayUs2x(200); /精確延時(shí) 大于 480us 小于960us DelayUs2x(200); DQ = 1; /拉高總線 Delay

30、Us2x(50); /1560us 后 接收60-240us的存在脈沖 dat=DQ; /如果x=0則初始化成功, x=1則初始化失敗 DelayUs2x(25); /稍作延時(shí)返回 return dat;/*- 讀取一個(gè)字節(jié)-*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號(hào) dat>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) dat|=0x80; DelayUs2x(25); return(dat);/*

31、- 寫(xiě)入一個(gè)字節(jié)-*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i>0; 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;Init_DS18B20();WriteOneChar(0xCC);

32、/ 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換DelayMs(10);Init_DS18B20();WriteOneChar(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度a=ReadOneChar(); /低位b=ReadOneChar(); /高位b<<=8;t=a+b;return(t);void Display(unsigned char FirstBit,unsigned char Num);/數(shù)碼管顯示函數(shù)void Init_Timer0(void);/定時(shí)器初始化/*- 主函數(shù)-*/void main (void) unsigned int TempH,TempL,temp;Init_Timer0();while (1) /主循環(huán) if(ReadTempFlag=1) ReadTempFlag=0; temp=ReadTemperature(); if(temp&0x8000) TempData0=0x40;/負(fù)號(hào)標(biāo)志 temp=temp; / 取反加1 temp +=1; el

溫馨提示

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

評(píng)論

0/150

提交評(píng)論