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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

27、通信,主從機(jī)需要正確的設(shè)置和判斷多機(jī)通信控制位SM2和發(fā)送接收的第九位數(shù)據(jù),即TB8、RB8。從機(jī)主要依靠SM2的設(shè)置實(shí)現(xiàn)對(duì)主機(jī)的響應(yīng)。當(dāng)從機(jī)的SM2=1時(shí)該從機(jī)只接收地址幀,RB8=1,對(duì)數(shù)據(jù)幀RB8=0不進(jìn)行處理;當(dāng)從機(jī)的SM2=0時(shí),該從機(jī)接收主機(jī)發(fā)送的所有信息。主機(jī)在發(fā)送信息時(shí),依靠TB8標(biāo)志位來(lái)區(qū)分發(fā)送的是地址還是數(shù)據(jù),TB8=1時(shí),發(fā)送的是地址信號(hào);當(dāng)TB8=0時(shí)發(fā)送的是數(shù)據(jù)信號(hào)。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手動(dòng)調(diào)試溫度 手動(dòng)調(diào)節(jié)DS18B20使溫度達(dá)到4:圖4-2手動(dòng)調(diào)試4.3系統(tǒng)達(dá)到設(shè)定值報(bào)警 溫度到達(dá)設(shè)定報(bào)警下限時(shí)蜂鳴器發(fā)出報(bào)警,如下圖: 圖4-3到達(dá)設(shè)定值報(bào)警5 課程設(shè)計(jì)心得體會(huì)本次課程設(shè)計(jì)與以往有很多不同之處。其中最大的特點(diǎn)是做實(shí)物,在此要求下,老師給我們留了足夠的時(shí)間來(lái)讓我們完成這個(gè)看似很難的“工程”。隨著時(shí)間一天天的過(guò)去,我們慢慢的把程序調(diào)好,慢慢的學(xué)會(huì)了仿真,學(xué)會(huì)了調(diào)試,慢慢

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

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

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

32、紅. 51 單片機(jī)技術(shù)與應(yīng)用系統(tǒng)開(kāi)發(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;/啟動(dòng)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;/啟動(dòng)T1void send()char k;for(k=0;k3;k+)SBUF=disnumberk;while(!TI);/等待發(fā)送完畢 TI=0; /清除發(fā)送標(biāo)志位void

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論