




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第37頁(yè)P(yáng)AGEPAGE37多路溫濕度顯示與控制系統(tǒng)設(shè)計(jì)1緒論1.1系統(tǒng)背景在工、農(nóng)業(yè)生產(chǎn)和日常生活中,對(duì)溫度的測(cè)量及控制占據(jù)著極其重要地位。首先讓我們了解一下多點(diǎn)溫度檢測(cè)系統(tǒng)在各個(gè)方面的應(yīng)用領(lǐng)域:消防電氣的非破壞性溫度檢測(cè),電力、電訊設(shè)備之過熱故障預(yù)知檢測(cè),空調(diào)系統(tǒng)的溫度檢測(cè),各類運(yùn)輸工具之組件的過熱檢測(cè),保全與監(jiān)視系統(tǒng)之應(yīng)用,醫(yī)療與健診的溫度測(cè)試,化工、機(jī)械…等設(shè)備溫度過熱檢測(cè)。溫度檢測(cè)系統(tǒng)應(yīng)用十分廣闊。1.2功能要求1.1溫度分辨率為0.1℃0.01℃;1.2傳感器與單片機(jī)采用串行數(shù)據(jù)傳送。2方案論證;本溫度計(jì)的設(shè)計(jì)采用美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測(cè)元件,測(cè)量溫度范圍是-55~125℃,最大分辨率可達(dá)0.0625℃。DS18B20可直接讀出被測(cè)量溫度值,而采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。本系統(tǒng)為多路溫濕度顯示,DS18B20采用外面供電方式,理論上可以在一根數(shù)據(jù)總線上掛256個(gè)DS18B20 ,但時(shí)間應(yīng)用中發(fā)現(xiàn),如果連接25個(gè)以上的DS18B20仍舊有可能產(chǎn)生功耗問題。在這種情況下,我們可以采取分組的方式,用單片機(jī)的多個(gè)I/O來驅(qū)動(dòng)多路DS18B20。按照系統(tǒng)設(shè)計(jì)功能要求,確定系統(tǒng)由三個(gè)模塊組成:主控制器、測(cè)溫電路及顯示電路??傮w電路結(jié)構(gòu)框圖如圖1.1所示。AT89C2051AT89C2051主控制器顯示電路顯示電路DS18B20DS18B20掃描驅(qū)動(dòng)掃描驅(qū)動(dòng)圖2.1數(shù)字溫度計(jì)電路結(jié)構(gòu)框圖
3系統(tǒng)硬件電路的設(shè)計(jì)溫度計(jì)電路設(shè)計(jì)原理圖如圖3.1所示,控制器使用單片機(jī)AT89C2051,溫度傳感器使用DS18B20,用四位共陽(yáng)LED數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。3.1主控制器單片機(jī)AT89C2051具有低電壓供電和體積小的特點(diǎn),兩個(gè)端口剛好滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用,系統(tǒng)可用兩節(jié)電池供電。3.2顯示電路顯示電路采用4位共陽(yáng)LED數(shù)碼管,從P1口輸出段碼,列掃描使用P3.0~P3.3口來實(shí)現(xiàn),列驅(qū)動(dòng)用9012三極管。3.3溫度傳感器工作原理DS18B20溫度傳感器是美國(guó)DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的編程實(shí)現(xiàn)9~12位的數(shù)字值讀書方式。4主要元器件介紹4.1溫度傳感器DS18B20
美國(guó)Dallas半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820是世界上第一片支持"一線總線"接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。現(xiàn)在,新一代的DS18B20體積更小、更經(jīng)濟(jì)、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點(diǎn)。4.1.1DS18B20的主要特性(1)適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電
(2)獨(dú)特的單線接口方式,DS18B20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊
(3)DS18B20支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫
(4)DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)
(5)溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃
(6)可編程的分辨率為9~12位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實(shí)現(xiàn)高精度測(cè)溫
(7)在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快
(8)測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以"一線總線"串行傳送給CPU,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力
(9)負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。圖4.1DS18B20外部結(jié)構(gòu)4.1.3DS18B20引腳定義(1)DQ為數(shù)字信號(hào)輸入/輸出端;
(2)GND為電源地;
(3)VDD為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。
圖4.2工作程序框圖
DS18B20的讀寫時(shí)序和測(cè)溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s減為750ms。DS18B20測(cè)溫原理如圖3所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(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è)溫度。圖3中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。圖4.3DS18步測(cè)溫原理圖
(1)光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產(chǎn)品類型標(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的目的。(2)DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。表4.1DS18B20溫度值格式表
這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18B20的兩個(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í)際溫度表4.2DS18B20溫度與測(cè)得值對(duì)應(yīng)表例如+125℃的數(shù)字輸出為07D0H,+25.0625℃的數(shù)字輸出為0191H,-25.0625℃的數(shù)字輸出為FF6FH,-55℃的數(shù)字輸出為FC90H。(3)DS18B20溫度傳感器的存儲(chǔ)器
DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器TH、TL和結(jié)構(gòu)寄存器。(4)配置寄存器
該字節(jié)各位的意義如下:表4.3配置寄存器結(jié)構(gòu)TMR1R011111低五位一直都是"1",TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在測(cè)試模式。在DS18B20出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1和R0用來設(shè)置分辨率,如下表所示:(DS18B20出廠時(shí)被設(shè)置為12位)表4.4溫度分辨率設(shè)置R1R0分辨率溫度最大轉(zhuǎn)換時(shí)間009位93.75ms0110位187.5ms1011位375ms1112位750ms4.2主控器AT89C205電子計(jì)算機(jī)的發(fā)展經(jīng)歷了從電子管、晶體管、集成電路到大(超大)規(guī)模集成電路共四個(gè)階段,即通常所說的第一代、第二代、第三代和第四代計(jì)算機(jī)?,F(xiàn)代廣泛使用的微型計(jì)算機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,因此他屬于第四代計(jì)算機(jī),而單片機(jī)則是微型計(jì)算機(jī)的一個(gè)分支。從1971年微型計(jì)算機(jī)面世一來,由于實(shí)際應(yīng)用的需要,微型計(jì)算機(jī)向著兩個(gè)不同的方向發(fā)展:一個(gè)是向高速度、大容量、高性能的高檔微機(jī)方向發(fā)展;而另一個(gè)則是向穩(wěn)定可靠,體積小,價(jià)格廉的方向發(fā)展,但兩者在原理和技術(shù)上是緊密聯(lián)系的。單片機(jī)因?qū)⑵渲饕M成部分集成在一個(gè)芯片上而得名,具體說就是把中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、中斷系統(tǒng)等主要微型機(jī)部件集成在一個(gè)芯片上。雖然單片機(jī)只有一個(gè)芯片,但是從組成和功能是看,他已經(jīng)具有了一個(gè)計(jì)算機(jī)的屬性。但是單片機(jī)通常是指芯片本身,它是由芯片制造商生產(chǎn)的,它上面集成了一些作為基本組成部分的運(yùn)算器電路、控制器電路、存儲(chǔ)器、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器以及輸入/輸出口電路等。一個(gè)單片機(jī)芯片并不能把計(jì)算機(jī)的全部電路都集成到其中,例如組成諧振電路,和復(fù)位電路的石英晶體、電阻、電容等,這些元件在單片機(jī)系統(tǒng)中只能以散件的形式出現(xiàn)。此外,在實(shí)際應(yīng)用中常常需要擴(kuò)展外圍電路和外圍芯片。所以單片機(jī)和單片機(jī)系統(tǒng)是有差別的。即:?jiǎn)纹瑱C(jī)只是一個(gè)芯片,但單片機(jī)系統(tǒng)是在單片機(jī)芯片的基礎(chǔ)上擴(kuò)展其他電路或芯片構(gòu)成具有一定應(yīng)用功能的計(jì)算機(jī)系統(tǒng)。通常所說的單片機(jī)系統(tǒng)都是為了實(shí)現(xiàn)某一控制應(yīng)用需要由用戶設(shè)計(jì)的,是一個(gè)圍繞單片機(jī)芯片而組成的計(jì)算機(jī)系統(tǒng)。在單片機(jī)系統(tǒng)中,單片機(jī)處于核心地位,是構(gòu)成單片機(jī)系統(tǒng)的硬件和軟件系統(tǒng)。4.2.1MCS-51單片機(jī)系列本設(shè)計(jì)所用到的89C2051單片機(jī)是MCS-51的一種。MCS-51是一個(gè)單片機(jī)的系列產(chǎn)品,具有多種型號(hào)。具體說,按其內(nèi)部資源的不同,MCS-51可以分為兩個(gè)子系列和四個(gè)類型。按資源配置的數(shù)量,MCS-51分為51和52兩個(gè)子系列,其中51系列是基本型,52系列是增強(qiáng)型,以芯片的型號(hào)的最末數(shù)字“1”和“2”作為標(biāo)志。89C2051單片機(jī)是在8951芯片的基礎(chǔ)上發(fā)展起來的,因此兼容,改進(jìn)和增強(qiáng)將是我們對(duì)89C2051和8951進(jìn)行比較的內(nèi)容。首先,與8951的兼容是對(duì)89C2051的基本要求,以確保8位單片機(jī)MCS-51系列的繼承和發(fā)展。兼容包括指令、引腳信號(hào)、總線等多個(gè)方面,指令兼容能保證兩者之間不存在指令障礙以維持軟件的可移植性,而引腳信號(hào)和風(fēng)狀以及總線的兼容則確保兩者在系統(tǒng)擴(kuò)展的接口方向的一致性。有利于系統(tǒng)4.2.2單片機(jī)芯片的硬件結(jié)構(gòu)既然單片機(jī)是要在一個(gè)極小的芯片是集成這么多的電路,而且要求結(jié)構(gòu)簡(jiǎn)單靈活。工作穩(wěn)定可靠。因此單片機(jī)必須采用精巧的設(shè)計(jì)。以克服芯片尺寸有限帶來的許多制約。以MCS-51為例,單片機(jī)系統(tǒng)邏輯如圖3.6所示:圖4.4MCS-51系列單片機(jī)結(jié)構(gòu)框圖其中中央處理器(CPU)是單片機(jī)的核心,完成運(yùn)算和控制操作。內(nèi)部數(shù)據(jù)存儲(chǔ)器用語(yǔ)存放可讀寫數(shù)據(jù),通常所說的內(nèi)部數(shù)據(jù)存儲(chǔ)器是指前128個(gè)單元。內(nèi)部程序存儲(chǔ)器用語(yǔ)存放程序和原始數(shù)據(jù)。另外,由于控制和應(yīng)用需要,89C51共有兩16位的定時(shí)器/記數(shù)器,以實(shí)現(xiàn)定時(shí)或記數(shù)功能,并以定時(shí)或記數(shù)功能對(duì)單片機(jī)進(jìn)行控制。89C51單片機(jī)還有4個(gè)8位的I/O口,用以實(shí)現(xiàn)數(shù)據(jù)的并行輸入輸出。除此之外,單片機(jī)還有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其他數(shù)據(jù)設(shè)備之間的串行數(shù)據(jù)傳送。還有一些其他是硬件電路,如:中斷控制系統(tǒng)、時(shí)鐘電路、位處理器,總線等。4.2.3AT89C2051單片機(jī)AT89C2051是一個(gè)低電壓,高性能CMOS8位單片機(jī),片內(nèi)含2kbytes的可反復(fù)擦寫的只讀Flash程序存儲(chǔ)器和128bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C2051單片機(jī)可為您提供許多高性價(jià)比的應(yīng)用場(chǎng)合。AT89C2051是一個(gè)功能強(qiáng)大的單片機(jī),但它只有20個(gè)引腳,15個(gè)雙向輸入/輸出(I/O)端口,其中P1是一個(gè)完整的8位雙向I/O口,兩個(gè)外中斷口,兩個(gè)16位可編程定時(shí)計(jì)數(shù)器,兩個(gè)全雙向串行通信口,一個(gè)模擬比較放大器。
同時(shí)AT89C2051的時(shí)鐘頻率可以為零,即具備可用軟件設(shè)置的睡眠省電功能,系統(tǒng)的喚醒方式有RAM、定時(shí)/計(jì)數(shù)器、串行口和外中斷口,系統(tǒng)喚醒后即進(jìn)入繼續(xù)工作狀態(tài)。省電模式中,片內(nèi)RAM將被凍結(jié),時(shí)鐘停止振蕩,所有功能停止工作,直至系統(tǒng)被硬件復(fù)位方可繼續(xù)運(yùn)行。圖4.5AT89C20514.2.4AT89C2051的主要功能特性
·兼容MCS51指令系統(tǒng)·2k可反復(fù)擦寫(>1000次)FlashROM
·15個(gè)雙向I/O口·6個(gè)中斷源
·兩個(gè)16位可編程定時(shí)/計(jì)數(shù)器·2.7-6.V的寬工作電壓范圍
·時(shí)鐘頻率0-24MHz·128x8bit內(nèi)部RAM
·兩個(gè)外部中斷源·兩個(gè)串行中斷
·可直接驅(qū)動(dòng)LED·兩級(jí)加密位
·低功耗睡眠功能·內(nèi)置一個(gè)模擬比較放大器
·可編程UARL通道·軟件設(shè)置睡眠和喚醒功能工作溫度-55~+125℃儲(chǔ)藏溫度-65~150℃引腳對(duì)地電壓-1~+7V最高工作電壓6.6V直流輸出電流25mAAT89C2051提供以下標(biāo)準(zhǔn)功能:2K字節(jié)FLASH閃速存儲(chǔ)器,128字節(jié)內(nèi)部RAM,15個(gè)I/O口線,兩個(gè)16位定時(shí)/記數(shù)器,一個(gè)5向量?jī)蓸O中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,內(nèi)置一個(gè)精度比較器,片內(nèi)震蕩器及時(shí)鐘電路。同時(shí),AT89C2051可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時(shí)/記數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但震蕩器停止工作并禁止其他所有部件工作直到下一個(gè)硬件復(fù)位。引腳功能說明VCC:電源電壓GND:地P1口:一組8位雙向I/O口,P1.2—P1.7提供內(nèi)部上拉電阻,P1.0和P1.1內(nèi)部無上拉電阻,主要是考慮它們分別是內(nèi)部精密比較器的同相輸入端(AINO)和反相輸入端(AINI),如果需要在外部接上拉電阻.P1口輸出緩沖器可吸收20mA的電流并可直接驅(qū)動(dòng)LED.當(dāng)P1口引腳寫入”1”時(shí)可做輸入端,當(dāng)引腳P1.2—P1.7用作輸入并被外部拉低時(shí),它們將因內(nèi)部的上拉電阻而輸出電流(I1L).P1口還在FLASH閃速編程及程序校驗(yàn)時(shí)接收代碼數(shù)據(jù).P3口:P3口的P3.0—P3.5、P3.7是內(nèi)部上拉電阻的7個(gè)雙向I/O口。P3.6沒有引出,它作為一個(gè)通用I/O口但不可訪問,但作為固定輸入片內(nèi)比較器的輸出信號(hào),P3口緩沖器可吸收20mA電流,當(dāng)P3口寫入“1”時(shí),他們被內(nèi)部上拉電阻拉高并可作為輸入端口。做輸出端時(shí),被外部拉低的P3口將用上拉電阻輸出電流(I1L)。P3口還用于實(shí)現(xiàn)AT89C2051特殊功能,如下表所示:口引腳功能特性P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外中斷0)P3.3/INT1(外中斷1)P3.4T0(定時(shí)/計(jì)數(shù)器0外部輸入)P3.5T1(定時(shí)/計(jì)數(shù)器1外部輸入)P3口還接收一些用于FLASH閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào).RST: 復(fù)位輸入.RST引腳一旦變成兩個(gè)機(jī)器周期以上的高電平,所有的I/O口都將復(fù)位到”1”(高電平)狀態(tài),當(dāng)震蕩器正在工作時(shí),持續(xù)兩個(gè)機(jī)器周期以上的高電平便可完成復(fù)位,每個(gè)機(jī)器周期為12個(gè)震蕩時(shí)鐘周期.XTAL1:震蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端.XTAL2:震蕩器反相放大器的輸出端. 4.374HC24474HC244是一個(gè)八緩沖器/驅(qū)動(dòng)器/接收器。其形狀如下圖4.674HC244圖4.6其工作環(huán)境和條件54HC244跟74HC244都是八緩沖器/驅(qū)動(dòng)器/接收器,現(xiàn)將兩元器件的動(dòng)靜態(tài)參數(shù)做對(duì)比如下圖4.7靜態(tài)參數(shù)圖4.8動(dòng)態(tài)參數(shù)5系統(tǒng)程序設(shè)計(jì)系統(tǒng)程序的主要功能包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序等等。主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量溫度值,溫度測(cè)量每1s進(jìn)行一次。其程序流程圖見圖5。圖5.1DS18B20溫度計(jì)主程序流程圖讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需要進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖6所示。圖5.2讀出溫度子程序流程圖溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖7所示。發(fā)DS18B20復(fù)位命令發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束結(jié)束圖5.3溫度轉(zhuǎn)換命令子程序流程圖計(jì)算溫度子程序計(jì)算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判斷,其程序流程圖如圖8所示。開始開始溫度零下?溫度零下?YN溫度值取補(bǔ)碼置“—”溫度值取補(bǔ)碼置“—”標(biāo)志 置“+”標(biāo)志計(jì)算小數(shù)位溫度BCD值計(jì)算小數(shù)位溫度BCD值計(jì)算整數(shù)溫度BCD值計(jì)算整數(shù)溫度BCD值結(jié)束結(jié)束圖5.4計(jì)算溫度子程序流程圖顯示刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示書記進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)現(xiàn)實(shí)位移入下一位。流程圖如圖9所示。溫度數(shù)據(jù)移入顯示寄存器溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?十位數(shù)0?百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào))百位數(shù)0?NY百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào))百位數(shù)0?YN十位數(shù)顯示符號(hào)百位數(shù)不顯示Y十位數(shù)顯示符號(hào)百位數(shù)不顯示結(jié)束結(jié)束圖5.5顯示數(shù)據(jù)刷新子程序流程圖DS18B20的各個(gè)ROM命令表5.1ROM指令表指令約定代碼功能讀ROM33H讀DS1820溫度傳感器ROM中的編碼(即64位地址)符合ROM55H發(fā)出此命令之后,接著發(fā)出64位ROM編碼,訪問單總線上與該編碼相對(duì)應(yīng)的DS1820使之作出響應(yīng),為下一步對(duì)該DS1820的讀寫作準(zhǔn)備。搜索ROM0F0H用于確定掛接在同一總線上DS1820的個(gè)數(shù)和識(shí)別64位ROM地址。為操作各器件作好準(zhǔn)備跳過ROM0CCH忽略64位ROM地址,直接向DS1820發(fā)間諜變換命令。適用于單片工作。告警搜索命令0ECH執(zhí)行后只有溫度過設(shè)定值上限或下限的片子才做出響應(yīng)。溫度變換44H啟動(dòng)DS1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長(zhǎng)為750ns(9位為93.75ns)。結(jié)果存入內(nèi)部9字節(jié)RAM中。讀暫存器0BEH讀內(nèi)部RAM中字節(jié)內(nèi)容寫暫存器4EH發(fā)也向內(nèi)部的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復(fù)制暫存器48H將RAM中第3、4的內(nèi)容復(fù)制到EEPROM中。重調(diào)EEPROM0B8H將EEPROM中內(nèi)容恢復(fù)到RAM中的第3、4字節(jié)。讀供電方式0B4H讀DS1820的供電模式。寄生供電時(shí)DS1820發(fā)送“0”,外接電供電DS1820發(fā)送“1”。溫度數(shù)據(jù)的計(jì)算處理方法從DS18B20讀取出的二進(jìn)制值必須先轉(zhuǎn)換成十進(jìn)制值,才能用于字符的顯示。因?yàn)镈S18B20的轉(zhuǎn)換精度為9~12位可選的,為了提高精度采用12位。在采用12位轉(zhuǎn)換精度時(shí),溫度寄存器里的值是以0.0625為步進(jìn)的,即溫度值為溫度寄存器里的二進(jìn)制值乘以0.0625,就是實(shí)際的十進(jìn)制溫度值。就是把二進(jìn)制的高字節(jié)的低辦字節(jié)和低字節(jié)的高半字節(jié)組成一個(gè)字節(jié)組成一個(gè)字節(jié),這個(gè)字節(jié)的二進(jìn)制化為十進(jìn)制值后,就是溫度值的百、十、個(gè)位值,而剩下的低字節(jié)的低半字節(jié)化成十進(jìn)制后,就是溫度值的小數(shù)部分。小數(shù)部分因?yàn)槭前雮€(gè)字節(jié),所以二進(jìn)制值范圍是0~F,轉(zhuǎn)換成十進(jìn)制小數(shù)值就是0.0625的倍數(shù)(0~15倍)。這樣需要4位的數(shù)碼管來顯示小數(shù)部分,實(shí)際應(yīng)用不必有這么高的精度,采用1位數(shù)碼管來顯示,這樣可以精確到0.1℃。6調(diào)試及性能分析系統(tǒng)的調(diào)試以程序?yàn)橹?,硬件調(diào)試比較簡(jiǎn)單,首先檢查電路的焊接是否正確,然后可用萬用表測(cè)試或通電檢測(cè)。軟件調(diào)試可以先編寫顯示程序并進(jìn)行硬件的正確性檢測(cè),然后分別進(jìn)行主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新等子程序的編程及調(diào)試,由于DS18B20與單片機(jī)采用串行數(shù)據(jù)傳送,因此,對(duì)DS18B20進(jìn)行讀寫編程時(shí)必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測(cè)量結(jié)果。性能測(cè)試可用制作的溫度計(jì)和已有的成品溫度計(jì)來同時(shí)測(cè)量比較,由于DS18B20的精度很高,所以誤差指標(biāo)可以限制在0.01℃以內(nèi)。-55~+125℃的測(cè)量范圍使得該溫度計(jì)完全適合一般的應(yīng)用場(chǎng)合,其低電壓供電特性可作成用電池供電的手持電子溫度計(jì)。DS18B20溫度計(jì)還可以在高低溫度計(jì)報(bào)警、遠(yuǎn)距離多點(diǎn)測(cè)溫控制等方面進(jìn)行應(yīng)用開發(fā),但是在實(shí)際應(yīng)用中應(yīng)注意以下問題:(1)較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。
(2)在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個(gè)DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS1820超過8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。
(3)連接DS1820的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過50m時(shí),讀取的測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻?。因此,在用DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考慮總線分布電容和阻抗匹配問題。
(4)在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號(hào),一旦某個(gè)DS1820接觸不好或斷線,當(dāng)程序讀該DS1820時(shí),將沒有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。7控制源程序清單以下是DS18B20溫度計(jì)控制源程序清單:***************************************************************************DS18B20溫度計(jì)采用四位LED共陽(yáng)顯示器顯示測(cè)溫值,顯示精度0.1℃,測(cè)量范圍-55~+125℃采用AT89C2051單片機(jī),12MHz晶振。設(shè)計(jì)日期2007.04.25*************************************************************************** 常數(shù)定義 ***************************************************************************TIMELEQU0E0H20ms,定時(shí)器0時(shí)間常數(shù)TIMEHEQU0B1H TEMPHEADEQU36H***************************************************************************工作內(nèi)存定義***************************************************************************BITSTDATA20HTIME1SOKBITBITST.1TEMPONEOKBITBITST.2TEMPLDATA26HTEMPHDATA27HTEMPHCDATA28HTEMPLCDATA29H***************************************************************************引腳定義 ***************************************************************************TEMPDINBITP3.7***************************************************************************中斷向量區(qū)***************************************************************************ORG0000HLJMPSTARTORG00BHLJMPT0IT***************************************************************************系統(tǒng)初始化 ***************************************************************************ORG100HSTART:MOVSP,#60HCLSMEM:MOVR0,#20HMOVR1,#60HCLSMEM1:MOV@R0,#00HINCR0DJNZR1,CLSMEM1MOVTMOD,#00100001B定時(shí)器0作方式1(16BIT)MOVTH0,#TIMELMOVTL0,#TIMEH20msSJMPINIT ERROR:NOPLJMPSTARTNOPINIT:NOPSETBET0SETBTR0SETBEAMOVPSW,#00HCLRTEMPONEOKLJMPMAIN***************************************************************************定時(shí)器0中斷服務(wù)程序***************************************************************************TOIT:PUSHPSWMOVPSW,#10HMOVTH0,#TIMEHMOVTL0,#TIMELINCR7CJNER7,#32H,T0IT1MOVR7,#00HSETBTIME1SOK1s定時(shí)到標(biāo)志T0IT1:POPPSWRETI***************************************************************************主程序***************************************************************************MAIN:LCALLDISP1調(diào)用顯示子程序JNBTIME1SOK,MAINCLRTIME1SOK測(cè)溫每1s一次JNBTEMPONEOK,MAIN2上電時(shí)先溫度轉(zhuǎn)換一次LCALLREADTEMP1讀出溫度值子程序LCALLCONVTEMP溫度BCD碼計(jì)算處理子程序LCALLDISPBCD顯示區(qū)BCD碼溫度值刷新子程序LCALLDISP1消閃爍,顯示一次MAIN2:LCALLREADTEMP溫度轉(zhuǎn)換開始SETBTEMPONEOKLJMPMAIN******************************************************************************************************************************************************子程序區(qū)***************************************************************************RESETDS18B20***************************************************************************INITDS1820:SETBTEMPDINNOPNOPCLRTEMPDINMOVR6,#0A0HDELAY480usDJNZR6,$MOVR6,#0A0HDJNZR6,$SETBTEMPDINMOVR6,#32HDELAY70usDJNZR6,$MOVR6,#3CHLOOP1820:MOVC,TEMPDINJCINITDS1820OUTDJNZR6,LOOP1820MOVR6,#064HDELAY200usDJNZR6,$SJMPINITDS1820RETINITDS1820OUT:SETBTEMPDINRET***************************************************************************讀DS18B20的程序,從DS18B20中讀出一個(gè)字節(jié)的數(shù)據(jù)***************************************************************************READDS1820:MOVR7,#08HSETBTEMPDINNOPNOPREADDS1820LOOP:CLRTEMPDINNOPNOPNOPSETBTEMPDINMOVR6,#07HDELAY15usDJNZR6,$MOVC,TEMPDINMOVR6,#3CHDELAY120usDJNZR6,$RRCASETBTEMPDINDJNZR7,READDS1820LOOPMOVR6,#3CHDELAY120usDJNZR6,$RET*************************************************************************** 寫DS18B20的程序,從DS18B20中寫一個(gè)字節(jié)的數(shù)據(jù)***************************************************************************WRITEDS1820:MOVR7,#08HSETBTEMPDINNOPNOPWRITEDS1820LOP:CLRTEMPDINMOVR6,#07HDELAY15usDJNZR6,$RRCAMOVTEMPDINDJNZR7,WRITEDS1820LOPRET***************************************************************************READTEMP***************************************************************************READTEMP:LCALLINITDS1820MOVA,#0CCHLCALLWRITEDS1820SKIPROMMOVR6,#34HDELAY104usDJNZR6,$MOVA,#44HLCALLWRITEDS1820STARTCONVERSIONMOVR6,#34HDELAY104usDJNZR6,$RETREADTEMP1:LCALLINITDS1820MOVA,#0CCHLCALLWRITEDS1820SKIPROMMOVR6,#34HDELAY104usDJNZR6,$MOVA,#0BEHLCALLWRITEDS1820SCRATCHPADMOVR6,#34HDELAY104usDJNZR6,$MOVR5,#09HMOVR0,#TEMPHEADMOVB,#00HREADTEMP2:LCALLREADDS1820MOV@R0,AINCR0READTEMP21:LCALLCRC8CALDJNZR5,READTEMP2MOVA,BJNZREADTEMPOUTMOVA,TEMPHEAD+0MOVTEMPL,AMOVA,TEMPHEAD+1MOVTEMPH,AREADTEMPOUT:RET***************************************************************************處理溫度BCD碼子程序***************************************************************************CONVTEMP:MOVA,TEMPHANLA,#80HJZTEMPC1CLRCMOVA,TEMPLCPLAADDA,#01HMOVTEMPL,AMOVA,TEMPHCPLAADDCA,#00HMOVTEMPH,ATEMPHCHI=符號(hào)位MOVTEMPHC,#0BHSJMPTEMPC11TEMPC1:MOVTEMPHC,#0AH+TEMPC11:MOVA,TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPLANLA,#0FH乘0.0625MOVDPTR,#TEMPDOTTABMOVCA,@A+DPTRMOVTEMPLC,ATEMPLCLOW=小數(shù)部分BCDMOVA,TEMPL整數(shù)部分ANLA,#0F0HSWAPAMOVTEMPL,AMOVA,TEMPHANLA,0FHSWAPAORLA,TEMPLLCALLHEX2BCD1MOVTEMPL,AANLA,0F0HSWAPAORLA,TEMPHCTEMPHCLOW=十位數(shù)BCDMOVTEMPHC,AMOVA,TEMPLANLA,0FHSWAPATEMPLCHI=個(gè)位數(shù)BCDORLA,TEMPLCMOVTEMPLC,AMOVA,R7JZTEMPC12ANLA,#0FHSWAPAMOVR7,AMOVA,TEMPHCTEMPHCHI=百位數(shù)BCDANLA,#0FHORLA,R7MOVTEMPHC,ATEMPC12:RET***************************************************************************小數(shù)部分碼表***************************************************************************TEMPDOTTAB:DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,08H,09H,09H***************************************************************************顯示區(qū)BCD碼溫度值刷新子程序***************************************************************************DISPBCD:MOVA,TEMPLCANLA,#0FHMOV70H,AMOVA,TEMPLCSWAPAANLA,#0FHMOV71H,AMOVA,TEMPHCANLA,#0FHMOV72H,AMOVA,TENPHCSWAPAANLA,#0FHMOV73H,AMOVA,TEMPHCANLA,#0F0HCJNEA,#010H,DISPBCD0SJMPDISPBCD2DSIPBCD0:MOVA,TEMPHCANLA,#0FHJNZDISPBCD2十位數(shù)是0MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,#0AH符號(hào)位不顯示MOV72H,A十位數(shù)顯示符號(hào)DISPBCD2:RET***************************************************************************顯示子程序***************************************************************************顯示數(shù)據(jù)在70H~73H單元內(nèi),用4位LED共陽(yáng)數(shù)碼管顯示,P1口輸出段碼數(shù)據(jù),P3口作掃描控制,每個(gè)LED數(shù)碼管亮1ms時(shí)間再逐位循環(huán).DISP1:MOVR1,#70H指向顯示數(shù)據(jù)首址MOVR5,#0FEH掃描控制值初值PLAY:MOVP1,#0FEHMOVA,R5掃描字放入AMOVP3,A從P3口輸出MOVA,@R1取顯示數(shù)據(jù)到AMOVDPTR,#TAB取段碼表地址MOVCA,@A+DPTR查顯示數(shù)據(jù)對(duì)應(yīng)段碼MOVP1,A段碼放入P1口MOVA,R5JBACC.1,LOOP5小數(shù)點(diǎn)處理CLRP1.7LOOP5:LCALLDL1MS顯示1msINCR1指向下一個(gè)地址MOVA,R5掃描控制字放入AJNBACC.3,ENDOUTACC.3=0時(shí)一次顯示結(jié)束RLAA中數(shù)據(jù)循環(huán)左移MOVR5,A放會(huì)R5內(nèi)AJMPPLAY跳回PLAY循環(huán)ENDOUT:MOVP1,#0FFH一次顯示結(jié)束,P1口復(fù)位MOVP3,#0FFHP3口復(fù)位RET子程序返回TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH共陽(yáng)段碼表“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮”“—”DL1MS:
溫馨提示
- 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ù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版醫(yī)師醫(yī)生聘用合同書范例
- 2025企業(yè)簽訂合同卻未履行員工與公司間的合同責(zé)任爭(zhēng)議
- 2025進(jìn)出口貿(mào)易合同
- 2025物業(yè)管理服務(wù)承包合同范本
- 2025年度稅務(wù)代理委托合同
- 2025控制器購(gòu)銷合同范本
- 音樂生活融合
- 音樂教育的探索
- 2025健身房員工股權(quán)協(xié)議合同
- 2025年新員工入職合同范本
- 上海市控江中學(xué)2024-2025學(xué)年高二下學(xué)期期中聯(lián)考英語(yǔ)試題(含答案)
- 高等工程數(shù)學(xué)Ⅲ智慧樹知到期末考試答案章節(jié)答案2024年南京理工大學(xué)
- 《小毛蟲》課件下載
- 國(guó)開電大 管理概論 形考任務(wù)一(畫組織結(jié)構(gòu)圖)
- 三自由度并聯(lián)機(jī)器人結(jié)構(gòu)設(shè)計(jì)
- 倉(cāng)儲(chǔ)裝卸服務(wù)合同
- 式雙鉤五點(diǎn)安全帶培訓(xùn)課件
- 名片設(shè)計(jì) 課件
- 鉗工實(shí)操評(píng)分表(凹凸配合)
- 陜西省城市規(guī)劃管理技術(shù)規(guī)定(定稿)
- 部編版七年級(jí)下冊(cè)歷史復(fù)習(xí)提綱(重點(diǎn)考察知識(shí)點(diǎn))
評(píng)論
0/150
提交評(píng)論