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