基于單片機(jī)多點溫度采集系統(tǒng)的設(shè)計_第1頁
基于單片機(jī)多點溫度采集系統(tǒng)的設(shè)計_第2頁
基于單片機(jī)多點溫度采集系統(tǒng)的設(shè)計_第3頁
基于單片機(jī)多點溫度采集系統(tǒng)的設(shè)計_第4頁
基于單片機(jī)多點溫度采集系統(tǒng)的設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 單片機(jī)技術(shù) 課程設(shè)計說明書課題名稱 基于單片機(jī)的多點溫度采集設(shè)計 系 別 專 業(yè) 班 級 學(xué) 號 姓 名 X X X 指導(dǎo)教師 2011 年 6 月 30 日摘 要本論文介紹的是基于AT89C51單片機(jī)數(shù)字溫度計設(shè)計,體現(xiàn)模塊化設(shè)計思想。論文重點闡述了硬件模塊MCU模塊、溫度的感應(yīng)模塊、控制模塊、顯示模塊的設(shè)計。軟件同樣采用模塊化設(shè)計,軟件模塊中斷模塊、溫度轉(zhuǎn)化模塊。溫度是生產(chǎn)過程和科學(xué)實驗中普遍而且重要的物理參數(shù)之一。在生產(chǎn)過程中,為了高效地進(jìn)行生產(chǎn),必須對它的主要參數(shù),如溫度、壓力、流量等進(jìn)行有效的控制。溫度控制在生產(chǎn)過程中占有相當(dāng)大的比例。溫度測量是溫度控制的基礎(chǔ),技術(shù)已經(jīng)比較成熟。傳

2、統(tǒng)的測溫元件有熱電偶和二電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉(zhuǎn)換成對應(yīng)的溫度,這些方法相對比較復(fù)雜,需要比較多的外部硬件支持。我們用一種相對比較簡單的方式來測量。我們采用美國DALLAS半導(dǎo)體公司繼DS1820之后推出的一種改進(jìn)型智能溫度傳感器DS18B20作為檢測元件,溫度范圍為-55125 ºC,最高分辨率可達(dá)0.0625 ºC。DS18B20可以直接讀出北側(cè)溫度值,而且采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點。關(guān)鍵字:微控制器;數(shù)字控制;溫度計;AT89C51;DS18B20。AbstractThis paper introduc

3、es the design based on AT89C51 digital thermometer, reflect the modular design thought. Paper expounds the hardware module-module, temperature sensing MCU module, control module, display module design. The software also modular design, software module-module, fresh-interrupt temperature conversion m

4、odule. The temperature is the production process and scientific experiments common and important physical parameter of. In the process of production, to highly efficient production, it needs to main parameters, such as temperature, pressure, and flow rate of effective control. Temperature control in

5、 production process occupies a large proportion. Temperature measurement is the foundation of temperature control, technology has more mature. The traditional measuring temperature elements have thermocouple and two resistance. And thermocouple and heat resistance of the measure is commonly voltage,

6、 again converted into the corresponding temperature, these methods relatively complex, need more of the external hardware support. We use a relatively simple way to measure. We adopt the DALLAS semiconductor company following the DS1820 rolls out after an improved version of the intelligent temperat

7、ure sensor DS18B20 as the test components, temperature range for-55 to 125 C, the highest resolution time integration can be up to 0.0625 DHS C. DS18B20 can read out directly, and the temperature in north of the three wire and single-chip microcomputer is linked together, reduce the external hardwar

8、e circuit, with low cost and easy to use features.Key word: micro controller, digital control, The thermometer, AT89C51, DS18B20.目錄摘要1Abstract2目錄31緒論42設(shè)計任務(wù)與要求4設(shè)計任務(wù)4設(shè)計要求43總體設(shè)計方案5總體設(shè)計方案5方案一5方案二5方案二的總體設(shè)計圖6主控電路設(shè)計6主控制器AT89C51的介紹6溫度傳感器DS18B20的介紹9DS18B20的工作協(xié)議12顯示電路設(shè)計15DS18B20溫度傳感器與單片機(jī)的接口電路16系統(tǒng)整體硬件電路184系統(tǒng)軟件

9、設(shè)計19主程序19讀出溫度子程序19溫度轉(zhuǎn)換命令子程序20顯示數(shù)據(jù)子程序215調(diào)試過程226總結(jié)與體會23致謝24參考文獻(xiàn)25附錄一26附錄二331 緒論隨著“信息時代”的到來,作為獲取信息的手段傳感器技術(shù)得到了顯著的進(jìn)步,其應(yīng)用領(lǐng)域越來越廣泛,對其要求越來越高,需求越來越迫切。傳感器技術(shù)已成為衡量一個國家科學(xué)技術(shù)發(fā)展水平的重要標(biāo)志之一。因此,了解并掌握各類傳感器的基本結(jié)構(gòu)、工作原理及特性是非常重要的。由于傳感器能將各種物理量、化學(xué)量和生物量等信號轉(zhuǎn)變?yōu)殡娦盘?,使得人們可以利用計算機(jī)實現(xiàn)自動測量、信息處理和自動控制,但是它們都不同程度地存在溫漂和非線性等影響因素。傳感器主要用于測量和控制系統(tǒng),

10、它的性能好壞直接影響系統(tǒng)的性能。因此,不僅必須掌握各類傳感器的結(jié)構(gòu)、原理及其性能指標(biāo),還必須懂得傳感器經(jīng)過適當(dāng)?shù)慕涌陔娐氛{(diào)整才能滿足信號的處理、顯示和控制的要求,而且只有通過對傳感器應(yīng)用實例的原理和智能傳感器實例的分析了解,才能將傳感器和信息通信和信息處理結(jié)合起來,適應(yīng)傳感器的生產(chǎn)、研制、開發(fā)和應(yīng)用。另一方面,傳感器的被測信號來自于各個應(yīng)用領(lǐng)域,每個領(lǐng)域都為了改革生產(chǎn)力、提高工效和時效,各自都在開發(fā)研制適合應(yīng)用的傳感器,于是種類繁多的新型傳感器及傳感器系統(tǒng)不斷涌現(xiàn)。溫度傳感器是其中重要的一類傳感器。其發(fā)展速度之快,以及其應(yīng)用之廣,并且還有很大潛力。為了提高對傳感器的認(rèn)識和了解,尤其是對溫度傳感

11、器的深入研究以及其用法與用途,基于實用、廣泛和典型的原則而設(shè)計了本系統(tǒng)。本文利用單片機(jī)結(jié)合傳感器技術(shù)而開發(fā)設(shè)計了這一溫度監(jiān)控系統(tǒng)。2 設(shè)計任務(wù)與要求2.1 設(shè)計任務(wù)設(shè)計基于單片機(jī)控制的多點溫度采集數(shù)字溫度計,該多點溫度采集設(shè)計屬于單線掛接2個DS18B20的兩路溫度數(shù)據(jù)采集,并且通過兩個4位1體的數(shù)碼管進(jìn)行溫度顯示,同時要顯示當(dāng)前通道號。2.2 設(shè)計要求1、控制器使用MCS-51系列單片機(jī)。2、DS18B20集成溫度傳感器的工作原理及其單片機(jī)的連接電路識別、程序控制。3、實現(xiàn)DS18B20的溫度轉(zhuǎn)換數(shù)字采集。4、實現(xiàn)4位1體的數(shù)碼管進(jìn)行溫度顯示,同時要顯示當(dāng)前通道號。5、單線掛接2個DS18B

12、20的兩路溫度采集。6、軟件仿真設(shè)計+硬件設(shè)計。3 總體設(shè)計方案3.1 總體設(shè)計方案3.1.1 方案一由于本設(shè)計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設(shè)計需要用到A/D轉(zhuǎn)換電路感溫電路比較麻煩。該方案一的設(shè)計流程如圖3.1所示:溫度傳感器A/D轉(zhuǎn)換電路單片機(jī)數(shù)碼管顯示圖 3.1 流程圖在設(shè)計時鐘電路時,可以用時鐘芯片,DS1302是DALLAS 公司推出的涓流充電時鐘芯片,內(nèi)部包含實時時鐘/日歷和31字節(jié)的靜態(tài)RAM 。它可以與微處理器通過簡單的串

13、行接口。實時時鐘/日歷提供秒,分鐘,小時,日期,月份,和一年的信息。本月底日期會自動調(diào)整幾個月少于31天,包括更正為閏年。時鐘運行或者在24小時或12小時格式的上午/下午指標(biāo)。 接口的DS1302與微處理器簡化使用同步串行通信。只有三個電線需要溝通的時鐘/內(nèi)存:I / O(數(shù)據(jù)線),以及時鐘(串行時鐘)。數(shù)據(jù)還可以轉(zhuǎn)到和時鐘/ RAM的1字節(jié)的時間或在突發(fā)的多達(dá)31個字節(jié)。在DS1302的設(shè)計操作非常低的功耗和保存數(shù)據(jù)和時鐘信息不到1W。在DS1302的前身是在DS1202。除了基本的報時功能,DS1202,DS1302具有的附加功能的雙電源引腳的主要和備用電源,可編程的涓流充電器VCC1,并

14、增設(shè)7個字節(jié)的暫存記憶。3.1.2 方案二由于用A/D轉(zhuǎn)換比較麻煩,進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計中,大多都是使用傳感器,所以這是非常容易直接讀取溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計要求。在設(shè)計時鐘電路時,由于實現(xiàn)的功能比較少,利用單片機(jī)內(nèi)部資源,定時/計數(shù)器,中斷系統(tǒng)就可以完成,需要在用時鐘芯片,而且會增加外圍電路。3.2 方案二的總體設(shè)計圖3.2.1 主控電路設(shè)計溫度計、時鐘電路設(shè)計總體設(shè)計框圖如圖3.2.1所示,控制器采用單片機(jī)AT89S51,溫度傳感器采用DS18B20,用4位LED數(shù)碼管以并行傳送數(shù)據(jù)實現(xiàn)溫度、時鐘的顯示。復(fù)位電路時鐘電路DS18B20電路AT89C51單片機(jī)數(shù)

15、碼管顯示圖 3.2.1 總體設(shè)計3.2.2 主控制器AT89C51的介紹AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT

16、89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。單片機(jī)AT89C51的封裝圖為圖3.2.2,本設(shè)計的單片機(jī)原理圖為圖3.2.3。圖3.2.2 單片機(jī)AT89C51的封裝圖圖3.2.3 單片機(jī)原理圖1. 單片機(jī)AT89C51主要特性有以下幾點1MCS-51 兼容 4K字節(jié)可編程閃爍存儲器。2壽命是1000寫/擦循環(huán)。3數(shù)據(jù)保留時間為10年。4全靜態(tài)工作在0Hz-24Hz。5三級程序存儲器鎖定。6128*8位內(nèi)部RAM。732可編程I/O線。8兩個16位定時器/計數(shù)器。95個中斷源。10可編程串行通道。10低功耗的閑置和掉電模式。11片內(nèi)振蕩器和時鐘電路。2. 單片機(jī)AT89C51

17、的管腳如下說明VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2

18、口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)

19、部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下說明:P3.0 RXD(串行輸入口)。P3.1 TXD(串行輸出口)。P3.2 /INT0(外部中斷0)。P3.3 /INT1(外部中斷1)。P3.4 T0(記時器0外部輸入)。P3.5 T1(記時器1外部輸入)。P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)。P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)。P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG:當(dāng)

20、訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR的8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,

21、這兩次有效的/PSEN信號將不出現(xiàn)。EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。3振蕩器特性XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個

22、二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。4芯片擦除整個PEROM陣列和三個鎖定位的電擦除可通過正確的控制信號組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。3.2.3 溫度傳感器DS18B20的

23、介紹這里我們用到溫度芯片DS18B20。使用集成芯片,能夠有效的減小外界的干擾,提高測量的精度,簡化電路的結(jié)構(gòu)。使用集成芯片,已經(jīng)慢慢的成為設(shè)計電路的一種趨勢。本系統(tǒng)使用溫度芯片也正是順應(yīng)了這一趨勢。DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。DS18B20的性能特點如下:1獨特的單線接口僅需要一個端口引腳進(jìn)行通信;2多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點組網(wǎng)功能;3無須外部器件;4可通過數(shù)據(jù)線供電,電壓范圍為3.05.5V

24、;5零待機(jī)功耗;6溫度以9或12位數(shù)字;7用戶可定義報警設(shè)置;8報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件;9負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作; DS18B20采用3腳PR35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3.2.4所示:I/OC64 位ROM和單線接口高速緩存存儲器與控制邏輯溫度傳感器高溫觸發(fā)器TH低溫觸發(fā)器TL配置寄存器8位CRC發(fā)生器Vdd圖3.2.4 DS18B20內(nèi)部結(jié)構(gòu)64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號 ,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采

25、用一線進(jìn)行通信的原因。溫度報警觸發(fā)器TH和TL,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器,結(jié)構(gòu)如圖3.2.5所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖3.2.5 所示。低5位一直為1,TM是工作模式位,用于設(shè)置DS18B20在工作模式還是在測試模式,DS18B20出廠時該

26、位被設(shè)置為0,用戶要去改動,R1和0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。溫度 LSB溫度 MSBTH用戶字節(jié)1TL用戶字節(jié)2配置寄存器保留保留保留CRC圖3.2.5 DS18B20字節(jié)定義由表3.2.6可見,DS18B20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時間越長。因此,在實際應(yīng)用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。LSB形式表示。當(dāng)符號位S0時,表示測得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號位S1時,表示測得的溫度值為

27、負(fù)值,要先將補(bǔ)碼變成原碼,再計算十進(jìn)制數(shù)值。表3.2.7 是一部分溫度值對應(yīng)的二進(jìn)制溫度數(shù)據(jù)。R1R0分辨率/位溫度最大轉(zhuǎn)向時間/ms009011010113751112750表3.2.6 DS18B20溫度轉(zhuǎn)換時間表DS18B20完成溫度轉(zhuǎn)換后,就把測得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若TTH或TTL,則將該器件內(nèi)的報警標(biāo)志位置位,并對主機(jī)發(fā)出的報警搜索命令作出響應(yīng)。因此,可用多只DS18B20同時測量溫度并進(jìn)行報警搜索。在64位ROM的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(CRC)。主機(jī)ROM的前56位來計算CRC值,并和存入DS18B20的CRC值作比較,以判斷主機(jī)收到的RO

28、M數(shù)據(jù)是否正確。DS18B20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當(dāng)計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進(jìn)行計數(shù)進(jìn)而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將55所對應(yīng)的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預(yù)置在55所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時,溫度

29、寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。溫度/二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H0000 0001 1001 00000191H0000 0000 1010 000100A2H0000 0000 0000 00100008H00000

30、0000 0000 10000000H1111 1111 1111 0000FFF8H1111 1111 0101 1110FF5EH1111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H表3.2.7一部分溫度對應(yīng)值表3.2.4 DS18B20的工作協(xié)議由于DS18B20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)發(fā)ROM功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。1、初始化 單總線上的所有處理均從初始化序列開始。初始化序列包括總線主機(jī)發(fā)出一復(fù)位脈

31、沖,接著由從屬器件送出存在脈沖。存在脈沖讓總線控制器知道DS1820 在總線上且已準(zhǔn)備好操作。初始化過程復(fù)位和存在的脈沖如圖3.2.8所示:圖3.2.8 復(fù)位脈沖2、ROM 操作命令 一旦總線主機(jī)檢測到從屬器件的存在,它便可以發(fā)出器件ROM操作命令之一。所有ROM操作命令均為8位長。這些命令列表如下: Read ROM(讀 ROM)33h 此命令允許總線主機(jī)讀DS18B20的8位產(chǎn)品系列編碼,唯一的48位序列號,以及8位的CRC。此命令只能在總線上僅有一個DS18B20的情況下可以使用。如果總線上存在多于一個的從屬器件,那么當(dāng)所有從企圖同時發(fā)送時將發(fā)生數(shù)據(jù)沖突的現(xiàn)象(漏極開路會產(chǎn)生線與的結(jié)果)

32、。Match ROM( 符合 ROM)55h 此命令后繼以64位的ROM數(shù)據(jù)序列,允許總線主機(jī)對多點總線上特定的DS18B20尋址。只有與64位ROM序列嚴(yán)格相符的DS18B20才能對后繼的存貯器操作命令作出響應(yīng)。所有與64位ROM序列不符的從片將等待復(fù)位脈沖。此命令在總線上有單個或多個器件的情況下均可使用。Skip ROM( 跳過 ROM )CCh在單點總線系統(tǒng)中,此命令通過允許總線主機(jī)不提供64位ROM編碼而訪問存儲器操作來節(jié)省時間。如果在總線上存在多于一個的從屬器件而且在Skip ROM命令之后發(fā)出讀命令,那么由于多個從片同時發(fā)送數(shù)據(jù),會在總線上發(fā)生數(shù)據(jù)沖突(漏極開路下拉會產(chǎn)生線與的效果

33、)。Search ROM(搜索 ROM)F0h 當(dāng)系統(tǒng)開始工作時,總線主機(jī)可能不知道單線總線上的器件個數(shù)或者不知道其64位ROM編碼。搜索ROM命令允許總線控制器用排除法識別總線上的所有從機(jī)的64位編碼。Alarm Search(告警搜索)ECh 此命令的流程與搜索ROM命令相同。但是,僅在最近一次溫度測量出現(xiàn)告警的情況下,DS18B20才對此命令作出響應(yīng)。告警的條件定義為溫度高于TH 或低于TL。只要DS18B20一上電,告警條件就保持在設(shè)置狀態(tài),直到另一次溫度測量顯示出非告警值或者改變TH或 TL的設(shè)置,使得測量值再一次位于允許的范圍之內(nèi)。貯存在EEPROM內(nèi)的觸發(fā)器值用于告警。 3、存儲

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

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

36、新調(diào)整 E2)B8h 這條命令把貯存在E2中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯ζ?。這種重新調(diào)出的操作在對DS18B20上電時也自動發(fā)生,因此只要器件一上電,暫存存儲器內(nèi)就有了有效的數(shù)據(jù)。在這條命令發(fā)出之后,對于所發(fā)出的第一個讀數(shù)據(jù)時間片,器件會輸出溫度轉(zhuǎn)換忙的標(biāo)識:“0”=忙,“1”=準(zhǔn)備就緒。 Read Power Supply(讀電源)B4h 對于在此命令發(fā)送至DS18B20之后所發(fā)出的第一讀數(shù)據(jù)的時間片,器件都會給出其電源方式的信號:“0”=寄生電源供電,“1”=外部電源供電。DS18B20讀/寫時序圖如圖3.2.9所示:4、處理數(shù)據(jù) DS18B20的高速暫存存儲器由9個字節(jié)組成,其分配如圖

37、3.8所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲器的第0和第1個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后。 DS18B20溫度采集轉(zhuǎn)化后得到的12位數(shù)據(jù), 存儲在DS18B20的兩個8比特的 RAM 中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于或等于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。 溫度轉(zhuǎn)換計算方法舉例: 例如當(dāng)DS18B20采集到+125的實際溫度后,輸出為07D0H,則: 實際溫度=07D0H*0.0625

38、=2000*0.0625=1250。例如當(dāng)DS18B20采集到-55的實際溫度后,輸出為FC90H,則應(yīng)先將11位數(shù)據(jù)位取反加1得370H(符號位不變,也不作為計算),則實際溫度=370H*0.0625=880*0.0625=550。3.2.5 顯示電路設(shè)計在數(shù)字系統(tǒng)中,經(jīng)常需要將數(shù)字、文字和符號的二進(jìn)制碼翻譯成人們習(xí)慣的形式直觀地顯示出來,本實驗是將二進(jìn)制編碼用十進(jìn)制數(shù)顯示出來??梢杂靡壕э@示屏或數(shù)碼管來顯示,但是考慮到成本問題本實驗的器件選用常用的共陰極半導(dǎo)體數(shù)碼管。LED數(shù)碼管是目前最常用的數(shù)字顯示器,本實驗采用4位七段共陰極數(shù)碼管,它的內(nèi)部電路及圖形符號如圖3.2.4所示。當(dāng)有高電平驅(qū)

39、動時,相應(yīng)的筆段會發(fā)光。一個LED數(shù)碼管可用來顯示一位0-9十進(jìn)制數(shù)和一個小數(shù)點。LED數(shù)碼管要顯示BCD碼表示的十進(jìn)制數(shù)字需要有一個專門的譯碼器,該譯碼器不但要完成譯碼功能,還要有相當(dāng)?shù)尿?qū)動能力。單片機(jī)通過P0口向鎖存器74HC573發(fā)出數(shù)據(jù)來控制數(shù)碼管段選,并通過P2口向譯碼器74HC138發(fā)出信號來控制數(shù)碼管位選。圖3.2.5為顯示電路。圖3.2.4 LED數(shù)碼管圖3.2.5 顯示電路共陰數(shù)碼管使用條件有以下三點:1數(shù)碼管每段以及小數(shù)點上都加上限流電阻。2使用電壓段根據(jù)發(fā)光顏色決定;小數(shù)點則根據(jù)發(fā)光顏色決定。3使用電流,在靜態(tài)時總電流為80mA(每段10mA);動態(tài)時平均電流為4-5mA

40、峰值電流100mA。上面是七段數(shù)碼管引腳圖,其中共陽極數(shù)碼管引腳圖和共陰極的是一樣的。共陽數(shù)碼管使用注意事項說明有以下三點:1、數(shù)碼管表面不要用手觸摸,不要用手去弄引角。2、焊接溫度:260度;焊接時間:5S。3、表面有保護(hù)膜的產(chǎn)品,可以在使用前撕下來。3.3 DS18B20溫度傳感器與單片機(jī)的接口電路DS18B20可以采用兩種方式供電,一種是采用外部電源供電方式,單點溫度監(jiān)控如圖3.3.1,DS18B20的1腳接地,2腳作為信號線,3腳接電源,外部電源供電方式是DS18B20最佳的工作方式,工作穩(wěn)定可靠,坑干擾能力強(qiáng),而且電路也比較簡單,可以開發(fā)出穩(wěn)定可靠的多點溫度監(jiān)控系統(tǒng),如圖3.3.2。

41、另一種是寄生電源供電方式,如圖3.3.3 所示單片機(jī)端口接單線總線,為保證在有效的DS18B20時鐘周期內(nèi)提供足夠的電流,可用一個MOSFET管來完成對總線的上拉。當(dāng)DS18B20處于寫存儲器操作和溫度A/D轉(zhuǎn)換操作時,總線上必須有強(qiáng)的上拉,上拉開啟時間最大為10us。采用寄生電源供電方式時VDD端接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。圖3.3.1 DS18B20單點測溫度電路原理圖圖3.3.2 DS18B20多點測溫度電路原理圖圖3.3.3 寄生電源強(qiáng)上拉供電方式電路圖本實驗設(shè)計是基于單片機(jī)多點溫度采集設(shè)計,即單線掛接2個DS18B20的兩路溫度數(shù)據(jù)采集,并且通過兩個4位1體

42、的數(shù)碼管進(jìn)行溫度顯示,同時要顯示當(dāng)前通道號。所以我們選著如圖3.3.2多點溫測電路原理圖。3.4 系統(tǒng)整體硬件電路系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路復(fù)位電路,晶振電路,驅(qū)動電路,主板電路等,如附錄二圖2所示:4 系統(tǒng)軟件設(shè)計4.1 主程序主程序的主要功能是負(fù)責(zé)溫度的實時顯示、讀出并處理DS18B20的測量的當(dāng)前溫度值。主控程序首先進(jìn)行系統(tǒng)初始化,然后讀入DS18B20的測量的當(dāng)前溫度數(shù)據(jù),經(jīng)過溫度數(shù)據(jù)轉(zhuǎn)換后輸出相應(yīng)的溫度值,并把第一路顯示出來,接著讀入第二個DS18B20測量出來的溫度數(shù)據(jù),經(jīng)過轉(zhuǎn)換后并顯示出來。如下圖4.2所示:初始化開始調(diào)用讀溫度子程序 1調(diào)用讀溫度子程

43、序 2顯示程序圖4.1 主程序流程圖4.2 讀出溫度子程序讀出溫度子程序的主要功能是首先發(fā)DS18B20復(fù)位命令,發(fā)跳過ROM命令,訪問單總線上與該編碼相對應(yīng)的DS18B20,為下一步對該DS18B20的讀/寫做準(zhǔn)備,發(fā)讀取溫度命令,讀出RAM中的9字節(jié),在讀出時需進(jìn)行CRC校驗,校驗有錯時不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖4.3所示:Y發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)讀取溫度命令讀取操作,CRC校驗9字節(jié)完?CRC校驗正?確?移入溫度暫存器結(jié)束NNY圖4.3 讀出溫度流程圖4.3 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為75

44、0ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如下圖4.4所示:發(fā)DS18B20復(fù)位命令發(fā)跳過ROM命令發(fā)溫度轉(zhuǎn)換開始命令 結(jié)束圖4.4 溫度轉(zhuǎn)換命令流程圖4.4 顯示數(shù)據(jù)子程序顯示數(shù)據(jù)子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)溫度數(shù)據(jù)移入顯示程序后,數(shù)碼管開始顯示第一路標(biāo)號和溫度值,接著掃描第二路的溫度數(shù)據(jù)并顯示其的標(biāo)號和溫度值。程序流程圖如圖4.5:溫度數(shù)據(jù)移入顯示顯示第幾路溫度顯示十位的溫度值顯示個位的溫度值開始結(jié)束圖4.5 顯示數(shù)據(jù)程序流程圖5 調(diào)試過程在調(diào)試過程中,首先,用萬用表來檢測實驗板上的各個器件的引腳是否接通,是否有虛焊,這個步

45、驟是非常重要的,這關(guān)聯(lián)到整個調(diào)試過程是否成功。因為本實驗設(shè)計的板可以下載程序到單片機(jī)上并且用到四位一體的數(shù)碼管來顯示,所以我們設(shè)計了一個簡單的LED掃描程序來檢測數(shù)碼管工作是否正常和實驗板的下載功能是否正常。在用DS18B20傳感器前,還需要通過串口讀取出它的序列號,然后把它的序列號讀取出后編寫到主程序上才能用它來工作。在DS18B20測溫過程中,溫度值是分別在兩個四位一體的數(shù)碼管上顯示,由于測量溫度的室溫環(huán)境是一樣的,所以剛開始時兩個數(shù)碼管上顯示的溫度是一樣的。為了可以使兩個DS18B20所測量的溫度值不一樣,可以用打火機(jī)在某一個DS18B20的附近灼燒使其測量的溫度值有所變化,這樣可以證實

46、DS18B20是否工作正常也可以證實其是否符合我們的實驗設(shè)計的要求。6 總結(jié)與體會經(jīng)過半個多月的學(xué)習(xí)和努力,基于單片機(jī)的多點溫度采集設(shè)計也終于完成了,也的我們?yōu)橹吲d一下。通過這次對數(shù)字溫度計設(shè)計與制作,讓我了解設(shè)計硬件電路,調(diào)試程序,各種芯片的用法,如何簡化電路等等。也讓我了解了關(guān)于數(shù)字溫度計的原理與設(shè)計理念,要設(shè)計一個電路總要先用仿真,訪真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線時有著各種各樣的條件制約。所以,在設(shè)計時應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計方法。在這一次的學(xué)習(xí)中,讓我真正意識到自己的知識面還不夠廣和掌握知識的能力還要不斷的提高,在這次的

47、實驗設(shè)計中我們遇到了很多我們都不懂的問題,而且這些問題對于我們來說在學(xué)習(xí)單片機(jī)過程中所必須要會懂的問題。在以后的學(xué)習(xí)中,我們要經(jīng)常多寫、多讀程序,這樣才能提高自己的編程水平。要理論聯(lián)系實際,把所學(xué)的東西用到實際中去,然而單片機(jī)又是一門注重實踐一門學(xué)科,這也是我這次設(shè)計中的一點小小的收獲吧!致 謝感謝學(xué)長們和同學(xué)們對我這次實驗設(shè)計制作的幫助和指導(dǎo)。讓我學(xué)到了很多知識,掌握了許多專業(yè)知識,以及讓我學(xué)到了要把一件事做好做成則必須要付出很大的努力和要有一顆持之以恒的心。本次畢業(yè)論文是在我的同學(xué)的悉心指導(dǎo)和幫助下完成的,特別是在甘學(xué)長和同學(xué)們幫助解決本設(shè)計中遇到的許多問題。從他那里我不僅學(xué)到了電路設(shè)計的

48、相關(guān)知識,更重要的是掌握了更多的查詢、搜集信息的能力以及對事嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度。在他的指教和鼓勵中我的硬件設(shè)計以及動手能力有了進(jìn)一步的提高,同時他更教會我工作要一絲不茍,要腳踏實地,要有自己的工作日程的道理,在今后的學(xué)習(xí)工作中我將銘記甘學(xué)長的諄諄教誨,更將以他為榜樣,不斷激勵自己進(jìn)步。還有要感謝劉老師的幫助和指導(dǎo),他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵著我,在此,向劉老師表示誠摯的謝意!從課題的選擇到論文相關(guān)工作的最終完成,劉老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持,在此十分感謝劉老師。同時還有感謝所有的同學(xué),正是有了你們的支持和鼓勵,此次畢業(yè)設(shè)計才會順利完成。參考文

49、獻(xiàn)3 楊欣. 電路設(shè)計與仿真附錄一/*功能:實現(xiàn)基于AT89C51單片機(jī)的多點溫度采集*/#include <reg51.h>#include <intrins.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intsbit DQ=P17;uchar code table10 = 0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6; /數(shù)碼管 共陰uchar ds18b20_num18=0x94,0x00,0x00,0x03,0x4b,0x9e,0xfc,0x28; /選取第一路DS18B20的序列號uchar ds18b20_num28=0x8f,0x00,0x00,0x03,0x06,0x94,0x48,0x28; /選取第二路DS18B20的序列號uchar buffer=0,0,0;uchar temp_value1=0;uchar temp_value=0;uchar temp=0,0,0;/*功能:延時 */void delay(unsigned int time)unsigned int

溫馨提示

  • 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

提交評論