基于單片機的溫度控制系統方案_第1頁
基于單片機的溫度控制系統方案_第2頁
基于單片機的溫度控制系統方案_第3頁
基于單片機的溫度控制系統方案_第4頁
基于單片機的溫度控制系統方案_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 . PAGE27 / NUMPAGES32 . 機電職業技術學院畢 業 論 文基于單片機的溫度控制系統系(部) 電氣工程系 專業 機電一體化 班級 機電3112班 姓名 珍珍 學號 1302113124 指導教師 曾勁松 20132014學年 第 1 學期指導教師評語等級簽名日期摘要單片機在電子產品中的應用已經越來越廣泛,并且在很多電子產品中也將其用到溫度檢測和溫度控制。為此在本文中設計了基于STC89C51的溫度測量系統。這是一種低成本的利用單片機多余I/O口實現的溫度檢測電路, 該電路非常簡單, 易于實現, 并且適用于幾乎所有類型的單片機。國外溫度控制系統發展迅速,并在智能化、自適應、參

2、數自整定等方面取得成果。目前社會上溫度控制系統大多采用智能調節器,國產調節器分辨率和精度較低,溫度控制效果不是很理想,但價格便宜,國外調節器分辨率和精度較高,價格較高。日本、美國、德國、瑞典等技術領先,都生產出了一批商品化的、性能優異的溫度控制器與儀器儀表,并在各行業廣泛應用本設計研究了一種高精度溫度控制系統,采用單總線數字式溫度傳感器DS18B20和單片機STC89C51組成溫度測量儀。首先分析了DS18B20的結構和工作原理,并以此建立,以STC89C51單片機為處理器的溫度測量和控制裝置的硬件組成和軟件設計。測量溫度通過LED數碼管進行顯示。溫度控制系統可以通過鍵盤修改期望的控制溫度值。

3、基于DS18B20的溫度測量控制系統,具有測量準確、測量圍寬、體積小、控制方便等優點1。該控制系統適于人們日常生活、工業生產和科學領域對溫度的控制要求。關鍵詞:溫度控制、溫度測量、DS18B20傳感器、STC89C51單片機目錄 TOC o 1-3 h z u HYPERLINK l _Toc23081 第1章 概述 PAGEREF _Toc23081 1 HYPERLINK l _Toc16620 1.1論文研究的目的 PAGEREF _Toc16620 1 HYPERLINK l _Toc27537 1.2論文研究的容 PAGEREF _Toc27537 2 HYPERLINK l _To

4、c17157 1.3論文研究的意義 PAGEREF _Toc17157 2 HYPERLINK l _Toc6644 第2章 溫度控制系統方案的論證與選擇 PAGEREF _Toc6644 3 HYPERLINK l _Toc4857 2.1 顯示的選擇 PAGEREF _Toc4857 3 HYPERLINK l _Toc11615 2.2 鍵盤模塊的選擇 PAGEREF _Toc11615 3 HYPERLINK l _Toc4346 2.3 控制模塊的選取 PAGEREF _Toc4346 3 HYPERLINK l _Toc17463 2.4 加熱器的選擇 PAGEREF _Toc17

5、463 4 HYPERLINK l _Toc27906 2.5 溫度傳感模塊的選擇 PAGEREF _Toc27906 4 HYPERLINK l _Toc21772 2.6 MCU模塊的選擇 PAGEREF _Toc21772 4 HYPERLINK l _Toc14303 第3章 系統設計 PAGEREF _Toc14303 5 HYPERLINK l _Toc14342 3.1 報警模塊 PAGEREF _Toc14342 5 HYPERLINK l _Toc4446 3.2 控制模塊 PAGEREF _Toc4446 6 HYPERLINK l _Toc15583 3.3顯示模塊 PA

6、GEREF _Toc15583 6 HYPERLINK l _Toc1260 3.4 按鍵模塊 PAGEREF _Toc1260 7 HYPERLINK l _Toc14726 3.5 溫度傳感器特性 PAGEREF _Toc14726 8 HYPERLINK l _Toc28716 3.6 溫度采樣部分 PAGEREF _Toc28716 10 HYPERLINK l _Toc7887 3.7 模數轉換部分 PAGEREF _Toc7887 11 HYPERLINK l _Toc27474 3.8 系統電路圖 PAGEREF _Toc27474 12 HYPERLINK l _Toc1944

7、4 第4章 程序的設計 PAGEREF _Toc19444 13 HYPERLINK l _Toc10564 4.1程序流程圖 PAGEREF _Toc10564 13 HYPERLINK l _Toc24226 4.2 具體應用程序設計 PAGEREF _Toc24226 13 HYPERLINK l _Toc13773 第5章 元件的介紹 PAGEREF _Toc13773 23 HYPERLINK l _Toc27880 5.1 DS18B20傳感器 PAGEREF _Toc27880 23 HYPERLINK l _Toc27245 5.2 STC89C51單片機 PAGEREF _T

8、oc27245 24 HYPERLINK l _Toc16210 致 PAGEREF _Toc16210 26 HYPERLINK l _Toc30333 參考文獻 PAGEREF _Toc30333 27第1章 概述1.1論文研究的目的近年來,溫度檢測在理論上發展的比較成熟 ,但在實際測量和控制中,如何保證快速實時的對溫度進行采樣,確保數據的正常傳輸,并能對所測溫度場進行較精確的控制,仍然是目前需要解決的問題。溫度測控技術包括溫度測量技術和溫度控制技術兩方面。在溫度的測量技術中,接觸式測溫發展較早,這種測量的方式優點是:簡單、可靠、低廉、測量精度高,一般能夠測得真實溫度;但由于檢測元件熱慣性

9、的影響,響應時間較長,對熱容量小的物體難以實現精確的測量,并且該方法不適宜于對腐蝕性介質測溫,不能用于超高溫測量,難以測量運動物體的溫度。另外的非接觸式的測量方法是通過對輻射能量的檢測來實現溫度測量的方法,其優點是:不破壞被測溫場,可以測量熱容量小的物體,適于測量運動物體的測量,還可以測量區域的溫度分布,響應速度較快。但也存在測量誤差較大,儀表指示值一般僅代表物體表觀溫度,測溫裝置結構復雜,價格昂貴等缺點。因此,在實際的溫度測量中,要根據具體的測量對象選擇合適的測量方法,在滿足測量精度要求的前提下盡量減少投入。溫度控制是工業生產中經常遇到的過程控制,在很多工藝生產中,溫度的控制效果直接影響到產

10、品的質量,因而設計一種比較理想的溫度控制系統是非常有價值的。日常生活中,溫度值也是一個重要的參考量。此外,對溫度信息的采集,檢測,控制,不僅保證了產品質量,還節約了能源,在安全生產方面有積極作用。本控制器可實時測量現場溫度,并根據溫度情況和人為設置情況調節現場溫度,使溫度保持在一個設定的圍2。其中人為設置可通過操作按鍵完成。另外,本系統還具有溫度超越界限時的報警功能。防潮、防霉、防腐、防爆是倉庫日常工作的重要容,是衡量倉庫管理質量的重要指標。它直接影響到儲備物資的使用壽命和工作可靠性。為保證日常工作的順利進行,首要問題是加強倉庫溫度與濕度的監測工作。但傳統的方法是用與濕度表、毛發濕度表、雙金屬

11、式測量計和濕度試紙等測試器材,通過人工進行檢測,對不符合溫度和濕度要求的庫房進行通風、去濕和降溫等工作。這種人工測試方法費時費力、效率低,且測試的溫度與濕度誤差大,隨機性大。因此我們需要一種造價低廉、使用方便且測量準確的溫濕度測量儀。1.2論文研究的容本設計的容是溫度測試控制,控制對象就是溫度。溫度控制在日常生活與工業領域應用相當廣泛,比如浴室、水池、電源等場所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實在很多場所溫度都需要監控以防意外發生。本文將采用了單片機對溫度實現自動控制。主要實現的功能是:對被控對象的溫度進行實時采集,其主要是通過一傳感器(可編程溫度傳感器DS18B20)

12、將溫度轉變模擬電信號,再將所得的模擬量轉變成數字量送入單片機(AT89S52)中,單片機將傳感器所采集到的溫度和事先設定的溫度進行對比,當小于設定值時將發出信號啟動加熱裝置;當大于設定值時將關閉加熱裝置,從而使得被控溫度控制在一定的圍之,達到實時控制的功能。1.3論文研究的意義本設計是一溫度控制器,擬要實現的功能是:對被控對象的溫度進行實時采集,通過溫度傳感器將溫度轉變成模擬電信號,再將所得的模擬量轉變成數字量送入單片機中并從數碼管顯示出來,同時單片機將傳感器所采集到的溫度和事先設定的上下限溫度進行對比,當低于設定值時將發出信號啟動加熱裝置;當高于設定值時將關閉加熱裝置,從而使得被控溫度控制在

13、一定的圍之,達到實時控制的功能。第2章 溫度控制系統方案的論證與選擇本設計的容是設計一溫度控制器。溫度是工業控制對象的主要被控參數之一。本設計將通過單片機實現對溫度自動控制。主要實現的功能是:對被控對象的溫度進行實時采集和顯示,通過按鍵設定合適溫度圍,單片機將傳感器所采集到的溫度和設定的溫度圍進行對比,當小于設定值時將發出信號啟動加熱裝置;當大于設定值時將關閉加熱裝置,從而使得被控溫度控制在一定的圍之,達到實時控制的功能。通過對要實現的功能進行分析,可分為顯示、按鍵、控制模塊、加熱器、溫度傳感模塊、MCU模塊。2.1 顯示的選擇本設計需要將溫度進行采集并實時顯示出來,所以一個合適的顯示器是很必

14、要的。就顯示來說,需要顯示清晰明朗,顯示字體要足夠大,而且成本要低,控制簡單3。考慮以上條件后再結合現有知識,本設計的顯示器最終選擇共陽四位數碼管。顯示圍從0-99.9,既滿足了溫度圍,又有足夠的精度(0.1)。最后一位設置并顯示C,代表溫度單位。2.2 鍵盤模塊的選擇本設計中需要通過按鍵來設定溫度圍,需由三個按鍵構成,一個模式選擇:通過此按鍵可切換溫度顯示和報警溫度的顯示以與對報警極限值進行調整。兩個溫度值上下調節:一個增加,一個減小。、2.3 控制模塊的選取在工業生產中當溫度超出設定圍時系統要與時作出相應的反應以維持溫度在設定圍。經多方對比后本模塊選定由5V繼電器來實現,當溫度超過預設報警

15、溫度時,通過單片機輸出高低電平來控制繼電器的通斷,來實現對加熱器的控制。成本低,控制簡單,易于實現。2.4 加熱器的選擇此模塊是繼電器控制的外部控制器的一個簡單縮影,對不同的被控對象來說,實現此模塊所用的控制器不同。本設計實現對溫度的控制,此模塊可為加熱器和降溫設備。這些不在本設計考慮圍。2.5 溫度傳感模塊的選擇工業中溫度的檢測精確度是衡量溫度控制系統質量好壞的一個非常重要的方面,因此選一個精確的溫度傳感器是非常關鍵的。此模塊可由多種途徑實現:方案一:通過熱敏電阻對溫度的敏感感知來采集溫度信號,此方案需要用A/D轉換,使溫度模擬信號轉換成單片機所需的數字信號;方案二:通過DS18B20傳感器

16、來實現對溫度的采集,采集的信號直接為數字信號;對比此兩種方案,可看出方案二易于實現,電路簡單,并且DS18B20的溫度分辨率高,最小誤差僅為0.1C。因此本設計選用DS18B20來采集溫度4。2.6 MCU模塊的選擇在系統中MCU是核心,考慮到本設計的復雜程度、對MCU的要求與穩定性,本設計采用普通的51 單片機,具體選型時采用可在線編程的STC89C51單片機為系統核心。溫度信號通過熱敏電阻和放大器轉換成電信號,再由ADC0809轉換成為數字信號,測溫電路采用橋式電路,溫度設定采用按鍵移位式設定方法,溫度控制采用光耦和可控硅控制加熱器。軟件算法采用設定值和測量值相比較的算法。在單片機應用的基

17、礎上,實現了一種用帶有EPROM的AT89C51單片機控制傳感器的自動化溫度監控系統。第3章 系統設計3.1報警模塊蜂鳴器報警電路報警采用蜂鳴器發聲,由于單片機引腳選通PNP型三極管8550來控制蜂鳴器報警,具體電路如圖3.1。圖3.1 報警模塊3.2 控制模塊此模塊采用5V繼電器來實現,同報警電路一樣,也用8550三極管選通,具體電路如圖2.2。圖3.2 控制模塊圖3.3顯示模塊LED顯示器是單片機應用系統中常見的輸出器件,而在單片機的應用上也是被廣泛運用的。如果需要顯示的容只有數碼和某些字母,使用LED數碼管是一種較好的選擇。LED數碼管顯示清晰、成本低廉、配置靈活,與單片機接口簡單易行。

18、此模塊采用三極管驅動四位共陽數碼管來顯示5LED數碼管作為顯示字段的數碼型顯示器件,它是由若干個發光二極管組成的。當發光二極管導通時,相應的一個點或一個筆畫發亮,控制不同組合的二極管導通,就能顯示出各種字符,常用的LED數碼管有7段和“米”字段之分。這種顯示器有共陽極和共陰極兩種。共陰極LED顯示器的發光二極管的陰極連在一起,通常此共陰極接地。當某個發光二極管的陽極為高電平時,發光二極管點亮,相應的段被顯示。同樣,共陽極LED顯示器的發光二極管的陽極接在一起,通常此共陽極接正電壓,當某個發光二極管的陰極接低電平時,發光二極管被點亮,相應的段被顯示。本次設計所用的LED數碼管顯示器為共陽極。LE

19、D數碼管的使用與發光二極管一樣,根據材料不同正向壓降一般為1.52V,額定電流為10MA,最大電流為40MA。靜態顯示時取10MA為宜,動態掃描顯示可加大脈沖電流,但一般不超過40MA。具體電路圖如下:圖3.3 顯示模塊3.4 按鍵模塊本設計共三個按鍵,低電平有效。電路如上圖。圖3.4 按鍵模塊圖3.5 溫度傳感器特性本設計中選擇DS18B20作為溫度傳感器。DS1820S(16 腳SSOP):所有上表中未提與的引腳都無連接。表3.1 引腳說明16腳SSOPPR35符號說明91GND接地82DQ數據輸入/輸出腳;對于單線操作:漏極開路73VDD可選的VDD引腳DS18B20的特性: 獨特的單線

20、接口僅需一個端口引腳進行通訊; 簡單的多點分布應用; 無需外部器件; 可通過數據線供電; 零待機功耗; 測溫圍-55+125,以0.5遞增。華氏器件-672570F,以0.90F 遞增; 溫度以9 位數字量讀出; 溫度數字量轉換時間200ms(典型值); 用戶可定義的非易失性溫度報警設置。 報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件 應用包括溫度控制、工業系統、消費品、溫度計或任何熱感測系統6DS1820 數字溫度計以9 位數字量的形式反映器件的溫度值。DS1820 通過一個單線接口發送或接收信息,因此在中央微處理器和DS1820 之間僅需一條連接線(加上地線)。用于讀寫和溫

21、度轉換的電源可以從數據線本身獲得,無需外部電源。因為每個 DS1820 都有一個獨特的片序列號,所以多只DS1820 可以同時連在一根單線總線上,這樣就可以把溫度傳感器放在許多不同的地方。這一特性在HVAC 環境控制、探測建筑物、儀器或機器的溫度以與過程監測和控制等方面非常有用。DS1820 數字溫度計以9 位數字量的形式反映器件的溫度值7。DS1820 通過一個單線接口發送或接收信息,因此在中央微處理器和DS1820 之間僅需一條連接線(加上地線)。用于讀寫和溫度轉換的電源可以從數據線本身獲得,無需外部電源。因為每個DS1820 都有一個獨特的片序列號,所以多只DS1820 可以同時連在一根

22、單線總線上,這樣就可以把溫度傳感器放在許多不同的地方。這一特性在HVAC 環境控制、探測建筑物、儀器或機器的溫度以與過程監測和控制等方面非常有用。DS1820 有三個主要數字部件8:1)64 位激光ROM,2)溫度傳感器,3)非易失性溫度報警觸發器TH 和TL。器件用如下方式從單線通訊線上汲取能量:在信號線處于高電平期間把能量儲存在部電容里,在信號線處于低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。DS1820 也可用外部5V 電源供電。DS1820 依靠一個單線端口通訊。在單線端口條件下,必須先建立ROM 操作協議,才能進行存儲器和控制操作。因此,控制器必須首先提供

23、下面5 個ROM 操作命令之一:1)讀ROM,2)匹配ROM,3)搜索ROM,4)跳過ROM,5)報警搜索。這些命令對每個器件的激光ROM 部分進行操作,在單線總線上掛有多個器件時,可以區分出單個器件,同時可以向總線控制器指明有多少器件或是什么型號的器件。成功執行完一條ROM操作序列后,即可進行存儲器和控制操作,控制器可以提供6 條存儲器和控制操作指令中的任一條。一條控制操作命令指示DS1820 完成一次溫度測量。測量結果放在DS1820 的暫存器里,用一條讀暫存器容的存儲器操作命令可以把暫存器中數據讀出。溫度報警觸發器TH 和TL 各由一個EEPROM 字節構成。如果沒有對DS1820 使用

24、報警搜索命令,這些寄存器可以做為一般用途的用戶存儲器使用。可以用一條存儲器操作命令對TH 和TL 進行寫入,對這些寄存器的讀出需要通過暫存器。所有數據都是以最低有效位在前的方式進行讀寫。DS18B20供電方式圖3.5 供電方式圖 DS1820 是這樣測溫的:用一個高溫度系數的振蕩器確定一個門周期,部計數器在這個門周期對一個低溫度系數的振蕩器的脈沖進行計數來得到溫度值。計數器被預置到對應于-55的一個值。如果計數器在門周期結束前到達0,則溫度寄存器(同樣被預置到-55)的值增加,表明所測溫度大于-55。同時,計數器被復位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償感溫振蕩器的

25、拋物線特性。然后計數器又開始計數直到0,如果門周期仍未結束,將重復這一過程。斜坡式累加器用來補償感溫振蕩器的非線性,以期在測溫時獲得比較高的分辨力9。這是通過改變計數器對溫度每增加一度所需計數的的值來實現的。因此,要想獲得所需的分辨力,必須同時知道在給定溫度下計數器的值和每一度的計數值。DS1820 部對此計算的結果可提供0.5的分辨力。溫度以16bit 帶符號位擴展的二進制補碼形式讀出,表1 給出了溫度值和輸出數據的關系。數據通過單線接口以串行方式傳輸。DS1820 測溫圍-55+125,以0.5遞增。如用于華氏溫度,必須要用一個轉換因子查找表。3.6 溫度采樣部分溫度采樣單元,用于采集被控

26、對象的溫度參數,它由溫度電壓轉換、小信號放大與A/D轉換三部分組成。其中,將溫度轉化為電量的溫度電壓轉換由溫度傳感器-熱敏電阻實現,小信號放大由橋式放大電路實現,A/D轉換選擇模數轉換器ADC0809,將采集到的溫度模擬信號轉換為AT89C51能夠處理的二進制數字信號。圖3-2 溫度采樣單元溫度傳感器:廣義來講,一切隨溫度變化而物體性質亦發生變化的物質均可作為溫度傳感器。例如,我們平常使用的各種材料、元件,其性質或多或少地都會隨其所處的環境溫度變化而變化,因而它們幾乎都能作為溫度傳感器使用。但是,一般真正能作為實際中可使用的溫度傳感器的物體一般需要具備下述條件:1物體的特性隨溫度的變化有較大的

27、變化,且該變化量易于測量。2對溫度的變化有較好的一一對應關系,即對除溫度外其他物理量的變化不敏感。3性能誤差與老化小、重復性好,尺寸小。4有較強的耐機械、化學與熱作用等的特點。5與被檢測的溫度圍和精度相適應。6價格適宜,適合于批量生產。符合上述條件的常用溫度傳感器有熱電偶、熱電阻、光輻射溫度計、玻璃溫度計、半導體集成溫度傳感器等。3.7 模數轉換部分模數轉換是將模擬輸入信號轉換為N位二進制數字輸出信號的技術。采用數字信號處理能夠方便地實現各種先進的自適應算法,完成模擬電路無法實現的功能,因此,越來越多的模擬信號處理正在被數字技術所取代。與之相應的是,作為模擬系統和數字系統之間橋梁的模數轉換的應

28、用日趨廣泛。為了滿足市場的需求,各芯片制造公司不斷推出性能更加先進的新產品、新技術,令人目不暇接。一、 模數轉換技術本次設計還涉與到數模轉換技術,而模數轉換技術包括采樣、保持、量化和編碼四個過程。1采樣就是將一個連續變化的模擬信號x(t)轉換成時間上離散的采樣信號x(n)。根據奈奎斯特采樣定理,對于采樣信號x(t),如果采樣頻率fs大于或等于2fmax(fmax為x(t)最高頻率成分),則可以無失真地重建恢復原始信號x(t)。實際上,由于模數轉換器器件的非線性失真、量化噪聲與接收機噪聲等因素的影響采樣速率一般取fs=2.5fmax。通常采樣脈沖的寬度tw是很短的,故采樣輸出是斷續的窄脈沖。2要

29、把一個采樣輸出信號數字化,需要將采樣輸出所得的瞬時模擬信號保持一段時間,這就是保持過程。3量化是將連續幅度的抽樣信號轉換成離散時間、離散幅度的數字信號,量化的主要問題就是量化誤差。假設噪聲信號在量化電平中是均勻分布的,則量化噪聲均方值與量化間隔和模數轉換器的輸入阻抗值有關。4編碼是將量化后的信號編碼成二進制代碼輸出。這些過程有些是合并進行的,例如,采樣和保持就利用一個電路連續完成,量化和編碼也是在轉換過程中同時實現的,且所用時間又是保持時間的一部分。二、 積分型模數轉換器積分型模數轉換器稱雙斜率或多斜率數據轉換器,是應用最為廣泛的轉換器類型。雙斜率轉換器包括兩個主要部分:一部分電路采樣并量化輸

30、人電壓,產生一個時域間隔或脈沖序列,再由一個計數器將其轉換為數字量輸出。雙斜率轉換器由1個帶有輸人切換開關的模擬積分器、1個比較器和1個計數單元構成。積分器對輸入電壓在固定的時間間隔積分,該時間間隔通常對應于部計數單元的最大計數。時間到達后將計數器復位并將積分器輸入連接到反極性(負)參考電壓。在這個反極性信號作用下,積分器被“反向積分”直到輸出回到零,并使計數器終止,積分器復位。 積分型模數轉換器的采樣速度和帶寬都非常低,但它們的精度可以做得很高,并且抑制高頻噪聲和固定的低頻干擾(如50 Hz或60 Hz)的能力,使其對于嘈雜的工業環境以與不要求高轉換速率的應用非常有效。3.8 系統電路圖圖3

31、.6 系統電路圖系統的總體連接電路圖如圖3.6。圖中,四位數碼管采用動態掃描顯示。第4章 程序的設計4.1程序流程圖圖4.1 程序流程圖程序簡要說明:DS18B20溫度計,溫度測量圍099.9攝氏度, 可設置上限報警溫度、下限報警溫度,即高于上限值或者低于下限值時蜂鳴器報警,默認上限報警溫度為32、默認下限報警溫度為10,報警值可設置圍:最低上限報警值等于當前下限報警值,最高下限報警值等于當前上限報警值,將下限報警值調為0時為關閉下限報警功能10。4.2 具體應用程序設計#include #include DS18B20.h #define uint unsigned int#define u

32、char unsigned char /宏定義#define SET P3_1 /定義調整鍵#define DEC P3_2 /定義減少鍵#define ADD P3_3 /定義增加鍵#define BEEP P3_7 /定義蜂鳴器#define JDQ P3_5 bit shanshuo_st; /閃爍間隔標志bit beep_st; /蜂鳴器間隔標志sbit DIAN = P27; /小數點uchar x=0; /計數器signed char m; /溫度值全局變量uchar n; /溫度值全局變量uchar set_st=0; /狀態標志signed char shangxian=32;

33、 /上限報警溫度,默認值為38signed char xiaxian=10; /下限報警溫度,默認值為38uchar code LEDData=0 xC0,0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82,0 xF8,0 x80,0 x90,0 xff;/*延時子程序*/void Delay(uint num) while( -num );void shortdelay(void) /誤差 0us unsigned char a,b,c; for(c=165;c0;c-) for(b=100;b0;b-) for(a=150;a0;a-); _nop_; /if Keil

34、,require use intrins.h _nop_; /if Keil,require use intrins.h/*初始化定時器0*/void InitTimer(void) TMOD=0 x1; TH0=0 x3c; TL0=0 xb0; /50ms(晶振12M)/*定時器0中斷服務程序*/void timer0(void) interrupt 1 TH0=0 x3c; TL0=0 xb0; x+;/*外部中斷0服務程序*/void int0(void) interrupt 0 EX0=0; /關外部中斷0if(DEC=0&set_st=1) shangxian-; if(shang

35、xianxiaxian)shangxian=xiaxian; else if(DEC=0&set_st=2) xiaxian-; if(xiaxian99)shangxian=99; else if(ADD=0&set_st=2) xiaxian+; if(xiaxianshangxian)xiaxian=shangxian; /*讀取溫度*/void check_wendu(void) uint a,b,c; c=ReadTemperature()-5; /獲取溫度值并減去DS18B20的溫漂誤差 a=c/100; /計算得到十位數字 b=c/10-a*10; /計算得到個位數字 m=c/1

36、0; /計算得到整數位 n=c-a*100-b*10; /計算得到小數位 if(m99)m=99;n=9; /設置溫度顯示上限 /*顯示開機初始化等待畫面*/Disp_init() P2 = 0 xbf; /顯示- P1 = 0 xf7; Delay(200);P1 = 0 xfb; Delay(200); P1 = 0 xfd; Delay(200); P1 = 0 xfe; Delay(200); P1 = 0 xff; /關閉顯示/*顯示溫度子程序*/Disp_Temperature() /顯示溫度 P2 =0 xc6; /顯示C P1 = 0 xf7; Delay(300); P2 =

37、LEDDatan; /顯示個位 P1 = 0 xfb; Delay(300); P2 =LEDDatam%10; /顯示十位 DIAN = 0; /顯示小數點 P1 = 0 xfd; Delay(300); P2 =LEDDatam/10; /顯示百位 P1 = 0 xfe; Delay(300); P1 = 0 xff; /關閉顯示/*顯示報警溫度子程序*/Disp_alarm(uchar baojing) P2 =0 xc6; /顯示C P1 = 0 xf7; Delay(200); P2 =LEDDatabaojing%10; /顯示十位 P1 = 0 xfb; Delay(200);

38、P2 =LEDDatabaojing/10; /顯示百位 P1 = 0 xfd; Delay(200);if(set_st=1)P2 =0 x89; else if(set_st=2)P2 =0 xc7; /上限H、下限L標示 P1 = 0 xfe; Delay(200); P1 = 0 xff; /關閉顯示/*報警子程序*/void Alarm() if(x=10)beep_st=beep_st;x=0;if(m=shangxian&beep_st=1)|(m=shangxian)|(mxiaxian) shortdelay();JDQ=0; else JDQ=1;/*主函數*11/void

39、 main(void) uint z; InitTimer(); /初始化定時器 EA=1; /全局中斷開關 TR0=1; ET0=1; /開啟定時器0 IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z2)set_st=0; if(set_st=0) EX0=0; /關閉外部中斷0 EX1=0; /關閉外部中斷1 check_wendu(); Disp_Temperature();Alarm(); /報警檢測 else if(set_st=1) BEEP=1; /關閉蜂鳴器 EX0=1; /開啟外部中斷0 EX1=1; /開啟外部中斷1

40、 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(shangxian); else if(set_st=2) BEEP=1; /關閉蜂鳴器 EX0=1; /開啟外部中斷0 EX1=1; /開啟外部中斷1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(xiaxian); /*END*/*DS18B20頭文件*/DS18B20.h:#include #define DQ P3_6 /定義DS18B20總線I/O/*延時子程序*/void

41、Delay_DS18B20(int num) while(num-) ;/*初始化DS18B20*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ復位 Delay_DS18B20(8); /稍做延時 DQ = 0; /單片機將DQ拉低 Delay_DS18B20(80); /精確延時,大于480us DQ = 1; /拉高總線 Delay_DS18B20(14); x = DQ; /稍做延時后,如果x=0則初始化成功,x=1則初始化失敗 Delay_DS18B20(20);/*讀一個字節*/unsigned char ReadOne

42、Char(void) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0 x80; Delay_DS18B20(4); return(dat);/*寫一個字節*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0 x01; Delay_DS18B20(5); DQ = 1; dat=1; /*讀

43、取溫度*/unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0 xCC); /跳過讀序號列號的操作 WriteOneChar(0 x44); /啟動溫度轉換 Init_DS18B20(); WriteOneChar(0 xCC); /跳過讀序號列號的操作 WriteOneChar(0 xBE); /讀取溫度寄存器a=ReadOneChar(); /讀低8位 b=ReadOneChar

44、(); /讀高8位 t=b; t=8; t=t|a; tt=t*0.0625; t= tt*10+0.5; /放大10倍輸出并四舍五入 return(t);第5章 元件的介紹5.1 DS18B20傳感器DS18B20數字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。1: 技術性能描述(1)、 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。(2)、測溫圍 55+125,固有測溫誤差(注意,不是分辨率,這里之前是錯誤的)0.5。(3)、支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,最多只能并聯8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論