多機(jī)溫度檢測畢業(yè)設(shè)計_第1頁
多機(jī)溫度檢測畢業(yè)設(shè)計_第2頁
多機(jī)溫度檢測畢業(yè)設(shè)計_第3頁
多機(jī)溫度檢測畢業(yè)設(shè)計_第4頁
多機(jī)溫度檢測畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)應(yīng)用與仿真訓(xùn)練設(shè)計報告多機(jī)溫度檢測系統(tǒng)設(shè)計2011年7月1日摘要溫度是一種最基本的環(huán)境參數(shù),在工農(nóng)業(yè)生產(chǎn)及日常生活中對溫度的測量及控制具有重要意義。以往,在實際的溫度控制系統(tǒng)中,多采用熱敏電阻器或熱電偶測量溫度。這種溫度采集電路有時需要冷端補償電路,這樣就增加了電路的復(fù)雜性,而且該種電路易受干擾,使采集到的數(shù)據(jù)準(zhǔn)確性不高。隨著微電子技術(shù)、單片機(jī)技術(shù)、傳感器技術(shù)的不斷發(fā)展,為溫度控制系統(tǒng)測控功能的完善、測控精度的提高和抗干擾能力的增強(qiáng)等提供了條件。在傳統(tǒng)的溫度檢測系統(tǒng)中,一般選用的是模擬式溫度傳感器,當(dāng)系統(tǒng)進(jìn)行多機(jī)多點溫度測量時,所用模擬溫度傳感器增多,使系統(tǒng)變得復(fù)雜。本設(shè)計介紹一種高智能

2、的溫度測量系統(tǒng),運用數(shù)字溫度傳感器DS18B20作為溫度測量傳感器,以AT89S52單片機(jī)為核心來構(gòu)成溫度測量系統(tǒng),給出了該溫度測量系統(tǒng)的設(shè)計方案、硬件電路設(shè)計和軟件設(shè)計,并以此實現(xiàn)多機(jī)溫度測量。而采用DS18b20數(shù)字式溫度傳感器,有效地解決了模擬式溫度傳感器外圍電路復(fù)雜及抗干擾能力差的弊病,降低了對系統(tǒng)的要求。與傳統(tǒng)的模擬測溫系統(tǒng)相比,該系統(tǒng)硬件組成更加簡捷、高效、抗干擾能力更加突出。同時,也可通過RS-232 串行口與PC 機(jī)連接,將數(shù)據(jù)傳送至PC 機(jī)系統(tǒng),該系統(tǒng)還可擴(kuò)展成為多點溫度采集系統(tǒng)、溫度遠(yuǎn)程監(jiān)控系統(tǒng)等。關(guān)鍵字:多機(jī)溫度檢測 單片機(jī) AT89S52 DS18B20溫度傳感器 目錄

3、1 概述41.1 設(shè)計背景41.2 設(shè)計任務(wù)和要求51.3 系統(tǒng)原理框圖52 系統(tǒng)總體方案及硬件設(shè)計62.1 AT89S52單片機(jī)62.2數(shù)碼管顯示62.3時鐘晶振電路72.4復(fù)位電路82.5報警電路82.6溫度檢測電路93 軟件設(shè)計103.1 DS18B20的RAM指令及單總線時序的軟件控制說明103.2溫度測量主程序143.3 上位機(jī)與從機(jī)通信軟件設(shè)計164 軟件仿真194.1仿真初始194.2手動調(diào)試溫度194.3系統(tǒng)達(dá)到設(shè)定值報警205 課程設(shè)計心得體會21參考文獻(xiàn)22附1:源程序代碼23附2: 系統(tǒng)原理圖27附3: 擴(kuò)展部分系統(tǒng)原理圖28附4:擴(kuò)展部分源程序代碼291 概述1.1 設(shè)

4、計背景自從世界上公認(rèn)的第一臺電子計算機(jī)問世以來,計算機(jī)的發(fā)展日新月異。短短的幾十年間,已由電子管數(shù)字計算機(jī)發(fā)展到今天的超大規(guī)模集成電路計算機(jī),運算速度由每秒5000次提高到今天的上百億次。近年來計算機(jī)一方面向著高速智能化的超級巨型機(jī)方向發(fā)展,另一方面向著微型機(jī)的方向發(fā)展。 在微機(jī)的大家族中,單片微型計算機(jī)(Single Chip Microcomputer)異軍突起,發(fā)展迅速。單片微型計算機(jī)(以下簡稱單片機(jī))就是可以將CPU、RAM、ROM、定時器/計數(shù)器以及輸入/輸出(I/O)接口電路等主要計算機(jī)部件集成在一塊芯片上。雖然單片機(jī)只是一塊芯片,但從組成和功能上看,它已具有了微機(jī)系統(tǒng)的含義。正是

5、單片機(jī)的產(chǎn)生,使計算機(jī)正式形成了通用計算機(jī)系統(tǒng)和嵌入式計算機(jī)系統(tǒng)的分支。單片機(jī)單芯片的微小體積和極低成本,可廣泛地嵌入到如玩具、家用電器、機(jī)器人、儀器儀表、汽車電子系統(tǒng)、工業(yè)控制單元、辦公自動化設(shè)備、金融電子系統(tǒng)、艦船、個人信息終端及通信產(chǎn)品中,成為現(xiàn)代電子系統(tǒng)中最重要的智能化工具。在人類的生活環(huán)境中,溫度扮演著極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。溫度對于工業(yè)非常的重要,由此推進(jìn)了溫度傳感器的發(fā)展。傳感器主要大體經(jīng)過了三個發(fā)展階段:模擬集成溫度傳感器。該傳感器是采用硅半導(dǎo)體集成工藝制成,因此亦稱硅傳感器或單片集成溫度傳感器。此種傳感器具有功能單一(僅測量

6、溫度)、測溫誤差小、價格低、響應(yīng)速度快、傳輸距離遠(yuǎn)、體積小、微功耗等,適合遠(yuǎn)距離測溫、控溫,不需要進(jìn)行非線性校準(zhǔn),外圍電路簡單;模擬集成溫度控制器。模擬集成溫度控制器主要包括溫控開關(guān)、可編程溫度控制器。智能溫度傳感器。智能溫度傳感器是在20世紀(jì)90年代中期問世的。它是微電子技術(shù)、計算機(jī)技術(shù)和自動測試技術(shù)(ATE)的結(jié)晶。智能溫度傳感器內(nèi)部都包含溫度傳感器、A/D轉(zhuǎn)換器、信號處理器、存儲器(或寄存器)和接口電路。智能溫度傳感器的特點是能輸出溫度數(shù)據(jù)及相關(guān)的溫度控制量,適配各種微控制器(MCU);并且它是在硬件的基礎(chǔ)上通過軟件來實現(xiàn)測試功能的,其智能化程度也取決于軟件的開發(fā)水平。目前市場主要存在單

7、點和多點兩種溫度測量儀表。對于單點溫測儀表,主要采用傳統(tǒng)的模擬集成溫度傳感器,其中又以熱電阻、熱電偶等傳感器的測量精度高,測量范圍大,而得到了普遍的應(yīng)用。此種產(chǎn)品測溫范圍大都在-200800之間,分辨率12位,最小分辨溫度在0.0010.01之間。自帶LED顯示模塊,顯示4位到16位不等。有的儀表還具有存儲功能,可存儲幾百到幾千組數(shù)據(jù)。該類儀表可很好的滿足單個用戶單點測量的需要。多點溫度測量儀表,相對與單點的測量精度有一定的差距,雖然實現(xiàn)了多路溫度的測控,但價格昂貴。針對目前市場的現(xiàn)狀,本課題提出了一種可滿足要求、可擴(kuò)展的并且性價比高的單片機(jī)多路測溫系統(tǒng)DS18b20。由于智能儀表是隨著80年

8、代初單片機(jī)技術(shù)的成熟而發(fā)展起來的,現(xiàn)在世界儀表市場基本被智能儀表所壟斷。究其原因就是企業(yè)信息化的需要,企業(yè)在儀表選型時其中的一個必要條件就是要具有聯(lián)網(wǎng)通信接口。最初是數(shù)據(jù)模擬信號輸出簡單過程量,后來儀表接口是RS232接口,這種接口可以實現(xiàn)點對點的通信方式,但這種方式不能實現(xiàn)聯(lián)網(wǎng)功能,隨后出現(xiàn)的RS485解決了這個問題。1.2 設(shè)計任務(wù)和要求任務(wù):設(shè)計多機(jī)溫度檢測系統(tǒng)基本要求:(1)采用2片單片機(jī),組成多機(jī)溫度檢測系統(tǒng);(2)下位單片機(jī)采集溫度,通過串行通信傳送至上位單片機(jī);(3)上位單片機(jī)用數(shù)碼管顯示溫度大小。(4)基本范圍0100(5)精度誤差小于0.5發(fā)揮部分:設(shè)計一個主單片機(jī),兩個從單

9、片機(jī),組成多機(jī)檢測系統(tǒng),主單片機(jī)分時切換顯示從單片機(jī)的溫度數(shù)據(jù)。發(fā)揮部分的仿真電路圖和源程序代碼如附錄3和附錄4所示。1.3 系統(tǒng)原理框圖2 系統(tǒng)總體方案及硬件設(shè)計2.1 AT89S52單片機(jī)AT89S52單片機(jī)是一種低功耗高性能的CMOS8位微控制器,內(nèi)置8KB可在線編程閃存,片內(nèi)程序存儲器允許重復(fù)在線編程。其引腳分布如下圖2.1所示: 圖2.1 單片機(jī)管腳圖其P0、P1、P2、P3口均都是準(zhǔn)雙向I/O口。作輸入時,必須先向相應(yīng)的端口的鎖存器寫“1”,是下拉場效應(yīng)管截止,呈高阻態(tài)。其中P0口的每一位輸出可驅(qū)動8個LSTTL負(fù)載,但要驅(qū)動NMOS或其它拉電流負(fù)載時,引腳要外接上拉電阻,其余3個

10、口可驅(qū)動4個LSTTL負(fù)載,P3口可做多功能口使用。此次設(shè)計中p0口作為鍵盤的按鍵輸入口,p0口作為數(shù)碼管的數(shù)據(jù)輸出口,p2口作為數(shù)碼管的位選口的控制口。2.2數(shù)碼管顯示設(shè)計中用到的數(shù)碼管為:5461AS 四位共陰極二極管顯示器 是陰極公共端,也是位碼,ABCDEFG DP是段碼。如圖2.2所示:圖2.21 四位數(shù)碼管單片機(jī)驅(qū)動LED數(shù)碼管按顯示方法可分為靜態(tài)顯示和動態(tài)顯示,這里用的是動態(tài)掃描顯示。動態(tài)掃描方法是用其接口電路把所有的顯示器的8個筆劃字段ah同名端并連在一起,而每一個顯示器的公共極COM各自獨自地接受I/0線控制。CPU向字段輸出端口輸出字型碼時,所有顯示器接收到相同的字型碼,但

11、究竟是使用哪個顯示器,則取決于COM端,而這一端是由I/O控制的,由單片機(jī)程序設(shè)定何時顯示哪一位。圖2-22引腳圖2.3時鐘晶振電路時鐘晶振電路模塊為單片機(jī)提供特定的時鐘周期,以備單片機(jī)工作使用。單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器的輸入與輸出端分別是引腳XTAL1和XTAL2,在兩引腳上外接時鐘源即可構(gòu)成時鐘電路。時鐘源的接法有內(nèi)部和外部時鐘產(chǎn)生方式,本設(shè)計用的是內(nèi)部產(chǎn)生方式,通過電容C1、C2微調(diào)作用與晶振產(chǎn)生12MHZ的時鐘頻率。其電路圖如下圖2.3所示:圖2-3晶振電路2.4復(fù)位電路系統(tǒng)的復(fù)位電路在這里采用的是上電+按鈕復(fù)位電路形式,其中電阻R1/R2分別采用1k、10k的

12、阻值,電容采用電容值為10F的電解電容。具體連接電路如圖2.4所示:圖2.4 復(fù)位電路2.5報警電路電路采用的是峰鳴音報警電路,當(dāng)溫度達(dá)到設(shè)定上下限時蜂鳴器發(fā)出報警音。在圖中,P2.0接晶體管基極輸入端。當(dāng)P2.0輸出高電平“1”時,晶體管導(dǎo)通,壓電蜂鳴器兩端獲得約+5V電壓而鳴叫;當(dāng)P2.0輸出低電平“0”時,三極管截止,蜂鳴器停止發(fā)聲。電路圖如下圖2.5所示:圖2.5 報警電路2.6溫度檢測電路DS18B20連接從機(jī)的P3.7對溫度進(jìn)行檢測。DS18B20采用寄生電源供電方式,如下圖所示。單片機(jī)端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管來完

13、成對總線的上拉。當(dāng)DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)化操作時,總線上必須有強(qiáng)的上拉,上拉開啟時間最長為500ms。采用寄生電源供電方式時,VDD和GND端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。電路圖如圖2.6:圖2.6 溫度檢測電路3 軟件設(shè)計3.1 DS18B20的RAM指令及單總線時序的軟件控制說明ROM操作命令一旦總線控制器探測到一個存在脈沖,它就可以發(fā)出 5 個ROM 命令中的任一個。所有ROM指令都是8位長度。Read ROM 33h這個命令允許總線控制器讀到DS1820 的8 位系列編碼、唯一的序列號和8 位CRC 碼。只有在總線上存在單只DS1820

14、的時候才能使用這個命令。如果總上有不止一個從機(jī),當(dāng)所有從機(jī)試圖同時傳送信號時就會發(fā)生數(shù)據(jù)沖突(漏極開路連在一起開成相與的效果)。Match ROM 55h 匹配ROM 命令,后跟64 位ROM 序列,讓總線控制器在多點總線上定位一只特定的DS1820。只有和64 位ROM 序列完全匹配的DS1820 才能響應(yīng)隨后的存儲器操作命令。所有和64 位ROM序列不匹配的從機(jī)都將等待復(fù)位脈沖。這條命令在總線上有單個或多個器件時都可以使用。Skip ROM CCh 這條命令允許總線控制器不用提供64 位ROM 編碼就使用存儲器操作命令,在單點總線情況下右以節(jié)省時間。如果總線上不止一個從機(jī),在Skip RO

15、M命令之后跟著發(fā)一條讀命令,由于多個從機(jī)同時傳送信號,總線上就會發(fā)生數(shù)據(jù)沖突(漏極開路下拉效果相當(dāng)于相與)。Search ROM F0h 當(dāng)一個系統(tǒng)初次啟動時,總線控制器可能并不知道單線總線上有多少器件或它們的64 位ROM編碼。搜索ROM 命令允許總線控制器用排除法識別總線上的所有從機(jī)的64 位編碼。DS1820 需要嚴(yán)格的協(xié)議以確保數(shù)據(jù)的完整性。協(xié)議包括幾種單線信號類型:復(fù)位脈沖、存在脈沖、寫0、寫1、讀0 和讀1。所有這些信號,除存在脈沖外,都是由總線控制器發(fā)出的。和 DS1820 間的任何通訊都需要以初始化序列開始,初始化序列如下圖。一個復(fù)位脈沖跟著一個存在脈沖表明DS1820 已經(jīng)準(zhǔn)

16、備好發(fā)送和接收數(shù)據(jù)(適當(dāng)?shù)腞OM 命令和存儲器操作命令)。圖3-1 復(fù)位和存在脈沖時表4 DS18B20命令設(shè)置命令說明協(xié)議單總線發(fā)出協(xié)議后溫度轉(zhuǎn)換命令Convert T開始溫度轉(zhuǎn)換44h讀溫度忙狀態(tài)存儲器命令Read Scratchpad讀取暫存器和 CRC 字節(jié)BEh讀數(shù)據(jù)直到9 字節(jié)WriteSchratchpad把字節(jié)寫入暫存器的地址2 和34Eh寫兩個的字節(jié)到地址2和3Copy Scratchpad把暫存器內(nèi)容拷貝到非易失性存儲器中48h讀拷貝狀Recall E2把非易失性存儲器中的值召回暫存器B8h讀溫度忙狀態(tài)溫度轉(zhuǎn)換時間可長達(dá)500ms。接到溫度轉(zhuǎn)換的協(xié)議后,如果器件不是從VDD

17、 供電的話,I/O線就必須至少保持500ms 高電平。這樣,發(fā)出一個Convert T 命令之后,單線總線上在這段時間內(nèi)就不能有其他活動。接到Copy Scratchpad 協(xié)議后,如果器件不是從VDD 供電的話,I/O 線必須至少保持10ms高電平。這樣,在發(fā)出一個Copy Scratchpad 命令后,這段時間內(nèi)單線總線上就不能有其他活動??偩€控制器發(fā)出(TX)一個復(fù)位脈沖(一個最少保持480s 的低電平信號),然后釋放總線,進(jìn)入接收狀態(tài)(RX)。單線總線由5K 上拉電阻拉到高電平。探測到I/O 引腳上的上升沿后,DS1820 等待1560s,然后發(fā)出存在脈沖(一個60240s 的低電平信

18、號)。存儲器操作命令:Write Scratchpad 4E 這個命令向DS1820 的暫存器中寫入數(shù)據(jù),開始位置在地址2。接下來寫入的兩個字節(jié)將被存到暫存器中的地址位置2 和3??梢栽谌魏螘r刻發(fā)出復(fù)位命令來中止寫入。Read Scratchpad BEh 這個命令讀取暫存器的內(nèi)容。讀取將從字節(jié)0 開始,一直進(jìn)行下去,直到第9(字節(jié)8,CRC)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時間發(fā)出復(fù)位命令來中止讀取。Copy Scratchpad 48h 這條命令把暫存器的內(nèi)容拷貝到DS1820 的E2 存儲器里,即把溫度報警觸發(fā)字節(jié)存入非易失性存儲器里。如果總線控制器在這條命令之后跟著發(fā)出

19、讀時間隙,而DS1820 又正在忙于把暫存器拷貝到E2 存儲器,DS1820 就會輸出一個“0”,如果拷貝結(jié)束的話,DS1820 則輸出“1”。如果使用寄生電源,總線控制器必須在這條命令發(fā)出后立即起動強(qiáng)上拉并最少保持10ms。Convert T 44h 這條命令啟動一次溫度轉(zhuǎn)換而無需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后DS1820 保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時間隙,而DS1820 又忙于做時間轉(zhuǎn)換的話,DS1820 將在總線上輸出“0”,若溫度轉(zhuǎn)換完成,則輸出“1”。如果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動強(qiáng)上拉,并保持500ms。Recall E2 B

20、8h 這條命令把報警觸發(fā)器里的值拷回暫存器。這種拷回操作在DS1820 上電時自動執(zhí)行,這樣器件一上電暫存器里馬上就存在有效的數(shù)據(jù)了。若在這條命令發(fā)出之后發(fā)出讀時間隙,器件會輸出溫度轉(zhuǎn)換忙的標(biāo)識:“0”=忙,“1”=完成。Read Power Supply B4h 若把這條命令發(fā)給DS1820 后發(fā)出讀時間隙,器件會返回它的電源模式:“0”=寄生電源,“1”=外部電源。讀/寫時間隙DS1820 的數(shù)據(jù)讀寫是通過時間隙處理位和命令字來確認(rèn)信息交換。寫時間隙當(dāng)主機(jī)把數(shù)據(jù)線從邏輯高電平拉到邏輯低電平的時候,寫時間隙開始。有兩種寫時間隙:寫1 時間隙和寫0 時間隙。所有寫時間隙 必須最少持續(xù)60s,包

21、括兩個寫周期間至少1s 的恢復(fù)時間。I/O 線電平變低后,DS1820 在一個15s 到60s 的窗口內(nèi)對I/O 線采樣。如果線上是高電平,就是寫1,如果線上是低電平,就是寫0。圖3-2 讀寫0時序主機(jī)要生成一個寫時間隙,必須把數(shù)據(jù)線拉到低電平然后釋放,在寫時間隙開始后的15s內(nèi)允許數(shù)據(jù)線拉到高電平。主機(jī)要生成一個寫 0 時間隙,必須把數(shù)據(jù)線拉到低電平并保持60s。讀時間隙當(dāng)從 DS1820 讀取數(shù)據(jù)時,主機(jī)生成讀時間隙。當(dāng)主機(jī)把數(shù)據(jù)線從高高平拉到低電平時,寫時間隙開始。數(shù)據(jù)線必須保持至少1s;從DS1820 輸出的數(shù)據(jù)在讀時間隙的下降沿出現(xiàn)后15s 內(nèi)有效。因此,主機(jī)在讀時間隙開始后必須停止

22、把I/O 腳驅(qū)動為低電平15s,以讀取I/O 腳狀態(tài)(見圖20)。在讀時間隙的結(jié)尾,I/O 引腳將被外部上拉電阻拉到高電平。所有讀時間隙必須最少60s,包括兩個讀周期間至少1s 的恢復(fù)時間。圖 21上圖 表示TINIT,TRC 和TSAMPLE 之和必須小于15s。圖21下圖 示出,系統(tǒng)時間可以用下面方法達(dá)到最大:TINIT 和TRC 保持時間盡可能??;把控制器采樣時間放到15s 周期的最后。圖3-3 讀1據(jù)時序3.1.1 溫度數(shù)據(jù)的軟件計算處理方法從DS18B20讀取的二進(jìn)制值必須先轉(zhuǎn)化成十進(jìn)制,才能用于字符的顯示。DS18B20的轉(zhuǎn)化精度為912位可選,通過觀察表2可以發(fā)現(xiàn),一個十進(jìn)制與一

23、個二進(jìn)制數(shù)有很明顯的關(guān)系,就是把二進(jìn)制的高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一個字節(jié),這個字節(jié)的二進(jìn)制轉(zhuǎn)換成十進(jìn)制值之后,就是溫度的百、十、個位值,而剩下的低字節(jié)的低半字節(jié)化成十進(jìn)制后就是溫度的小數(shù)部分。因為小數(shù)部分是半字節(jié),所以二進(jìn)制值范圍是0F,轉(zhuǎn)化成十進(jìn)制小數(shù)值就是0.0625的倍數(shù)。這樣需要四位的數(shù)碼管來顯示小數(shù)部分。實際中的要求精度沒有這么高,只設(shè)一位就夠。計算過程:例如DS18B20讀取的二進(jìn)制數(shù)為0000 0111 1101 0000,高字節(jié)的高四位為符號位0為正,1為負(fù)。低字節(jié)的低四位為小數(shù)位。先算整數(shù)位,取高字節(jié)的低四位和低字節(jié)的高四位組成一個字節(jié)為0111 1101轉(zhuǎn)換成

24、十進(jìn)制數(shù)為0111 1101=027+126+125+124+123+122+021+120=125;因此此時的溫度為+125。3.2溫度測量主程序溫度測量部分主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)化命令子程序,計算溫度子程序,和顯示數(shù)據(jù)刷新種子程序,中斷子程序,數(shù)據(jù)發(fā)送子程序。3.2.1溫度測量主程序流程圖主程序主要功能是負(fù)責(zé)溫度的實時顯示,讀出并處理DS18B20的測量溫度值。主程序流程圖如下。圖3-4 主程序流程圖3.2.2 讀溫度子程序流程圖讀出溫度子程序的主要功能是讀出RAM的9字節(jié)。在讀出時需進(jìn)行CRC校驗,校驗有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。讀出溫度子程序流程圖如下。圖3-5 讀出溫

25、度子程序流程圖3.2.3 溫度轉(zhuǎn)化命令子程序流程圖溫度轉(zhuǎn)化命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令。當(dāng)采用12位分辨率時,轉(zhuǎn)化時間約為750ms。在本程序設(shè)計中,采用1s顯示程序。溫度轉(zhuǎn)化子程序流程圖如下所示。圖3-6 溫度轉(zhuǎn)換命令子程序流程圖3.2.4 計算溫度子程序流程圖計算溫度子程序?qū)AM中讀取值進(jìn)行BCD碼的轉(zhuǎn)換運算,并進(jìn)行溫度值正負(fù)的判定。流程圖如下所示。圖3-7 計算溫度子程序流程圖3.2.5 數(shù)據(jù)顯示子程序流程圖主要是對顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新工作,當(dāng)最高位數(shù)據(jù)顯示為0時,不顯示,并以此類推,符號位固定在數(shù)最后位。流程圖如下。圖3-8 顯示數(shù)據(jù)刷新流程圖3.2.6 中斷處理和發(fā)

26、送子程序流程圖主要介紹當(dāng)處理器檢查到中斷標(biāo)志位進(jìn)入中斷處理,即進(jìn)行地址判斷,如果地址正確,則進(jìn)入數(shù)據(jù)發(fā)送程序,將測的溫度發(fā)送出去。流程圖如下。圖3-9 中斷處理和發(fā)送流程圖3.3 上位機(jī)與從機(jī)通信軟件設(shè)計上位機(jī)和從機(jī)之間屬于多機(jī)通信。多機(jī)通信是利用單片機(jī)的串行口,實現(xiàn)單片機(jī)與另外多個單片機(jī)的異步串行通信。在這種方式下,有一臺主機(jī)和多臺從機(jī),主機(jī)可以向各個從機(jī)或指定的從機(jī)發(fā)送信息,各個從機(jī)發(fā)送的信息只能被主機(jī)接收,從機(jī)之間不能進(jìn)行通信。圖3-10單片機(jī)之間的多級通信3.3.1 多機(jī)通信軟件原理單片機(jī)的多機(jī)串行通信必須使用串行口的模式2或3。在多級通信中,為了保證主機(jī)能夠正確識別所選擇的從機(jī)并進(jìn)信

27、通信,主從機(jī)需要正確的設(shè)置和判斷多機(jī)通信控制位SM2和發(fā)送接收的第九位數(shù)據(jù),即TB8、RB8。從機(jī)主要依靠SM2的設(shè)置實現(xiàn)對主機(jī)的響應(yīng)。當(dāng)從機(jī)的SM2=1時該從機(jī)只接收地址幀,RB8=1,對數(shù)據(jù)幀RB8=0不進(jìn)行處理;當(dāng)從機(jī)的SM2=0時,該從機(jī)接收主機(jī)發(fā)送的所有信息。主機(jī)在發(fā)送信息時,依靠TB8標(biāo)志位來區(qū)分發(fā)送的是地址還是數(shù)據(jù),TB8=1時,發(fā)送的是地址信號;當(dāng)TB8=0時發(fā)送的是數(shù)據(jù)信號。3.3.2 主機(jī)通信程序流程圖主機(jī)和從機(jī)均采用串行接口工作模式3,外接11.0592MHZ的晶振,波特率設(shè)置為4800bit/s,數(shù)據(jù)接收進(jìn)入中斷程序。圖3-11主機(jī)通信程序流程圖3.3.3 從機(jī)通信程序

28、流程圖從機(jī)采用中斷程序,當(dāng)進(jìn)入中斷程序后把主機(jī)發(fā)送的地址信息與本身的地址數(shù)據(jù)進(jìn)行比較如果相符則發(fā)送溫度數(shù)據(jù)。圖3-12從機(jī)通程序信流程圖4 軟件仿真4.1仿真初始按接線圖完成硬件電路如下圖圖4-1初始電路4.2手動調(diào)試溫度 手動調(diào)節(jié)DS18B20使溫度達(dá)到4:圖4-2手動調(diào)試4.3系統(tǒng)達(dá)到設(shè)定值報警 溫度到達(dá)設(shè)定報警下限時蜂鳴器發(fā)出報警,如下圖: 圖4-3到達(dá)設(shè)定值報警5 課程設(shè)計心得體會本次課程設(shè)計與以往有很多不同之處。其中最大的特點是做實物,在此要求下,老師給我們留了足夠的時間來讓我們完成這個看似很難的“工程”。隨著時間一天天的過去,我們慢慢的把程序調(diào)好,慢慢的學(xué)會了仿真,學(xué)會了調(diào)試,慢慢

29、發(fā)現(xiàn)對單片機(jī)有了更深的了解,慢慢發(fā)現(xiàn)其實這個東西也不是傳說中的那么難。 在當(dāng)設(shè)計剛開始的時候,我們?nèi)齻€人是一片茫然,不知道從何下手。軟件不會用,程序沒寫過,現(xiàn)在要突然做這么一個東西,當(dāng)時的感覺一個字:難!看到有些同學(xué)都在有條不紊的進(jìn)行著,特別是在??埔呀?jīng)實習(xí)過同學(xué),這對他們來說就是小菜一碟??!我們當(dāng)時真的很急啊,我們還要準(zhǔn)備考試,看到自己的同學(xué)每天去自習(xí),當(dāng)時真是不想弄。但我們?nèi)齻€經(jīng)過深入的討論與分析還是決定做,并選擇了這個多機(jī)溫度檢測,分配好工作,計劃好時間。工作就這樣開始了,我們每天花一點時間,每天解決一個小問題。通過單片機(jī)課程設(shè)計,加深了我們對單片機(jī)理論的理解,加強(qiáng)了理論聯(lián)系實際的能力,

30、而且還培養(yǎng)了我們不畏困難的挑戰(zhàn)精神,從而不斷地戰(zhàn)勝自己,超越自己,我在這一設(shè)計過程中,學(xué)會了堅持不懈,不輕言放棄。設(shè)計過程,也好比是我們成長的歷程,常有一些不如意,這就像是對我們?nèi)松奶魬?zhàn),勇敢過,戰(zhàn)勝了,勝利的鐘聲也就一定會為我們而敲響。這個設(shè)計過程中,我們遇到了許多困難,例如在程序的編寫過程中常常出錯,經(jīng)常把共陰級和共陽級程序弄混。最后在我們共同的努力下,經(jīng)過多次的嘗試我們的程序終于仿真成功。有時候,面對這些困難,真想要就此罷休,但是經(jīng)過同伴的鼓勵我明白了結(jié)果并不是全部,過程也是非常重要的。最終,我們完成了這個設(shè)計,雖然不是很成功,但是我們卻學(xué)到很多東西,可以說這次課程設(shè)計是我們大學(xué)生活不

31、可多得的一次經(jīng)歷。參考文獻(xiàn)1 余發(fā)山,王福忠. 單片機(jī)原理及應(yīng)用技術(shù).北京:中國礦業(yè)大學(xué)出版社,2008,16-1582 許海波,廖傳書. 基于AT89S52 單片機(jī)的遠(yuǎn)程監(jiān)控系統(tǒng).微計算機(jī)信息,2007,50-793 明德剛. DS18B20 在單片機(jī)溫控系統(tǒng)中的應(yīng)用.貴州大學(xué)學(xué)報(自然科學(xué)版),2006,68(5):33-524 沙占友. 集成化智能傳感器原理與應(yīng)用.北京:電子工業(yè)出版社,2004,56-785 孟立凡,鄭賓. 傳感器原理與技術(shù).北京:國防工業(yè)出版社,2004,46-896 趙建領(lǐng),薛園園. 51 單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解.北京:電子工業(yè)出版社,2009,45-537 江志

32、紅. 51 單片機(jī)技術(shù)與應(yīng)用系統(tǒng)開發(fā)案例精選.北京:清華大學(xué)出版社,2008,25-36附2: 系統(tǒng)原理圖附3: 擴(kuò)展部分系統(tǒng)原理圖附4:擴(kuò)展部分源程序代碼主機(jī)#include #define UCHAR unsigned char#define uint unsigned int#define discan P2UCHAR code scancon4=0xfe,0xfd,0xfb,0xf7;UCHAR code number2=0x06,0x5b;UCHAR disdata 4=0x00,0x00,0x00,0x00;UCHAR counter1=3;void delay()int i;i=

33、50;while(i-);void initial()SCON=0xd0;/串口工作于方式3,允許接收PCON=0x00;/SMOD=0TMOD=0x20;/T1作為波特率發(fā)生器TH1=0xfa;TL1=0xfa;TR1=1;EA=1;ES=1;void scan()char k;for(k=0;k4;k+) P0=disdatak;discan=scanconk;delay();discan=0xff;void receive() interrupt 4 using 1 UCHAR temp;if(RI)RI=0; temp=SBUF;disdatacounter1=temp; counte

34、r1=counter1-1; if(counter1=0)counter1=3;void send()TB8=1;SBUF=disdata0; /發(fā)送地址幀,尋址乙機(jī)while(!TI);/等待發(fā)送完畢 TI=0; /清除發(fā)送標(biāo)志位 keycompair()UCHAR k,key;P1=0xff;if(P1!=0xff)key=P1;for(k=1;k3;k+)if(key=k)disdata0=numberk-1;main()uint k;initial(); while(1)keycompair();send();for(k=0;k500;k+)scan();從機(jī)1#include#inc

35、ludevoid initial()SCON=0xf0; /串口工作于方式3,允許接收,SM2=1PCON=0x00; /SMOD=0TMOD=0x20;/T1作為波特率發(fā)生器TH1=0xfa; TL1=0xfa;EA=1;ES=1;TR1=1;/啟動T1void send()char k;for(k=0;k3;k+)SBUF=disnumberk;while(!TI);/等待發(fā)送完畢 TI=0; /清除發(fā)送標(biāo)志位void receive() interrupt 4 using 1if(RI) RI=0; if(SBUF=ADDRESS) send(); main() initial();do ReadTemperature(0); work(); for(h=0;h500;h+) scan(); while(1); 從機(jī)2#include#includevoid initial()SCON=0xf0; /串口工作于方式3,允許接收,SM2=1PCON=0x00; /SMOD=0TMOD=0x20;/T1作為波特率發(fā)生器TH1=0xfa; TL1=0xfa;EA=1;ES=1;TR1=1;/啟動T1void send()char k;for(k=0;k3;k+)SBUF=disnumberk;while(!TI);/等待發(fā)送完畢 TI=0; /清除發(fā)送標(biāo)志位void

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論