2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(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、<p>  基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)</p><p><b>  摘要</b></p><p>  隨著國(guó)民經(jīng)濟(jì)的發(fā)展,人們需要對(duì)各中加熱爐、熱處理爐、反應(yīng)爐和鍋爐中溫度進(jìn)行監(jiān)測(cè)和控制。采用單片機(jī)來(lái)對(duì)他們控制不僅具有控制方便,簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大的提高產(chǎn)品的質(zhì)量和數(shù)量。</p><p&

2、gt;  在日常生活及工業(yè)生產(chǎn)過(guò)程中,經(jīng)常要用到溫度的檢測(cè)及控制,溫度是生產(chǎn)過(guò)程和科學(xué)實(shí)驗(yàn)中普遍而且重要的物理參數(shù)之一。在生產(chǎn)過(guò)程中,為了高效地進(jìn)行生產(chǎn),必須對(duì)它的主要參數(shù),如溫度、壓力、流量等進(jìn)行有效的控制。溫度控制在生產(chǎn)過(guò)程中占有相當(dāng)大的比例。溫度測(cè)量是溫度控制的基礎(chǔ),技術(shù)已經(jīng)比較成熟。傳統(tǒng)的測(cè)溫元件有熱電偶和二電阻。而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,這些方法相對(duì)比較復(fù)雜,需要比較多的外部硬件支持。我們用一種相

3、對(duì)比較簡(jiǎn)單的方式來(lái)測(cè)量。 我們采用美國(guó)DALLAS半導(dǎo)體公司繼DS18B20之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測(cè)元件,溫度范圍為-55~125 ºC,最高分辨率可達(dá)0.0625 ºC。DS18B20可以直接讀出北側(cè)溫度值,而且采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。</p><p>  本文介紹一種基于AT89C51單片機(jī)的一種溫度測(cè)量

4、及報(bào)警電路,該電路采用DS18B20作為溫度監(jiān)測(cè)元件,測(cè)量范圍0℃-~+100℃,使用LED模塊顯示,能設(shè)置溫度報(bào)警上下限。正文著重給出了軟硬件系統(tǒng)的各部分電路,介紹了集成溫度傳感器DS18B20的原理,AT89C51單片機(jī)功能和應(yīng)用。該電路設(shè)計(jì)新穎、功能強(qiáng)大、結(jié)構(gòu)簡(jiǎn)單。</p><p>  關(guān)鍵詞:溫度測(cè)量;DS18B20;AT89C51</p><p><b>  目錄<

5、;/b></p><p><b>  第1章 緒論3</b></p><p>  第2章 系統(tǒng)概述4</p><p><b>  2.1方案選擇4</b></p><p>  2.1.1方案一4</p><p>  2.1.2方案二4</p>

6、<p>  2.2設(shè)計(jì)思路及描述5</p><p>  2.3系統(tǒng)設(shè)計(jì)原理5</p><p><b>  2.4系統(tǒng)組成5</b></p><p>  2.5DS18B20溫度傳感器與單片機(jī)的接口電路6</p><p><b>  2.6顯示模塊7</b></p>

7、<p>  第3章 系統(tǒng)硬件設(shè)計(jì)8</p><p>  3.1 89C51單片機(jī)的介紹8</p><p>  3.1.1 89C51單片機(jī)主要特性9</p><p>  3.1.2 89C51單片機(jī)的中斷系統(tǒng)9</p><p>  3.1.3 89C51單片機(jī)的定時(shí)/計(jì)數(shù)器10</p><p>  

8、3.2液晶顯示部分與89C51的接口10</p><p>  3.3DS18B20介紹10</p><p>  3.3.1溫度傳感器工作原理11</p><p>  3.3.2 DS18B20相關(guān)介紹12</p><p>  第4章 系統(tǒng)軟件設(shè)計(jì)13</p><p>  4.1主程序設(shè)計(jì)13</p&g

9、t;<p>  4.2 DS18B20初始化14</p><p>  4.3數(shù)據(jù)測(cè)試15</p><p>  4.4仿真結(jié)果15</p><p><b>  結(jié)論17</b></p><p><b>  致謝18</b></p><p><b&g

10、t;  參考文獻(xiàn)19</b></p><p>  附錄 全部程序清單20</p><p><b>  1 緒論</b></p><p>  隨著新技術(shù)的不斷開發(fā)與應(yīng)用,近年來(lái)單片機(jī)發(fā)展十分迅速,一個(gè)以微機(jī)應(yīng)用為主的新技術(shù)革命浪潮正在蓬勃興起,單片機(jī)的應(yīng)用已經(jīng)滲透到電力、冶金、化工、建材、機(jī)械、食品、石油等各個(gè)行業(yè)。傳統(tǒng)的溫度

11、采集方法不僅費(fèi)時(shí)費(fèi)力,而且精度差,單片機(jī)的出現(xiàn)使得溫度的采集和數(shù)據(jù)處理問(wèn)題能夠得到很好的解決。溫度是工業(yè)對(duì)象中的一個(gè)重要的被控參數(shù)。然而所采用的測(cè)溫元件和測(cè)量方法也不相同;產(chǎn)品的工藝不同,控制溫度的精度也不相同。因此對(duì)數(shù)據(jù)采集的精度和采用的控制方法也不相同。傳統(tǒng)的控制方式以不能滿足高精度,高速度的控制要求,如溫度控制表溫度接觸器,其主要缺點(diǎn)是溫度波動(dòng)范圍大,由于他主要通過(guò)控制接觸器的通斷時(shí)間比例來(lái)達(dá)到改變加熱功率的目的,受儀表本身誤差和

12、交流接觸器的壽命限制,通斷頻率很低。近幾年來(lái)快速發(fā)展了多種先進(jìn)的溫度控制方式,如:PID控制,模糊控制,神經(jīng)網(wǎng)絡(luò)及遺傳算法控制等。這些控制技術(shù)大大的提高了控制精度,不但使控制變得簡(jiǎn)便,而且使產(chǎn)品的質(zhì)量更好,降低了產(chǎn)品的成本,提高了生產(chǎn)效率。本系統(tǒng)所使用的加熱器件是電爐絲,功率為三千瓦,要求溫度在400~1000℃。靜態(tài)控制精度為2.43℃。</p><p>  本設(shè)計(jì)使用單片機(jī)作為核心進(jìn)行控制。單片機(jī)具有集成度高

13、,通用性好,功能強(qiáng),特別是體積小,重量輕,耗能低,可靠性高,抗干擾能力強(qiáng)和使用方便等獨(dú)特優(yōu)點(diǎn),在數(shù)字、智能化方面有廣泛的用途。</p><p><b>  2 系統(tǒng)概述</b></p><p><b>  2.1方案選擇</b></p><p>  該系統(tǒng)主要由溫度測(cè)量和數(shù)據(jù)采集兩部分電路組成,實(shí)現(xiàn)的方法有很多種,下面將

14、列出兩種在日常生活中和工農(nóng)業(yè)生產(chǎn)中經(jīng)常用到的實(shí)現(xiàn)方案。</p><p><b>  2.1.1方案一</b></p><p>  采用熱電偶溫差電路測(cè)溫,溫度檢測(cè)部分可以使用低溫?zé)崤?,熱電偶由兩個(gè)焊接在一起的異金屬導(dǎo)線所組成,熱電偶產(chǎn)生的熱電勢(shì)由兩種金屬的接觸電勢(shì)和單一導(dǎo)體的溫差電勢(shì)組成。通過(guò)將參考結(jié)點(diǎn)保持在已知溫度并測(cè)量該電壓,便可推斷出檢測(cè)結(jié)點(diǎn)的溫度。數(shù)據(jù)采集部分

15、則使用帶有A/D 通道的單片機(jī),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái)。熱電偶的優(yōu)點(diǎn)是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來(lái)自導(dǎo)線環(huán)路的噪聲影響以及漂移較高的缺點(diǎn),并且這種設(shè)計(jì)需要用到A/D 轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p>  系統(tǒng)主要包括對(duì)A/D0809 的數(shù)據(jù)采集,自動(dòng)手動(dòng)工作

16、方式檢測(cè),溫度的顯示等,這幾項(xiàng)功能的信號(hào)通過(guò)輸入輸出電路經(jīng)單片機(jī)處理。此外還有復(fù)位電路,晶振電路,啟動(dòng)電路等。故現(xiàn)場(chǎng)輸入硬件有手動(dòng)復(fù)位鍵、A/D 轉(zhuǎn)換芯片,處理芯片為51 芯片,執(zhí)行機(jī)構(gòu)有4 位數(shù)碼管、報(bào)警器等?!?】</p><p>  系統(tǒng)框圖如圖 2-1所示。</p><p>  圖2-1 熱電偶溫差電路測(cè)溫系統(tǒng)框圖</p><p><b>  2.

17、1.2方案二</b></p><p>  采用數(shù)字溫度芯片DS18B20 測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線形較好。在0—100 攝氏度時(shí),最大線形偏差小于1 攝氏度。DS18B20 的最大特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS18B20和微控制器AT89C51構(gòu)成的溫度測(cè)量裝置,它直

18、接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu)就比較簡(jiǎn)單,體積也不大。采用51 單片機(jī)控制,軟件編程的自由度大,可通過(guò)編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制,而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC 機(jī)通信上傳數(shù)據(jù),另外AT89C51 在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟?!?】</p><p>  該系統(tǒng)利用AT89C

19、51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。該系統(tǒng)擴(kuò)展性非常強(qiáng),它可以在設(shè)計(jì)中加入時(shí)鐘芯片DS1302以獲取時(shí)間數(shù)據(jù),在數(shù)據(jù)處理同時(shí)顯示時(shí)間,并可以利用AT24C16芯片作為存儲(chǔ)器件,以此來(lái)對(duì)某些時(shí)間點(diǎn)的溫度數(shù)據(jù)進(jìn)行存儲(chǔ),利用鍵盤來(lái)進(jìn)行調(diào)時(shí)和溫度查詢,獲得的數(shù)據(jù)可以通過(guò)MAX232芯片與計(jì)算機(jī)的RS232接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)。</

20、p><p>  從以上兩種方案,容易看出方案一的測(cè)溫裝置可測(cè)溫度范圍寬、體積小,但是線性誤差較大。方案二的測(cè)溫裝置電路簡(jiǎn)單、精確度較高、實(shí)現(xiàn)方便、軟件設(shè)計(jì)也比較簡(jiǎn)單,故本次設(shè)計(jì)采用了方案二。</p><p>  2.2設(shè)計(jì)思路及描述</p><p>  本設(shè)計(jì)4個(gè)開關(guān)按鍵K1,K2,K3,K4:其中,在下限設(shè)置燈亮?xí)r,按下K1按鍵,溫度計(jì)進(jìn)入報(bào)警下限設(shè)置,在上限設(shè)置燈亮

21、時(shí),按下K1按鍵,溫度計(jì)進(jìn)入報(bào)警上限設(shè)置;按動(dòng)K2,K3可分別實(shí)現(xiàn)報(bào)警溫度的增減,當(dāng)設(shè)置完畢后,按K4保存并退出。該實(shí)驗(yàn)要求對(duì)環(huán)境溫度進(jìn)行測(cè)量并在LED上顯示數(shù)據(jù),則可利用AT89C51芯片的P0.7-P0.0管腳對(duì)應(yīng)了接數(shù)碼管的A,B,C,D,E,F,G和小數(shù)點(diǎn)位,P2.0~P2.3接顯示數(shù)據(jù)的小數(shù)位、個(gè)位、十位、百位(符號(hào)位),P3.4端口與DS18B20進(jìn)行數(shù)據(jù)傳遞和通信端口,P1.0端口輸出報(bào)警信號(hào)。 </p>&

22、lt;p><b>  2.3系統(tǒng)設(shè)計(jì)原理</b></p><p>  利用溫度傳感器DS18B20可以直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換的特性,模擬溫度值經(jīng)過(guò)DS18B20處理后轉(zhuǎn)換為數(shù)字值,然后送到單片機(jī)中進(jìn)行數(shù)據(jù)處理,并與設(shè)置的溫度報(bào)警限比較,超過(guò)限度后通過(guò)揚(yáng)聲器報(bào)警。同時(shí)處理后的數(shù)據(jù)送到LED中顯示。</p><p><b>  2.4系統(tǒng)組成<

23、/b></p><p>  本課題以是89C51單片機(jī)為核心設(shè)計(jì)的一種數(shù)字溫度控制系統(tǒng),系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等組成。</p><p>  系統(tǒng)框圖主要由主控制器、單片機(jī)復(fù)位、報(bào)警按鍵設(shè)置、時(shí)鐘振蕩、LED顯示、溫度傳感器組成。</p><p>  系統(tǒng)框圖如圖2-2所示。</p>

24、<p>  圖2-2 系統(tǒng)基本方框圖</p><p><b>  主控制器</b></p><p>  單片機(jī)AT89C51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。</p><p><b>  顯示電路</b></

25、p><p>  顯示電路采用LED液晶顯示數(shù)碼管,從P3口RXD,TXD串口輸出段碼。顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點(diǎn)就是使用口資源比較少,只用p3口的RXD,和TXD,串口的發(fā)送和接收,四只數(shù)碼管采用74LS164右移寄存器驅(qū)動(dòng),顯示比較清晰。</p><p><b>  3. 溫度傳感器</b></p><p>  溫度傳

26、感器采用美國(guó)DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20溫度傳感器。DS18B20輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,在0—100 攝氏度時(shí),最大線形偏差小于1 攝氏度,采用單總線的數(shù)據(jù)傳輸,可直接與計(jì)算機(jī)連接。</p><p>  用AT89C51芯片控制溫度傳感器DS18B20進(jìn)行實(shí)時(shí)溫度檢測(cè)并顯示,能夠?qū)崿F(xiàn)快速測(cè)量環(huán)境溫度,并可以根據(jù)需要設(shè)定上下限報(bào)警溫度。獲得的數(shù)據(jù)可以通過(guò)MAX232芯片與計(jì)算機(jī)的RS

27、232接口進(jìn)行串口通信,方便的采集和整理時(shí)間溫度數(shù)據(jù)。</p><p>  2.5 DS18B20溫度傳感器與單片機(jī)的接口電路</p><p>  DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖2-3 所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè)

28、MOSFET管來(lái)完成對(duì)總線的上拉。【2</p><p><b>  】</b></p><p>  圖2-3 DS18B20與單片機(jī)的接口電路</p><p>  當(dāng)DS18B20處于寫存儲(chǔ)器操作和溫度A/D轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為10us。采用寄生電源供電方式時(shí)VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是

29、三態(tài)的。</p><p><b>  2.6顯示模塊</b></p><p><b>  圖2-4顯示模塊</b></p><p>  顯示電路采用4位共陰極LED數(shù)碼管,采用LED動(dòng)態(tài)顯示方式,從P1口輸出段碼,P2.0~P2.3作為位選控制端。其中P1做輸出口時(shí)需要加上拉電阻。</p><p>

30、<b>  3 系統(tǒng)硬件設(shè)計(jì)</b></p><p>  3.1 89C51單片機(jī)的介紹</p><p>  89C51單片機(jī)最初是由Intel 公司開發(fā)設(shè)計(jì)的,但后來(lái)Intel 公司把51 核的設(shè)計(jì)方案賣給了幾家大的電子設(shè)計(jì)生產(chǎn)商,譬如 SST、Philip、Atmel 等大公司。如是市面上出現(xiàn)了各式各樣的但均以51 為內(nèi)核的單片機(jī),倒是Intel 公司自己的單片

31、機(jī)卻顯得遜色了。這些各大電子生產(chǎn)商推出的單片機(jī)都兼容51 指令、并在51 的基礎(chǔ)上擴(kuò)展一些功能而內(nèi)部結(jié)構(gòu)是與51 一致的。</p><p>  89C51有40個(gè)引腳,4個(gè)8位并行I/O口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級(jí),2個(gè)16位定時(shí)/計(jì)數(shù)器。89C51的存儲(chǔ)器系統(tǒng)由4K的程序存儲(chǔ)器(掩膜ROM),和128B的數(shù)據(jù)存儲(chǔ)器(RAM)組成?!?】89C51單片機(jī)的基本組成框圖見圖3-1?!?】

32、</p><p>  圖3-1 89C51單片機(jī)結(jié)構(gòu)框圖 </p><p>  由圖3-1可見,89C51單片機(jī)主要由以下幾部分組成:</p><p><b>  CPU系統(tǒng)</b></p><p>  8位CPU,含布爾處理器;</p><p><b>  時(shí)鐘電路;</b>

33、;</p><p><b>  總線控制邏輯。</b></p><p><b>  存儲(chǔ)器系統(tǒng)</b></p><p>  4K字節(jié)的程序存儲(chǔ)器(ROM/EPROM/Flash,可外擴(kuò)至64KB);</p><p>  128字節(jié)的數(shù)據(jù)存儲(chǔ)器(RAM,可再外擴(kuò)64KB);特殊功能寄存器SFR。<

34、;/p><p>  I/O口和其他功能單元</p><p><b>  4個(gè)并行I/O口;</b></p><p>  2個(gè)16位定時(shí)計(jì)數(shù)器;</p><p>  1個(gè)全雙工異步串行口;</p><p>  中斷系統(tǒng)(5個(gè)中斷源,2個(gè)優(yōu)先級(jí))。</p><p>  3.1.1

35、89C51單片機(jī)主要特性</p><p>  1. 一個(gè)8 位的微處理器(CPU)。</p><p>  2. 片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM(128B),用以存放可以讀/寫的數(shù)據(jù),如運(yùn)算的中間結(jié)果、最終結(jié)果以及欲顯示的數(shù)據(jù)等,SST89 系列單片機(jī)最多提供1K 的RAM。</p><p>  3. 片內(nèi)程序存儲(chǔ)器ROM(4KB),用以存放程序、一些原始數(shù)據(jù)和表格。但也有一些

36、單片機(jī)內(nèi)部不帶ROM/EPROM,如8031,8032,80C31 等。目前單片機(jī)的發(fā)展趨勢(shì)是將RAM 和ROM 都集成在單片機(jī)里面,這樣既方便了用戶進(jìn)行設(shè)計(jì)又提高了系統(tǒng)的抗干擾性。SST 公司推出的89 系列單片機(jī)分別集成了16K、32K、64K Flash 存儲(chǔ)器,可供用戶根據(jù)需要選用。</p><p>  4. 四個(gè)8 位并行I/O 接口P0~P3,每個(gè)口既可以用作輸入,也可以用作輸出。</p>

37、<p>  5. 兩個(gè)定時(shí)器/計(jì)數(shù)器,每個(gè)定時(shí)器/計(jì)數(shù)器都可以設(shè)置成計(jì)數(shù)方式,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可以設(shè)置成定時(shí)方式,并可以根據(jù)計(jì)數(shù)或定時(shí)的結(jié)果實(shí)現(xiàn)計(jì)算機(jī)控制。為方便</p><p>  設(shè)計(jì)串行通信,目前的52 系列單片機(jī)都會(huì)提供3 個(gè)16 位定時(shí)器/計(jì)數(shù)器。</p><p>  6. 五個(gè)中斷源的中斷控制系統(tǒng)?,F(xiàn)在新推出的單片機(jī)都不只5 個(gè)中斷源,例如SST89E5

38、8RD 就有9 個(gè)中斷源。</p><p>  7. 一個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O 口,用于實(shí)現(xiàn)單片機(jī)之間或單機(jī)與微機(jī)之間的串行通信。</p><p>  8. 片內(nèi)振蕩器和時(shí)鐘產(chǎn)生電路,但石英晶體和微調(diào)電容需要外接。最高允許振蕩頻率為12MHz。SST89V58RD 最高允許振蕩頻率達(dá)40MHz,因而大大的提高了指令的執(zhí)行速度?!?】</p><

39、;p>  圖3-2 89C51單片機(jī)管腳圖</p><p><b>  部分引腳說(shuō)明:</b></p><p>  時(shí)鐘電路引腳XTAL1 和XTAL2:</p><p>  控制信號(hào)引腳RST,ALE,PSEN 和EA:</p><p>  輸入/輸出端口P0/P1/P2/P3:</p><p

40、>  3.1.289C51單片機(jī)的中斷系統(tǒng)</p><p>  89C51系列單片機(jī)的中斷系統(tǒng)有5個(gè)中斷源,2個(gè)優(yōu)先級(jí),可以實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE控制CPU是否響應(yīng)中斷請(qǐng)求;由中斷優(yōu)先級(jí)寄存器IP安排各中斷源的優(yōu)先級(jí);同一優(yōu)先級(jí)內(nèi)各中斷同時(shí)提出中斷請(qǐng)求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。</p><p>  3.1.3 89C51單片機(jī)的定時(shí)

41、/計(jì)數(shù)器</p><p>  在單片機(jī)應(yīng)用系統(tǒng)中,常常會(huì)有定時(shí)控制需求,如定時(shí)輸出、定時(shí)檢測(cè)、定時(shí)掃描等;也經(jīng)常要對(duì)外部事件進(jìn)行計(jì)數(shù)。89C51單片機(jī)內(nèi)集成有兩個(gè)可編程的定時(shí)/計(jì)數(shù)器:T0和T1,它們既可以工作于定時(shí)模式,也可以工作于外部事件計(jì)數(shù)模式,此外,T1還可以作為串行口的波特率發(fā)生器。</p><p>  3.2液晶顯示部分與89C51的接口</p><p>

42、;  如圖3-4所示。用89C51的P0口作為數(shù)據(jù)線,顯示電路采用4位共陰極LED數(shù)碼管,采用LED動(dòng)態(tài)顯示方式,從P0口輸出段碼,P2.0~P2.3作為位選控制端。其中P0做輸出口時(shí)需要加上拉電阻。</p><p>  圖3-3 液晶顯示與89C51的接口</p><p>  3.3 DS18B20介紹</p><p>  DS18B20引腳如圖3-6所示。<

43、;/p><p>  圖3-4 DS18B20引腳圖</p><p>  DALLAS 最新單線數(shù)字溫度傳感器DS18B20是一種新型的“一線器件”,其體積更小、更適用于多種場(chǎng)合、且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測(cè)量范圍為-55~+125 攝氏度,可編程為9位~12 位轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0

44、.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM 中,掉電后依然保存。被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便

45、。</p><p>  3.3.1溫度傳感器工作原理</p><p>  DS18B20的讀寫時(shí)序和測(cè)溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s 減為750ms。 DS18B20測(cè)溫原理:低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的

46、脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì) 低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重 新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即 為所測(cè)溫度。DS18B20功能特點(diǎn):</p><p>  1. 采用單總線技術(shù)

47、,與單片機(jī)通信只需要一根I/O線,在一根線上可以掛接多個(gè)DS18B20。</p><p>  2. 每只DS18B20具有一個(gè)獨(dú)有的,不可修改的64位序列號(hào),根據(jù)序列號(hào)訪問(wèn)地應(yīng)的器件。</p><p>  3. 低壓供電,電源范圍從3~5V,可以本地供電,也可以直接從數(shù)據(jù)線上竊取電源(寄生電源方式)。</p><p>  4. 測(cè)溫范圍為-55℃~+125℃,在-1

48、0℃~85℃范圍內(nèi)誤差為±0.5℃。</p><p>  5. 可編輯數(shù)據(jù)為9~12位,轉(zhuǎn)換12位溫度時(shí)間為750ms(最大)。</p><p>  6. 用戶可自設(shè)定報(bào)警上下限溫度。</p><p>  7. 報(bào)警搜索命令可識(shí)別和尋址哪個(gè)器件的溫度超出預(yù)定值。</p><p>  8. DS18B20的分辯率由用戶通過(guò)EEPROM

49、設(shè)置為9~12位。</p><p>  9. DS18B20可將檢測(cè)到溫度值直接轉(zhuǎn)化為數(shù)字量,并通過(guò)串行通信的方式與主控制器進(jìn)行數(shù)據(jù)通信。</p><p>  DS18B20有4個(gè)主要的數(shù)據(jù)部件:</p><p>  1. 光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位 (28H)是產(chǎn)品類型

50、標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。 </p><p>  2. DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625℃/LSB形式表達(dá),其中S為符號(hào)位

51、。</p><p>  3. DS18B20溫度傳感器的存儲(chǔ)器 DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器 TH、TL和結(jié)構(gòu)寄存器。 </p><p><b>  4. 配置寄存器。</b></p><p>  DS18B20內(nèi)部結(jié)構(gòu)及功能:</p>

52、<p>  DS18B20的內(nèi)部結(jié)構(gòu)如圖4-7所示。主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲(chǔ)用戶設(shè)定溫度上下限值的TH和TL觸發(fā)器,存儲(chǔ)與控制邏輯,8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等7部分</p><p>  圖3-7 DS18B20內(nèi)部結(jié)構(gòu)</p><p>  3.3.2 DS18B20相關(guān)介紹</p>

53、;<p><b>  溫度的讀?。?lt;/b></p><p>  DS18B20在出廠時(shí)以配置為12位,讀取溫度時(shí)共讀取16位,所以把后11位的2進(jìn)制轉(zhuǎn)化為10進(jìn)制后在乘以0.0625便為所測(cè)的溫度,還需要判斷正負(fù)。前5個(gè)數(shù)字為符號(hào)位,當(dāng)前5位為1時(shí),讀取的溫度為負(fù)數(shù);當(dāng)前5位為0時(shí),讀取的溫度為正數(shù)。</p><p>  DS18B20的初始化: <

54、;/p><p>  1. 先將數(shù)據(jù)線置高電平“1”。</p><p>  2. 延時(shí)(該時(shí)間要求的不是很嚴(yán)格,但是盡可能的短一點(diǎn))。</p><p>  3. 數(shù)據(jù)線拉到低電平“0”。</p><p>  4. 延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480到960微秒)。</p><p>  5.數(shù)據(jù)線拉到高電平“1”。&

55、lt;/p><p>  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í)控制</p><p>  7. 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最少要480微秒。</p>

56、;<p>  8.將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。 </p><p>  DS18B20的寫操作: </p><p>  1. 數(shù)據(jù)線先置低電平“0”。</p><p>  2. 延時(shí)確定的時(shí)間為15微秒。</p><p>  3. 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。</p><p>

57、  4. 延時(shí)時(shí)間為45微秒。 </p><p>  5. 將數(shù)據(jù)線拉到高電平。</p><p>  6. 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。</p><p>  7. 最后將數(shù)據(jù)線拉高。 </p><p>  DS18B20的讀操作:</p><p>  1. 將數(shù)據(jù)線拉高“1”。</p&

58、gt;<p><b>  2. 延時(shí)2微秒。</b></p><p>  3. 將數(shù)據(jù)線拉低“0”。</p><p>  4. 延時(shí)15微秒。</p><p>  5. 將數(shù)據(jù)線拉高“1”。</p><p>  6. 延時(shí)15微秒。</p><p>  7. 讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀

59、態(tài)位,并進(jìn)行數(shù)據(jù)處理。</p><p>  8. 延時(shí)30微秒。</p><p><b>  4 系統(tǒng)軟件設(shè)計(jì)</b></p><p><b>  4.1主程序設(shè)計(jì)</b></p><p>  整個(gè)系統(tǒng)的功能是由硬件電路配合軟件來(lái)實(shí)現(xiàn)的,當(dāng)硬件基本定型后,軟件的功能也就基本定下來(lái)了。從軟件的功能不

60、同可分為兩大類:一是監(jiān)控軟件(主程序),它是整個(gè)控制系統(tǒng)的核心,專門用來(lái)協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系。二是執(zhí)行軟件(子程序),它是用來(lái)完成各種實(shí)質(zhì)性的功能如測(cè)量、計(jì)算、顯示、通訊等。每一個(gè)執(zhí)行軟件也就是一個(gè)小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個(gè)執(zhí)行模塊進(jìn)行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結(jié)構(gòu),然后根據(jù)實(shí)時(shí)性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊

61、之間地調(diào)度關(guān)系。主程序流程見圖4-1</p><p>  圖 4-1 主程序流程圖 </p><p>  4.2 DS18B20初始化</p><p>  18B20初始化流程圖見圖4-2。</p><p>  圖 4-2 DS18B20初始化流程圖</p><p><b>  4.3數(shù)據(jù)測(cè)試</b&

62、gt;</p><p>  將溫度傳感器與冰水混合物接觸,經(jīng)過(guò)充分?jǐn)嚢柽_(dá)到熱平衡后調(diào)節(jié)系統(tǒng),使顯示讀數(shù)為0.00(標(biāo)定0℃);利用氣壓計(jì)讀出當(dāng)時(shí)當(dāng)?shù)氐拇髿鈮簭?qiáng),并根據(jù)大氣壓強(qiáng)和當(dāng)?shù)刂亓铀俣扔?jì)算出當(dāng)時(shí)的實(shí)際壓強(qiáng);根據(jù)沸點(diǎn)與壓強(qiáng)的關(guān)系查出沸點(diǎn)溫度。把溫度傳感器放入沸水中,待顯示讀數(shù)穩(wěn)定后重新調(diào)節(jié),使顯示器顯示讀數(shù)等于當(dāng)?shù)禺?dāng)時(shí)沸點(diǎn)溫度后工作結(jié)束。該溫度計(jì)的量程為0℃~100℃,讀數(shù)精度為0.1℃,實(shí)際使用一般在0℃~

63、100℃。采用0℃~50℃和50℃~100℃的精密水銀溫度計(jì)作檢驗(yàn)標(biāo)準(zhǔn),對(duì)設(shè)計(jì)的溫度計(jì)進(jìn)行測(cè)試,其結(jié)果表明能達(dá)到該精度要求。</p><p><b>  4.4仿真結(jié)果</b></p><p>  設(shè)置溫度上限為50度,溫度下限為0度。</p><p>  1.如圖4-3所示。此時(shí)溫度時(shí)60度,超出上限溫度,蜂鳴器響,實(shí)現(xiàn)報(bào)警。</p&g

64、t;<p><b>  圖4-3 仿真1</b></p><p>  2.如圖4-4所示。此時(shí)溫度為-5度,低于下限溫度,綠燈亮,且蜂鳴器響,實(shí)現(xiàn)報(bào)警。</p><p><b>  圖4-4 仿真2</b></p><p>  3.如圖4-5所示。此時(shí)溫度為25度,在所設(shè)范圍內(nèi),蜂鳴器不響,說(shuō)明溫度正常。&l

65、t;/p><p><b>  圖4-5 仿真3</b></p><p><b>  結(jié)論</b></p><p>  本文介紹了基于80C51單片機(jī)的數(shù)字溫度計(jì)控制系統(tǒng)的設(shè)計(jì),對(duì)整個(gè)硬件電路和軟件程序設(shè)計(jì)做了分析,文中介紹了數(shù)字溫度計(jì)的現(xiàn)狀及發(fā)展,介紹了仿真軟件proteus及keil的基本知識(shí),學(xué)習(xí)了proteus的仿真方法

66、和步驟,介紹了數(shù)字溫度計(jì)的設(shè)計(jì)方案選擇及原理介紹,加深了51單片機(jī)的知識(shí)了解,介紹51單片機(jī)的結(jié)構(gòu)、特點(diǎn)等。并學(xué)習(xí)了數(shù)字溫度傳感器DS18B20,設(shè)計(jì)軟件仿真,更直觀的反應(yīng)設(shè)計(jì)的正確性。本文對(duì)其中的一些基本原理也做了簡(jiǎn)要的概述。其實(shí)寫完了本篇論文,也僅僅是對(duì)數(shù)字溫度計(jì)控制系統(tǒng)做出了一個(gè)簡(jiǎn)單的設(shè)計(jì)方案,數(shù)字溫度計(jì)科利用在很多領(lǐng)域,在一些人不能直接進(jìn)入的場(chǎng)所,利用單片機(jī)控制的數(shù)字溫度計(jì),可以設(shè)置并控制其中的溫度,數(shù)字溫度計(jì)還可以利用在溫室中

67、,這樣就可以方便的控制溫室中的溫度,當(dāng)溫度超過(guò)所要求的溫度時(shí),可發(fā)生報(bào)警。總之?dāng)?shù)字溫度計(jì)利用在很多領(lǐng)域。本課題只是單片機(jī)控制數(shù)字溫度計(jì)系統(tǒng)得一種設(shè)計(jì)方法。</p><p><b>  致謝</b></p><p>  通過(guò)這一階段的努力,我的畢業(yè)論文《基于單片機(jī)的數(shù)字溫度計(jì)》終于完成了,這意味著大學(xué)生活即將結(jié)束。在大學(xué)階段,我在學(xué)習(xí)上和思想上都受益非淺,這除了自身的努

68、力外,與各位老師、同學(xué)和朋友的關(guān)心、支持和鼓勵(lì)是分不開的。</p><p>  在我寫本論文的過(guò)程中,同學(xué)們和老師給我提供了許多資料,并對(duì)實(shí)踐中出現(xiàn)的問(wèn)題給予耐心的解答,完稿之后在百忙之中仔細(xì)閱讀,給出修改意見,在此對(duì)他們表示感謝。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 楊素行著.模擬電子技術(shù)基礎(chǔ)(第二版)

69、.北京:高等教育出版社,2006.</p><p>  [2] 閻石著.數(shù)字電子技術(shù)基礎(chǔ)(第五版) .北京:高等教育出版社,2006.</p><p>  [3] 李全利,仲偉峰,徐軍著.單片機(jī)原理及應(yīng)用.北京:清華大學(xué)社,2006.</p><p>  [4] 何立民著.單片機(jī)高級(jí)教程.北京:北京航空航天大學(xué)出版社,2000.</p><p&g

70、t;  [5] 楊路明著.C語(yǔ)言程序設(shè)計(jì)教程(第2版) .北京:北京郵電大學(xué)出版社,2005.</p><p>  [6] 馬忠梅,籍順心,張凱等著.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)(第4版) .北京:北京航天航空大學(xué)出版社,2007.</p><p>  [7] 白駒珩,雷曉平著.單片計(jì)算機(jī)及其應(yīng)用.成都:電子科技大學(xué)出版社,1997.</p><p>  [8] 譚浩

71、強(qiáng)著.程序設(shè)計(jì)與開發(fā)技術(shù).北京:清華大學(xué)出版社,1991.</p><p>  [9] 鐘富昭著.8051單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用.北京:人民郵電出版,2007.</p><p>  [10] 于永,戴佳,常江著.51單片機(jī)C語(yǔ)言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講.北京:電子工業(yè)出版社,2007.</p><p>  [11] 梁翎著.C語(yǔ)言程序設(shè)計(jì)實(shí)用技巧與程序?qū)嵗?

72、上海:上海科普出版社,1998.</p><p>  [12] Li Wei-di,Guo Qiang. Application technology of LCD displays.China Publishing House of Electronics Industry, 2000.</p><p>  [13] Su Kai,Liu Qing-guo, Chen Guo-ping.

73、 Principle and design of MCS-51 Single-chip microprocessor.Metallurgical Industry Press, 2003.</p><p>  [14] Lou Jian’an Liang Xiaolin Feng Changjiang etc. A Missile Storage Battery Charging Instrument based

74、 on 80C196KC Single Chip Microcomputer.The 5th International Symposium on Test and Measurement. Shenzhen, Guangdong China.2003.</p><p>  15. omas C.Bartee.Computer Architecture and Logic Design[J].McGraw-Hil

75、l Inc. 1991.9</p><p>  [15] G Jiang M Zhang, X Xie, S Li.Application on temperature control</p><p>  of DS18B2[J].Control Engineering of China, 2003</p><p>  附錄 全部程序清單</p>&

76、lt;p>  #include<reg51.h></p><p>  #include <intrins.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p><p>  sbit DAT

77、A = P1^1; //DS18B20接入口</p><p>  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共陰極字型碼</p><p>  int temp; //溫度值</p><p>  int

78、ss;//中間的一個(gè)變量</p><p><b>  int dd;</b></p><p><b>  int j;</b></p><p>  uchar data b;//定時(shí)器中斷次數(shù)</p><p>  uchar data buf[4];//字型顯示中間變量</p>&

79、lt;p>  int alarmH=500; //默認(rèn)報(bào)警值</p><p>  int alarmL=-10;</p><p>  //定義開關(guān)的接入口</p><p>  sbit k1=P2^5;//+</p><p>  sbit k2=P2^6;//-</p><p>  sbit k3=P2

80、^7;//確認(rèn)</p><p>  sbit k4=P2^4;</p><p>  sbit bell=P1^0;</p><p>  sbit HLight=P1^2;</p><p>  sbit LLight=P1^3;</p><p>  sbit Red=P1^6;</p><p

81、>  sbit Green=P1^7;</p><p>  bit set=0;</p><p>  bit Flag=0;</p><p><b>  int n;</b></p><p><b>  //函數(shù)的聲明區(qū)</b></p><p>  void key_

82、to1();</p><p>  void key_to2();</p><p>  void delay(uint);</p><p>  void key();</p><p>  void Show();</p><p><b>  //函數(shù)的定義區(qū)</b></p><p

83、><b>  /*延時(shí)子函數(shù)*/</b></p><p>  void delay(uint num)</p><p><b>  {</b></p><p>  while(num--) ;</p><p><b>  }</b></p><p>

84、;  //DS18b20溫度傳感器所需函數(shù),分為初始化,讀寫字節(jié),讀取溫度4個(gè)函數(shù)</p><p>  Init_DS18B20(void) //傳感器初始化</p><p><b>  {</b></p><p>  uchar x=0;</p><p>  DATA = 1; //DQ復(fù)位</p&

85、gt;<p>  delay(10); //稍做延時(shí)</p><p>  DATA = 0; //單片機(jī)將DQ拉低</p><p>  delay(80); //精確延時(shí) 大于 480us //450</p><p>  DATA = 1; //拉高總線</p><p>  delay(20);</p&

86、gt;<p>  x=DATA; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗</p><p>  delay(30);</p><p><b>  }</b></p><p>  ReadOneChar(void) //讀一個(gè)字節(jié)</p><p><b>  {<

87、/b></p><p>  uchar i=0;</p><p>  uchar dat = 0;</p><p>  for (i=8;i>0;i--)</p><p><b>  {</b></p><p>  DATA = 0; // 給脈沖信號(hào)</p><p

88、><b>  dat>>=1;</b></p><p>  DATA = 1; // 給脈沖信號(hào)</p><p><b>  if(DATA)</b></p><p>  dat|=0x80;</p><p><b>  delay(8);</b></p

89、><p><b>  }</b></p><p>  return(dat);</p><p><b>  }</b></p><p>  WriteOneChar(unsigned char dat)//寫一個(gè)字節(jié)</p><p><b>  {</b>

90、</p><p>  uchar i=0;</p><p>  for (i=8; i>0; i--)</p><p><b>  {</b></p><p><b>  DATA = 0;</b></p><p>  DATA = dat&0x01;</

91、p><p>  delay(10);</p><p><b>  DATA = 1;</b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p><b>  delay(8);&

92、lt;/b></p><p><b>  }</b></p><p>  int ReadTemperature(void) //讀取溫度</p><p><b>  {</b></p><p>  uchar a=0;</p><p>  uchar b=0;<

93、/p><p><b>  int t=0;</b></p><p>  float tt=0;</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作</p><p>  WriteOneChar(0x44); //

94、啟動(dòng)溫度轉(zhuǎn)換</p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作</p><p>  WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度</p><p>  a=ReadOneChar();//低位</p&

95、gt;<p>  b=ReadOneChar();//高位</p><p><b>  t=b;</b></p><p><b>  t<<=8;</b></p><p><b>  t=t|a;</b></p><p>  tt=t*0.0625;&

96、lt;/p><p>  t= tt*10+0.5; </p><p>  return(t);</p><p><b>  }</b></p><p>  void display00() //*********顯示負(fù)值子函數(shù)</p><p><b>  {</b>&

97、lt;/p><p>  dd=-(temp-1);</p><p>  buf[1]=dd/100;</p><p>  buf[2]=dd/100;</p><p>  buf[3]=dd%100/10;</p><p>  buf[0]=dd%10;</p><p><b>  //動(dòng)

98、態(tài)顯示</b></p><p>  for(j=0;j<5;j++)</p><p><b>  {</b></p><p>  P2=0xff; // 初始燈為滅的</p><p><b>  P0=0x00;</b></p><p

99、>  P2=0xfd; //顯示小數(shù)點(diǎn)</p><p>  P0=0x80; //顯示小數(shù)點(diǎn)</p><p>  delay(100);</p><p>  P2=0xff; // 初始燈為滅的</p><p><b>  P0=0x00;</b></p><p&

100、gt;  P2=0xf7; //片選LCD1</p><p><b>  P0=0x40;</b></p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p><b>  P0=0x00;</b>

101、;</p><p>  P2=0xfb; //片選LCD2</p><p>  P0=table[buf[2]];</p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p><b>  P0=0x00;

102、</b></p><p>  P2=0Xfd; //片選LCD3</p><p>  P0=table[buf[3]];</p><p>  delay(100);</p><p><b>  P2=0xff;</b></p><p><b>  P0=0x00;<

103、;/b></p><p><b>  P2=0Xfe;</b></p><p>  P0=table[buf[0]]; //片選LCD4</p><p>  delay(100);</p><p>  P2=0xff; </p><p><b>  }</b>

104、;</p><p><b>  }</b></p><p><b>  //顯示正值子函數(shù)</b></p><p>  void display()</p><p><b>  {</b></p><p>  buf[1]=temp/1000;//

105、顯示百位</p><p>  buf[2]=temp/100%10;//顯示十位</p><p>  buf[3]=temp%100/10;//顯示個(gè)位</p><p>  buf[0]=temp%10; //第4位 南北秒個(gè)位</p><p>  for(j=0;j<3;j++) </p><p><b&

106、gt;  {</b></p><p>  P2=0xff; // 初始燈為滅的</p><p><b>  P0=0x00;</b></p><p>  P2=0xfd; //顯示小數(shù)點(diǎn)</p><p>  P0=0x80; //顯示小數(shù)點(diǎn)</p><p>

107、  delay(300);</p><p>  P2=0xff; // 初始燈為滅的</p><p><b>  P0=0x00;</b></p><p>  P2=0xf7; //片選LCD1</p><p>  P0=table[buf[1]];</

108、p><p>  delay(300);</p><p><b>  P2=0xff;</b></p><p><b>  P0=0x00;</b></p><p>  P2=0xfb; //片選LCD2</p><p>  P0=table[buf[

109、2]];</p><p>  delay(300);</p><p><b>  P2=0xff;</b></p><p><b>  P0=0x00;</b></p><p>  P2=0Xfd; //片選LCD3</p><p>  P0=table[buf[3]]

110、;</p><p>  delay(300);</p><p><b>  P2=0xff;</b></p><p><b>  P0=0x00;</b></p><p><b>  P2=0Xfe;</b></p><p>  P0=table[buf

111、[0]]; //片選LCD4</p><p>  delay(300);</p><p><b>  P2=0xff;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void key(

112、)//按鍵掃描子程序</p><p>  { if(k1!=1)</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  if(k1!=1)</b></p><p><b>  {</b><

113、;/p><p>  while(k1!=1)</p><p>  { key_to1();</p><p>  for(n=0;n<8;n++)</p><p><b>  Show();</b></p><p><b>  }</b></p><p&g

114、t;<b>  }</b></p><p><b>  }</b></p><p><b>  if(k2!=1)</b></p><p><b>  {</b></p><p>  delay(20);</p><p><b

115、>  if(k2!=1)</b></p><p><b>  {</b></p><p>  while(k2!=1)</p><p>  { key_to2(); </p><p>  for(n=0;n<8;n++)</p><p><b>  Show();

116、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  if(k3!=1)</b></p><p>  {TR0

117、=1; //復(fù)位,開定時(shí)</p><p>  temp=ReadTemperature();</p><p><b>  }</b></p><p><b>  if(k4!=1)</b></p><p>  { delay(20);</p><p><b>  

118、if(k4!=1)</b></p><p>  { while(k4!=1);</p><p><b>  set=!set;</b></p><p>  if(set==0)</p><p>  { Red=0;Green=1;}</p><p>  else { Green=0;

119、Red=1;}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void key_to1()</p><p><b>  {</b><

120、/p><p>  TR0=0; //關(guān)定時(shí)器</p><p><b>  temp+=10;</b></p><p>  if(temp>=1100)</p><p>  {temp=-550;}</p><p>  if(set==0)</p><p> 

121、 {alarmH=temp;}</p><p>  else {alarmL=temp;}</p><p><b>  }</b></p><p>  void key_to2()</p><p><b>  {</b></p><p><b>  TR0=0;&

122、lt;/b></p><p><b>  //關(guān)定時(shí)器</b></p><p><b>  temp-=10;</b></p><p>  if(temp<=-550)</p><p>  {temp=1100;}</p><p>  if(set==0)<

123、/p><p>  { alarmH=temp;}</p><p>  else { alarmL=temp;}</p><p><b>  }</b></p><p>  void alarm(void)</p><p><b>  {</b></p><p&

124、gt;  if(temp>alarmH||temp<alarmL) </p><p>  { //bell=1;</p><p>  //delay(50);</p><p><b>  //bell=0;</b></p><p><b>  Flag=1;</b></p>

125、;<p>  }else {Flag=0;}</p><p><b>  }</b></p><p>  logo()//開機(jī)的Logo </p><p>  { P0=0x40;</p><p><b>  P2=0xf7;</b></p><p>  

126、delay(50);</p><p><b>  P2=0xfb;</b></p><p>  delay(50);</p><p><b>  P2=0Xfd;</b></p><p>  delay(50);</p><p><b>  P2=0Xfe;<

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論