版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 2012 年 6 月</p><p><b> 目 錄</b></p><p> 前言…………………………………………………………………………………3</p><p> 1 系統(tǒng)總體結(jié)構(gòu)………………………………………
2、…………………………4</p><p> 2 系統(tǒng)硬件…………………………………………………………………………4</p><p> 2.1 系統(tǒng)的硬件設(shè)計(jì)……………………………………………………………4</p><p> 2.2 AT89S52單片機(jī)實(shí)驗(yàn)開發(fā)板………………………………………………5</p><p> 2.2.1 AT8
3、9S52單片機(jī)介紹…………………………………………………6</p><p> 2.2.2 串行接口介紹…………………………………………………………8</p><p> 2.3 DS18B20傳感器簡(jiǎn)介…………………………………………………………10</p><p> 2.3.1 DS18B20內(nèi)部結(jié)構(gòu)………………………………………………………10</p&
4、gt;<p> 2.3.2 DS18B20的工作原理………………………………………………11</p><p> 2.3.3 DS18B20的指令系統(tǒng)…………………………………………………12</p><p> 2.3.4 DS18B20的通信協(xié)議…………………………………………………13</p><p> 2.3.5 DS18B20使用中注意事
5、項(xiàng)……………………………………………14</p><p> 2.3.6 DS18B20與單片機(jī)的典型接口設(shè)計(jì)…………………………………15</p><p> 3 系統(tǒng)的軟件設(shè)計(jì)……………………………………………………………16</p><p> 3.1下位機(jī)程序設(shè)計(jì)……………………………………………………………16</p><p>
6、3.2 MATLAB程序設(shè)計(jì)…………………………………………………………17</p><p> 3.2.1 MATLAB串口通信技術(shù)…………………………………………………18</p><p> 3.2.2 MATLAB GUI介紹………………………………………………………20</p><p> 3.2.3 GUI界面設(shè)計(jì)……………………………………………………
7、……21</p><p> 4 系統(tǒng)調(diào)試………………………………………………………………………23</p><p> 4.1 下位機(jī)調(diào)試………………………………………………………………23</p><p> 4.2 串口調(diào)試………………………………………………………………23</p><p> 4.3 系統(tǒng)聯(lián)調(diào)………………………………
8、………………………………24</p><p> 基于MATLAB的溫度檢測(cè)系統(tǒng)設(shè)計(jì)</p><p><b> 前言</b></p><p> 溫度是工業(yè)控制中主要的被控參數(shù)之一,特別是在冶金、化工、建材、食品、機(jī)械、石油等工業(yè)中,具有舉足重輕的作用。傳統(tǒng)靠人工控制的溫度、濕度、液位等信號(hào)的測(cè)壓力控系統(tǒng),外圍電路比較復(fù)雜,測(cè)量精度較低,分辨
9、率不高,需進(jìn)行溫度校準(zhǔn)(非線性校準(zhǔn)、溫度補(bǔ)償、傳感器標(biāo)定等);且它們的體積較大、使用不夠方便,更重要的是參數(shù)的設(shè)定需要有其它儀表的參與,外界設(shè)備多,成本高,因而越來(lái)越適應(yīng)不了社會(huì)的要求。在對(duì)多類型、多通道信號(hào)同時(shí)進(jìn)行檢測(cè)和控制中,傳統(tǒng)的測(cè)控系統(tǒng)能力有限。如何將計(jì)算機(jī)與各種設(shè)施、設(shè)備結(jié)合,簡(jiǎn)化人工操作并實(shí)現(xiàn)自動(dòng)控制,滿足社會(huì)的需求,成為一個(gè)很迫切的問(wèn)題。 溫度檢測(cè)是現(xiàn)代檢測(cè)技術(shù)的重要組成部分,在保證產(chǎn)品質(zhì)量、節(jié)約能源和安全生產(chǎn)等方
10、面起著關(guān)鍵的作用。隨著電子技術(shù)和微型計(jì)算機(jī)的迅速發(fā)展,微機(jī)測(cè)量和控制技術(shù)得到了迅速的發(fā)展和廣泛的應(yīng)用。單片機(jī)具有處理能力強(qiáng)、運(yùn)行速度快、功耗低等優(yōu)點(diǎn),應(yīng)用在溫度測(cè)量與控制方面,控制簡(jiǎn)單方便,測(cè)量范圍廣,精度較高。由單片集成電路構(gòu)成的溫度傳感器的種類越來(lái)越多,測(cè)量的精度越來(lái)越高,響應(yīng)時(shí)間越來(lái)越短,因其使用方便、無(wú)需變換電路等特點(diǎn)已經(jīng)得到了廣泛的應(yīng)用,例如:以前常</p><p> 近年來(lái),利用智能化數(shù)字式溫度傳感
11、器以實(shí)現(xiàn)溫度信息的在線檢測(cè)已成為溫度檢測(cè)技術(shù)的一種發(fā)展趨勢(shì)。數(shù)字化技術(shù)推動(dòng)了信息化的革命,在傳感器的器件結(jié)構(gòu)上采用數(shù)字化技術(shù),使信息的采集更加方便。例如,對(duì)于溫度信號(hào)采集系統(tǒng),傳統(tǒng)的模擬溫度傳感器多為鉑電阻、銅電阻等。每一個(gè)傳輸線至少有兩根導(dǎo)線,帶補(bǔ)償接法需要三根導(dǎo)線。如果對(duì)50路溫度信號(hào)進(jìn)行檢測(cè),就需要100根導(dǎo)線接到采集端口,然后還要經(jīng)過(guò)電橋電路、信號(hào)放大、通道選擇、AD轉(zhuǎn)換等,才能將溫度信號(hào)供計(jì)算機(jī)處理。而DS18B20新型單總線
12、數(shù)字溫度傳感器,采用3腳(或8腳)封裝,從DS18B20讀出或</p><p><b> 圖1 總設(shè)計(jì)框圖</b></p><p> 寫入數(shù)據(jù)僅需要一根I/O口線。,使得硬件電路結(jié)構(gòu)簡(jiǎn)單,廣泛使用于距離遠(yuǎn),節(jié)點(diǎn)分布多的場(chǎng)合。具有較強(qiáng)的推廣應(yīng)用價(jià)值。</p><p><b> 1 系統(tǒng)總體結(jié)構(gòu)</b></p&g
13、t;<p> 本次設(shè)計(jì)的目的就是以數(shù)字傳感器DS18B20作為前端,采集溫度經(jīng)過(guò)單片機(jī)處理后,再采用串口通信,在MATLAB環(huán)境下對(duì)數(shù)據(jù)進(jìn)行分析與處理,將結(jié)果用圖形顯示并儲(chǔ)存,完成人機(jī)交互過(guò)程。系統(tǒng)總體設(shè)計(jì)如圖1所示。</p><p> 本系統(tǒng)的設(shè)計(jì)包括硬件和軟件兩大部分。系統(tǒng)的硬件部分大致可分為四部分:DS18B20溫度采集部分、單片機(jī)處理部分、顯示部分、與計(jì)算機(jī)串口通信部分。系統(tǒng)的軟件部分分
14、為五大部分:讀取DS18B20的內(nèi)部數(shù)據(jù)部分、單片機(jī)對(duì)溫度的處理部分、數(shù)碼顯示部分、串口通信部分、MATLAB界面部分。</p><p><b> 2 系統(tǒng)硬件</b></p><p> 2.1 系統(tǒng)的硬件設(shè)計(jì)</p><p> 在本設(shè)計(jì)提出在上位機(jī)MATLAB 環(huán)境下,使用RS232串行接口實(shí)時(shí)接收。該方法較之使用VC、VB高級(jí)語(yǔ)言編程
15、,極大地縮減了開發(fā)時(shí)間,提高了開發(fā)效率。系統(tǒng)主要由上位機(jī)(PC機(jī))和下位機(jī)(AT89S52)部分。上位機(jī)和下位機(jī)通過(guò)RS232進(jìn)行通訊。上位機(jī)負(fù)責(zé)數(shù)據(jù)處理和圖形化顯示,它是在MATLAB環(huán)境下進(jìn)行的,應(yīng)用了儀器控制工具箱中關(guān)于串行通信的函數(shù),通過(guò)程序控制整個(gè)系統(tǒng)的工作并進(jìn)行數(shù)據(jù)處理。下位機(jī)負(fù)責(zé)數(shù)據(jù)采集和響應(yīng)主機(jī)的控制處理信號(hào)。</p><p> 本設(shè)計(jì)中,由DS18B20構(gòu)成的單片機(jī)溫度測(cè)量裝置主要由四部成:D
16、S18B20溫度傳感器、AT89S52、顯示模塊和電源模塊(圖2所示)。產(chǎn)品的主要技術(shù)指標(biāo):①測(cè)量范圍:-55.0℃~+125.0℃,②測(cè)量精度:0.1℃,③反應(yīng)時(shí)間≤1.5s。</p><p> 圖2 溫度檢測(cè)系統(tǒng)結(jié)構(gòu)圖</p><p> 2.2 AT89S52單片機(jī)實(shí)驗(yàn)開發(fā)板</p><p> 該開發(fā)板可對(duì)ATMEL公司的89S5x系列ISP單片機(jī)AT8
17、9S51、 AT89S52、 AT89S53、 AT89LS53、 AT89S8252、AT89LS8252的DIP40封裝的器件進(jìn)行直接編程操作。單片機(jī)開發(fā)板結(jié)構(gòu)如圖3。</p><p> 圖3 AT89S5x單片機(jī)實(shí)驗(yàn)開發(fā)板整體結(jié)構(gòu)</p><p><b> 開發(fā)板的結(jié)構(gòu): </b></p><p> 1)CPU系統(tǒng):包括復(fù)位、時(shí)鐘
18、、在線編程電路及I/O引線插孔; </p><p> 2)串行接口:采用MAX232構(gòu)成; </p><p> 3)顯示模塊:采用串行顯示,由六片74HC164和六個(gè)七段共陰數(shù)碼管組成; </p><p> 4)模數(shù)轉(zhuǎn)換模塊:采用ADC0809及外圍器件,能實(shí)現(xiàn)8路八位的模數(shù)采集; </p><p> 5)數(shù)模轉(zhuǎn)換模塊:采用串行D/A
19、轉(zhuǎn)換TLC5616,能實(shí)現(xiàn)10位的數(shù)模轉(zhuǎn)換; </p><p> 6)LED顯示模塊:由8個(gè)LED燈構(gòu)成,其中3個(gè)紅燈、2個(gè)黃燈、3個(gè)綠燈; </p><p> 7)單脈沖發(fā)生電路:產(chǎn)生單個(gè)正或負(fù)脈沖; </p><p> 8)用戶外接元件區(qū):方便用戶外加少量外接元件進(jìn)行實(shí)驗(yàn)。</p><p> 本設(shè)計(jì)只用到CPU系統(tǒng),串行接口,顯示
20、模塊。CPU系統(tǒng)由AT89S52單片機(jī)組成。串行接口是RS232串口。下面對(duì)各個(gè)部分作一簡(jiǎn)單介紹。</p><p> 2.2.1 AT89S52單片機(jī)介紹</p><p> 2.2.1.1 單片機(jī)簡(jiǎn)介</p><p> Atmel公司的AT89S52芯片是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。使用Atmel 公司高密
21、度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲(chǔ)器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙
22、工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。</p><p> 2.2.1.2 單片機(jī)引腳功能</p><p> AT89S52芯片采用40腳雙列直插
23、封裝方式。當(dāng)然,不同芯片之間引腳功能也略有差異。AT89S52單片機(jī)是高性能單片機(jī),因?yàn)槭艿揭_數(shù)目的限制,有部分引腳具有第二功能。引腳分配如圖4所示。</p><p> 圖4 AT89S52雙列直插式封裝和引腳分配</p><p> 下面以雙列直插式為例,介紹AT89S52單片機(jī)的引腳。引腳可分為三個(gè)部分:I/O口引腳、控制引腳和電源時(shí)鐘引腳。</p><p&g
24、t; P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。</p><p> P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位
25、雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如表1所示。</p><p> 表1 P1口的第二功能</p>
26、<p> P2 口:P2口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX @DPTR)時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在
27、使用8位地址(如MOVX @RI)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。</p><p> P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電
28、流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如表2所示。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。</p><p> 2.2.2 串行接口介紹</p><p> 2.2.2.1 RS232C簡(jiǎn)介</p><p> 計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與終端之間的數(shù)據(jù)傳送可以采用串行通訊和并行通訊二種方式。由于串行通訊方式具有使用線路少、成本
29、低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線路特性的不一致而被廣泛采用。在串行通訊時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來(lái)進(jìn)行通訊。RS-232-C接口(又稱EIARS-232-C)是目前最常用的一種串行通訊接口。它是在1970年由美國(guó)電子工業(yè)協(xié)會(huì)(EIA)聯(lián)合貝爾系統(tǒng)、調(diào)制解調(diào)器廠家及計(jì)算機(jī)終端生產(chǎn)廠家共同制定的用于串行通訊的標(biāo)準(zhǔn)。它的全名是《數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備(DCE)之間串行二進(jìn)制數(shù)據(jù)交換接口技
30、術(shù)標(biāo)準(zhǔn)》該標(biāo)準(zhǔn)規(guī)定采用一個(gè)25個(gè)腳的DB25連接器,對(duì)連接器的每個(gè)引腳的信號(hào)內(nèi)容加以規(guī)定,還對(duì)各種信號(hào)的電平加以規(guī)定。</p><p> 1)接口的信號(hào)內(nèi)容:實(shí)際上RS-232-C的25條引線中有許多是很少使用的,在計(jì)算機(jī)與終端通訊中一般只使用3~9條引線。</p><p> 2)接口的電氣特性:在RS-232-C中任何一條信號(hào)線的電壓均為負(fù)邏輯關(guān)系。即邏輯“1”,-5~-15V:邏輯
31、“0”,+5~+15V。噪聲容限為:2V。即要求接收器能識(shí)別低至+3V的信號(hào)作為邏輯“0”,高到-3V的信號(hào)作為邏輯“1。</p><p> 3)接口的物理結(jié)構(gòu)RS-232-C接口連接器一般使用型號(hào)為DB-25的25芯插頭座,通常插頭在DCE端,插座在DTE端,一些設(shè)備與PC機(jī)連接的RS-232-C接口,因?yàn)椴皇褂脤?duì)方的傳送控制信號(hào),只需三條接口線,即“發(fā)送數(shù)據(jù)”、“接收數(shù)據(jù)”和“信號(hào)地”。所以采用DB-9的9
32、芯插頭座,傳輸線采用屏蔽雙絞線。</p><p> 由于RS-232-C接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以下四點(diǎn):</p><p> 1)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因?yàn)榕cTTL電平不兼容故需使用電平轉(zhuǎn)換電路方能與TTL電路連接。</p><p> 2)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps。</p><
33、p> 3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式,這種其地傳輸容易產(chǎn)生共模干擾,所以抗噪聲干擾性弱。</p><p> 4)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50英尺,實(shí)際上也只能用在50米左右。</p><p> 2.2.2.2 MAX232芯片介紹</p><p> MAX232是由德州儀器公司(TI)推出的一款兼容RS232標(biāo)準(zhǔn)
34、的芯片。由于電腦串口rs232電平是-10v +10v,而一般的單片機(jī)應(yīng)用系統(tǒng)的信號(hào)電壓是ttl電平0 +5v,max232就是用來(lái)進(jìn)行電平轉(zhuǎn)換的,該器件包含2驅(qū)動(dòng)器、2接收器和一個(gè)電壓發(fā)生器電路提供TIA/EIA-232-F電平。</p><p> 該器件符合TIA/EIA-232-F標(biāo)準(zhǔn),每一個(gè)接收器將TIA/EIA-232-F電平轉(zhuǎn)換成5-V TTL/CMOS電平。每一個(gè)發(fā)送器將TTL/CMOS電平轉(zhuǎn)換成
35、TIA/EIA-232-F電平。</p><p><b> 主要特點(diǎn):</b></p><p><b> 1)單5V電源工作</b></p><p> 2) LinBiCMOSTM工藝技術(shù)</p><p> 3) 兩個(gè)驅(qū)動(dòng)器及兩個(gè)接收器</p><p> 4)
36、177;30V輸入電平</p><p> 5)低電源電流:典型值是8mA</p><p> 6)符合甚至優(yōu)于ANSI標(biāo)準(zhǔn) EIA/TIA-232-E及ITU推薦標(biāo)準(zhǔn)V.28</p><p> 7)ESD保護(hù)大于MIL-STD-883(方法3015)標(biāo)準(zhǔn)的2000V</p><p> 2.3 DS18B20傳感器簡(jiǎn)介</p>
37、<p> 由DALLAS半導(dǎo)體公司生產(chǎn)的DS18B20型單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)9~12 位的數(shù)字值讀數(shù)方式。其可以分別在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,最大分辨率為0.0625 ℃ 而且從DS18B20 讀出或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)寫。</p>
38、;<p> 2.3.1 DS18B20內(nèi)部結(jié)構(gòu)</p><p> DS18B20的外形及引腳功能說(shuō)明:圖5為DS18B20引腳。</p><p> 圖5 DS18B20底視圖</p><p> 1 ( GND) :地。2 (DQ) :單線運(yùn)用的數(shù)據(jù)輸入輸出。3 (VDD) :可選的電源引腳。DS18B20利用Dallas的單總線控制協(xié)議,實(shí)現(xiàn)
39、了利用單線控制信號(hào)在總線上進(jìn)行通信。由于所有的設(shè)備通過(guò)漏極開路端(即DS18B20的DQ腳)連在總線上,控制線需要一個(gè)上拉電阻(大約5kΩ ) 。在這一總線系統(tǒng)中,微控制器(控設(shè)備)通過(guò)唯一的64位序列碼識(shí)別和訪問(wèn)總線上的器件。采用3腳PR 35封裝或8腳SO IC封裝, 其內(nèi)部結(jié)構(gòu)框圖如圖6所示。64 位ROM 的結(jié)構(gòu)開始8位是產(chǎn)品類型的</p><p> 圖6 DS18B20內(nèi)部結(jié)構(gòu)</p>
40、<p> 編號(hào), 接著是接著的48 位是唯一的系列號(hào),最后的8 位是開始56 位CRC。64位ROM 和ROM 操作控制部分允許DS18B20作為一個(gè)單線器件工作并遵循單線協(xié)議。直到ROM 操作協(xié)議被滿足DS18B20 控制部分的功能是不可訪問(wèn)的。單線總線主機(jī)必須首先操作五種ROM 操作命令之一:1)Read ROM(讀ROM),2)Match ROM(匹配ROM), 3)Search ROM(搜索ROM),4)Skip
41、ROM(跳過(guò)ROM),或5)Alarm Search(告警搜索)。在成功地執(zhí)行了ROM 操作序列之后,DS18B20 特定的功能便可訪問(wèn),然后總線上主機(jī)可提供六個(gè)存貯器和控制功能命令之一。</p><p> DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM 和一個(gè)非易失性的可電擦除的EEP2ROM。高速暫存RAM的為9字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如表2所示。</p><p> 表2
42、 DS18B20字節(jié)定義</p><p> 其中1、2字節(jié)用來(lái)存放當(dāng)前溫度, 1為低8位, 2為高8位。字節(jié)3、4用來(lái)預(yù)置報(bào)警溫度的上下限,字節(jié)5用于配置寄存器,用于確定溫度數(shù)據(jù)位數(shù),字節(jié)6、7、8均為保留字節(jié),字節(jié)9存放前8個(gè)字節(jié)循環(huán)冗余校驗(yàn)碼。</p><p> 2.3.2 DS18B20的工作原理</p><p> DS18B20的測(cè)溫原理如圖7所示,
43、圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1,高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入,圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),DS18B20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將- 55℃所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器1和溫度寄存器中,減法計(jì)數(shù)器1 和溫度寄存器被預(yù)置在-5
44、5℃所對(duì)應(yīng)的一個(gè)基數(shù)值減法計(jì)數(shù)器1對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)</p><p> 圖7 DS18B20的內(nèi)部測(cè)溫電路框圖</p><p> 減法計(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ù)值即為
45、所測(cè)溫度。圖中的斜率累加器用于補(bǔ)償和修正測(cè)溫過(guò)程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門仍未關(guān)閉就重復(fù)上述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是DS18B20的測(cè)溫原理。</p><p> 在DS18B20完成溫度變換之后,溫度值與貯存在TH和TL 內(nèi)的觸發(fā)值相比較。因?yàn)檫@些寄存器僅僅是8位,所以0. 5℃位在比較時(shí)被忽略。TH或TL的最高有效位直接對(duì)應(yīng)于16位溫度寄存器的符號(hào)位。如果溫度
46、測(cè)量的結(jié)果高于TH或低于TL,那么器件內(nèi)告警標(biāo)志將置位。每次溫度測(cè)量更新此標(biāo)志。只要告警標(biāo)志置位,DS18B20將對(duì)告警搜索命令作出響應(yīng)。這允許并聯(lián)多個(gè)DS18B20,同時(shí)進(jìn)行溫度測(cè)量。如果某處溫度超過(guò)極限,那么可以識(shí)別出正在告警的器件并立即將其讀出而不必讀出非告警的器件。</p><p> 2.3.3 DS18B20的指令系統(tǒng)</p><p> 讀暫存存儲(chǔ)器 指令代碼[BEh]<
47、;/p><p> 此命令讀暫存存儲(chǔ)器的內(nèi)容。讀開始于字節(jié)0,并繼續(xù)經(jīng)過(guò)暫存存儲(chǔ)器,直至第九個(gè)字節(jié)(字節(jié)8,CRC)被讀出為止。如果不是所有位置均可讀,那么主機(jī)可以在任何時(shí)候發(fā)出一復(fù)位以中止讀操作。</p><p> 復(fù)制暫存存儲(chǔ)器 指令代碼[48h]</p><p> 此命令把暫存存儲(chǔ)器復(fù)制入DS18B20的E2存儲(chǔ)器,把溫度觸發(fā)器字節(jié)存貯入非易失性存儲(chǔ)器,如果總
48、線主機(jī)在此命令之后發(fā)出讀時(shí)間片,那么只要DS18B20 正忙于把暫存存儲(chǔ)器復(fù)制入E2,它就會(huì)在總線上輸出“0”當(dāng)復(fù)制過(guò)程完成之后,它將返回“1”。如果由寄生電源供電,總線主機(jī)在發(fā)出此命令之后必須能立即強(qiáng)制上拉至少10ms。</p><p> 溫度變換 指令代碼[44h]</p><p> 此命令開始溫度變換。不需要另外的數(shù)據(jù)溫度變換將被執(zhí)行,接著DS18B20便保持在空閑狀態(tài)。如果總線
49、主機(jī)在此命令之后發(fā)出讀時(shí)間片,那么只要DS18B20正忙于進(jìn)行溫度變換,它將在總線上輸出“0”;當(dāng)溫度變換完成時(shí)它便返回“1”。如果由寄生電源供電,那么總線主機(jī)在發(fā)出此命令之后必須立即強(qiáng)制上拉至少2秒。</p><p> 重新調(diào)出E2指令代碼[B8h]</p><p> 此命令把貯存在E2中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯?chǔ)器。這種重新調(diào)出的操作在對(duì)DS18B20上電時(shí)也自動(dòng)發(fā)生,因此,只
50、要器件一接電,暫存存儲(chǔ)器內(nèi)就有有效的數(shù)據(jù)可供使用。在此命令發(fā)出之后,對(duì)于所發(fā)出的第一個(gè)讀數(shù)據(jù)時(shí)間片,器件都將輸出其忙的標(biāo)志“0”=忙,“1” =準(zhǔn)備就緒。</p><p> 讀電源 指令代碼[B4h]</p><p> 對(duì)于在此命令送至DS18B20之后所發(fā)出的第一讀出數(shù)據(jù)的時(shí)間片,器件都會(huì)給出其電源方式的信號(hào)“0”=寄生電源供電,“1”=外部電源供電。</p><
51、p> 2.3.4 DS18B20的通信協(xié)議</p><p> DS18B20器件要求采用嚴(yán)格的通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號(hào)類型:復(fù)位脈沖,應(yīng)答脈沖時(shí)隙;寫0,寫1時(shí)隙;讀0,讀1時(shí)隙。與DS18B20的通信,是通過(guò)操作時(shí)隙完成單總線上的數(shù)據(jù)傳輸。發(fā)送所有的命令和數(shù)據(jù)時(shí),都是字節(jié)的低位在前,高位在后。</p><p> 1)復(fù)位和應(yīng)答脈沖時(shí)隙</p&g
52、t;<p> 每個(gè)通信周期起始于微控制器發(fā)出的復(fù)位脈沖,其后緊跟DS18B20發(fā)出的應(yīng)答脈沖,在寫時(shí)隙期間,主機(jī)向DS18B20器件寫入數(shù)據(jù),而在讀時(shí)隙期間,主機(jī)讀入來(lái)自DS18B20的數(shù)據(jù)。在每一個(gè)時(shí)隙,總線只能傳輸一位數(shù)據(jù)。時(shí)序圖見(jiàn)圖8。</p><p><b> 2)寫時(shí)隙</b></p><p> 當(dāng)主機(jī)將單總線DQ從邏輯高拉到邏輯低時(shí),即
53、啟動(dòng)一個(gè)寫時(shí)隙,所有的寫時(shí)隙必須在60--120us完成,且在每個(gè)循環(huán)之間至少需要1us的恢復(fù)時(shí)間。寫0和寫1時(shí)隙如圖所示。在寫0時(shí)隙期間,微控制器在整個(gè)時(shí)隙中將總線拉低;而寫1時(shí)隙期間,微控制器將總線拉低,然后在時(shí)隙起始后15us之釋放總線。時(shí)序圖見(jiàn)圖9。</p><p><b> 3)讀時(shí)隙</b></p><p> DS18B20器件僅在主機(jī)發(fā)出讀時(shí)隙時(shí),才
54、向主機(jī)傳輸數(shù)據(jù)。所以在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便DS18B20能夠傳輸數(shù)據(jù)。所有的讀時(shí)隙至少需要60us,且在兩次獨(dú)立的讀時(shí)隙之間,至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)隙都由主機(jī)發(fā)起,至</p><p> 少拉低總線1us。在主機(jī)發(fā)起讀時(shí)隙之后,DS18B20器件才開始在總線上發(fā)送0或1,若DS18B20發(fā)送1,則保持總線為高電平。若發(fā)送為0,則拉低總線當(dāng)發(fā)送0時(shí),DS18B20在該時(shí)隙結(jié)束后
55、,釋放總線,由上拉電阻將總線拉回至高電平狀態(tài)。DS18B20發(fā)出的數(shù)據(jù),在起始時(shí)隙之后保持有效時(shí)間為15us。因而主機(jī)在讀時(shí)隙期間,必須釋放總線。并且在時(shí)隙起始后的15us之內(nèi)采樣總線的狀態(tài)。時(shí)序圖見(jiàn)圖9。</p><p> 圖8 復(fù)位和應(yīng)答脈沖時(shí)隙</p><p><b> 圖9 讀寫時(shí)序</b></p><p> 2.3.5 DS
56、18B20使用中注意事項(xiàng)</p><p> DS18B20雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: </p><p> 1)較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS18B20與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS18B20進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)
57、語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS18B20操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)?! ?lt;/p><p> 2)在DS18B20的有關(guān)資料中均未提及單總線上所掛DS182B0數(shù)量問(wèn)題,容易使人誤認(rèn)為可以掛任意多個(gè)DS18B20,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS18B20超過(guò)8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意?! ?lt;/p><p> 3)在DS1
58、8B20測(cè)溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等DS18B20的返回信號(hào),一旦某個(gè)DS18B20接觸不好或斷線,當(dāng)程序讀該DS18B20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視。</p><p> 2.3.6 DS18B20單片機(jī)的典型接口設(shè)計(jì)</p><p> 在硬件上,DS18B20與單片機(jī)的連接有兩
59、種方法:</p><p> 一種是Vcc接外部電源,GND接地,I/O與單片機(jī)的I/O線相連。此方法可以使所有使用外部電源的DS18B20同時(shí)完成溫度變換。</p><p> 另一種是用寄生電源供電,此時(shí)UDD、GND接地,I/O接單片機(jī)I/O。DS18B20內(nèi)部電容在I/O 線為高電平時(shí)貯存能量,在I/O線為低電平時(shí)消耗能量,并在I/O信號(hào)線再為高電平時(shí)能量得得到補(bǔ)充。這樣,DS18
60、20 在不需要外部提供能量的情況下就可以完成各項(xiàng)操作命令。值得注意的是,采用此種方法時(shí)UDD引腳必須接地。使用寄生電源的優(yōu)點(diǎn)是:1)遠(yuǎn)程溫度檢測(cè)無(wú)需本地電源;2)缺少正常電源條件下也可讀ROM。</p><p> 就兩種方式相比較而言,寄生電源方式少用一根導(dǎo)線,但它完成溫度測(cè)量所需的時(shí)間較長(zhǎng),而外部電源方式測(cè)量速度則要快些。無(wú)論是內(nèi)部寄生電源還是外部供電,I/O口線要接4.7KΩ左右的上拉電阻。圖10給出了DS
61、18B20與微處理器的典型連接。圖10(a)中DS18B20采用寄生電源方式,其VDD和GNG端均接地,圖10(b)中DS18B20采用外接電源方式,其VDD端用3V~5.5V電源供電。本系統(tǒng)采用圖10(b)所示接線方式,即外接電源工作方式。</p><p> 圖10 (a)寄生電源工作方式</p><p> 圖10 (b)外接電源工作方式</p><p>&l
62、t;b> 3 系統(tǒng)的軟件設(shè)計(jì)</b></p><p> 3.1 下位機(jī)程序設(shè)計(jì)</p><p> 下位機(jī)采用MCS51單片機(jī)指令進(jìn)行編程,主要包括初始化、溫度計(jì)算、溫度顯示三部分組成。DS18B20對(duì)時(shí)序和電性參數(shù)的要求很高,主CPU經(jīng)過(guò)單總線接口訪問(wèn)DS18B20的工作流程必須要遵守嚴(yán)格的操作順序:首先,對(duì)DS18B20進(jìn)行初始化;其次,發(fā)送ROM命令;再則,發(fā)送
63、功能命令。程序主流程如圖11所示。源程序見(jiàn)附錄。</p><p> 圖11 測(cè)溫主流程框圖</p><p> 3.2 MATLAB程序設(shè)計(jì)</p><p> MATLAB是由美國(guó)mathworks公司開發(fā)的面向理論分析研究和工程設(shè)計(jì)處理的一套具有強(qiáng)大功能的軟件系統(tǒng)。在設(shè)計(jì)研究單位和工業(yè)部門,MATLAB被認(rèn)作進(jìn)行高效研究、開發(fā)的首選軟件工具。其編程語(yǔ)法規(guī)則與
64、一般的結(jié)構(gòu)化編程語(yǔ)言大同小異,而且使用更方便,具有一般編程基礎(chǔ)的用戶都可以很快熟練掌握。MATLAB具有超強(qiáng)的數(shù)據(jù)處理能力,被廣泛的應(yīng)用于信號(hào)處理、自動(dòng)控制等領(lǐng)域,</p><p> 而且它的圖形用戶界面編程技術(shù)(GUIDE)簡(jiǎn)單易學(xué),即使非專業(yè)人員也能編制出界面友好、功能強(qiáng)大的應(yīng)用程序。對(duì)于一般的微轉(zhuǎn)換器,實(shí)現(xiàn)數(shù)據(jù)的采集過(guò)程較為簡(jiǎn)單,但要對(duì)采集的結(jié)果進(jìn)行快速的實(shí)時(shí)處理就比較困難,因?yàn)榻^大多數(shù)MCU只提供簡(jiǎn)單的
65、8位無(wú)符號(hào)數(shù)的四則運(yùn)算指令系統(tǒng),對(duì)于有符號(hào)數(shù)的乘方、開方等運(yùn)算軟件實(shí)現(xiàn)起來(lái)比較困難。</p><p> 3.2.1 MATLAB串口通信技術(shù)</p><p> 對(duì)于WINDOWS系統(tǒng)而言,硬件系統(tǒng)的驅(qū)動(dòng)程序有著十分嚴(yán)格的規(guī)范,可以用C或匯編語(yǔ)言進(jìn)行開發(fā),而MATLAB本身是一個(gè)跨平臺(tái)的軟件,并不具備直接訪問(wèn)硬件的能力。即使安裝了驅(qū)動(dòng)程序并能正常作的硬件設(shè)備,MATLAB也沒(méi)有統(tǒng)一的形式
66、對(duì)其進(jìn)行訪問(wèn)。對(duì)于系統(tǒng)的串口,在MATLAB6.X中以類(SERIAL)的形式提供了支持。當(dāng)用指令建立了一個(gè)串口對(duì)象(句柄)以后,對(duì)串口的硬件操作可以文件操作的軟件形式來(lái)完成,方法比較簡(jiǎn)單。</p><p> 在MATLAB中的設(shè)備控制工具條(INSTRUMENT CONTR0L T00LB0X)用來(lái)負(fù)責(zé)上、下位機(jī)之間的通信。該設(shè)備控制工具箱的特色如下:</p><p> 1)支持基于
67、串行接口(RS-232、RS-422、RS-485)、GPIB總線(IEEE2488、HPIB標(biāo)準(zhǔn))、VISA總線的通信;</p><p> 2)通信數(shù)據(jù)支持二進(jìn)制和文本(ASCII)兩種方式,文本方式支持SCPI(Standard Commands for ProgrammableInstruments)語(yǔ)言;</p><p> 3)支持異步通信和同步通信;</p>&
68、lt;p> 4)支持基于事件驅(qū)動(dòng)的通信。</p><p> 從以上Matlab設(shè)備控制工具箱的特點(diǎn)可以看到,Matlab完全可以滿足我們實(shí)現(xiàn)串行通信的要求。</p><p> Matlab對(duì)串行口的編程控制主要分為四個(gè)步驟。</p><p> 1)創(chuàng)建串口設(shè)備對(duì)象并設(shè)置其屬性。</p><p> com=serial('
69、;com1');%創(chuàng)建串口1的設(shè)備對(duì)象com1</p><p> com.Terminator='CR';%設(shè)置終止符為CR(回車符),缺省為L(zhǎng)F(換行符)</p><p> com.InputBufferSize=1024;%輸入緩沖區(qū)為256B,缺省值為512B</p><p> com.OutputBufferSize=1024;
70、%輸出緩沖區(qū)為256B,缺省值為512B</p><p> com.Timeout=0.5;%設(shè)置一次讀或?qū)懖僮鞯淖畲笸瓿蓵r(shí)間為0.5s,缺省值為10s</p><p> s.ReadAsyncMode='continuous'(缺省方式);%在異步通信模式方式下,讀取串口數(shù)據(jù)采用連續(xù)接收數(shù)據(jù)(continuous)的缺省方式,那么下位機(jī)返回的數(shù)據(jù)會(huì)自動(dòng)地存入輸入緩沖區(qū)
71、中。</p><p> 注意:有些屬性只有在對(duì)象沒(méi)有被打開時(shí)才能改變其值,如InputBufferSize、OutputBufferSize屬性等。對(duì)于一個(gè)RS-232/RS-422/RS-485串口設(shè)備對(duì)象,其屬性的缺省值為波特率9600b/s,異步方式,通信數(shù)據(jù)格式為8位數(shù)據(jù)位,無(wú)奇偶校驗(yàn)位,1位停止位。如果要設(shè)置的串口設(shè)備對(duì)象的屬性值與缺省值的屬性值相同,用戶可以不用另行設(shè)置。</p>&l
72、t;p> 另外,設(shè)置串口設(shè)備對(duì)象的屬性也可以用一條指令完成,如:com=serial('COM1','BaudRate',38400,'Parity','none','DataBits',8,'StopBits',1)。也可以用set命令,如set(com,'BaudRate',19200,'Parity
73、9;,'even')。創(chuàng)建了對(duì)象后可以在Matlab命令窗口直接敲對(duì)象名并回車,看到其基本屬性和當(dāng)前狀態(tài)。若需要知道其全部的屬性,可以用get(scom)命令。</p><p> 2)打開串口設(shè)備對(duì)象。</p><p> fopen(com);</p><p> 3)讀寫串口操作。初始化并打開串口設(shè)備對(duì)象之后,現(xiàn)在可以對(duì)串口設(shè)備對(duì)象進(jìn)行讀寫操作
74、,串口的讀寫操作支持二進(jìn)制和文本(ASCII)兩種方式。當(dāng)Matlab通信數(shù)據(jù)采用文本(ASCII)方式時(shí),讀寫串口設(shè)備的命令分別是fscanf、fpritf;當(dāng)Matlab通信數(shù)據(jù)采用二進(jìn)制方式時(shí),讀寫串口設(shè)備的命令分別是fread、fwrite。下面以文本方式讀寫串口為例:</p><p> a.讀串口。A=fscanf(com1,'%d',[10,100];%從串口設(shè)備對(duì)象com1中讀入1
75、0*100個(gè)數(shù)據(jù)填充到數(shù)組A[10,100]中,并以整型的數(shù)據(jù)格式存放。</p><p> b.寫串口。fprintf(com1,'%s','RS232?',’async’);%將字符串’RS232?’以字符的數(shù)據(jù)格式寫入到串口設(shè)備com1,寫操作以異步的方式進(jìn)行。</p><p> 4)關(guān)閉并清除設(shè)備對(duì)象。</p><p>
76、fclose(com);%關(guān)閉串口設(shè)備對(duì)象</p><p> delete(com);%刪除內(nèi)存中的串口設(shè)備對(duì)象</p><p> clear com;%清除工作空間中的串口設(shè)備對(duì)象</p><p> 當(dāng)不再使用該串口設(shè)備對(duì)象時(shí),順序使用以上3條命令,可以將所創(chuàng)建的串口設(shè)備對(duì)象清除,以免占用系統(tǒng)資源。</p><p> 可以看出,在M
77、atlab中進(jìn)行串行通信是十分方便的,編程較為簡(jiǎn)單。而且,在Matlab中串行通信的失誤率很低,通信較為可靠,也可以采用增加握手信號(hào)以及數(shù)據(jù)校驗(yàn)等的方式進(jìn)一步增加通信的可靠性。</p><p> INSTRUMENT C0NTR0L T00LB0X包括兩大部件:M文件函數(shù)和接口驅(qū)動(dòng)適配器。這兩部件提供了MATLAB與外設(shè)的通訊功能。</p><p> MATLAB的兩大部件提供一條外設(shè)
78、與MATLAB之問(wèn)的交互通道,使用戶與外設(shè)之間進(jìn)行信息獲取和傳送。同許多高級(jí)語(yǔ)言一樣,MATLAB通過(guò)調(diào)用M文件函數(shù)來(lái)創(chuàng)建設(shè)備對(duì)象,得到設(shè)備的文件句柄,而設(shè)備驅(qū)動(dòng)程序作為操作系統(tǒng)中直接控制硬件的模塊,是鏈接操作系統(tǒng)內(nèi)核與系統(tǒng)外部設(shè)備I/0操作的關(guān)鍵模塊。它將具體的硬件細(xì)節(jié)隱藏實(shí)現(xiàn)對(duì)外設(shè)操作的透明,因此MATLAB可以象操作文件一樣實(shí)現(xiàn)對(duì)外設(shè)的讀、寫操作。同時(shí)MATIAB支持二進(jìn)制和文本(ASCII) 兩種串行通信方式,支持異步通信和同步
79、通信;支持查詢和基于事件驅(qū)動(dòng)的兩種串行通信方式。</p><p> 3.2.2 MATLAB GUI介紹</p><p> 圖形用戶界面(graphical user interface,GUI)是由窗口、光標(biāo)、按鍵、菜單、文字說(shuō)明等對(duì)象(Object)構(gòu)成的一個(gè)用戶界面。用戶通過(guò)一定的方法(如鼠標(biāo)或鍵盤)選擇、激活這些圖形對(duì)象,使計(jì)算機(jī)產(chǎn)生某種動(dòng)作或變化,比如實(shí)現(xiàn)計(jì)算、繪圖等。假如科
80、技工作者僅僅執(zhí)行數(shù)據(jù)分析、解方程等工作,一般不會(huì)考慮GUI的制作。但是如果想向客戶提供應(yīng)用程序,想進(jìn)行某種技術(shù)、方法的演示,想制作一個(gè)供反復(fù)使用且操作簡(jiǎn)單的專用工具,那么圖形用戶界面是最好的選擇之一。</p><p> Matlab為表現(xiàn)其基本功能而設(shè)計(jì)的演示程序demo是使用圖形界面的最好范例。Matlab的用戶在指令窗口中運(yùn)行demo打開圖形界面后,只要用鼠標(biāo)進(jìn)行選擇和點(diǎn)擊,就可瀏覽豐富多彩的內(nèi)容。<
81、/p><p> 開發(fā)實(shí)際的應(yīng)用程序時(shí)應(yīng)該盡量保持程序的界面友好,因?yàn)槌绦蚪缑媸菓?yīng)用程序和用戶進(jìn)行交互的環(huán)境。在當(dāng)前情況下,使用圖形用戶界面是最常用的方法。提供圖形用戶界面可使用戶更方便地使用應(yīng)用程序,不需要了解應(yīng)用程序怎樣執(zhí)行各種命令,只需要了解圖形界面組件的使用方法;同時(shí),不需要了解各種命令是如何執(zhí)行的,只要通過(guò)用戶界面進(jìn)行交互操作就可以正確執(zhí)行程序。</p><p> 在Matlab中
82、,圖形用戶界面是一種包含多種圖形對(duì)象的界面,典型的圖形界面包括圖形顯示區(qū)域、功能按鈕空間以及用戶自定義的功能菜單等。為了讓界面實(shí)現(xiàn)各種功能,需要對(duì)各個(gè)圖形對(duì)象進(jìn)行布局和時(shí)間編程。這樣,當(dāng)用戶激活對(duì)應(yīng)的GUI對(duì)象時(shí),就能執(zhí)行相應(yīng)的時(shí)間行為。最后,必須保存和發(fā)布自己創(chuàng)建的GUI,使得用戶可以應(yīng)用GUI對(duì)象。</p><p> 在Matlab中,所有對(duì)象都可以使用M文件進(jìn)行編寫。GUI也是一種Matlab對(duì)象,因此,
83、可以使用M文件來(lái)創(chuàng)建GUI。使用M文件創(chuàng)建GUI的方法也是最基礎(chǔ)的,使用其他方法創(chuàng)建GUI圖形界面時(shí),實(shí)現(xiàn)圖形控件的各種功能時(shí),也需要編寫相應(yīng)的程序代碼。</p><p> 除了使用M文件來(lái)創(chuàng)建GUI對(duì)象之外,Matlab還為用戶開發(fā)圖形界面提供了一個(gè)方便高效的集成開發(fā)環(huán)境:Matlab圖形用戶界面開發(fā)環(huán)境(matlab graphical user interface development environm
84、ent)簡(jiǎn)稱GUIDE,其主要是一個(gè)界面設(shè)計(jì)工具集。Matlab將所有GUI所支持的用戶控件都集成起來(lái),同時(shí)提供界面外觀、屬性和行為響應(yīng)方法的設(shè)置方法。除了可以使用GUIDE創(chuàng)建GUI之外,還可以將設(shè)計(jì)好的GUI界面保存為一個(gè)FIG資源文件,自動(dòng)生成對(duì)應(yīng)的M文件。該M文件包含了GUI初始化代碼和組建界面布局的控制代碼。</p><p> 使用GUIDE創(chuàng)建GUI對(duì)象執(zhí)行效率高,可以交互式地進(jìn)行組件布局,還能生成
85、保存和發(fā)布GUI的對(duì)應(yīng)文件。</p><p> FIG文件:該文件包含GUI圖形窗口及其子對(duì)象的完全描述,包含所有相關(guān)對(duì)象的屬性信息,可以調(diào)用hgsave命令或者使用M文件編輯器的File>Save命令生成該文件。FIG文件是一個(gè)二進(jìn)制文件,包含系列化的圖形窗口對(duì)象。所有對(duì)象的屬性都是用戶創(chuàng)建圖形窗口時(shí)保存的屬性。該文件最主要的功能是對(duì)象句柄的保存。</p><p> M文件:該
86、文件包含GUI設(shè)計(jì)、控制函數(shù)及控件的回調(diào)函數(shù),主要用來(lái)控制GUI展開時(shí)的各種特征。該文件基本上可以分為GUI初始化和回調(diào)函數(shù)2個(gè)部分,控件的回調(diào)函數(shù)根據(jù)用戶與GUI的具體交互行為分別調(diào)用。應(yīng)用程序M文件使用open-fig命令來(lái)顯示GUI對(duì)象,但是該文件不包含用戶界面設(shè)計(jì)的代碼,對(duì)應(yīng)代碼由FIG文件保存。</p><p> 3.2.3 GUI界面設(shè)計(jì)</p><p> 3.2.3.1
87、GUI程序設(shè)計(jì)</p><p> h0=figure('toolbar','none',...</p><p> 'position',[198 56 408 468],...</p><p> 'name','溫度檢測(cè)系統(tǒng)溫度曲線(周宇鋒)');</p><p
88、> h1=axes('parent',h0,...</p><p> 'position',[0.15 0.45 0.7 0.5],...</p><p> 'visible','on');</p><p> in=input('輸入接收數(shù)據(jù)數(shù)目:');</p>
89、<p> n=0;s=zeros(1,in);</p><p> for i=1:in</p><p> obj1=serial('COM1');</p><p> fopen(obj1);</p><p> fwrite(obj1, '0');</p><p>
90、 num=0;tem=0;</p><p><b> n=n+1;</b></p><p><b> for i=1:3</b></p><p> data(i)= fread(obj1, 1);</p><p> data(1)=data(1)*0.1;%小數(shù)顯示出錯(cuò)</p>
91、<p> data(2)=data(2)*1;</p><p> data(3)=data(3)*10;</p><p> tem=data(1)+data(2)+data(3);</p><p><b> end</b></p><p> s(n)=s(n)+tem;</p>&l
92、t;p> fclose(obj1);</p><p> delete(obj1);</p><p> clear obj;</p><p><b> end</b></p><p> hueidiao=['plot(1:in,s)',...</p><p><
93、b> ];</b></p><p> k1=uicontrol('parent',h0,...</p><p> 'style','pushbutton',...</p><p> 'position',[80 100 50 30],...</p><p&g
94、t; 'string','開始',...</p><p> 'callback',hueidiao);</p><p> k3=uicontrol('parent',h0,...</p><p> 'style','pushbutton',...</p>
95、;<p> 'position',[280 100 50 30],...</p><p> 'string','關(guān)閉',...</p><p> 'callback','close');</p><p> 3.2.3.2 GUI界面</p><p
96、> 將上面的程序輸入命令窗口就可出現(xiàn)相應(yīng)的畫面,生產(chǎn)的GUI界面如圖12</p><p> 圖12 GUI界面</p><p><b> 4 系統(tǒng)調(diào)試</b></p><p> 本次設(shè)計(jì)根據(jù)設(shè)計(jì)的先后分三個(gè)階段對(duì)系統(tǒng)進(jìn)行調(diào)試。首先設(shè)計(jì)下位機(jī):?jiǎn)纹瑱C(jī)和DS18B20組成的溫度測(cè)量系統(tǒng)。在設(shè)計(jì)好程序和電路后,調(diào)試可以達(dá)到預(yù)期的效果,
97、溫度可以顯示出來(lái)。下位機(jī)調(diào)好以后,調(diào)試MATLAB和串口的通信,通過(guò)MATLAB設(shè)備控制箱里的serial類和串口調(diào)試軟件實(shí)現(xiàn)串口的通信。最后是系統(tǒng)聯(lián)調(diào),通過(guò)MATLAB來(lái)控制下位機(jī)實(shí)現(xiàn)溫度的采集,并且在GUI界面中將溫度曲線繪制出來(lái)??傮w來(lái)說(shuō),設(shè)計(jì)的結(jié)果達(dá)到了目的,在一些細(xì)節(jié)方面還需要改進(jìn)。</p><p><b> 4.1下位機(jī)調(diào)試</b></p><p>
98、調(diào)試的目的主要是看能否將溫度顯示出來(lái)。將寫好的程序?qū)?,運(yùn)行。數(shù)碼管顯示實(shí)時(shí)的溫度。源程序見(jiàn)附錄。溫度顯示如圖13所示。</p><p><b> 4.2 串口調(diào)試</b></p><p> 串口是上位機(jī)和下位機(jī)通信的橋梁,如果串口不通,設(shè)計(jì)就不能成功。在串口調(diào)試軟件里發(fā)命令,將溫度通過(guò)開發(fā)板上的RS232讀入串口調(diào)試軟件的界面里。調(diào)試界面如圖14所示。</
99、p><p><b> 4.3 系統(tǒng)聯(lián)調(diào)</b></p><p> 下位機(jī)和串口都調(diào)試好以后,打開MATLAB軟件,在MATLAB設(shè)備控制工具箱里調(diào)試,將溫度顯示在GUI界面里。至此,整個(gè)測(cè)溫系統(tǒng)就算設(shè)計(jì)好了。MATLAB調(diào)試的結(jié)果如圖15,GUI界面設(shè)計(jì)的溫度曲線見(jiàn)圖16</p><p> 圖13 下位機(jī)調(diào)試結(jié)果顯示</p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文——多點(diǎn)溫度檢測(cè)系統(tǒng)設(shè)計(jì)
- 多點(diǎn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文——多點(diǎn)溫度檢測(cè)系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文(設(shè)計(jì))多點(diǎn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)
- 基于matlab的織物疵點(diǎn)檢測(cè)系統(tǒng)畢業(yè)論文
- 基于gsm網(wǎng)絡(luò)的溫度檢測(cè)系統(tǒng)【畢業(yè)論文】
- 多點(diǎn)溫度檢測(cè)系統(tǒng)畢業(yè)論文
- 高壓母線溫度在線檢測(cè)系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 畢業(yè)論文--高壓母線溫度在線檢測(cè)系統(tǒng)設(shè)計(jì)
- 基于matlab的液壓系統(tǒng)的設(shè)計(jì)與仿真畢業(yè)論文
- 基于matlab的液壓系統(tǒng)的設(shè)計(jì)與仿真畢業(yè)論文
- 基于plc溫室溫度檢測(cè)與控制系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 畢業(yè)論文--糧庫(kù)溫度自動(dòng)檢測(cè)系統(tǒng)的設(shè)計(jì)
- 基于matlab的模糊控制系統(tǒng)仿真設(shè)計(jì)【畢業(yè)論文】
- 基于wsn的無(wú)線溫度采集系統(tǒng)設(shè)計(jì)【畢業(yè)論文】
- 畢業(yè)論文--基于matlab的人臉識(shí)別系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文——溫度監(jiān)控系統(tǒng)的設(shè)計(jì)
- 畢業(yè)論文---溫度監(jiān)控系統(tǒng)的設(shè)計(jì)
- 溫度監(jiān)控系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 基于fpga的溫度控制系統(tǒng)設(shè)計(jì)【畢業(yè)論文】
評(píng)論
0/150
提交評(píng)論