基于51單片機(jī)的家用電熱水器的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁(yè)
基于51單片機(jī)的家用電熱水器的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁(yè)
基于51單片機(jī)的家用電熱水器的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第3頁(yè)
基于51單片機(jī)的家用電熱水器的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第4頁(yè)
基于51單片機(jī)的家用電熱水器的設(shè)計(jì)畢業(yè)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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、 實(shí)實(shí) 驗(yàn)驗(yàn) 設(shè)設(shè) 計(jì)計(jì)題目題目: 基于基于 51 單片機(jī)的家用電熱水器設(shè)計(jì)單片機(jī)的家用電熱水器設(shè)計(jì) 姓姓 名:名: 陳太宇 學(xué)學(xué) 號(hào):號(hào): 201015220233 所在學(xué)院:所在學(xué)院: 信息工程學(xué)院 專(zhuān)業(yè)班級(jí):專(zhuān)業(yè)班級(jí): 電子信息工程 2 班 指導(dǎo)教師:指導(dǎo)教師: 張守興 2013 年 10 月 25 日聲 明本人鄭重聲明:所呈交的畢業(yè)論文(設(shè)計(jì)) ,是本人在指導(dǎo)老師指導(dǎo)下,獨(dú)立進(jìn)行研究工作所取得的成果。盡我所知,除文中已經(jīng)注明引用的內(nèi)容外,實(shí)驗(yàn)設(shè)計(jì)的研究成果不包含任何他人享有著作權(quán)的內(nèi)容。對(duì)本實(shí)驗(yàn)(設(shè)計(jì))所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人簽名:陳太宇

2、 日 期: 2013 年 10 月 25 日摘摘 要要隨著社會(huì)的發(fā)展,人類(lèi)科技的進(jìn)步,各行各業(yè)都在使自己的產(chǎn)品智能化、數(shù)字化,因老式的熱水器使用煤氣或天然氣對(duì)水進(jìn)行燃燒加熱,用手動(dòng)的方式調(diào)節(jié)溫度,不僅不能夠精確的確定使用者需要的水溫,而且還存在一定的危險(xiǎn)性。電熱水器是一種可供浴室、洗手間及廚房使用的家用電器,隨著人們生活質(zhì)量的提高,現(xiàn)代的家用電熱水器已經(jīng)摒棄了以前的做法,而采用一種更加精確、安全的實(shí)施方案。c 語(yǔ)言對(duì)單片機(jī)編程有諸多優(yōu)點(diǎn),例如:便于移植、句法檢查時(shí)錯(cuò)誤少、堅(jiān)固性好、頭文件種類(lèi)諸多,能夠方便快捷使用各種函數(shù)等。本文采用 at 89c 52 單片機(jī)作為控制器,使用 c 語(yǔ)言編寫(xiě)程序

3、,設(shè)計(jì)了一款智能家用電熱水器。使用陣型鍵盤(pán)輸入溫度,溫度可以精確到 0.1 攝氏度,并使用 led 燈顯示,能夠精確提供用戶所需溫度的溫水。采用 ds18b20 采集溫度,使用 led 燈顯示,精確的顯示出采集的水溫。當(dāng)所需溫度高于當(dāng)前采集的水溫時(shí),使用 moc3041 芯片觸發(fā)加熱,當(dāng)所需溫度低于當(dāng)前采集的水溫時(shí),則停止加熱。基本實(shí)現(xiàn)了智能控制功能。關(guān)鍵詞:關(guān)鍵詞:?jiǎn)纹瑱C(jī);c 語(yǔ)言;采集;智能;家用電熱水器 abstractwith the development of social and program of human technology, every trade all trans

4、fer own product into intelligence, digitize, because the water heater of old style uses gas or natural gas to heat water and manually adjust mode conditioning temperature, not only unable to sufficiently accurately recognize the user need of water temperature, but also exist some certain risk. the e

5、lectrical water heater is a kind of home appliances that bathroom, loo and kitchen can use, with raising of quality of human live, the modernistic household electrical water heater has abandonned the past way, but adopts a kind of implementation scheme of more accurate ,safety.c language possess man

6、y merits for programming of singlechip, such as:is easy to ransplant, having little bug when sentence construction review, fastness good, the head document type is so many that expediently quickly using various function etc.the writer adopts an at 89 cs 52 singlechip to be the controller and using c

7、 languages to write programming ,design a style of intelligence household electrical water heater.use array form keyboard input temperature, the temperature can be accuratly recognized to 0.1 , and use led light display it, can accurately provide to the warm water of temperature that user needs.adop

8、t ds18 b20 to collect temperature, use led light display, the accurately displays to collect water temperature.when the temperature needed higher than to collect water temperature at present, use the moc3041 chip lead to heating , when the temperature needed is lower than the collect water temperatu

9、re at present, stop heating.the simply carry out intelligence control function.key words: singlechip; c language; collect; intelligence; household electric water heater目目 錄錄第第 1 章章 緒論緒論11.1 家用電熱水器的現(xiàn)狀.11.2 tx-1c 單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板簡(jiǎn)介.1第第 2 章章 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì)22.1 系統(tǒng)硬件的組成部分.22.2 系統(tǒng)硬件各部分的簡(jiǎn)介.22.3 數(shù)碼管顯示.32.3.1 數(shù)碼管簡(jiǎn)介.32

10、.3.2 數(shù)碼管的實(shí)現(xiàn)方法.42.3.3 鎖存器與數(shù)碼管顯示方法.62.4 鍵盤(pán)輸入設(shè)計(jì).72.4.1 鍵盤(pán)輸入方法.72.4.2 鍵盤(pán)輸入的抖動(dòng)與去抖的方法.82.5 ds18b20 溫度采集.92.5.1 ds18b20 技術(shù)性能與應(yīng)用范圍.92.5.2 ds18b20 的初始化與讀寫(xiě)操作.102.5.3 ds18b20 的指令與格式.122.5.4 ds18b20 寄生電源供電方式.152.5.5 ds18b20 改進(jìn)的寄生電源供電方式.162.5.6 ds18b20 外部電源供電方式.172.5.7 ds18b20 寄生電源供電方式.18第第 3 章章 系統(tǒng)軟件設(shè)計(jì)系統(tǒng)軟件設(shè)計(jì)203.

11、1 鍵盤(pán)輸入的程序.203.2 ds18b20 溫度傳感器設(shè)計(jì).213.3 主函數(shù)的分析.253.4 顯示函數(shù)的分析.263.5 中斷加熱子函數(shù)的分析.33第第 4 章章 功能簡(jiǎn)介功能簡(jiǎn)介354.1 智能熱水器具的功能.35第第 5 章章 總結(jié)總結(jié)38附錄附錄 程序程序41第第 1 章章 緒論緒論 單片機(jī)是一種與我們生活息息相關(guān)的控制器,它存在于許多地方,例如:電子手表、掌上游戲機(jī)、數(shù)碼相機(jī)、錄音筆、電視機(jī)遙控器等等。單片機(jī)主要由中央處理器、內(nèi)存、輸入/輸出設(shè)備組成,它就好像是一臺(tái)小型電腦,它能夠執(zhí)行人們對(duì)它編寫(xiě)的程序,從而發(fā)出各種不同的控制命令,與外部電路結(jié)合后,便可以完成各種各樣的功能。通

12、過(guò)單片機(jī)人們的生活將會(huì)變得更加方便、快捷。1.11.1 家用電熱水器的現(xiàn)狀家用電熱水器的現(xiàn)狀目前市場(chǎng)上熱水器品種主要有電熱水器、太陽(yáng)能熱水器、燃?xì)鉄崴?。我們的生活電熱水器是一種可供浴室、洗手間及廚房使用,按照人們的需要的溫度,提供溫水的家用電器。市場(chǎng)上傳統(tǒng)的機(jī)械式電熱水器控制精度低、可靠性差,甚至存在一定的危險(xiǎn)隱患。隨著社會(huì)的發(fā)展、人們生活質(zhì)量的提高,人們對(duì)電熱水器的要求越來(lái)越趨向于智能化和數(shù)字化,這種老式而簡(jiǎn)單的電熱水器已經(jīng)不能夠滿足人們的需要了。而智能化家用電熱水器正是適應(yīng)現(xiàn)代化智能家用電器趨勢(shì)而出現(xiàn)。它能提供用戶方便快捷的數(shù)字化輸入方式,并且能精確的采集和控制環(huán)境中的水溫,將其提供給用

13、戶,因此備受人們的關(guān)注。1.21.2 tx-1ctx-1c 單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板簡(jiǎn)介單片機(jī)實(shí)驗(yàn)開(kāi)發(fā)板簡(jiǎn)介xt-1c 單片機(jī)開(kāi)發(fā)板是哈爾濱市天祥電子綜合多年開(kāi)發(fā)經(jīng)驗(yàn),在原 tx-1b 基礎(chǔ)上,經(jīng)過(guò)精心設(shè)計(jì)開(kāi)發(fā)出的多功能 51 單片機(jī)開(kāi)發(fā)平臺(tái)。該開(kāi)發(fā)板集常用的單片機(jī)外圍資源、串口和 usb 口兩種調(diào)試下載接口于一身,完全兼容 atmel 公司的 51 單片機(jī),除此之外還有很多特點(diǎn),如:無(wú)法解密、低功耗、高速、高可靠、強(qiáng)抗靜電、強(qiáng)抗干擾等。tx 系列單片機(jī)開(kāi)發(fā)板可完全作為各種 51 單片機(jī)的開(kāi)發(fā)板,用匯編語(yǔ)言或者 c 語(yǔ)言對(duì)其進(jìn)行編程。當(dāng)用 stc 公司的單片機(jī)時(shí),直接用產(chǎn)品套件附帶的串口線將開(kāi)發(fā)板與計(jì)

14、算機(jī)串口相連,按照 stc 單片機(jī)下載操作教程便可以下載程序,而且下載速度比起其他下載工具要快的多。本文將使用 tx-1c 開(kāi)發(fā)板完成數(shù)字化電熱水器的設(shè)計(jì)。第第 2 章章 系統(tǒng)硬件設(shè)計(jì)系統(tǒng)硬件設(shè)計(jì)2.12.1 系統(tǒng)硬件的組成部分系統(tǒng)硬件的組成部分系統(tǒng)設(shè)計(jì)硬件原理結(jié)構(gòu)見(jiàn)圖 2.1 所示。系統(tǒng)以高性價(jià)比的 at89c51 單片機(jī)為核心,由鍵盤(pán)輸入、ds18b20 溫度采集、數(shù)碼管顯示電路、電源時(shí)鐘復(fù)位電路、雙向可控硅驅(qū)動(dòng)電路 moc3041、雙向可控硅 tlc336a 組成加熱器控制電路。 圖圖 2.12.1 系統(tǒng)設(shè)計(jì)硬件原理結(jié)構(gòu)系統(tǒng)設(shè)計(jì)硬件原理結(jié)構(gòu)2.22.2 系統(tǒng)硬件各部分的簡(jiǎn)介系統(tǒng)硬件各部分

15、的簡(jiǎn)介這里 at89c51 為總控制器。單片機(jī)的 p0 口連接 74hc573 鎖存器,這樣可以節(jié)約單片機(jī)端口,即可多次操作 p0 口,使其既能控制數(shù)碼管的片選,又能控制數(shù)碼管的位選,從而節(jié)省的單片機(jī)的外部接口,擴(kuò)展了功能。鍵盤(pán)的輸入由 p3 口完成在第 4 章節(jié)中會(huì)具體介紹如何實(shí)現(xiàn)。時(shí)鐘復(fù)位電路見(jiàn)圖 2.2 所示,ret 連接單片機(jī)的 reset 接口,主要完成單片機(jī)的復(fù)位功能。圖圖 2.22.2 時(shí)鐘復(fù)位電路時(shí)鐘復(fù)位電路溫度采集芯片由 ds18b20 芯片完成,ds18b20 的 2 號(hào)接口接在單片機(jī)的 p22 口,按協(xié)議傳送以兩個(gè)字節(jié)為一組的溫度數(shù)據(jù),第 3 章會(huì)介紹具體實(shí)現(xiàn)方法。加熱模

16、塊見(jiàn)圖 2.3 所示,moc3041 芯片的 2 號(hào)接口連接單片機(jī)的 p22 口。當(dāng)需要加熱時(shí),p22接口送出低電平,即可觸發(fā)加熱器工作。圖圖 2.32.3 加熱模塊加熱模塊2.32.3 數(shù)碼管顯示數(shù)碼管顯示2.3.1 數(shù)碼管簡(jiǎn)介數(shù)碼管簡(jiǎn)介單片機(jī)系統(tǒng)中常用的顯示器有:發(fā)光二極管 led(light emitting diode)顯示器、液晶 cd(liquid crystal display)顯示器、crt 顯示器等。led、lcd 顯示器有兩種顯示結(jié)構(gòu):段顯示(7 段、米字型等)和點(diǎn)陣顯示(58、88 點(diǎn)陣等)。使用 led 顯示器時(shí),要注意區(qū)分這兩種不同的接法。為了顯示數(shù)字或字符,必須對(duì)數(shù)

17、字或字符進(jìn)行編碼。七段數(shù)碼管加上一個(gè)小數(shù)點(diǎn),共計(jì) 8 段。因此為 led 顯示器提供的編碼正好是一個(gè)字節(jié)。本設(shè)計(jì)采用的 tx-c1 實(shí)驗(yàn)板是采用共陰 led 顯示器,根據(jù)電路連接圖顯示十六進(jìn)制數(shù)的編碼見(jiàn)表 2.1所示。表表 2.12.1 十六進(jìn)制數(shù)的編碼十六進(jìn)制數(shù)的編碼十六進(jìn)制編碼數(shù)碼管顯數(shù)值十六進(jìn)制編碼數(shù)碼管顯數(shù)值十六進(jìn)制編碼數(shù)碼管顯數(shù)值0 x3f00 x7d60 x39c0 x0610 x0770 x5ed0 x5b20 x7f80 x79e0 x4f30 x6f90 x71f0 x6640 x77a0 x00無(wú)顯示0 x6d50 x7cb2.3.2 數(shù)碼管的實(shí)現(xiàn)方法數(shù)碼管的實(shí)現(xiàn)方法數(shù)碼管

18、的顯示由 p0 口完成控制。有兩點(diǎn)需要注意,第一點(diǎn)是要哪一個(gè)數(shù)碼管亮,第二點(diǎn)是亮的數(shù)碼管顯示什么數(shù)字。所以數(shù)碼管有位選和段選之分,位選在程序中用 wei 表示,單片機(jī)上是 p27 端口,即對(duì)位選操作時(shí)使 p27 呈現(xiàn)高電平,這時(shí) p0 的八個(gè)端口對(duì)數(shù)碼管的操作決定了那幾個(gè)數(shù)碼管亮,p0 操作完成后使 p27 呈現(xiàn)低電平,這樣位選就已鎖定。段選在程序中由 duan 表示,單片機(jī)上是p26 端口,與位選相同,操作時(shí)使 p26 呈現(xiàn)高電平,這時(shí) p0 的八個(gè)端口對(duì)數(shù)碼管的操作決定了亮的幾個(gè)數(shù)碼管顯示什么數(shù)字,p0 操作完成后使 p26 呈現(xiàn)低電平,這樣段選就已鎖定。見(jiàn)圖 2.4 所示由于單片機(jī)僅僅起

19、到控制的作用,其輸出電流十分小,所以 p0 端需要接上拉電阻與 5v 電源,通過(guò)電壓的變化控制 5v 電源點(diǎn)亮,想要圖中 a 端由電流通過(guò)時(shí),即給 p00 一個(gè)低電平,觸發(fā)上拉電阻兩端間的電勢(shì)差,這樣就能促使電流流向 a 點(diǎn),從而使 a 端對(duì)應(yīng)的 led 燈點(diǎn)亮。圖圖 2.42.4 單片機(jī)與數(shù)碼管的硬件連接單片機(jī)與數(shù)碼管的硬件連接首先選擇位選,再選擇段選。uchar code table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 xbf,0 x86,0 xdb,0 xcf,0 xe6,0 xed,0 xfd,0

20、x87,0 xff,0 xef,0 x00,0 x08,0 x88;可以直接設(shè)置數(shù)碼管顯示各數(shù)字的十六進(jìn)制,即 p0 口應(yīng)賦的十六進(jìn)制,以便操作。如以上數(shù)組,使用時(shí)僅僅將需要的數(shù)組中的其中一個(gè)賦予 p0 口,這樣可以方便直觀得使數(shù)碼管顯示需要的數(shù)字。選擇位選與選擇片選的過(guò)程相當(dāng)快時(shí),顯示在人眼中就是一排易于識(shí)別的十進(jìn)制數(shù)字,這就是數(shù)碼管的動(dòng)態(tài)顯示。2.3.3 鎖存器與數(shù)碼管顯示鎖存器與數(shù)碼管顯示方法方法在這里先介紹 74hc573 芯片,這是一個(gè)鎖存器芯片,連接方法見(jiàn)圖 2.5 所示, p27、p26 分別控制位選和段選的 l 端,例如:當(dāng) p27(程序中的全局變量 wei)賦高電平時(shí),74h

21、c573 輸入端口的值將直接輸送給 74hc573 芯片的輸出端,當(dāng)輸入端變化時(shí),輸出端也變化。p27 賦低電平時(shí), 74hc573 芯片將記住最近一次 l 端口是高電平時(shí)芯片輸入端的 8 位,并將其輸出,當(dāng)輸入端變化時(shí),輸出端不變化。在這里就可以利用鎖存器的特性使 p27 起到控制那個(gè)數(shù)碼管亮的作用,使 p26 控制數(shù)碼管亮什么樣的數(shù)字作用。圖圖 2.52.5 74hc57374hc573 芯片的連接芯片的連接以下數(shù)碼管顯示部分程序。p0=0 xff;wei=1;p0=srtemp;/wein 打開(kāi)后 是低電平亮wei=0;srtemp=_crol_(srtemp,1);p0=0 x00;d

22、uan=1;p0=tabledisi;duan=0;delay(1);duan=1;p0=0 x00;duan=0;要注意的是位選(程序中的 wei 變量) ,位選是低電平時(shí)選擇該數(shù)碼管亮。在顯示時(shí)容易出現(xiàn)不需要亮的 led 管微微發(fā)亮的問(wèn)題,這是因?yàn)樗x擇的位選和段選都是通過(guò)p0 賦的值,如果先選擇位選的 8 位值,p0 口不還原成 0 x00,就會(huì)導(dǎo)致段選打開(kāi)后,還未賦予段選 p0口需要的數(shù)值之前,這段時(shí)間內(nèi) p0 口將剛才位選的 8 位值賦予了段選鎖存器,這樣就會(huì)在極短的時(shí)間內(nèi),一些不需要的 led 燈點(diǎn)亮,在單片機(jī)上就是由 led 燈微微亮的情況,所以在這里注意每次 p0對(duì)位選賦值以前

23、,都應(yīng)該保證 p0 口為 0 x00。2.42.4 鍵盤(pán)輸入設(shè)計(jì)鍵盤(pán)輸入設(shè)計(jì)2.4.1 鍵盤(pán)輸入方法鍵盤(pán)輸入方法本設(shè)計(jì)中使用的是矩陣式鍵盤(pán),見(jiàn)圖 2.6 所示。圖圖 2.62.6 矩陣式鍵盤(pán)矩陣式鍵盤(pán)s10 到 s19 分別代表數(shù)字 0 到 9。s20 代表確認(rèn)數(shù)字,按下后即可確認(rèn)要輸入數(shù)字的某一位。左側(cè)鍵盤(pán)的引腳由上至下分別是 p30 到 p37,第一行暫時(shí)不用,從第二行開(kāi)始使用,每一行如p31 都與 p34、 p35、 p36 、p37,他們是線與的關(guān)系。因此可以如此操作,對(duì)圖中第二行、第三行、第四行諸行進(jìn)行掃描。掃描第一行時(shí) p3 口賦值為 0 xfd,即為 p31 口賦“0”,p3 的

24、其他口賦“1”,當(dāng)?shù)诙袥](méi)有按鍵按下時(shí) p34、 p35、 p36 、p37 將都是高電平“1”,一旦有按鍵按下時(shí),由于線與關(guān)系,p34、 p35、 p36 、p37 必定有一個(gè)為“0”,它們之中那一個(gè)為“0”依次代表 s10 到 s13哪個(gè)鍵被按下。依次循環(huán)掃描三行即可時(shí)時(shí)檢測(cè)是否有鍵按下。2.4.2 鍵盤(pán)輸入的抖動(dòng)與去抖的方法鍵盤(pán)輸入的抖動(dòng)與去抖的方法在 2.4.1 節(jié)中談到了如何實(shí)現(xiàn)鍵盤(pán)的掃描,但是理論與實(shí)際還是有一定的差距,當(dāng)按下鍵盤(pán)到檢測(cè)到有電壓變化,這段時(shí)間在實(shí)際中是存在一定的時(shí)間誤差的,經(jīng)過(guò)這段時(shí)間誤差后電壓才會(huì)達(dá)到單片能夠檢測(cè)到的范圍,但這期間單片機(jī)很有可能已經(jīng)完成檢測(cè),見(jiàn)圖

25、2.7 所示。圖圖 2.72.7 抖動(dòng)示意圖抖動(dòng)示意圖如果不去除抖動(dòng)的話,人們手指按下的瞬間單片機(jī)已經(jīng)開(kāi)始檢測(cè),這時(shí)電壓還未降到穩(wěn)定閉合狀態(tài)所以不能檢測(cè)到按下,同理不管是按下,還是是松手都會(huì)有這樣的情況出現(xiàn),不利于操作,所以應(yīng)該加入去抖操作,圖中右側(cè)是硬件去除抖動(dòng),除了硬件去抖以外還可以利用軟件去抖。在本設(shè)計(jì)中采用軟件去抖的方法,原理是檢測(cè)兩次,第一次檢測(cè)到低電平時(shí)延時(shí)一段時(shí)間,再檢測(cè)一次,如果還能檢測(cè)到低電平,則說(shuō)明確實(shí)有鍵按下。具體程序如下:while(temp!=0 xf0)delay(5);p3=0 xfd;temp=p3;temp=temp&0 xf0;while(temp!

26、=0 xf0)上述程序是兩個(gè) while 循環(huán)之間的嵌套,第一個(gè) while()語(yǔ)句判斷有鍵按下后,延時(shí)一段時(shí)間再進(jìn)行判斷,如果第二次判斷也認(rèn)為由鍵按下,則可以確認(rèn)的確由鍵盤(pán)操作,并不是抖動(dòng)。具體按下后的操作可以在后一個(gè) while 循環(huán)中書(shū)寫(xiě)。2.52.5 ds18b20ds18b20 溫度采集溫度采集2.5.1 ds18b20 技術(shù)性能與應(yīng)用范圍技術(shù)性能與應(yīng)用范圍圖圖 2 2. .8 8 d ds s1 18 8b b2 20 0 的的外外形形及及管管腳腳 圖圖ds18b20 是一種可組網(wǎng)數(shù)字溫度傳感器芯片,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制

27、領(lǐng)域。獨(dú)特的單線接口方式, ds18b20 在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20 的雙向通訊。測(cè)溫范圍 55125,固有測(cè)溫分辨率 0.5。支持多點(diǎn)組網(wǎng)功能,多個(gè) ds18b20 可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8 個(gè),如果數(shù)量過(guò)多,會(huì)使供電電源電壓過(guò)低,從而造成信號(hào)傳輸?shù)牟环€(wěn)定,實(shí)現(xiàn)多點(diǎn)測(cè)溫。工作電源為 35v/dc。在使用中不需要任何外圍元件,測(cè)量結(jié)果以 912 位數(shù)字量方式串行傳送。不銹鋼保護(hù)管直徑6,適用于dn1525, dn40dn250 各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測(cè)溫,標(biāo)準(zhǔn)安裝螺紋 m10x1, m12x1.5, g1/2”任選,pvc 電纜直接

28、出線或德式球型接線盒出線 ,便于與其它電器設(shè)備連接。負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀, 但不能正常工作。 ds18b20 內(nèi)部結(jié)構(gòu)主要由四部分組成: 64 位光刻 rom 、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器th 和tl、配置寄存器。 ds18b20 的外形及管腳 排列見(jiàn)圖 2.8 所示。該產(chǎn)品適用于冷凍庫(kù),糧倉(cāng),儲(chǔ)罐,電訊機(jī)房,電力機(jī)房,電纜線槽等測(cè)溫和控制領(lǐng)域、軸瓦,缸體,紡機(jī),空調(diào),等狹小空間工業(yè)設(shè)備測(cè)溫和控制、供熱/制冷管道熱量計(jì)量,中央空調(diào)分戶熱能計(jì)量和工業(yè)領(lǐng)域測(cè)溫和控制、汽車(chē)空調(diào)、冰箱、冷柜、以及中低溫干燥箱等。2.5.2 ds18b20 的初始化與讀寫(xiě)操作的初始化與

29、讀寫(xiě)操作1 1. . ds18b20 的的初初始始化化(1) 先將數(shù)據(jù)線置高電平 “1”; (2) 延時(shí)(該時(shí)間要求的不是很?chē)?yán)格,但是盡可能的短一點(diǎn));(3) 數(shù)據(jù)線拉到低電平 “0”; (4) 延時(shí) 750 微秒(該時(shí)間的時(shí)間范圍可以從480 到 960 微秒); (5) 數(shù)據(jù)線拉到高電平 “1”; (6) 延時(shí)等待(如果初始化成功則在15 到 60 毫秒時(shí)間之內(nèi)產(chǎn)生一個(gè)由 ds18b20 所返回的低電平 “0”。據(jù)該狀態(tài)可以來(lái)確定它的存在,但是應(yīng)注意不能無(wú)限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制) ; (7) 若 cpu 讀到了數(shù)據(jù)線上的低電平 “0”后,還要做延時(shí),其延時(shí)

30、的時(shí)間從發(fā)出的高電平算起(第( 5)步的時(shí)間算起)最少要 480 微秒; (8) 將數(shù)據(jù)線再次拉高到高電平 “1”后結(jié)束。ds18b20 的的初始化 見(jiàn)圖 2.9 所示。圖圖 2 2. .9 9 d ds s1 18 8b b2 20 0 的的的的初初始始化化2 2. . ds18b20 的的寫(xiě)寫(xiě)操操作作(1) 數(shù)據(jù)線先置低電平 “0”; (2) 延時(shí)確定的時(shí)間為 15 微秒; (3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位); (4) 延時(shí)時(shí)間為 45 微秒; (5) 將數(shù)據(jù)線拉到高電平 ; (6) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止 ; (7) 最后將數(shù)據(jù)線拉高

31、。在這里要注意的是( 3),寫(xiě)數(shù)據(jù)時(shí)時(shí) 1bit 單獨(dú)傳送,這里有兩種情況。當(dāng)需要傳送 “1”時(shí),單片機(jī)應(yīng)該給 ds18b20 芯片的 dq 接口賦低電平,大約 15 秒以后,將dq 釋放為高電平,延時(shí)約 45 微妙即可。當(dāng)需要傳送 “0”時(shí),單片機(jī)應(yīng)該給 ds18b20 芯片的 dq 接口賦低電平,并且持續(xù)拉低最少60 微妙,然后將 dq 釋放為高電平,再延時(shí)約 15 秒即可。ds18b20 的寫(xiě)操作時(shí)序圖 見(jiàn)圖 2.10 所示。圖圖 2 2. .1 10 0 d ds s1 18 8b b2 20 0 的的寫(xiě)寫(xiě)操操作作時(shí)時(shí)序序圖圖 3 3. . ds18b20 的的讀讀操操作作(1)將數(shù)據(jù)

32、線拉高 “1”; (2)延時(shí) 2 微秒; (3)將數(shù)據(jù)線拉低 “0”; (4)延時(shí) 15 微秒; (5)將數(shù)據(jù)線拉高 “1”; (6)延時(shí) 15 微秒; (7)讀數(shù)據(jù)線的狀態(tài)得到一個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理; (8)延時(shí) 30 微秒;這里只要按以上操作將狀態(tài)位的各各bit 按順序儲(chǔ)存好即可 。ds18b20 的讀操作時(shí)序圖見(jiàn)圖 2.11 所示。圖圖 2 2. .1 11 1 d ds s1 18 8b b2 20 0 的的讀讀操操作作時(shí)時(shí)序序圖圖2.5.3 ds18b20 的指令與格式的指令與格式 ds18b20 溫度格式圖見(jiàn)圖 2.12 所示。圖圖 2 2. .1 12 2 d ds s1 1

33、8 8b b2 20 0 溫溫度度格格式式圖圖這是 12 位轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲(chǔ)在 ds18b20 的兩個(gè) 8 比特的 ram 中,二進(jìn)制中的前面 5 位是符號(hào)位,如果測(cè)得的溫度大于0,這 5 位為 0,只要將測(cè)到的數(shù)值乘于 0.0625 即可得到實(shí)際溫度;如果溫度小于0,這 5 位為 1,測(cè)到的數(shù)值需要取反加 1 再乘于 0.0625 即可得到實(shí)際 溫度。 例如+125的數(shù)字輸出為 07d0h,+25.0625的數(shù)字輸出為 0191h,-25.0625的數(shù)字輸出為 fe6fh,-55的數(shù)字輸出為 fc90h 。ds18b20 溫度傳感器的存儲(chǔ)器 ds18b20 溫度傳感器的內(nèi)部存

34、儲(chǔ)器包括一個(gè)高速暫存ram 和一個(gè)非易失性的可電擦除的eepram,后者存放高溫度和低溫度觸發(fā)器 th、tl 和結(jié)構(gòu)寄存器。配置寄存器,該字節(jié)各位的意義見(jiàn) 表 2.2 所示。表表 2.22.2 配配置置寄寄存存器器結(jié)結(jié)構(gòu)構(gòu)溫度數(shù)據(jù)輸出(二進(jìn)制)數(shù)據(jù)輸出(十六進(jìn)制)+1250000 0111 1101 000007d0+850000 0101 0101 00000550+25.06250000 0001 1001 00010191+10.1250000 0000 1010 001000a2+0.50000 0000 0000 1000000800000 0000 0000 00000000-0.

35、51111 1111 1111 1000fff8-10.1251111 1111 0101 1110ff5e-25.06251111 1110 0110 1111fe6f-551111 1100 1001 0000fc90高速暫存存儲(chǔ)器由 9 個(gè)字節(jié)組成。 其分配見(jiàn)表 2.3 所示,當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0 和第 1 個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位s=0 時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng) s=1 時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。第九個(gè)字節(jié)是冗余檢驗(yàn)字節(jié)。 表表 2 2.

36、 .3 3 d ds s1 18 8b b2 20 0 暫暫存存寄寄存存器器分分布布寄存器內(nèi)容字節(jié)地址溫度值低位 (ls byte)0溫度值高位 (ms byte)1高溫限值(th)2低溫限值(tl)3配置寄存器4保留5保留6保留7crc 校驗(yàn)值8根據(jù) ds18b20 的通訊協(xié)議,主機(jī)(單片機(jī))控制ds18b20 完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì) ds18b20 進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條rom 指令,最后發(fā)送 ram 指令,這樣才能對(duì) ds18b20 進(jìn)行預(yù)定的操作。復(fù)位要求主cpu 將數(shù)據(jù)線下拉 500 微秒,然后釋放,當(dāng) ds18b20 收到信號(hào)后等待 1660

37、微秒左右,后發(fā)出 60240 微秒的存在低脈沖,主 cpu 收到此信號(hào)表示復(fù)位成功。 rom 指令表見(jiàn)表 2.4 所示,ram 指令表見(jiàn)表 2.5所示。表表 2 2. .4 4 r ro om m 指指令令表表指 令約定代碼功 能讀 rom33h讀 ds1820 溫度傳感器 rom 中的編碼(即 64 位地址)符合 rom55h發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問(wèn)單總線上與該編碼相對(duì)應(yīng)的 ds1820 使之作出響應(yīng),為下一步對(duì)該 ds1820 的讀寫(xiě)作準(zhǔn)備。搜索 rom0foh用于確定掛接在同一總線上 ds1820 的個(gè)數(shù)和識(shí)別 64 位 rom 地址。為操作各器件作好準(zhǔn)備。

38、跳過(guò) rom0cch忽略 64 位 rom 地址,直接向 ds1820 發(fā)溫度變換命令。適用于單片工作。警告搜索命令0ech執(zhí)行后只有溫度超過(guò)設(shè)定值上限或下限的片子才做出響應(yīng)。表表 2 2. .5 5 r ra am m 指指令令表表指 令約定代碼功 能溫度變換44h啟動(dòng) ds1820 進(jìn)行溫度轉(zhuǎn)換,12 位轉(zhuǎn)換時(shí)最長(zhǎng)為 750ms(9 位為 93.75ms)。結(jié)果存入內(nèi)部 9 字節(jié) ram 中。讀暫存器0beh讀內(nèi)部 ram 中 9 字節(jié)的內(nèi)容寫(xiě)暫存器4eh發(fā)出向內(nèi)部 ram 的 3、4 字節(jié)寫(xiě)上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復(fù)制暫存器48h將 ram 中第 3 、

39、4 字節(jié)的內(nèi)容復(fù)制到 eeprom 中。重調(diào) eeprom0b8h將 eeprom 中內(nèi)容恢復(fù)到 ram 中的第 3 、4 字節(jié)。讀供電方式0b4h讀 ds1820 的供電模式。寄生供電時(shí) ds1820 發(fā)送“ 0 ”,外接電源供電 ds1820 發(fā)送“ 1 ”。2.5.4 ds18b20 寄生電源供電方式寄生電源供電方式ds18b20 測(cè)溫系統(tǒng)具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn)。下面就是 ds18b20 幾個(gè)不同應(yīng)用方式下的 測(cè)溫電路圖:ds18b20 寄生電源供電方式電路圖 ,見(jiàn)圖 2.13 所示,在寄生電源供電方式下, ds18b20從單線信號(hào)線上汲取能量:在信號(hào)線

40、dq 處于高電平期間把能量?jī)?chǔ)存在內(nèi)部電容里,在信號(hào)線處于低電平期間消耗電容上的電能工作,直到高電平到來(lái)再給寄生電源(電容)充電。 獨(dú)特的寄生電源方式有三個(gè)好處: 1. 進(jìn)行遠(yuǎn)距離測(cè)溫時(shí),無(wú)需本地電源 ;2. 可以在沒(méi)有常規(guī)電源的條件下讀取rom;3. 電路更加簡(jiǎn)潔,僅用一根 i/o 口實(shí)現(xiàn)測(cè)溫。 要想使 ds18b20 進(jìn)行精確的溫度轉(zhuǎn)換, i/o 線必須保證在溫度轉(zhuǎn)換期間提供足夠的能量,由于每個(gè) ds18b20 在溫度轉(zhuǎn)換期間工作電流達(dá)到1ma,當(dāng)幾個(gè)溫度傳感器掛在同一根i/o 線上進(jìn)行多點(diǎn)測(cè)溫時(shí),只靠 4.7k 上拉電阻就無(wú)法提供足夠的能量,會(huì)造成無(wú)法轉(zhuǎn)換溫度或溫度誤差極大。 因此,這種電

41、路只適應(yīng)于單一溫度傳感器測(cè)溫情況下使用,不適宜采用供電系統(tǒng)中。并且工作電源 vcc 必須保證在 5v,當(dāng)電源電壓下降時(shí),寄生電源能夠汲取的能量也降低,會(huì)使溫度誤差變大。 圖圖 2 2. .1 13 3 d ds s1 18 8b b2 20 0 寄寄生生電電源源供供電電方方式式 2.5.5 ds18b20 改進(jìn)的寄生電源供電方式改進(jìn)的寄生電源供電方式ds18b20 寄生電源強(qiáng)上拉供電方式電路圖, 改進(jìn)的寄生電源供電方式見(jiàn)圖2.14 所示,為了使 ds18b20 在動(dòng)態(tài)轉(zhuǎn)換周期中獲得足夠的電流供應(yīng),當(dāng)進(jìn)行溫度轉(zhuǎn)換或拷貝到e2 存儲(chǔ)器操作時(shí),用 mosfet 把 i/o 線直接拉到 vcc 就可提

42、供足夠的電流,在發(fā)出任何涉及到拷貝到e2存儲(chǔ)器或啟動(dòng)溫度轉(zhuǎn)換的指令后,必須在最多10s 內(nèi)把 i/o 線轉(zhuǎn)換到強(qiáng)上拉狀態(tài)。在強(qiáng)上拉方式下可以解決電流供應(yīng)不走的問(wèn)題,因此也適合于多點(diǎn)測(cè)溫應(yīng)用,缺點(diǎn)就是要多占用一根i/o口線進(jìn)行強(qiáng)上拉切換。 圖圖 2 2. .1 14 4 改改進(jìn)進(jìn)的的寄寄生生電電源源供供電電方方式式注意:在見(jiàn)圖 2.13 所示、見(jiàn)圖 2.14 所示寄生電源供電方式中, ds18b20 的 vdd 引腳必須接地。2.5.6 ds18b20 外部電源供電方式外部電源供電方式ds18b20 的外部電源供電方式見(jiàn)圖 2.15 所示,在外部電源供電方式下, ds18b20 工作電源由 vd

43、d 引腳接入,此時(shí) i/o 線不需要強(qiáng)上拉,不存在電源電流不足的問(wèn)題,可以保證轉(zhuǎn)換精度,同時(shí)在總線上理論可以掛接任意多。 ds18b20 傳感器,組成多點(diǎn)測(cè)溫系統(tǒng)。注意:在外部供電的方式下, ds18b20 的 gnd 引腳不能懸空,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85。 圖圖 2 2. .1 15 5 外外部部供供電電方方式式單單點(diǎn)點(diǎn)測(cè)測(cè)溫溫電電路路 在本次設(shè)計(jì)中 采用外部電源供電方式 ,連接方法見(jiàn)圖 2.16 所示。圖圖 2 2. .1 16 6 設(shè)設(shè)計(jì)計(jì)中中采采用用的的 測(cè)測(cè)溫溫電電路路直接將 ds18b20 的 i/o 口接在單片機(jī)的 p22 上,這樣在硬件方面就可以進(jìn)行數(shù)據(jù)交流,從而

44、達(dá)到溫度數(shù)據(jù)傳輸?shù)哪康摹?.5.7 ds18b20 寄生電源供電方式寄生電源供電方式外部供電方式的多點(diǎn)測(cè)溫電路圖見(jiàn)圖2.17 所示,外部電源供電方式是 ds18b20 最佳的工作方式,工作穩(wěn)定可靠,抗干擾能力強(qiáng),而且電路也比較簡(jiǎn)單,可以開(kāi)發(fā)出穩(wěn)定可靠的多點(diǎn)溫度監(jiān)控系統(tǒng)。站長(zhǎng)推薦大家在開(kāi)發(fā)中使用外部電源供電方式,畢竟比寄生電源方式只多接一根vcc 引線。在外接電源方式下,可以充分發(fā)揮ds18b20 寬電源電壓范圍的優(yōu)點(diǎn),即使電源電壓vcc 降到 3v 時(shí),依然能夠保證溫度量精度。圖圖 2 2. .1 17 7 外外部部供供電電方方式式的的多多點(diǎn)點(diǎn)測(cè)測(cè)溫溫電電路路圖圖第第 3 章章 系統(tǒng)軟件設(shè)計(jì)系

45、統(tǒng)軟件設(shè)計(jì)3.13.1 鍵盤(pán)輸入的程序鍵盤(pán)輸入的程序while(temp!=0 xf0)delay(5);p3=0 xfd;temp=p3;temp=temp&0 xf0;while(temp!=0 xf0)temp=p3;switch(temp)case 0 xed:num=0;break;case 0 xdd:num=1;break;case 0 xbd:num=2;break;case 0 x7d:num=3;break;while(temp!=0 xf0)temp=p3;temp=temp&0 xf0;/*0000在這里使用了_crol_函數(shù),所以頭文件中要增加#inc

46、lude,這里包括去抖和松手檢測(cè)。經(jīng)過(guò)檢測(cè)以后通過(guò)不同的 temp 值,使 num 被賦予相應(yīng)的數(shù)值,這樣 num 就是要輸入的一個(gè)數(shù)字。3.23.2 ds18b20ds18b20 溫度傳感器設(shè)計(jì)溫度傳感器設(shè)計(jì)連接好電路以后,就可以開(kāi)始設(shè)計(jì) ds18b20 的軟件環(huán)節(jié)。首先要初始化 ds18b20 以下為初始化程序。void dsstart() unsigned int i;ds=0; i=100; /拉低約 800us, 符合協(xié)議要求的 480us 以上 while(i0) i-; ds=1; /產(chǎn)生一個(gè)上升沿, 進(jìn)入等待應(yīng)答狀態(tài) i=4;while(i0) i-;然后延時(shí)等待,回應(yīng)。如以下

47、子函數(shù)。void dswait()unsigned int i;while(ds); /等待應(yīng)答信號(hào) while(ds); /檢測(cè)到應(yīng)答脈沖 i=4; while(i0) i-;以下兩個(gè)子函數(shù)為讀取的數(shù)據(jù)時(shí)用到的。可以在溫度采集讀取時(shí)調(diào)用。bit readbit()/讀取一個(gè) bitunsigned int i;bit b;ds=0;i+; /延時(shí)約 8us, 符合協(xié)議要求至少保持 1usds=1;i+;i+; /延時(shí)約 16us, 符合協(xié)議要求的至少延時(shí) 15us 以上b=ds; i=8; while(i0) i-; /延時(shí)約 64us, 符合讀時(shí)隙不低于 60us 要求 return b;

48、uchar readbyte()/讀取一個(gè)字節(jié)uint b;uchar date,a;b=0;date=0;while(b8)a=readbit();date=(a1);b+;return date;以下為寫(xiě)入命令程序。用于操控 ds18b20。void writeor(uchar order)/寫(xiě)入命令uint b;uchar a;bit bit2;b=0;for(a=0;a=1;if(bit2)/寫(xiě)入 1ds=0;b+,b+;ds=1;for(b=0;b8;b+);else/0ds=0;for(b=0;b8;b+);ds=1;b+;b+;當(dāng)以上程序書(shū)寫(xiě)完成后,準(zhǔn)備工作基本完成?,F(xiàn)在只要調(diào)用

49、這些函數(shù),來(lái)操控 ds18b20 使其能夠按協(xié)議規(guī)定將溫度數(shù)據(jù)傳送給單片機(jī)。軟件實(shí)施方法如下:void changetemp()/溫度轉(zhuǎn)變函數(shù)dsstart();dswait();delay(1);writeor(0 xcc);/ 跳過(guò)讀序號(hào)列號(hào)的操作writeor(0 x44);/ 啟動(dòng)溫度轉(zhuǎn)換 delay(1);uint gettemp()/獲取溫度f(wàn)loat tt;int temp;uchar geta,getb;dsstart();dswait();delay(1);writeor(0 xcc);writeor(0 xbe);/讀取溫度命令delay(2);geta=readbyte(

50、);/讀取兩個(gè)字節(jié)getb=readbyte();temp=getb;temp 0 ? 0.5 : -0.5);/,變大十倍且 四舍五入return(temp);以上兩個(gè)程序流程為,changetemp()子函數(shù)中先初始化 ds18b20,芯片應(yīng)答以后寫(xiě)入兩個(gè)以字節(jié)為一個(gè)單位的命令,0 xcc 與 0 x44 它們的作用分別為跳過(guò)讀序號(hào)列號(hào)的操作和啟動(dòng)溫度轉(zhuǎn)換。然后溫度獲取 gettemp()子函數(shù)完成。在 gettemp()子函數(shù)中首先也是初始化 ds18b20、等待應(yīng)答,寫(xiě)入命令0 xcc 跳過(guò)讀序號(hào)列號(hào)的操作和 0 xbe 讀取溫度命令。使用 readbyte()讀取兩個(gè)字節(jié)的數(shù)據(jù),分別

51、賦予geta、getb 兩個(gè)字符型變量,再將 getb 賦予 temp(temp 是一個(gè)整型變量擁有兩個(gè)字節(jié)的容量),這樣temp 的低 8 為就是 getb 中的值了。temp=8 的意義是 temp=temp 0 ? 0.5 : -0.5)這句話是先將 tt 由一個(gè)最高位為十位保留小數(shù)點(diǎn)后一位的數(shù)擴(kuò)大了十倍,變?yōu)榱艘粋€(gè)最高位為百位的三位數(shù),而后面加上的十一個(gè)四舍五入的賦值語(yǔ)句,也就相當(dāng)是一個(gè) if 語(yǔ)句,c 語(yǔ)言是任何精度高的變量變?yōu)榫鹊偷淖兞繒r(shí),都會(huì)失去一定的精度,而且是向下取整,例如在這里,如果 tt 是正溫度的話變大 10 倍以后,小數(shù)點(diǎn)后一位是無(wú)論是 1 還是 9,都默認(rèn)舍去,如

52、果要對(duì)正數(shù)的 tt 進(jìn)行四舍五入應(yīng)該先給 tt 加上 0.5,再將它賦給精度較低的 temp,這樣就可以有四舍五入的功能,而這里沒(méi)有這么簡(jiǎn)單,這個(gè) if 語(yǔ)句的還要考慮 tt 為負(fù)值的情況下的操作,如果temp 為負(fù)值,tt 變大 10 倍以后還要減去 0.5,這樣就能夠完成 tt 為負(fù)值情況下的四舍五入。3.33.3 主函數(shù)的分析主函數(shù)的分析首先給出主函數(shù):void main()tmod=0 x01;th0=(65536-46000)/256;tl0=(65536-46000)%256;ea=1;et0=1;tr0=1;zd=0;num=21;aaa=0;bbb=0;num1=21;num2

53、=21;num3=21;while(1)uint a;uchar b;changetemp();a=gettemp();b=scanff();numy=gettemp();display(a,b);這里的 aaa 用于控制是否確定輸入的一個(gè)數(shù)字是需要的數(shù)字,bbb 用于標(biāo)記已經(jīng)輸入到了三個(gè)數(shù)字的第幾個(gè)數(shù)字。主函數(shù)首先將所用到的全局變量賦值,然后進(jìn)入大循環(huán)首先進(jìn)入溫度轉(zhuǎn)換函數(shù),使 ds18b20 啟動(dòng)溫度轉(zhuǎn)換,然后獲取溫度將兩個(gè)字節(jié)的數(shù)值賦給 a,而將輸入的溫度賦予 b ,再由 display(a,b)子函數(shù)輸出所有的值。3.43.4 顯示函數(shù)的分析顯示函數(shù)的分析以下是 display()函數(shù)的

54、具體內(nèi)容。void display(uint a,uchar b)uchar i,temp,srtemp,dis4;uint dda;dda=abs(a);numx=dda/1000;num4=dda%1000/100;num5=dda%100/10;num6=dda%10;dis0=numx;dis1=num4;dis2=num5;dis3=num6;dis2+=10;/num5 小數(shù)點(diǎn)if(dis0=0)&(dis1=0)dis1=20;/如果百位和十位都為 0 不顯示if(a0)/負(fù)值 后面加個(gè)小數(shù)點(diǎn)dis3+=10;elseif(dis0!=0)/超過(guò) 100 前面加小數(shù)點(diǎn) d

55、is1=dis1+10;temp=0 xfb;for(i=1;i4;i+)p0=0 xff;wei=1;temp=_crol_(temp,1);p0=temp;wei=0;p0=0;duan=1;p0=tabledisi;duan=0;delay(3);duan=1;p0=0 x00;duan=0;if(aaa=1&ccc!=21)bbb+;switch(bbb)case 0:dis1=b;num1=b;dis2=num2;dis3=num3;if(dis2=21)dis2+;elsedis2+=10;srtemp=0 xfe;for(i=1;i4;i+)p0=0 xff;wei=1;

56、p0=srtemp;/wein 打開(kāi)后 是低電平亮wei=0;/srtemp=_crol_(srtemp,1);p0=0 x00;duan=1;p0=tabledisi;duan=0;delay(1);duan=1;p0=0 x00;duan=0;break;case 1:dis1=num1;dis2=b;num2=b;dis3=num3;if(dis2=21)dis2+;elsedis2+=10;srtemp=0 xfe;for(i=1;i4;i+)p0=0 xff;wei=1;p0=srtemp;/wein 打開(kāi)后 是低電平亮wei=0;/srtemp=_crol_(srtemp,1);p0=0 x00;duan=1;p0=tabledisi;duan=0;delay(1);duan=1;p0=0 x00;duan=0;aaa=0;break;case 2:dis1=num1;dis2=num2;dis3=b;num3=b;if(dis2=21)dis2+;elsedis2+=10;srtemp=0 xfe;for(i=1;i4;i+)p0=0 xff;wei=1;p0=srtemp;/

溫馨提示

  • 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)論