版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 1 緒論</b></p><p> 在工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力、流量、流速和開關(guān)量都是常用的主要被控參數(shù)。其中,溫度控制也越來越重要。在工業(yè)生產(chǎn)的很多領(lǐng)域中,人們都需要對各類加熱爐、熱處理爐、反應爐和鍋爐中的溫度進行檢測和控制。采用單片機對溫度進行控制不僅具有控制方便、簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控溫度的技術(shù)指標,從而能夠大大的提高產(chǎn)
2、品的質(zhì)量和數(shù)量。因此,單片機對溫度的控制問題是一個工業(yè)生產(chǎn)中經(jīng)常會遇到的控制問題。</p><p> 1.1 溫度控制器的發(fā)展狀況</p><p> 溫度是表征物體冷熱程度的物理量,是工業(yè)生產(chǎn)和日常生活中經(jīng)常測量的物理量,也是人類研究最早測量方法最多的物理量之一。因而溫度檢測儀應用領(lǐng)域之廣,使用數(shù)量之多,一直高居各類測量儀之首。近百年來,溫度傳感器的發(fā)展大致經(jīng)歷了以下三個階段:傳統(tǒng)的分
3、立式溫度傳感器(含敏感元件);模擬集成溫度傳感器/控制器;智能溫度傳感器(即數(shù)字溫度傳感器)。</p><p> a) 分立式溫度傳感器</p><p> 傳統(tǒng)的熱電偶、熱電阻、熱敏電阻及半導體溫度傳感器,均屬于分立式溫度傳感器,傳感器本身就是一個完整的、獨立的感溫元件。此類傳感器通常要配溫度變送器,以獲得標準的模擬量(電壓或電流)輸出信號。</p><p>
4、 b) 模擬集成溫度傳感器</p><p> 集成傳感器是采用硅半導體集成工藝而制成的,因此亦稱硅傳感器或單片集成傳感器??赏瓿蓽囟葴y量及模擬信號輸出功能的專用IC,它屬于一種簡單的集成溫度傳感器,適合遠距離測量、控溫,不需要進行非線性校準,典型產(chǎn)品有AD590、AD592等。</p><p> c) 模擬集成溫度控制器</p><p> 模擬集成溫度控制器主
5、要包括溫控開關(guān)、可編程溫度控制器,典型產(chǎn)品有LM56、AD22105和MAX6509。</p><p> d) 智能溫度傳感器</p><p> 智能溫度傳感器(亦稱數(shù)字溫度傳感器)是在20世紀90年代中期問世的。智能溫度傳感器是微電子技術(shù)、計算機技術(shù)和自動測試技術(shù)的結(jié)晶,它也是集成溫度傳感器領(lǐng)域中最具活力和發(fā)展前途的一種新產(chǎn)品。目前,國際上許多著名的集成電路生產(chǎn)廠已經(jīng)開發(fā)出上百種智能
6、溫度傳感器產(chǎn)品。</p><p> 1.2 課題研究必要性</p><p> 隨著電子技術(shù)和微型計算機的迅速發(fā)展,微機測量和控制技術(shù)得到了迅速的發(fā)展和廣泛的應用。單片機具有處理能強、運行速度快、功耗低等優(yōu)點,應用在溫度測量與控制方面,控制簡單方便,測量范圍廣,精度較高。溫度是工業(yè)生產(chǎn)中常見并且十分重要的參數(shù)之一,特別是在冶金、石油、食品、印染等工廠中。由于不同的工藝所需的溫度變化曲線各
7、不相同,而現(xiàn)有的溫度控制儀大多只能進行恒溫控制。因此許多生產(chǎn)過程中加熱、保溫、降溫以及自然降溫等操作都是由人工操作的,這就不可避免地產(chǎn)生各種誤差,進而影響產(chǎn)品質(zhì)量,個別采用的溫度自動控制系統(tǒng)由于造價較高、操作復雜等原因又限制了在中小企業(yè)的應用,因此研究和開發(fā)一種實用的溫度控制系統(tǒng)成為當務之急。在工業(yè)生產(chǎn)過程中需要實時測量控制溫度,尤其是在高危生產(chǎn)行業(yè),如花炮生產(chǎn),煤礦行業(yè)等。但依靠人工檢測控制既浪費時間,物力,人力,又有一定的危險性,且
8、數(shù)據(jù)也不準確,因此研究自動的溫度測量控制方法和裝置具有重要的意義。</p><p> 1.3 現(xiàn)代控制系統(tǒng)相對傳統(tǒng)控制系統(tǒng)的優(yōu)勢</p><p> 傳統(tǒng)的控制系統(tǒng)主要由測量電路和控制電路組成,所具備的功能較少,也比較弱,而且結(jié)構(gòu)很復雜。計算機技術(shù)的迅速發(fā)展,使得傳統(tǒng)的控制系統(tǒng)發(fā)生了根本性的變革,即采用微機作為控制系統(tǒng)的核心,代替?zhèn)鹘y(tǒng)的控制系統(tǒng)的傳統(tǒng)的電子線路,從而成為新一代的微機化控制
9、系統(tǒng)。將微機技術(shù)引入控制系統(tǒng)中,不僅可以解決傳統(tǒng)控制系統(tǒng)不能解決的問題,而且還能簡化電路、增加或增強功能、提高控制精度和可靠性,顯著增強測控系統(tǒng)的自動化、智能化程度,而且可以縮短系統(tǒng)研制周期、降低成本、易于升級和維護。因此,現(xiàn)代控制系統(tǒng)設(shè)計,特別是高精度、高性能的控制系統(tǒng),目前已很少不采用計算機技術(shù)的了。計算機技術(shù)的引入,可以為控制系統(tǒng)帶來以下一些新特點和新功能:</p><p> a) 自動調(diào)零功能在每次采樣
10、前對傳感器的輸出值自動清零,從而大大降低因控制系統(tǒng)漂移變化造成的誤差。</p><p> b) 數(shù)字濾波功能利用已算機軟件對測量數(shù)據(jù)進行處理,可以抑制各種干擾和脈沖信號。</p><p> c) 數(shù)據(jù)處理功能利用計算機技術(shù)可以實現(xiàn)傳統(tǒng)儀器無法實現(xiàn)的各種復雜的處理和運算功能。</p><p> d) 復雜控制規(guī)律利用計算機技術(shù)不僅可以實現(xiàn)經(jīng)典的PID控制,還可以
11、實現(xiàn)各種復雜的控制規(guī)律,例如,自適應控制、模糊控制等。</p><p> e) 自我診斷功能采用計算機技術(shù)后,可對控制系統(tǒng)進行監(jiān)測,一旦發(fā)現(xiàn)故障則立即進行報警,并可顯示故障部位或可能的故障原因,對排除故障的方法進行提示。</p><p> 微機化的控制系統(tǒng)是以微機為核心、測量控制一體化的系統(tǒng),這種系統(tǒng)對被控對象的控制是依據(jù)對被控對象的測量結(jié)果決定的。</p><p&
12、gt; 1.4 課題設(shè)計特點和應用領(lǐng)域</p><p> 課題采用的是單總線數(shù)字溫度傳感器DS18B20,可直接將溫度轉(zhuǎn)換值以16位數(shù)字碼的方式串行輸出:將溫度轉(zhuǎn)化為數(shù)字編碼只需1秒左右。而且它具有獨特單線接口方式,即與微處理器接口時僅需占用1個I/O口;支持多節(jié)點;測溫時無需任何外部元件,可以通過數(shù)據(jù)線直接供電,具有超低功耗工作方式。測溫范圍為—55℃~+125℃,測溫度精度可達到0.0625℃。由于傳送
13、的是串行放大器和A/D轉(zhuǎn)換器可以統(tǒng)統(tǒng)被省卻,因而這種測溫方式大大提高了各種溫度測控系統(tǒng)的可靠性,降低了成本,縮小了體積。其測溫系統(tǒng)結(jié)構(gòu)簡單,硬件少,成本低,測溫精度高,轉(zhuǎn)換速度快,實用性高,應用范圍廣泛,市場前景好,經(jīng)濟效益可觀。</p><p> 系統(tǒng)可以應用于溫度要求在—55℃~+125.9℃之間的任何領(lǐng)域。比如:鐵路,糧庫,水果,蔬菜存儲倉庫的溫度控制,以及多路溫度測控儀,各種養(yǎng)殖場的溫度控制監(jiān)測。由于本
14、系統(tǒng)的測溫精度可達0.0625℃,因而對于溫度要求特別嚴格的環(huán)境來說,本系統(tǒng)是一個較為理想的監(jiān)控系統(tǒng)。</p><p> 1.5 智能溫度控制器的課題主要內(nèi)容</p><p> 課題的任務是應用單片機及DS18B20單總線器件設(shè)計一套溫度檢測系統(tǒng),實現(xiàn)對溫度的測量及顯示,并通過按鍵人為設(shè)定溫度上下限!而且在溫度超上限價或下限量有控制功能,系統(tǒng)以高性能/價格比的89S52為核心,完成對
15、數(shù)據(jù)的分析、處理、顯示、溫度上下限設(shè)置、超限自動控制,采用單線數(shù)字溫度傳感器DS18B20來完成對溫度的采樣和轉(zhuǎn)換。</p><p> 由于課題是完成對溫度的實時監(jiān)測,因而系統(tǒng)的核心部分就是如何實現(xiàn)溫度采集。系統(tǒng)采用的是美國DALLAS公司繼DS1820之后推出的一種改進型智能溫度傳感器DS18B20來完成這一任務的。DS18B20與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度并且可根據(jù)實際要去通過簡單的編程實現(xiàn)
16、9-12位的數(shù)字值讀數(shù)方式,可分別在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅從一根口線,溫度變換功率來源于數(shù)據(jù)總線,總線本身可以為所接的DS180B20供電,而無需外電源。</p><p> DS18B20需在嚴格的時序控制下才能進行正常操作。對DS18B20的操作包括初始化操作、讀/寫時間片??偩€上的所有操作均從初始化開始,初始化或?qū)A
17、M、ROM操作。主CPU通過“時間片”來寫入或讀出DS18B20中的數(shù)據(jù)。概括說,主CPU經(jīng)過單線接口訪問DS18B20的工作流程為:對DS18B20進行初始化→ROM操作命令→存儲器(包括RAM和EERAM)操作命令→數(shù)據(jù)處理。主CPU對ROM操作完畢,即發(fā)出控制操作命令,使DS18B20完成溫度測量并將測量結(jié)果存入高速暫存器中,然后單片機可讀出此溫度轉(zhuǎn)換值,并隨之進行數(shù)據(jù)處理、送顯示等操作。</p><p>
18、 2 智能溫度控制系統(tǒng)基本構(gòu)成及工作原理</p><p> 2.1系統(tǒng)的硬件構(gòu)成</p><p> 課題設(shè)計的硬件部分由89S52單片機、DS18B20、74LS14、74LS273鎖存器以及若干電容、7個發(fā)光二極管、4只數(shù)碼管、5個按鍵、11.0592MHZ晶振組成。(結(jié)構(gòu)如圖2.1)</p><p> 圖2.1 系統(tǒng)設(shè)計結(jié)構(gòu)圖</p>&
19、lt;p> 以下對各組成部件功能進行簡單介紹:</p><p> 89S52單片機用于溫度的采集,數(shù)據(jù)處理,存儲溫度上下限和超溫控制。</p><p> DS18B20是單總線數(shù)字溫度傳感器,輸出方式為串行單線輸出,主要作用是把溫度值以數(shù)字形式輸出和存儲轉(zhuǎn)換精度控制字。第三章將作出詳細介紹,此處不做過多贅述。</p><p> 74LS02或非門,用于
20、選擇鎖存器(與寫信號或非)。</p><p> 74LS14施密特觸發(fā)器,用于鍵盤消抖。</p><p> 74LS273鎖存器。用鎖存顯示位、段碼以及指示信號。</p><p> 按鍵用于輸入和查看溫度上下限,使單片機復位,每隔2小時發(fā)送0.5秒的啟動電機的正脈沖。</p><p> 晶振是為單片機提供工作脈沖。</p>
21、<p> 數(shù)碼管用于顯示溫度值。</p><p> 發(fā)光二極管用于上下限溢出報警,溫度超限報警及控制,設(shè)置上/下限指示,正常工作指示。各功能對應的指示燈設(shè)置如表2.1:</p><p> 表2.1 指示燈設(shè)置</p><p> 2.2 系統(tǒng)的軟件構(gòu)成</p><p> 課題原計劃用匯編語言完成。后來決定使用C語音編
22、寫程序,系統(tǒng)的軟件由溫度數(shù)據(jù)采集、數(shù)據(jù)處理、溫度顯示及按鍵處理等部分組成。89S52完成的功能主要是數(shù)據(jù)處理、數(shù)據(jù)分析、控制計算、進制轉(zhuǎn)換、數(shù)據(jù)顯示、按鍵處理以及電機控制等。溫度采樣和轉(zhuǎn)換部分由DS18B20來完成。</p><p> 2.2.1 系統(tǒng)的工作原理</p><p> 首先,由溫度傳感器DS18B20對溫度進行采樣和轉(zhuǎn)換,將測量結(jié)果送給單片機,單片機將輸入的溫度值進行數(shù)據(jù)處
23、理,并將溫度值與設(shè)定的溫度值上下限進行比較。根據(jù)比較結(jié)果進行相應的處理。若溫度超限則報警指示燈亮,以便進行及時處理。</p><p> 系統(tǒng)原理框圖如圖2.2所示:</p><p> 圖2.2 系統(tǒng)原理圖</p><p> 3 智能溫度控制系統(tǒng)硬件設(shè)計</p><p> 本章是論文核心部分,主要介紹基于單片機的溫度控制系統(tǒng)硬件總體設(shè)
24、計,按照設(shè)計方案,整個溫控系統(tǒng)硬件主要包括以下單元:按鍵輸入,溫度采集、處理,溫度超限報警,定時發(fā)出脈沖等。溫度控制的核心為溫度的采集和處理,系統(tǒng)選用特別適用于編程及數(shù)據(jù)處理的MS-51單片機89S52,并通過89S52實現(xiàn)對其他各組成部分的編程控制。下面是核心原件的介紹:</p><p> 3.1 數(shù)字溫度傳感器DS18B20詳述</p><p> 3.1.1 DS18B20簡介 &
25、lt;/p><p> DS18B20是美國DALLAS半導體公司生產(chǎn)的可組網(wǎng)數(shù)字式溫度傳感器,在其內(nèi)部使用了在板(ON-B0ARD)專利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。與其它溫度傳感器相比,DS18B20具有以下特性:</p><p> a) 獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。
26、0; b) 在使用中不需要任何外圍元件。 c) 可用數(shù)據(jù)線供電,電壓范圍:+3.0 V~+5.5 V。 d) 測溫范圍:-55 ℃~+125 ℃。固有測溫分辨率為0.1℃。 e) 通過編程可實現(xiàn)9~12位的數(shù)字讀數(shù)方式。 f)用戶可自設(shè)定非易失性的報警上下限值。
27、0; g)支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。3.1.2 DS18B20的引腳名稱及作用</p><p> 外形如圖3.1所示。其體積只有DS1820的一半,引腳定義相同。</p><p> a) DQ:數(shù)據(jù)輸入輸出引腳</p><p> b) VDD:可接電源,也可接地。因為每只DS18B20都可以設(shè)置成兩
28、種供電方式。采用數(shù)據(jù)總線方式時VDD接地,可以節(jié)省一根傳輸線,但完成溫度測量的時間較長;采用外部供電方式則接5V,多用一根導線,但測量速度較快。</p><p> 圖3.1 DS18B20外觀</p><p> 3.1.3 DS18B20的內(nèi)部結(jié)構(gòu)</p><p> 它主要由4部分組成:64位ROM、溫度傳感器、非易失性的溫度報警觸發(fā)器TH和TL、高速暫存器
29、。64位ROM用于存儲DS18B20序列號,其首字節(jié)固定為28H,表示產(chǎn)品類型碼,后6個字節(jié)是每個器件的編碼,最后1個字節(jié)是CRC校驗碼。溫度報警觸發(fā)器TH和TL存儲用戶通過軟件寫入的報警上下極限。高速暫存器由9個字節(jié)組成,其中有2個字節(jié)RAM單元用來存放溫度值,前1個字節(jié)為溫度值的補碼低8位,后1個字節(jié)為字符號位和溫度值的補碼高3位。其內(nèi)部結(jié)構(gòu)框圖如圖3.2所示:</p><p> 圖3.2 DS18B20內(nèi)
30、部結(jié)構(gòu)框圖</p><p> 3.1.4 DS18B20的測溫原理</p><p> DS18B20測量溫度采用了特有的溫度測量技術(shù),其溫度測量電路如圖3.3所示。</p><p> 圖3.3 DS18B20 測溫結(jié)構(gòu)圖</p><p> 圖3.3中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,
31、高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖后進行計數(shù),進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 ℃所對應的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預置在-55℃所對應的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當減法計
32、數(shù)器1的預置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。圖3.3中的斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關(guān)閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。
33、60; 另外,由于DS18B20單線通信功</p><p> 3.1.5 DS18B20的轉(zhuǎn)換精度控制字及分辨率設(shè)置</p><p> 設(shè)置轉(zhuǎn)換精度控制字格式如表3.1所示</p><p> 表3.1 轉(zhuǎn)換精度控制字格式</p><p> 分辨率設(shè)置如表3.2所示:</p><p> 表3.2 分
34、辨率設(shè)置</p><p> 由表可見,設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應用中需要在分辨率與轉(zhuǎn)換時間二者之間權(quán)衡考慮。在芯片出廠時R1和R0被配置為“1”,即工作在12位模式下。當DS18B20接收到溫度轉(zhuǎn)換命令(44H)開啟后,開始啟動轉(zhuǎn)換,轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在暫存RAM的第0,1字節(jié)。在執(zhí)行讀暫存RAM命令后,可將這兩個字節(jié)的溫度值通過單線總
35、線傳給CPU,高位字節(jié)中符號代表溫度值為正還是負值。</p><p> 3.1.6 DS18B20的溫度數(shù)字關(guān)系</p><p> 用12位精度測出的溫度值用16位二進制補碼形式表示,如表3.3所示:</p><p> 表3.3 DS18B20存儲器映像圖</p><p> MSB
36、 LSB</p><p> MSB LSB</p><p> 圖中S為符號位,S=1,溫度為負值;S=0,溫度為正值。</p><p> DS18B20用12位精度測出的數(shù)字量(用16位二
37、進制補碼形式表示)如表3.4所示:</p><p> 表3.4 部分溫度與對應的數(shù)字溫度輸出之間的對應關(guān)系</p><p> 3.1.7 DS18B20的內(nèi)存結(jié)構(gòu)圖</p><p> DS18B20的存儲器包括SRAM存儲器和非易失的EEPROM存儲器,EEPROM用于存放觸發(fā)報警上限值存儲器(TH)和觸發(fā)報警下限存儲器(TL)。當DS18B20在使用過程中
38、并未使用報警功能時,TH和TL可作為普通用途的存儲器單元使用。DS18B20的存儲組織結(jié)構(gòu)如表3.5所示。</p><p> 表3.5 DS18B20內(nèi)部存儲器組織結(jié)構(gòu)圖</p><p> 3.1.8 DS18B20的操作命令</p><p> DS18B20是一種可編程的數(shù)字溫度傳感器,它的工作是靠計算機給它發(fā)控制命令進行的,DS18B20和計算機在工作過程
39、中的協(xié)議主要有:初始化、ROM存儲器操作命令、RAM存儲器操作命令。分別說明如下:</p><p><b> a) 初始化</b></p><p> 單總線上的所有處理均從初始化開始。初始化過程是主機通過向作為從機DS18B20芯片發(fā)一個有時間寬度要求的初始化脈沖實現(xiàn)的。初始化完成后,才可進行讀寫操作。</p><p> b) 對ROM的
40、5種操作命令</p><p> 一旦主CPU檢測到從屬器件的存在,就可以發(fā)出ROM操作命令。所有ROM操作命令均為8位(二進制)字長。主CPU可以發(fā)出ROM操作命令有以下五種:</p><p> 1) 讀ROM命令(READ ROM,約定代碼33H)。該命令允許主CPU讀取DS18B20中的8位產(chǎn)品系列編碼,48位序列號以及8位的CRC。該命令適用于總線上接一片DS18B20的情況。當
41、總線上掛有多片DS18B20時禁止使用該命令,否則多片DS18B20同時發(fā)送數(shù)據(jù),必然會導致互相沖突。</p><p> 2) 符合ROM命令(MATCH ROM,約定代碼55H)。主CPU在發(fā)出“符合”ROM命令后,接著發(fā)出64位的ROM數(shù)據(jù)序列,從而使主CPU實現(xiàn)對單線總線上特定DS18B20的尋址。只有與ROM序列嚴格相符的DS18B20,才能對后續(xù)的存儲器操作命令作出響應。所有與64位ROM序列不相符的
42、DS18B20將等待復位脈沖。該命令對于總線上掛有單個、或多個器件的情況均適用。</p><p> 3) 搜索ROM命令(SEARCH ROM,約定代碼F0H)。搜索ROM命令允許主CPU使用一種“消除法”(ELMINATION)來識別總線上所有DS18B20的64位ROM編碼,即完成整個系統(tǒng)的初始化工作。為以后對各個單線器件作好準備。該部分也是對DS18B20芯片進行軟件編程的重點和難點。</p>
43、<p> 4) 跳過ROM命令(SKIP ROM,約定代碼為CCH)。在單線總線系統(tǒng)中,該命令使主CPU不必提供64位ROM編碼就能訪問各片DS18B20。該命令主要用于向所有的DS18B20同時發(fā)出溫度轉(zhuǎn)換命令,從而大大節(jié)省訪問各個器件的時間。但有一點必須注意,主CPU如果在發(fā)出SKIP ROM命令之后,又發(fā)出了讀存儲器命令,那么由于多片DS18B20同時向總線上提供數(shù)據(jù)且在漏極開路狀態(tài)下產(chǎn)生“線與”的結(jié)果,此時讀出的
44、數(shù)據(jù)已經(jīng)沒有實際意義了。</p><p> 5) 報警搜索命令(ALARAM SEARCH,有約定代碼ECH)。該命令的流程與搜索ROM命令的流程相同。僅在最后一次溫度測量出現(xiàn)報警的情況下。DS18B20才對該命令做出響應。報警的條件定義為溫度超過上限(T>TH),或者低于下限(T<TL)。上電時,DS18B20預置報警條件為設(shè)定狀態(tài),直到首次溫度測量結(jié)果既不超過上限TH,也不低于TL時,報警信號才
45、被解除。</p><p> c) 存儲器操作命令</p><p> 存儲器操作命令共有6條,具體如下:</p><p> 1) 溫度轉(zhuǎn)換命令(CONVERT T){44H}。令DS18B20進行溫度轉(zhuǎn)換。如果住CPU在該命令之后為讀時序,如果DS18B20正忙于進行溫度轉(zhuǎn)換,即讀得“0”;當溫度轉(zhuǎn)換完成時,DS18B20則返回“1”。假如有寄生電源給DS18B
46、20供電,主CPU在發(fā)出該命令后立即將單線總線拉成高電平,并且保持500ms時間,以便在溫度轉(zhuǎn)換期間給DS18B20提供所需要的電源。</p><p> 2) 讀暫存存儲器(READ SCRATCHPAD){BEH}。該命令為讀暫存存儲器9個字節(jié)的內(nèi)容。從字節(jié)0開始讀,直至讀到字節(jié)8。主CPU可以在讀暫存存儲器期間發(fā)出一個復位脈沖來終止讀操作。</p><p> 3) 寫暫存存儲器(W
47、RITE SCRATCHPAD){4EH}。主CPU送給DS18B20的2個字節(jié)數(shù)據(jù)就分別寫入觸發(fā)寄存器TH和觸發(fā)寄存器TL中,順序是先寫TH,到寫TL。主CPU也可以在寫暫存存儲器期間發(fā)出一個復位脈沖來終止寫操作。</p><p> 4) 復制暫存存儲器{COPY SCRATCHPAD}{48H}。該命令把觸發(fā)寄存器中的TH、TL字節(jié)分別復制到EERAM的TH、TL的字節(jié)上。若主CPU發(fā)出命令后又進行讀操作,
48、只要DS18B20正忙于復制,主CPU就讀“0”;當復制工作完成后,DS18B20又返回“1”。如果是寄生電源供電,主CPU在發(fā)出該命令后就把單線總線拉到高電平,并保持10ms。</p><p> 5) 重新調(diào)出EERAM(RECALL EERAM){B8H}。該命令是把存儲器在E2RAM溫度觸發(fā)器TH、TL內(nèi)的數(shù)據(jù)重新調(diào)入暫存器的TH、TL字節(jié)。每次DS18B20上電時也自動進行這種操作,因此,只要器件接通電
49、源,暫存存儲器的TH、TL中已經(jīng)有效的數(shù)據(jù)供使用。若主CPU在發(fā)出該命令之后又進行讀操作,只要DS18B20正忙于進行調(diào)出,主CPU就讀得“0”(表示“忙碌”);完成調(diào)出操作后DS18B20既返回“1”(表示“操作完畢”)。</p><p> 6) 讀電源(READ POWER SUPPLY){B4H}。此項命令發(fā)送給DS18B20之后,對主CPU發(fā)出的每條讀命令,DS18B20都向主CPU提供電源方式信號“0
50、”(表示由寄生電源供電)或者“1”(表示由外部電源供電)。</p><p> 3.1.9 DS18B20的工作時序</p><p> 主機使用時間隙來讀寫DS18B20的數(shù)據(jù)位和寫命令字的位。</p><p><b> a) 初始化</b></p><p> 主機總線T0時刻發(fā)送復位脈沖(最短為480us的低電平
51、信號),接著在T1時刻釋放總線并進入接受狀態(tài),DS18B20再檢驗到總線的上升沿之后,等待15us~60us,接著在T2時刻發(fā)出存在脈沖(60us~240us),如圖3.4所示。</p><p> 圖3.4 DS18B20初始化時序圖</p><p><b> b) 寫時間隙</b></p><p> 當主機總線在T0時刻從高拉至低電平
52、時,就產(chǎn)生寫時間隙,如圖3-5(a,b),從T0時刻開始15us之內(nèi)應將所需寫的位送到總線上,DS18B20在T0后15us~60us間對總線采樣。若為低電平,則寫入的是0,如圖3.5(a);若為高電平,則寫入的位是1,見圖3.5(b)。連續(xù)寫2位時間間隙應大于1us。</p><p> 圖3.5 (a)寫0時序</p><p> 圖3.5 (b)寫1時序</p><
53、;p><b> c) 讀時間隙</b></p><p> 如圖3.6,總線T0時刻從高拉至低電平時,總線只需保持低電平1us。之后在T1時刻將總線拉高,產(chǎn)生讀時間隙,讀時間隙在T1時刻和T2時刻前有效。T2距T0為15us,也就是說,T2時刻前主機必需完成讀位,并在T0后的60us~120us內(nèi)釋放總線。</p><p><b> 圖3.6 讀
54、時序</b></p><p> 3.1.10 DS18B20與單片機的硬件接口</p><p> 因為DS18B20是單線接口器件,因此它與單片機硬件接口十分簡單,只需占用單片機的一個雙向的I/O口,其接口電路見圖3.7。在此采用外部電源供電,占用89S52的P1.0口。</p><p> 圖3.7 單片機接口電路</p><p
55、> 3.1.11 DS18B20使用中注意事項 </p><p> DS18B20雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點,但在實際應用中也應注意以下幾方面的問題: </p><p> a) 較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫
56、結(jié)果。在使用PL/M、C等高級語言進行系統(tǒng)程序設(shè)計時,對DS1820操作部分最好采用匯編語言實現(xiàn)。 </p><p> b) 在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認為可以掛任意多個DS1820,在實際應用中并非如此。當單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅(qū)動問題,這一點在進行多點測溫系統(tǒng)設(shè)計時要加以注意。 </p><p>
57、; c) 連接DS1820的總線電纜是有長度限制的。試驗中,當采用普通信號電纜傳輸長度超過50m時,讀取的測溫數(shù)據(jù)將發(fā)生錯誤。當將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達150m,當采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正常通訊距離進一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用DS1820進行長距離測溫系統(tǒng)設(shè)計時要充分考慮總線分布電容和阻抗匹配問題。 </p><p>
58、 d) 在DS1820測溫程序設(shè)計中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號,一旦某個DS1820接觸不好或斷線,當程序讀該DS1820時,將沒有返回信號,程序進入死循環(huán)。這一點在進行DS1820硬件連接和軟件設(shè)計時也要給予一定的重視。 </p><p> 3.2 MCS-51系列單片機簡介 </p><p> 3.2.1 MCS-51系列單片機<
59、;/p><p> MCS-51系列單片機研制于1980年,由Intel公司所開發(fā),其結(jié)構(gòu)是8048的延伸,改進了8048的缺點,其ROM、RAM都可擴充至64KB,也增添了如乘(MUL)、除(DIV)、減(SUBB)、比較(CJNE)、棧入(PUSH)、棧出(POP)、16位數(shù)據(jù)指針、布爾代數(shù)運算等指令,以及串行通信能力和5個中斷源。8052有6個中斷源。MCS-51系列單片機特點如下:(1)專為控制應用所設(shè)計的八
60、位CPU ;(2)具有布爾代數(shù)的運算能力;(3)32條雙項且可被獨立尋址的I\O口;(4)芯片內(nèi)有128字節(jié)可供存儲數(shù)據(jù)的RAM(8052:256字節(jié));(5)內(nèi)部有兩組16位定時器(8052有3個);(6)具有全多工傳輸信號UART;(7)5個中斷源,且具有兩級(高/低)優(yōu)先權(quán)順序的中斷結(jié)構(gòu);(8)芯片內(nèi)有4KB(8KB/8052)的程序存儲器(ROM);(9)芯片內(nèi)有時鐘(CLOCK)振蕩器電路;(10)程序存儲器可擴展至64KB(
61、ROM);(11)數(shù)據(jù)存儲器可擴展至64KB(RAM)。</p><p> 3.2.2 MCS-51系列單片機引腳介紹</p><p> a) 時鐘電路引腳 MCS-51單片機的時鐘可以由內(nèi)部方式和外部方式產(chǎn)生,XTAL1(19腳)和XTAL2(18腳)即為單片機的兩個時鐘引腳。 </p><p> 1)內(nèi)時鐘引腳8051單片機片內(nèi)有振蕩電路,只需在XTAL
62、1和XTAL2間外接石英晶體和電容組成的并聯(lián)振蕩電路(晶振器),晶體可以在固有頻率1.2~12MHz的晶振器之間任選晶體,電容可以在20~60pF的電容之間任選,通常選擇30pF的瓷片電容。在單片機控制的數(shù)字顯示溫度計電路設(shè)計的這個部分,就是采用內(nèi)時鐘引腳,其中晶振器為6MHz,兩個電容均為30pF。</p><p> 2)外時鐘方式,XTAL1接地,XTAL2接外部振蕩器。由于XTAL2端的電平不是TTL電平
63、,故接一個上拉電阻。外部振蕩器的頻率應低于12MHz。</p><p> b) 制信號引腳,包括RST/Vpd、ALE/PROG非、PSEN非、EA非/Vpp。下面分別對其進行介紹:</p><p> 1) RST/Vpd(9腳):復位信號/備用電源引腳 當輸入的復位信號延續(xù)2個機器周期以上,高電平即為有效,用以完成單片機的復位操作。復位后影響片內(nèi)特殊功能寄存器的狀態(tài),但不影響片內(nèi)RA
64、M狀態(tài)。 同一引腳的Vpd是備用電源輸入端(Vpd接+5V備用電源)。在Vcc斷電時,為保證RAM中的信息不丟失,可使此引腳完成掉電保護功能。 </p><p> 2) ALE/PROG非(30腳);地址鎖存允許信號/編程脈沖輸入端 在系統(tǒng)擴展時,ALE用于控制把P0口輸出的低8位地址送入鎖存器鎖存起來,以實現(xiàn)低位地址和數(shù)據(jù)的分時傳送。此外由于ALE是以1/6晶振頻率的固定頻率輸出的正脈沖,因此可作為外邊時鐘或
65、外部定時脈沖使用。 對片內(nèi)帶有4kbyteEPROM的8751編寫固化程序時,PROG非作為編程脈沖輸入端。 </p><p> 3) PSEN非(29引腳):外邊程序存儲器讀選通信號為低電平有效,8051在訪問片外程序存儲器時,此引腳端輸出負脈沖作為讀片外程序存儲器的選通信號,以實現(xiàn)外部ROM單元的讀操作。要檢查8051上電平后CPU能否正常到程序存儲器中讀取指令碼,可以用示波器觀察引腳PSEN非有無脈沖輸出
66、,若有說明正常。</p><p> 4) EA非/Vpp(31腳):內(nèi)部和外部程序存儲器選擇信號 當引腳接高電平時,CPU只訪問片內(nèi)4kbyte的EPROM/ROM,執(zhí)行內(nèi)部程序存儲器中的指令,但在程序計數(shù)器計數(shù)超過OFFFH時(即地址大于4kbyte時),將自動轉(zhuǎn)向執(zhí)行片外大于4kbyte程序存儲器內(nèi)的程序。 若EA非引腳接低電平時,CPU只訪問外部程序存儲器,而不管片內(nèi)是否有程序存儲器。對于8031單片機(
67、片內(nèi)無ROM)需外擴EPROM,故必須將EA非引腳接地。 在對EPROM編寫固化程序時,需對此引腳施加21V的編程電壓。</p><p> c) I/O(輸入/輸出)接口引腳 </p><p> 1) 并行I/O接口的特點 MCS-51有4個8位并行I/O接口P0~P3,他們都是雙向端口,可以進行輸入或者輸出操作,每個口都有口鎖存器和口驅(qū)動器兩部分組成。此外,它還有一個全雙工串行通信
68、口。這4個端口為MCS-51與外圍器件或外圍設(shè)備進行信息(數(shù)據(jù)、地址、控制信號)交換提供了多功能的輸入/輸出通道,也為MCS-51擴展外部功能、構(gòu)成應用系統(tǒng)提供了必要的條件。它們的特點如下:a、4個并行I/O接口都是雙向的。P0口為漏極開路,P1、P2、P3口均具有內(nèi)部上拉電阻,它們有時被稱為準雙向口。b、4個并行口的32條I/O接口線都可以獨立地用于輸入或輸出操作。c、當4個并行口的I/O接口線有作輸入操作時,必須對該口的鎖存器進行寫
69、1操作,以保證從I/O接口線輸入數(shù)據(jù)的正確性,這也是4個并行接口有時被稱為“準”雙向的含義。</p><p> 2) I/O接口電路功能匯總 MCS-51單片機內(nèi)部屬單總線結(jié)構(gòu),因此使系統(tǒng)在結(jié)構(gòu)上增加了靈活性。通過總線,用戶可根據(jù)應用需要進行多功能的系統(tǒng)擴展,構(gòu)成用戶的實際應用系統(tǒng)。MCS-51系列中的8031單片機,因其內(nèi)部在結(jié)構(gòu)上無程序存儲器,所以它的應用系統(tǒng)必定為一個擴展的系統(tǒng)。因此,MCS-51的4個并
70、行I/O接口中的P0、P1、P2、P3口基本上都具備有這兩項功能:a、P0口:P0口是一個多功能口除可以作為通用的輸入/輸出口外,還具備用于系統(tǒng)擴展的第二功能。在MCS-51的進行系統(tǒng)擴展時,它作為地址/數(shù)據(jù)總線口。通過外接地址鎖存器,MCS-51的內(nèi)部單總線可從P0口被擴展成8位的數(shù)據(jù)總線和16位地址總線的低8位。在實際應用中,P0口先送出外部存儲器16位地址中的低8位至地址鎖存器鎖存,然后再由P0口進行8位數(shù)據(jù)的輸入或輸出;b、P1
71、口:P1口作為通用I/O接口,它的每一位都可以別編程為通用I/O接口線;c、P2口:P2口也是一個多功能口,與P0口相似,它除可被用作I/O接口外,在進行系統(tǒng)擴展時,還可以輸16位地址總線中的高8位,和P0口共同構(gòu)成16位的地址總線。當然,在P0口和P2口用</p><p> 表3.8 P3口各引腳定義</p><p> 一個信號引腳,既是第一功能又是第二功能,在使用時也不會引起混亂和
72、造成錯誤,理由如下:a、對于各種型號的芯片,其功能的第一功能信號是相同的,所不同的只在引腳的的第二功能信號上;b、對于9、30和31各個引腳,由于第一功能信號與第二功能信號是單片機在不同工作方式下的信號,因此不會發(fā)生使用上的矛盾;c、P3口線的情況卻有所不同,它的第二功能信號都是單片機的重要控制信號。因此在實際使用時,總是先按需要優(yōu)先選用它的二功能,剩下不用的才作為口線使用。</p><p> d) MCS-5
73、1單片機的復位方式和復位電路</p><p> 1) 復位操作:復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當由于程序運行出錯或者操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位鍵以重新啟動。a、復位操作還對單片機的個別引腳信號有影響,例如把ALE和PSEN非信號變?yōu)闊o效狀態(tài),即ALE=0,PSEN=1;b、復位信號及其
74、產(chǎn)生 RST引腳是復位信號的輸入端,復位信號是高電平有效,其有效時間持續(xù)24個振蕩脈沖周期(即2個機器周期)以上,若使用頻率為6MHz的晶振,則復位信號持續(xù)時間應超過4us才能完成復位操作。整個復位電路包括芯片內(nèi)外兩部分。外部電路產(chǎn)生的復位信號(RST)送施密特觸發(fā)器,再由片內(nèi)復位電路在每個機器周期的S5時刻對施密特觸發(fā)器的輸出進行采樣。然后才得到內(nèi)部復位操作所需要的信號。</p><p> 3.3 顯示溫度值
75、的LED顯示器接口簡介 </p><p> LED顯示器是單片機應用系統(tǒng)中常用的廉價輸出設(shè)備。它是由若干個發(fā)光二極管組成的,當發(fā)光二極管導通時,相應一個筆畫劃發(fā)光,控制某段發(fā)光二極管導通,就能顯示出某個數(shù)碼或字符。</p><p> 在靜態(tài)顯示系統(tǒng)中,每位顯示器都應有各自的鎖存器、譯碼器(若采用軟件譯碼,譯碼器可省去)與驅(qū)動器,用以鎖存各自待顯示數(shù)字的BCD碼或字段碼。因此,靜態(tài)顯示系
76、統(tǒng)在每一次顯示輸出后能夠保持顯示不變,僅在待顯示數(shù)字需要改變時,才更新其數(shù)字顯示鎖存器中的內(nèi)容。這種顯示占用CPU的時間少,顯示穩(wěn)定可靠。缺點是,當顯示的位數(shù)較多時,占用的I/O口較多。</p><p> 在動態(tài)顯示的系統(tǒng)中,CPU需定時地對每位LED顯示器進行掃描,每位LED顯示器分時輪流工作,每次只能使一位LED顯示,但由于人的視覺暫留現(xiàn)象,仍感覺所有的LED顯示器都在同時顯示。這種顯示的優(yōu)點是使用硬件少,
77、占用I/O口少。缺點是占用 CPU時間長,只要不執(zhí)行顯示程序,就立刻停止顯示。但隨著大規(guī)模集成電路的發(fā)展,目前已有能自動對顯示器進行掃描的專用顯示芯片,使電路既簡單又占用CPU時間。在我們所設(shè)計的溫度計中數(shù)碼管顯示就是利用的動態(tài)顯示。</p><p> 4 智能溫度控制系統(tǒng)軟件設(shè)計</p><p> 課題的程序用Keil C51語言編寫,由于使用了C語言,寄存器的分配、不同的存儲器的
78、尋址及數(shù)據(jù)類型等細節(jié)可由編譯器管理,尤其是數(shù)學運算不必人工干預,大大縮短了變成與調(diào)試的時間,提高了效率,降低了編成難度,使編程更加簡便。</p><p> 系統(tǒng)的控制軟件可分為主程序,DS18B20通信程序,按鍵程序等模塊。主程序可分為系統(tǒng)的初始化,自檢子程序,溫度顯示子程序三部分。溫度顯示子程序完成溫度采集,溫度值的BCD轉(zhuǎn)換,調(diào)顯示子程序,超溫報警和控制。DS18B20通信程序主要由DS18B20初始化程序
79、,DS18B20讀字節(jié)程序,DS18B20寫字節(jié)程序組成。按鍵程序主要完成溫度上、下限的設(shè)置和顯示,在單片機控制下每2小時發(fā)送0.5秒的啟動電機的正脈沖。本系統(tǒng)有五個按鍵,依次是:復位鍵、K1鍵、K2鍵、K3鍵、K4鍵。按鍵程序主要包括INT1中斷子程序、定時器T0中斷子程序、INT1中斷子程序、定時器T1中斷子程序、定時器T2子程序。其中,復位鍵部分放入主程序中,作為主程序的一部分。K4鍵功能:每2小時發(fā)送0.5秒的啟動電機的正脈沖。
80、下面是主程序和各個子程序的流程圖。</p><p> 4.1 主程序流程圖</p><p> 系統(tǒng)完成的是對周圍溫度進行檢測,采用DS18B20傳感器。當溫度超過設(shè)定溫度范圍時,進行報警。引入單片機控制是實現(xiàn)系統(tǒng)智能化很重要的一個部分,采用單片機可以實現(xiàn)程序控制和監(jiān)視的功能。系統(tǒng)采用89S52和DS18B20的連接進行實時控制和數(shù)據(jù)處理。軟件編程負責設(shè)置溫度上、下限,然后讓系統(tǒng)根據(jù)設(shè)置
81、的程序完成控制功能。主程序流程圖如圖4.1所示。</p><p> 圖4.1 主程序流程圖</p><p> 4.2 子程序流程圖及程序內(nèi)容</p><p> 4.2.1 DS18B20初始化子程序流程圖</p><p> DS18B20在初始化序列期間,總線控制器拉低總線并保持480us以發(fā)出(TX)一個復位脈沖,然后釋放總線,進入
82、接收狀態(tài)(RX)。單總線由5K上拉電阻拉到高電平。當DS18B20探測到I/O引腳上的上升沿后,等待15~60us,然后發(fā)出一個由60~240us低電平信號構(gòu)成的存在脈沖。完成對DS18B20的初始化操作,在每次測溫前必須對其進行初始化,否則系統(tǒng)無法正常運行。所以這個步驟很重要。DS18B20初始化子程序流程如圖4.2所示。</p><p> 圖4.2 DS18B20初始化子程序流程圖</p>
83、<p> void RST18B20(void) /*DS18B20初始化子程序*/</p><p><b> {DQ=0;</b></p><p> delay(15);</p><p><b> DQ=1;</b></p><p><b>
84、 delay(2);</b></p><p> do{}while(DQ==1);</p><p> do{}while(DQ==0);</p><p><b> }</b></p><p> 4.2.2 DS18B20寫字節(jié)子程序</p><p> DS18B20寫字節(jié)由兩
85、種寫時序組成:寫1時序和寫0時序??偩€控制器通過寫1時序?qū)戇壿?到DS18B20,寫0時序?qū)戇壿?到DS18B20。所有寫時序必須最少持續(xù)60us,包括兩個寫周期之間至少1us的恢復時間。當總線控制器把數(shù)據(jù)線從邏輯高電平拉到低電平的時候,寫時序開始總線控制器要生產(chǎn)一個寫時序,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時序開始后的15us釋放總線。當總線被釋放的時候,5K的上拉電阻將拉高總線??偪刂破饕梢粋€寫0時序,必須把數(shù)據(jù)線拉到低電平并
86、持續(xù)保持(至少60us)??偩€控制器初始化寫時序后,DS18B20在一個15us到60us的時間內(nèi)對I/O線采樣。如果線上是高電平,就是寫1。如果線上是低電平,就是寫0。DS18B20寫字節(jié)程序流程圖如圖4.3所示。</p><p> 圖4.3 DS18B20寫字節(jié)流程圖</p><p> void write_zi (uchar wr) /*向DS18B20寫字節(jié)子程
87、序*/</p><p><b> {uchar i;</b></p><p> for (i=0;i<8;i++)</p><p><b> {DQ=0;</b></p><p><b> _nop_();</b></p><p> DQ
88、=wr&0x01;</p><p><b> delay(5);</b></p><p><b> DQ=1;</b></p><p><b> wr>>=1;</b></p><p><b> }</b></p>
89、<p><b> }</b></p><p> 4.2.3 DS18B20讀字節(jié)子程序</p><p> 總線控制器發(fā)起讀時序時,DS18B20僅被用來傳輸數(shù)據(jù)給控制器。因此,總線控制器在發(fā)出讀暫存器指令[BEh]或讀電源模式指令[B4h]后必須立刻開始讀時序,DS18B20可以提供請求信息。除此之外,總線控制器在發(fā)出發(fā)送溫度轉(zhuǎn)換指令[44h]或召
90、回EEPROM指令[B8h]之后讀時序,所有讀時序必須最少60us,包括兩個讀周期間至少1us的恢復時間。當總線控制器把數(shù)據(jù)線從高電平拉到低電平時,讀時序開始,數(shù)據(jù)線必須至少保持1us,然后總線被釋放。在總線控制器發(fā)出讀時序后,DS18B20通過拉高或拉低總線上來傳輸1或0。當傳輸邏輯0結(jié)束后,總線將被釋放,通過上拉電阻回到上升沿狀態(tài)。從DS18B20輸出的數(shù)據(jù)在讀時序的下降沿出現(xiàn)后15us內(nèi)有效。因此,總線控制器在讀時序開始后必須停止
91、把I/O腳驅(qū)動為低電平15us,以讀取I/O腳狀態(tài)。DS18B20讀字節(jié)子程序如圖4.4所示。</p><p> 圖4.4 DS18B20讀字節(jié)子程序</p><p> uchar read_zi (void) /*從DS18B20讀出字節(jié)子程序*/</p><p> {uchar i,u=0;</p><p>
92、 for(i=0;i<8;i++)</p><p><b> {DQ=0;</b></p><p><b> u>>=1;</b></p><p><b> DQ=1;</b></p><p><b> if(DQ==1)</b>
93、;</p><p><b> u|=0x80;</b></p><p> delay (4);</p><p><b> }</b></p><p> return(u);</p><p><b> }</b></p><p
94、> 4.2.4 溫度顯示子程序</p><p> 溫度顯示子程序主要完成溫度的讀出和顯示的功能。當溫度為零下是顯示為“—”號;當溫度為零上時消隱。當測定溫度低于設(shè)定溫度下限值時,第1、2、4、5、6、7個發(fā)光二極管點亮;當測定溫度高于設(shè)定溫度上限值時,第1、3、4、5、6、7個發(fā)光二極管亮。起到報警作用。溫度顯示子程序流程圖如圖4.5所示。</p><p> 圖4.5 溫度
95、顯示子程序</p><p> float WL=-10.0,WH=30.0; /*WH、WL用于存儲上、下限溫度*/</p><p> void showT(void) /*溫度顯示子程序*/</p><p><b> {</b></p><p> uchar idata
96、 tem[4];</p><p> float wd=0; /*wd為采集的溫度值*/</p><p><b> int m;</b></p><p><b> for(;;)</b></p><p><b> {</b></p
97、><p> wd=cewen();</p><p> if(wd<0) /*判斷溫度是否為正*/</p><p><b> {</b></p><p><b> wd=-wd;</b></p><p> tem[0]=16;
98、 /*溫度為負值,數(shù)碼管第1位顯示負號*/</p><p><b> }</b></p><p> else tem[0]=17; /*溫度為正值,數(shù)碼管第1位不顯示*/</p><p> tem[1]=wd/10; /*將溫度值各位分離出來*/<
99、/p><p><b> m=wd*10;</b></p><p> tem[2]=m%100/10;</p><p> tem[3]=m%10;</p><p> display(tem+3);</p><p> deng=0x02; /*顯示溫度,第1個
100、發(fā)光二極管亮*/</p><p> if(wd<=WL)</p><p> deng=0x7B; /*低于溫度下限,第1、2、4、5、6、7個發(fā)光二極管亮*/</p><p> if(wd>=WH)deng=0x7E; /*高于溫度上限,第1、3、4、5、6、7個發(fā)光二極管亮*/</p><p&g
101、t;<b> }</b></p><p><b> }</b></p><p> 4.2.5 溫度采集子程序流程圖</p><p> 程序在采集溫度時,測量兩次取平均值,已達到精確的目的。溫度采集子程序流程圖如圖4.6所示。</p><p> 圖4.6 溫度采集子程序流程圖</p&
102、gt;<p> float cewen(void) /*采集溫度子程序*/</p><p><b> {</b></p><p> uchar am,bm; /*am,bm分別是從DS18B80讀取的溫度低8位和高8位值*/</p><p> int wendz=0,
103、i; /*wemdz是單次溫度采集值*/</p><p> float duzhi=0;</p><p> for(i=0;i<2;i++) /*采集兩次溫度值*/</p><p><b> {</b></p><p> RST18B20();
104、 /*DS18B20初始化*/</p><p> write_zi(0xCC); /*跳過DS18B20片內(nèi)ROM*/</p><p> write_zi(0x44); /*進行溫度轉(zhuǎn)換*/</p><p> RST18B20();</p><p> write_zi
105、(0xCC);</p><p> write_zi(0xBE); /*DS18B20暫存器值*/</p><p> am=read_zi();</p><p> bm=read_zi();</p><p><b> wendz=bm;</b></p><p> w
106、endz<<=8;</p><p> wendz|=am;</p><p> duzhi+=wendz;</p><p><b> }</b></p><p> duzhi/=2; /*取兩次采集溫度平均值*/</p><p> duzhi
107、*=0.0625; /*將采集溫度值轉(zhuǎn)換為十進制數(shù)*/</p><p> duzhi+=0.05; /*將采集溫度值四舍五入,精確到0.1*/</p><p> return(duzhi);</p><p><b> }</b></p><p> 4.2.6
108、 顯示子程序</p><p> 顯示子程序是對數(shù)碼管進行逐位掃描,顯示先從顯示緩沖區(qū)取出要顯示的數(shù)據(jù),再根據(jù)該數(shù)據(jù)從table表中取出相應的段碼完成顯示。顯示子程序流程圖如圖4.7所示。</p><p> 圖4.7 顯示子程序</p><p> void display0(uchar idata *p) /*不顯示數(shù)碼管左起第4位*/</p&g
109、t;<p> {uchar sel,i;</p><p><b> sel=0x01;</b></p><p> for(i=0;i<4;i++)</p><p> {sel=~sel;</p><p> duan=table[*p];</p><p> if(se
110、l!=0xfe)</p><p><b> wei=sel;</b></p><p> delay(210);</p><p><b> wei=0xff;</b></p><p><b> p--;</b></p><p><b>
111、 sel=~sel;</b></p><p> sel=sel<<1;</p><p><b> }</b></p><p><b> }</b></p><p> void display1(uchar idata *p) /*不顯示數(shù)碼管左起第3位*/&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能(單片機)溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計-----基于單片機的溫度控制系統(tǒng)
- 基于單片機溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---單片機溫度控制系統(tǒng)
- 單片機溫度控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----基于單片機的溫度控制系統(tǒng)設(shè)計
- 基于單片機的溫度控制系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機的溫度控制系統(tǒng)設(shè)計
- 基于單片機的溫度控制系統(tǒng)的畢業(yè)設(shè)計
- 單片機的智能溫度控制系統(tǒng)畢業(yè)設(shè)計開題報告
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計 (2)
- 基于單片機的智能溫度控制系統(tǒng)
- 畢業(yè)設(shè)計---單片機溫度控制系統(tǒng)的設(shè)計
- 基于單片機的冰箱溫度控制系統(tǒng)畢業(yè)設(shè)計
- 基于單片機的溫度控制系統(tǒng)畢業(yè)設(shè)計論文
評論
0/150
提交評論