單片機(jī)課程設(shè)計(jì)——數(shù)字溫度計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b>  數(shù)字溫度計(jì)</b></p><p>  2009 年6月 15日</p><p><b>  摘要</b></p><p>  隨著電子技術(shù)的進(jìn)步和發(fā)展,單片機(jī)的應(yīng)用已經(jīng)普及到我們生活、工作、

2、科研等各個(gè)領(lǐng)域,其技術(shù)日趨成熟和完善。本設(shè)計(jì)是一個(gè)基于AT89S52單片機(jī),采用“一線總線”數(shù)字化溫度傳感器DS18B20的測(cè)溫系統(tǒng)。采用WAVE6000集成調(diào)試軟件編寫匯編程序?qū)崿F(xiàn)溫度的轉(zhuǎn)化、數(shù)值計(jì)算以及數(shù)碼管顯示當(dāng)前溫度功能,并且可以通過按鍵設(shè)置高低溫報(bào)警溫度,對(duì)應(yīng)配置報(bào)警器和報(bào)警指示燈。數(shù)碼管顯示采取動(dòng)態(tài)掃描的方法,簡(jiǎn)化了硬件電路;溫度調(diào)整運(yùn)用中斷處理,保證了報(bào)警溫度調(diào)整的實(shí)時(shí)性。本設(shè)計(jì)可以方便快捷的實(shí)現(xiàn)溫度的采集和顯示,具有精度

3、高、測(cè)溫范圍寬、體積小、功耗低等優(yōu)點(diǎn),適用于我們?nèi)粘I詈凸?、農(nóng)業(yè)生產(chǎn)中的溫度測(cè)量,也可以作為溫度處理模塊嵌入其它系統(tǒng)中,作為其他主系統(tǒng)的擴(kuò)展電路。DS18B20與AT89S52結(jié)合實(shí)現(xiàn)最簡(jiǎn)溫度檢測(cè)系統(tǒng),結(jié)構(gòu)簡(jiǎn)單,抗干擾能力強(qiáng),適合于惡劣環(huán)境下進(jìn)行現(xiàn)場(chǎng)溫度測(cè)量,有廣泛的應(yīng)用前景。</p><p>  關(guān)鍵詞:一線總線 動(dòng)態(tài)掃描 中斷處理 報(bào)警溫度</p><p><b>  目錄

4、</b></p><p><b>  1 概述3</b></p><p>  1.1 設(shè)計(jì)目的與意義3</p><p>  1.2 設(shè)計(jì)任務(wù)及要求3</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)4</p><p>  2.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證:4</p>

5、<p>  2.1.1 方案一4</p><p>  2.1.2 方案二4</p><p>  2.1.3 方案三4</p><p>  2.2 選用方案的設(shè)計(jì)思路4</p><p>  2.2.1 主控芯片5</p><p>  2.2.2 顯示電路5</p><p> 

6、 2.2.3 報(bào)警溫度調(diào)整電路5</p><p>  2.2.4 報(bào)警電路5</p><p>  2.2.5 溫度傳感器5</p><p>  2.3 DS18B20溫度傳感器與單片機(jī)的接口電路6</p><p>  2.4 系統(tǒng)整體硬件電路7</p><p><b>  3 軟件設(shè)計(jì)9</

7、b></p><p><b>  3.1主程序9</b></p><p>  3.2讀溫度子程序10</p><p>  3.3報(bào)警溫度調(diào)整子程序11</p><p>  3.4 顯示子程序12</p><p><b>  4 實(shí)驗(yàn)仿真13</b></p

8、><p>  4.1 溫度顯示13</p><p>  4.2 報(bào)警溫度調(diào)節(jié)15</p><p>  5 課程設(shè)計(jì)體會(huì)17</p><p><b>  參考文獻(xiàn)17</b></p><p>  附件1: 源程序代碼18</p><p>  附件2: 系統(tǒng)原理圖2

9、7</p><p><b>  1 概述</b></p><p>  隨著電子技術(shù)水平的不斷提高,單片機(jī)在日常生活中的應(yīng)用也越來越廣泛,它所給人類帶來的方便也是有目共睹的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子。隨著人們對(duì)它的要求越來越高,要為現(xiàn)代人的生活、工作以及科研提供更為方便的設(shè)施還需要從單片機(jī)技術(shù)和更優(yōu)越的溫度傳感器入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。

10、 我們?cè)O(shè)計(jì)的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)直觀、方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確等優(yōu)點(diǎn),其輸出溫度采用數(shù)碼管顯示。主要應(yīng)用于對(duì)測(cè)溫精度和測(cè)溫范圍要求比較高的場(chǎng)所,也可在科研實(shí)驗(yàn)室使用。該設(shè)計(jì)主控芯片使用AT89S52單片機(jī),測(cè)溫傳感器使用“一線總線”數(shù)字化溫度傳感器DS18B20,使用4位共陰極LED數(shù)碼管以動(dòng)態(tài)掃描方式,實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。</p><p>  1.1 設(shè)計(jì)目的與意義<

11、/p><p>  綜合利用所學(xué)單片機(jī)知識(shí)完成一個(gè)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)并仿真實(shí)現(xiàn)所要求的功能,從而加深對(duì)單片機(jī)軟硬件知識(shí)的理解和對(duì)相關(guān)傳感器的原理和使用方法的掌握,獲得進(jìn)一步的應(yīng)用實(shí)踐經(jīng)驗(yàn),為走出校門從事單片機(jī)應(yīng)用的相關(guān)工作打下基礎(chǔ)。該設(shè)計(jì)同時(shí)也是我們對(duì)所學(xué)理論知識(shí)進(jìn)行的檢測(cè)和驗(yàn)證,理論與實(shí)踐相結(jié)合,探索知識(shí)的真理殿堂,不拘泥于課本,培養(yǎng)自己發(fā)現(xiàn)問題并獨(dú)立解決問題的能力。</p><p>  1.

12、2 設(shè)計(jì)任務(wù)及要求 1)基本范圍-50℃-110℃ 2)精度誤差小于0.5℃ 3)LED數(shù)碼直讀顯示 4)擴(kuò)展功能 5)可以任意設(shè)定上下限報(bào)警溫度</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p>  2.1數(shù)字溫度計(jì)設(shè)計(jì)方案論證:</p><p>  2.1.1 方案一 由于本設(shè)計(jì)是測(cè)溫電路,

13、可以使用熱敏電阻等器件利用其感溫效應(yīng),在把隨溫度變化的電壓或電流采集過來進(jìn)行A/D轉(zhuǎn)換之后,再利用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩,而且熱敏電阻的線性度不高,測(cè)量精度。</p><p>  2.1.2 方案二 直接使用數(shù)字溫度傳感器來測(cè)溫,可以使用“一線總線”數(shù)字化溫度傳感器DS18B20。此傳感器可以直接讀取被測(cè)溫度值,只需進(jìn)

14、行簡(jiǎn)單轉(zhuǎn)換,就可以得到所測(cè)環(huán)境的溫度值。顯示電路采用串口移位靜態(tài)顯示方式,采用串入并出移位芯片74LS164和數(shù)碼管來實(shí)現(xiàn)溫度的顯示。</p><p>  2.1.3 方案三 也是直接使用數(shù)字溫度傳感器DS18B20來測(cè)溫,但顯示電路采用動(dòng)態(tài)掃描的方式來實(shí)現(xiàn),電路簡(jiǎn)單,容易實(shí)現(xiàn),節(jié)約成本。 比較以上三種方案,很容易看出,采用方案三,硬件電路比較簡(jiǎn)單,軟件設(shè)計(jì)也不難,是為最佳選擇,故采用方案三。&l

15、t;/p><p>  2.2 選用方案的設(shè)計(jì)思路 數(shù)字溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖2-1所示,主控芯片采AT89S52,溫度傳感器采用DS18B20,用4位LED數(shù)碼管以動(dòng)態(tài)掃描方式實(shí)現(xiàn)溫度顯示,報(bào)警溫度調(diào)整采用獨(dú)立按鍵,報(bào)警電路由蜂鳴器和報(bào)警指示燈組成。 </p><p>  圖2-1 系統(tǒng)總體框圖</p><p>  2.2.1 主控芯片 AT

16、89S52價(jià)格便宜、體積小,很適合便攜手持式產(chǎn)品的設(shè)計(jì),4個(gè)IO端口和2個(gè)外部中斷完全能滿足本設(shè)計(jì)的需要。</p><p>  2.2.2 顯示電路</p><p>  顯示電路采用4位共陰LED數(shù)碼管,從P0口輸出段碼,接470Ω上拉電阻,用P2口的P2.4-P2.7腳來輸出數(shù)碼管動(dòng)態(tài)掃描位選信號(hào)。</p><p>  2.2.3 報(bào)警溫度調(diào)整電路</p&g

17、t;<p>  采用獨(dú)立鍵盤,分別用外部中斷0和1來調(diào)整高溫報(bào)警溫度和低溫報(bào)警溫度,在中斷中查詢加減按鍵的動(dòng)作來調(diào)整溫度,進(jìn)入中斷后,清EA,然后將與中斷1即P3.3腳相連的按鍵作為確定鍵使用。</p><p>  2.2.4 報(bào)警電路</p><p>  采用蜂鳴器來發(fā)出報(bào)警聲音,超高亮發(fā)光二極管作為報(bào)警指示燈,由于AT89S52的驅(qū)動(dòng)能力較弱,所以蜂鳴器要加三極管驅(qū)動(dòng),報(bào)

18、警燈外接上拉電阻,單片機(jī)用灌電流方式點(diǎn)亮它,可獲得較高的亮度!</p><p>  2.2.5 溫度傳感器 DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的分辨率的設(shè)定。</p><p>  DS18B20的性能特點(diǎn)如下: ●零待機(jī)功耗;●溫度以9或12位數(shù)字;

19、●用戶可定義報(bào)警設(shè)置;</p><p>  ●可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p>  ●獨(dú)特的單線接口,僅需要一個(gè)端口引腳進(jìn)行通信;●多個(gè)DS18B20可以并聯(lián)在一條線上,輕松實(shí)現(xiàn)傳感器網(wǎng)絡(luò)組建;●報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件。 </p><p>  DS18B20內(nèi)部高速暫存RAM為8字節(jié)的

20、存儲(chǔ)器,前2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。</p><p>  DS18B20溫度轉(zhuǎn)換得時(shí)間比較長(zhǎng),而且分辨率越高,所需要得溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。具體得分辨率轉(zhuǎn)換為相應(yīng)精度得溫度數(shù)值所需時(shí)間如表2-1所示。我</p><p>  們的設(shè)計(jì)采用12位精度,因此對(duì)18B

21、20操作時(shí)要對(duì)時(shí)序根據(jù)表2-1來調(diào)整。</p><p>  當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)中。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低8位在先,高8位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫

22、度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。</p><p>  表2-1 DS18B20溫度轉(zhuǎn)換時(shí)間表</p><p>  另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。</p><

23、p>  1、初始化:?jiǎn)慰偩€的所有處理均從初始化開始。初始化過程是主機(jī)通過向作為從機(jī)的DS18B20芯片發(fā)一個(gè)具有一定時(shí)間寬度的初始化脈沖實(shí)現(xiàn)的。初始化后,才可進(jìn)行讀寫操作。</p><p>  2 、ROM操作命令:總線主機(jī)檢測(cè)到DS18B20的存在 便可以發(fā)出ROM操作命令。ROM操作命令如表2-2所示:</p><p>  表2-2 ROM操作命令</p><

24、;p>  3、存儲(chǔ)器操作:存儲(chǔ)器操作命令如表2-3所示:</p><p>  4、時(shí)序:主機(jī)使用時(shí)間隙(time slots)來讀寫DS18B20的數(shù)據(jù)位和寫命令字的位。</p><p>  2.3 DS18B20溫度傳感器與單片機(jī)的接口電路</p><p>  DS18B20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)DS18B20的1腳接地,2腳作為

25、信號(hào)線,3腳接電源;另一種是寄生電源供電方式。本設(shè)計(jì)采用第一種供電方式,為保證在有效的DS18B20時(shí)鐘周期內(nèi)提供足夠的電流,可在信號(hào)線與電源線之間接上拉電阻,接口電路如圖2-2所示。</p><p>  表2-3 存儲(chǔ)區(qū)操作命令</p><p>  圖2-2 DS18B20與單片機(jī)的接口電路</p><p>  2.4 系統(tǒng)整體硬件電路</p>

26、<p>  系統(tǒng)整體硬件電路包括:傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警溫度調(diào)整電路和報(bào)警電路,如圖2-3所示。圖中有4個(gè)獨(dú)立式按鍵可以分別調(diào)整溫度計(jì)的上下限報(bào)警溫度,蜂鳴器可以在被測(cè)溫度超出上下限范圍內(nèi)時(shí),發(fā)出報(bào)警鳴叫聲音,同時(shí)報(bào)警指示燈超高亮發(fā)光二極管將被點(diǎn)亮。圖中畫出來的是上電復(fù)位電路,實(shí)際電路將采用按健加上電復(fù)位電路,使用比較方便,在程序跑飛時(shí),可以手動(dòng)復(fù)位,這樣就不用重啟單片機(jī)電源,就可以實(shí)現(xiàn)復(fù)位。顯示電路采用

27、動(dòng)態(tài)掃描方式,這樣不僅使用單片機(jī)端口較少,而且外圍電路也比較簡(jiǎn)單。</p><p>  圖2-3 系統(tǒng)整體硬件電路</p><p><b>  3 軟件設(shè)計(jì)</b></p><p>  系統(tǒng)程序主要包括主程序,讀溫度子程序,報(bào)警溫度調(diào)整子程序和顯示子程序。</p><p><b>  3.1主程序</b

28、></p><p>  主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20測(cè)量的當(dāng)前溫度值,其程序流程如圖3-1所示。</p><p>  圖3-1 主程序流程圖</p><p><b>  3.2讀溫度子程序</b></p><p>  讀出溫度子程序的主要功能是讀出溫度轉(zhuǎn)換之后RAM中的前2個(gè)字節(jié)

29、中暫存的溫度值,其程序流程圖如圖3-2所示。</p><p>  圖3-2 讀溫度流程圖</p><p>  3.3報(bào)警溫度調(diào)整子程序</p><p>  報(bào)警溫度調(diào)整子程序主要是對(duì)按鍵的處理,具體流程如圖3-3所示。</p><p>  圖3-3 報(bào)警溫度調(diào)整流程圖</p><p><b>  3.4

30、顯示子程序</b></p><p>  顯示子程序要先判斷要顯示的是18B20采集到的溫度值還是報(bào)警溫度值,再計(jì)算出溫度值的百位(若溫度值大于99°C)、十位和個(gè)位并掃描顯示,如圖3-4。</p><p>  圖3-4 顯示流程圖</p><p><b>  4 實(shí)驗(yàn)仿真</b></p><p>

31、<b>  4.1 溫度顯示</b></p><p>  由于18B20的測(cè)溫范圍是-55~125°C,所以當(dāng)溫度為負(fù)值時(shí),第一位數(shù)碼管用來顯示溫度的負(fù)號(hào),如圖4-1所示。</p><p><b>  圖4-1</b></p><p>  當(dāng)溫度值的十位數(shù)字為0時(shí),不顯示,如圖4-2所示。</p>

32、<p><b>  圖4-2</b></p><p>  溫度值為正且小于100°C時(shí),第一位數(shù)碼管也是用來顯示符號(hào),為正時(shí)不顯示,如圖4-3。</p><p><b>  圖4-3</b></p><p>  當(dāng)溫度值大于等于100°C時(shí),第一位數(shù)碼管用來顯示溫度的百位數(shù)字,如圖4-4。&l

33、t;/p><p><b>  圖4-4</b></p><p>  4.2 報(bào)警溫度調(diào)節(jié)</p><p>  調(diào)節(jié)高溫報(bào)警溫度時(shí),先按下高溫調(diào)節(jié)按鍵,進(jìn)入高溫調(diào)節(jié)模式,此時(shí)4位數(shù)碼管的第一位當(dāng)報(bào)警溫度小于100°C時(shí)不顯示,大于等于100°C時(shí)顯示百位數(shù)字,第二位顯示報(bào)警溫度的十位數(shù)字,第三位顯示報(bào)警溫度的個(gè)位,第四位顯示“H”

34、 ,表示處于高溫報(bào)警溫度調(diào)節(jié)狀態(tài)。按下加一鍵后報(bào)警溫度值會(huì)加一并且數(shù)碼管閃亮一次顯示更新的高溫報(bào)警溫度值,按下減一鍵時(shí)執(zhí)行同樣操作。直到按下確定鍵,才退出設(shè)定狀態(tài)。</p><p>  高溫報(bào)警溫度調(diào)節(jié)狀態(tài)如圖4-5所示。</p><p>  調(diào)節(jié)低溫報(bào)警溫度時(shí),先按下低溫調(diào)節(jié)按鍵,進(jìn)入低溫調(diào)節(jié)模式,數(shù)碼管顯示和高溫調(diào)節(jié)時(shí)相似,只是第四位顯示“L” ,表示處于低溫報(bào)警溫度調(diào)節(jié)狀態(tài)。按鍵操作

35、也和高溫調(diào)節(jié)時(shí)相同。</p><p>  低溫報(bào)警溫度調(diào)節(jié)狀態(tài)如圖4-6所示。</p><p>  在此值得一提的是低溫調(diào)節(jié)按鍵和確認(rèn)鍵是復(fù)用的,也就是說如果按下低溫調(diào)節(jié)按鍵后再按一次,就會(huì)直接退出低溫設(shè)定狀態(tài)。另外低溫調(diào)節(jié)按鍵還具有關(guān)報(bào)警電路的功能,當(dāng)所測(cè)溫度值超出上下限報(bào)警溫度時(shí),蜂鳴器響同時(shí)報(bào)警指示燈亮,此時(shí)連續(xù)按下2次確認(rèn)鍵即可關(guān)掉報(bào)警,再連續(xù)按下2次確認(rèn)鍵就又進(jìn)入了報(bào)警狀態(tài)。&l

36、t;/p><p>  圖4-5 高溫報(bào)警溫度調(diào)節(jié)</p><p>  圖4-6 低溫報(bào)警溫度調(diào)節(jié)</p><p><b>  5 課程設(shè)計(jì)體會(huì)</b></p><p>  經(jīng)過將近三周的學(xué)習(xí)與實(shí)踐,終于成功的完成了我的數(shù)字溫度計(jì)的設(shè)計(jì),它的各方面的性能基本上都已達(dá)到課程設(shè)計(jì)要求。 </p><p>

37、;  在本次設(shè)計(jì)過程中,我發(fā)現(xiàn)了很多的問題,而這些問題是在只學(xué)習(xí)課本知識(shí)時(shí)所不能遇到的,比如說由于AT89S52的端口驅(qū)動(dòng)能力較弱,用P0口送段碼時(shí)要接上拉電阻,數(shù)碼管的位選端理論上采用三極管驅(qū)動(dòng)才能使數(shù)碼管的亮度比較可觀,可是在實(shí)際操作中,接上三極管驅(qū)動(dòng)后出現(xiàn)了亮度不均勻的現(xiàn)象,而且很容受到干擾,去掉三極管驅(qū)動(dòng)電路之后,顯示正常,而且亮度也能滿足要求,這就是理論與實(shí)踐的差別。我在大量搜集資料的基礎(chǔ)上,結(jié)合向同學(xué)和老師請(qǐng)教的策略,把遇到

38、的問題都一一解決了,這使我增長(zhǎng)了不少知識(shí)。尤其在用匯編語(yǔ)言編寫單片機(jī)程序方面,我終于邁出了堅(jiān)實(shí)的一步。</p><p>  從這次的課程設(shè)計(jì)中,我真真切切的體會(huì)到了理論與實(shí)踐的差距,所以在以后的學(xué)習(xí)中,我會(huì)更加注意理論聯(lián)系實(shí)際,多親自動(dòng)手操作。把我所學(xué)的理論知識(shí)運(yùn)用到實(shí)踐當(dāng)中去,在實(shí)踐中檢驗(yàn)理論知識(shí),以此來加深對(duì)其的理解和掌握。這是我在這次課程設(shè)計(jì)中的最大收獲。</p><p><b

39、>  參考文獻(xiàn)</b></p><p>  [1] 余發(fā)山,王福忠,單片機(jī)原理及應(yīng)用技術(shù),徐州:中國(guó)礦業(yè)大學(xué)出版社,2008,</p><p>  [2] 王為青,邱文勛,51單片機(jī)應(yīng)用開發(fā)案例精選,北京:人民郵電出版社,2007.8,145-158</p><p>  附件1: 源程序代碼</p><p><b&g

40、t;  ;溫度檢測(cè)</b></p><p>  TEMPER_L EQU 29H ;溫度低8位</p><p>  TEMPER_H EQU 28H ;溫度高8位</p><p>  FLAG0 EQU 35H

41、 ;溫度調(diào)整狀態(tài)標(biāo)志</p><p>  FLAG1 EQU 36H ;是否檢測(cè)到18b20標(biāo)志位</p><p>  FLAG2 EQU 37H ;報(bào)警標(biāo)志位</p><p>  FLAG3 EQU 38H

42、 ;高低溫調(diào)整標(biāo)志位</p><p>  FLAG4 EQU 39H ;閃爍標(biāo)志位</p><p>  F_BIT EQU 20H ;符號(hào)位</p><p>  A_BIT EQU 21H

43、 ;數(shù)碼管個(gè)位</p><p>  B_BIT EQU 22H ;數(shù)碼管十位</p><p>  X_BIT EQU 23H ;小數(shù)位</p><p>  H_TEM EQU 24H

44、 ;高溫報(bào)警</p><p>  L_TEM EQU 25H ;低溫報(bào)警</p><p>  DQ BIT P2.2 ;18B20數(shù)據(jù)線</p><p>  ORG 0000H</p>

45、;<p>  LJMP MAIN</p><p>  ORG 0003H</p><p>  LJMP KEY_H</p><p>  ORG 0013H</p><p>  LJMP KEY_L</p><p>  ORG 0050H</p><p

46、>  MAIN: MOV SP,#57H</p><p>  MOV TCON,#00H ;定義中斷方式</p><p>  SETB EX0</p><p>  SETB EX1</p><p>  SETB EA</p><p>  MOV

47、 24H,#35 ;送高溫報(bào)警初值</p><p>  MOV 25H,#15 ;送低溫報(bào)警初值</p><p>  CLR FLAG2</p><p>  MAIN0: LCALL GET_TEMPER ;讀轉(zhuǎn)換溫度</p><

48、;p>  MOV A,28H</p><p>  ANL A,#0F0H</p><p>  JZ ZHENG ;判斷符號(hào)位</p><p><b>  CLR C</b></p><p>  MOV A,29H</p><p

49、><b>  CPL A</b></p><p><b>  INC A</b></p><p>  MOV 29H,A</p><p>  MOV A,28H</p><p><b>  CPL A</b></p>&l

50、t;p>  JNC AAA</p><p><b>  INC A</b></p><p>  AAA: MOV 28H,A</p><p>  MOV F_BIT,#10</p><p>  AJMP BBB</p><p>  ZHEN

51、G: MOV F_BIT,#11</p><p>  BBB: MOV A,29H</p><p>  ANL A,#0FH</p><p>  MOV DPTR,#NUMTAB2 ;查表求得小數(shù)位值</p><p>  MOVC A,@A+DPTR</p&g

52、t;<p>  MOV X_BIT,A</p><p>  MOV A,29H</p><p>  MOV C,40H</p><p><b>  RRC A</b></p><p>  MOV C,41H</p><p><b>  RRC

53、 A</b></p><p>  MOV C,42H</p><p><b>  RRC A</b></p><p>  MOV C,43H</p><p><b>  RRC A</b></p><p>  JB

54、FLAG2,ABOVE ;若報(bào)警標(biāo)志位為1,關(guān)報(bào)警</p><p>  CJNE A,24H,BUD ;若報(bào)警標(biāo)志位為0,則判斷是否</p><p>  BUD: JC BELOW ;報(bào)警</p><p>  SETB P2.0</p>

55、<p>  CLR P2.1</p><p>  AJMP DDD</p><p>  BELOW: CJNE A,25H,BUD0</p><p>  BUD0: JNC ABOVE</p><p>  SETB P2.0</p><p>

56、  CLR P2.1</p><p>  AJMP DDD</p><p>  ABOVE: CLR P2.0</p><p>  SETB P2.1</p><p>  DDD: MOV 29H,A</p><p>  CLR FLAG0<

57、/p><p>  LCALL DISPLAY ;調(diào)用顯示子程序</p><p>  AJMP MAIN0 ;循環(huán)處理</p><p>  ;DS18B20復(fù)位初始化</p><p>  INIT_18B20: SETB DQ</p><p>&

58、lt;b>  NOP</b></p><p><b>  CLR DQ</b></p><p>  MOV R1,#3</p><p>  TSR1: MOV R0,#107</p><p>  DJNZ R0,$</p><p>  DJNZ

59、 R1,TSR1</p><p><b>  SETB DQ</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  M

60、OV R0,#25</p><p>  TSR2: JNB DQ,TSR3</p><p>  DJNZ R0,TSR2</p><p>  LJMP TSR4</p><p>  TSR3: SETB FLAG1</p><p>  LJMP TSR5&l

61、t;/p><p>  TSR4: CLR FLAG1</p><p>  LJMP TSR7</p><p>  TSR5: MOV R0,#117</p><p>  TSR6: DJNZ R0,TSR6</p><p>  TSR7:

62、 SETB DQ</p><p><b>  RET</b></p><p><b>  ;讀出轉(zhuǎn)換后的溫度</b></p><p>  GET_TEMPER: SETB DQ</p><p>  LCALL INIT_18B20</p><p>  JB

63、 FLAG1,TSS2</p><p><b>  CLR DQ</b></p><p><b>  RET</b></p><p>  TSS2: MOV A,#0CCH</p><p>  LCALL WRITE_18B20</p><p&g

64、t;  MOV A,#44H</p><p>  LCALL WRITE_18B20</p><p>  LCALL DISPLAY</p><p>  LCALL INIT_18B20</p><p>  MOV A,#0CCH</p><p>  LCALL WRITE_18B20</p><

65、;p>  MOV A,#0BEH</p><p>  LCALL WRITE_18B20</p><p>  LCALL READ_18B20</p><p><b>  RET</b></p><p><b>  ;寫DS18B20</b></p><p>  WR

66、ITE_18B20: MOV R2,#8</p><p><b>  CLR C</b></p><p>  WR1: CLR DQ</p><p>  MOV R3,#5</p><p>  DJNZ R3,$</p><p><b>  RRC

67、 A</b></p><p>  MOV DQ,C</p><p>  MOV R3,#21</p><p>  DJNZ R3,$</p><p><b>  SETB DQ</b></p><p><b>  NOP</b></p&

68、gt;<p>  DJNZ R2,WR1</p><p><b>  SETB DQ</b></p><p><b>  RET</b></p><p>  ;讀18b20的子程序</p><p>  READ_18B20: MOV R4,#2</p>&l

69、t;p>  MOV R1,#29H</p><p>  RE00: MOV R2,#8</p><p>  RE01: CLR C</p><p><b>  SETB DQ</b></p><p><b>  NOP</b></p>

70、;<p><b>  NOP</b></p><p><b>  CLR DQ</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b&g

71、t;</p><p><b>  SETB DQ</b></p><p>  MOV R3,#8</p><p>  RE10: DJNZ R3,RE10</p><p>  MOV C,DQ</p><p>  MOV R3,#21</p>&l

72、t;p>  RE20: DJNZ R3,RE20</p><p><b>  RRC A</b></p><p>  DJNZ R2,RE01</p><p>  MOV @R1,A</p><p><b>  DEC R1</b></p>

73、<p>  DJNZ R4,RE00</p><p><b>  RET</b></p><p>  ;報(bào)警溫度調(diào)整子程序</p><p>  KEY_H: ACALL D5MS</p><p>  JB P3.2,OVER</p><p><b> 

74、 PUSH ACC</b></p><p><b>  PUSH PSW</b></p><p><b>  SETB RS0</b></p><p><b>  CLR EA</b></p><p>  SETB FLAG0

75、 ;置位溫度調(diào)整標(biāo)志位</p><p>  SETB FLAG3 ;置位高溫報(bào)警調(diào)整標(biāo)志位</p><p>  MOV A,24H</p><p>  MOV 30H,A</p><p>  KEY_CH: JB P3.4,JJ_H</p><p&g

76、t;  ACALL D20MS</p><p>  JB P3.4,JJ_H</p><p><b>  INC 24H</b></p><p>  MOV A,24H</p><p>  MOV 30H,A</p><p>  ACALL DISPLAY</p>&

77、lt;p>  JJ_H: JB P3.5,QD_H</p><p>  ACALL D20MS</p><p>  JB P3.5,QD_H</p><p><b>  DEC 24H</b></p><p>  MOV A,24H</p><p> 

78、 MOV 30H,A</p><p>  ACALL DISPLAY</p><p>  QD_H: JB P3.3,KEY_CH</p><p>  ACALL D5MS</p><p>  JB P3.3,KEY_CH</p><p>  CLR FLAG0

79、 ;即將退出調(diào)整,清零調(diào)整狀態(tài)位</p><p><b>  CLR RS0</b></p><p><b>  POP PSW</b></p><p><b>  POP ACC</b></p><p><b>  SETB EA&l

80、t;/b></p><p>  OVER: RETI</p><p>  KEY_L: ACALL D20MS</p><p>  JB P3.3,OVER0</p><p><b>  PUSH ACC</b></p><p><b>  PU

81、SH PSW</b></p><p><b>  SETB RS0</b></p><p>  SETB FLAG0 ;置位溫度調(diào)整標(biāo)志位</p><p>  CPL FLAG2 ;對(duì)報(bào)警標(biāo)志位取反</p><p>  CL

82、R FLAG3 ;清零高溫報(bào)警調(diào)整標(biāo)志位</p><p><b>  CLR EA</b></p><p>  MOV A,25H</p><p>  MOV 30H,A</p><p>  KEY_CL: JB P3.4,JJ_L</p>

83、;<p>  ACALL D20MS</p><p>  JB P3.4,JJ_L</p><p>  INC 25H</p><p>  MOV A,25H</p><p>  MOV 30H,A</p><p>  ACALL DISPLAY</p><p&g

84、t;  JJ_L: JB P3.5,QD_L</p><p>  ACALL D20MS</p><p>  JB P3.5,QD_L</p><p><b>  DEC 25H</b></p><p>  MOV A,25H</p><p>  MOV

85、 30H,A</p><p>  ACALL DISPLAY</p><p>  QD_L: JB P3.3,KEY_CL</p><p>  ACALL D20MS</p><p>  JB P3.3,KEY_CL</p><p>  CLR FLAG0

86、 ;即將退出調(diào)整,清零調(diào)整狀態(tài)位</p><p><b>  CLR RS0</b></p><p><b>  POP PSW</b></p><p><b>  POP ACC</b></p><p><b>  SETB EA</b&

87、gt;</p><p>  OVER0: RETI</p><p><b>  ;顯示子程序</b></p><p>  DISPLAY: JB FLAG0,JIAN ;調(diào)整狀態(tài)位為1,報(bào)警溫度送顯示處理</p><p>  MOV A,29H

88、 ;否則處理溫度傳感器讀取的溫度值</p><p><b>  AJMP TEM</b></p><p>  JIAN: MOV A,30H</p><p>  TEM: CJNE A,#100,NX ;若溫度>=100°,符號(hào)位用來顯示百位</p&

89、gt;<p>  NX: JC NNN</p><p>  MOV B,#100</p><p><b>  DIV AB</b></p><p>  MOV F_BIT,A</p><p>  MOV 29H,B</p><p>  M

90、OV A,29H</p><p><b>  AJMP MM</b></p><p>  NNN: JNB FLAG0,MM</p><p>  MOV F_BIT,#11 ;若符號(hào)位值為0,不顯示</p><p>  MM: MOV B,#

91、10</p><p><b>  DIV AB</b></p><p>  MOV B_BIT,A</p><p>  MOV A_BIT,B</p><p>  MOV R1,#200 ;循環(huán)顯示200次</p><p>  DPLOP:

92、 MOV A,F_BIT</p><p>  MOV DPTR,#NUMTAB1 ;查表顯示</p><p>  MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p>  CLR P2.7</p><p>  ACALL D1MS</p>&l

93、t;p>  SETB P2.7</p><p>  MOV A,B_BIT</p><p>  JNZ CCC</p><p>  MOV A,F_BIT</p><p>  CJNE A,#10,VVV</p><p>  VVV: JC CCC</p>

94、<p>  MOV B_BIT,#11 ;當(dāng)符號(hào)位用作百位且十位為0時(shí)</p><p>  MOV A,B_BIT ;顯示0,否則不顯示0</p><p>  CCC: MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p&

95、gt;  CLR P2.6</p><p>  ACALL D1MS</p><p>  SETB P2.6</p><p>  JB FLAG0,XIAO ;報(bào)警溫度調(diào)整狀態(tài)時(shí) </p><p>  MOV A,X_BIT ;高溫報(bào)警調(diào)整H或低溫報(bào)警調(diào)整L<

96、;/p><p>  AJMP XIAO1</p><p>  XIAO: JB FLAG3,GAO</p><p>  MOV A,#13</p><p>  AJMP XIAO1</p><p>  GAO: MOV A,#12</p><p>  

97、XIAO1: MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p>  CLR P2.4</p><p>  ACALL D1MS</p><p>  SETB P2.4</p><p>  MOV A,A_BIT</p><p>

98、  MOVC A,@A+DPTR</p><p>  MOV P0,A</p><p>  JB FLAG0,NEXT</p><p>  SETB P0.7</p><p>  NEXT: CLR P2.5</p><p>  ACALL D1MS</p><p&

99、gt;  SETB P2.5</p><p>  JB FLAG0,NEXT0</p><p>  CLR P0.7</p><p>  NEXT0: DJNZ R1,DPLOP</p><p><b>  RET</b></p><p><b>  ;延時(shí)1

100、ms</b></p><p>  D1MS: MOV R7,#200</p><p>  L1: DJNZ R7,$</p><p><b>  RET</b></p><p><b>  ;延時(shí)5ms</b></p><p&g

101、t;  D5MS: MOV R6,#5</p><p>  L3: ACALL D1MS</p><p>  DJNZ R6,L3</p><p><b>  RET</b></p><p><b>  ;延時(shí)20MS</b></p><p

102、>  D20MS: MOV R5,#4</p><p>  L2: ACALL D5MS</p><p>  DJNZ R5,L2</p><p><b>  RET</b></p><p>  NUMTAB1: DB 3FH,06H,5BH,4FH,66H,6DH,7D

103、H ;共陰極數(shù)碼管7段碼</p><p>  DB 07H ,7FH,6FH,40H,00H,76H,38H</p><p>  NUMTAB2: DB 00H,01H,01H,02H,03H,03H,04H,04H ;小數(shù)位碼表</p><p>  DB 05H,06H,06H,007H,08H,08H,09H,09H</

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論