測(cè)溫系統(tǒng)設(shè)計(jì)畢業(yè)論文.doc
電子與信息工程學(xué)院本 科 畢 業(yè) 論 文論文題目 基于單片機(jī)測(cè)溫系統(tǒng)的設(shè)計(jì) 學(xué)生姓名 魏 凡 學(xué) 號(hào) 083521018 專 業(yè) 電氣工程及其自動(dòng)化 班 級(jí) 電氣一班 指導(dǎo)教師 劉宏章 2012年5月摘 要摘 要溫度是一個(gè)系統(tǒng)常需要測(cè)量,控制和保持的量。隨著科學(xué)技術(shù)的發(fā)展,古老的測(cè)量?jī)x器和控制儀器顯然已經(jīng)滿足不了科學(xué)的精度和時(shí)間的要求,而單片機(jī)的應(yīng)用已經(jīng)滲透到了各個(gè)行業(yè),但溫度只是一個(gè)模擬量,不能直接與單片機(jī)交換信息。利用MCS-51單片機(jī)上多余的I/O口P1實(shí)現(xiàn)對(duì)溫度的測(cè)量和采集,和對(duì)溫度的顯示報(bào)警等功能。關(guān) 鍵 詞:溫度 測(cè)量 控制 單片機(jī) 29ABSTRACTABSTRACT The temperature need to be surveyed ,controled and maintained by a system frequently .With the development of science and technology, ancient measuring instruments and control instruments have clearly not for scientific accuracy and time required, and single-chip microcomputer application hasinfiltrated all sectors, but temperature is a analog, not directly exchange information with single-chip. MCS-51 excess I/O port P1 on the single-chip microcomputer realization for temperature measurement and collection,temperature display and alarm function. 目 錄緒論目 錄1 緒論12 方案設(shè)計(jì)52.1 方案的提出52.2 方案的設(shè)計(jì)52,3 方案的論證 63 系統(tǒng)設(shè)計(jì)63.1單片機(jī)的選擇63.2 溫度傳感器的工作原理與單片機(jī)的連接63,3 單片機(jī)與報(bào)警電路3,4 電源電路3.5 顯示電路 3.5.1 1620型液晶接口信號(hào)說明 3,5,2 液晶主要技術(shù)參數(shù) 3.5.3 基本操作時(shí)序4 軟件系統(tǒng)的設(shè)計(jì)74.1 軟件設(shè)計(jì)74.2 程序75 元器件的調(diào)試85.1 測(cè)試環(huán)境及工具85.2 溫度檢測(cè)部分測(cè)試85.3 電路主板測(cè)試6 結(jié)論和展望96.1 結(jié)論96.2 展望9致 謝11參考文獻(xiàn)12附 錄15在校期間取得的研究成果16即可):6 結(jié)論和展望1 緒論溫度與人們生活是密切相關(guān)不可分開的,同時(shí)也是生產(chǎn)和科研中需要測(cè)量和控制的物理量。在科技飛速發(fā)展的21世紀(jì),在各個(gè)領(lǐng)域中,尤其是在冶金、化工、機(jī)械和食品生產(chǎn)中都需要對(duì)溫度進(jìn)行嚴(yán)格的控制,尤其是在煉鋼過程中,煉鋼更是一個(gè)十分重要的參數(shù),它直接關(guān)系到鋼鐵練成的成功率及鋼鐵內(nèi)部質(zhì)量的好壞。正是因?yàn)槿绱?,一種好的測(cè)量法和測(cè)溫工具才被迫切的需求。溫度作為一個(gè)重要的參數(shù)之一,隨著工業(yè)的發(fā)展,隨著工業(yè)的不斷發(fā)展,人們對(duì)溫度的測(cè)量的要求越來越高,而且測(cè)量的范圍也越來越廣,對(duì)溫度檢測(cè)技術(shù)和控制技術(shù)的要求也越來越高,因此,溫度的測(cè)量和控制技術(shù)是一個(gè)重要的研究課題。本文主要講述如何利用MCS-51單片機(jī)為控制核心,結(jié)合其他元器件對(duì)溫度進(jìn)行測(cè)量和控制,以及高溫報(bào)警等系統(tǒng)的設(shè)計(jì)。2 方案設(shè)計(jì)2.1方案的提出溫度的檢測(cè)有多種方法,考慮到實(shí)際應(yīng)用的時(shí)候,需要把溫度信號(hào)轉(zhuǎn)變成電信號(hào)。本方案采用AT89C51單片機(jī)和DS18B20傳感器,以及1602液晶顯示模塊。2.2方案的設(shè)計(jì) 該方案使用了AT89C51 單片機(jī)作為控制核心,以智能溫度傳感器DS18B20 為溫度測(cè)量元件,對(duì)各點(diǎn)溫度進(jìn)行檢測(cè),設(shè)置溫度上下限,超過其溫度值就報(bào)警。顯示電路采用1602 液晶模塊顯示,使用二極管,電阻和蜂鳴器組成的報(bào)警電路。2.3方案的論證 基于DS18B20 的溫度測(cè)量系統(tǒng)是一種分布式的溫度測(cè)量系統(tǒng),它可以遠(yuǎn)程對(duì)溫度實(shí)現(xiàn)測(cè)量和監(jiān)控,廣泛應(yīng)用于電力工業(yè)、煤礦、森林、火災(zāi)、高層建筑等場(chǎng)合,按照DS18B20 的通信協(xié)議,由主機(jī)向DS18B20 發(fā)送命令,讀取DS18B20 轉(zhuǎn)換的溫度,從而實(shí)現(xiàn)對(duì)環(huán)境的溫度的測(cè)量,當(dāng)溫度超過一定的值時(shí),報(bào)警器開始報(bào)警。采用智能溫度傳感器DS18B20,它直接輸出數(shù)字量,精度高,電路簡(jiǎn)單,只需要模擬DS18B20 的讀寫時(shí)序,根據(jù)DS18B20 的協(xié)議讀取轉(zhuǎn)換的溫度。此方案硬件電路非常簡(jiǎn)單,但程序設(shè)計(jì)復(fù)雜一些,但是在課外對(duì)DS18B20、字符型液晶顯示有所了解,而且曾經(jīng)在網(wǎng)上看到過此類程序程序設(shè)計(jì),并且我已經(jīng)使用過開發(fā)工具KEIL 用C 語言對(duì)系統(tǒng)進(jìn)行了程序設(shè)計(jì),用單片機(jī)開發(fā)板對(duì)系統(tǒng)進(jìn)行了測(cè)試,達(dá)到了預(yù)期的結(jié)果。由此可見,該方案完成具有可行性,體現(xiàn)了技術(shù)的先進(jìn)性,經(jīng)濟(jì)上也沒有任何問題。3 系統(tǒng)設(shè)計(jì)3.1單片機(jī)的選擇AT89C51作為溫度測(cè)試系統(tǒng)設(shè)計(jì)的核心器件。該器件是INTEL 公司生產(chǎn)的MCS-51 系列單片機(jī)中的基礎(chǔ)產(chǎn)品,采用了可靠的CMOS 工藝制造技術(shù),具有高性能的8 位單片機(jī),屬于標(biāo)準(zhǔn)的MCS-51 的CMOS 產(chǎn)品。不僅結(jié)合了HMOS 的高速和高密度技術(shù)及CHMOS 的低功耗特征,而且繼承和擴(kuò)展了MCS 一48 單片機(jī)的體系結(jié)構(gòu)和指令系統(tǒng)。(1)中央處理器AT89C51 簡(jiǎn)介AT89C51 的特點(diǎn)AT89C51 具有以下幾個(gè)特點(diǎn):AT89C51 與MCS-51 系列的單片機(jī)在指令系統(tǒng)和引腳上完全兼容;片內(nèi)有4k 字節(jié)在線可重復(fù)編程快擦寫程序存儲(chǔ)器;全靜態(tài)工作,工作范圍:0Hz24MHz;三級(jí)程序存儲(chǔ)器加密;1288 位內(nèi)部RAM;32 位雙向輸入輸出線;兩個(gè)十六位定時(shí)器/計(jì)數(shù)器五個(gè)中斷源,兩級(jí)中斷優(yōu)先級(jí);一個(gè)全雙工的異步串行口;間歇和掉電兩種工作方式。AT89C51 的功能描述AT89C51 是一種低損耗、高性能、CMOS 八位微處理器,片內(nèi)有4k 字節(jié)的在線可重復(fù)編程、快速擦除快速寫入程序的存儲(chǔ)器,能重復(fù)寫入/擦除1000 次,數(shù)據(jù)保存時(shí)間為十年。它與MCS-51 系列單片機(jī)在指令系統(tǒng)和引腳上完全兼容,不僅可完全代替MCS-51 系列單片機(jī),而且能使系統(tǒng)具有許多MCS-51 系列產(chǎn)品沒有的功能。AT89C51 可構(gòu)成真正的單片機(jī)最小應(yīng)用系統(tǒng),縮小系統(tǒng)體積,增加系統(tǒng)的可靠性,降低系統(tǒng)的成本。只要程序長(zhǎng)度小于4K,四個(gè)I/O 口全部提供給用戶??捎?V 電壓編程,而且擦寫時(shí)間僅需10 毫秒,僅為8751/87C51 的擦除時(shí)間的百分之一,與8751/87C51 的12V 電壓擦寫相比,不易損壞器件,沒有兩種電源的要求,改寫時(shí)不拔下芯片,適合許多嵌入式控制領(lǐng)域。工作電壓范圍寬(2.7V6V),全靜態(tài)工作,工作頻率寬在0Hz24MHz 之間,比8751/87C51 等51 系列的6MHz12MHz 更具有靈活性,系統(tǒng)能快能慢。AT89C51 芯片提供三級(jí)程序存儲(chǔ)器加密,提供了方便靈活而可靠的硬加密手段,能完全保證程序或系統(tǒng)不被仿制。P0 口是三態(tài)雙向口,通稱數(shù)據(jù)總線口,因?yàn)橹挥性摽谀苤苯佑糜趯?duì)外部存儲(chǔ)器的讀/寫操作。 AT89C51 引腳功能AT89C51 單片機(jī)P3 口第二功能如表3-1 所示。3.2溫度傳感器的工作原理與單片機(jī)的連接 溫度傳感器的單總線(1-Wire)與單片機(jī)的P27 連接,P27 是單片機(jī)的高位地址線。P2 端口是一個(gè)帶內(nèi)部上拉電阻的8 位雙向IO,其輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對(duì)該端口寫“1”,可通過內(nèi)部上拉電阻將其端口拉至高電平,此時(shí)可作為輸入口使用,這是因?yàn)閮?nèi)部存在上拉電阻,某一引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。如圖3-1 所示:DS18B20 與單片機(jī)的接口電路非常簡(jiǎn)單。DS18B20 只有三個(gè)引腳,一個(gè)接地,一個(gè)接電源,一個(gè)數(shù)字輸入輸出引腳接單片機(jī)I/O 口,電源與數(shù)字輸入輸出腳間需要接一個(gè)4.7K 的電阻。(3)DS18B20 的工作原理 DS18B20 數(shù)字溫度傳感器概述DS18B20 數(shù)字溫度傳感器是DALLAS 公司生產(chǎn)的1Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。DS18B20 產(chǎn)品的特點(diǎn):只要求一個(gè)端口即可實(shí)現(xiàn)通信。在DS18B20 中的每個(gè)器件上都有獨(dú)一無二的序列號(hào)。實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。測(cè)量溫度范圍在55.C 到125.C 之間。數(shù)字溫度計(jì)的分辨率用戶可以從9 位到12 位選擇。內(nèi)部有溫度上、下限告警設(shè)置。DS18B20 引腳功能描述見表3-2DS18B20 的內(nèi)部結(jié)構(gòu)DS18B20 的內(nèi)部框圖如圖3-2 所示。64 位ROM 存儲(chǔ)器件獨(dú)一無二的序列號(hào)。暫存器包含兩字節(jié)(0 和1 字節(jié))的溫度寄存器,用于存儲(chǔ)溫度傳感器的數(shù)字輸出。暫存器還提供一字節(jié)的上線警報(bào)觸發(fā)(TH)和下線警報(bào)觸發(fā)(TL)寄存器(2 和3 字節(jié)),和一字節(jié)的配置寄存器(4 字節(jié)),使用者可以通過配置寄存器來設(shè)置溫度轉(zhuǎn)換的精度。暫存器的5、6 和7 字節(jié)器件內(nèi)部保留使用。第八字節(jié)含有循環(huán)冗余碼(CRC )。使用寄生電源時(shí),DS18B20 不需額外的供電電源;當(dāng)總線為高電平時(shí),功率由單總線上的上拉電阻通過DQ 引腳提供;高電平總線信號(hào)同時(shí)也向內(nèi)部電容CPP 充電,CPP 在總線低電平時(shí)為器件供電。(注:INTERNAL VDD-內(nèi)部VDD 64-BIT ROM AND 1-wirePROT-64 位ROM 和單線端MEMORY CONTROL LOGIC- 存儲(chǔ)器控制邏輯SCRATCHPAD 暫存器TEMPERATURE SENSOR 溫度傳感器ALARM HIGHTRIGGER( TH)REGISTER 上限溫度觸發(fā)ALARM LOW TRIGGER( TL)REGISTER 下限溫度觸發(fā)8-BIT CRC GENERTOR 8 位CRC 產(chǎn)生器POWER SUPPLLY SENSE 電源探測(cè)PARASITE POWER CIRCUIT 寄生電源電路)。(4)DS18B20 的4 個(gè)主要數(shù)據(jù)部件:光刻ROM 中的64 位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64 位光刻ROM 的排列是:開始8 位(28H)是產(chǎn)品類型標(biāo)號(hào),接著的48 位是該DS18B20 自身的序列號(hào),最后8 位是前面56 位的循環(huán)冗余校驗(yàn)碼。光刻ROM 的作用是使每一個(gè)DS18B20 都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20 的目的。DS18B20 中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12 位轉(zhuǎn)化為例:用16 位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以0.0625/LSB 形式表達(dá),其中S 為符號(hào)位。這是12 位轉(zhuǎn)化后得到的12 位數(shù)據(jù),存儲(chǔ)在18B20 的兩個(gè)8 比特的RAM 中,二進(jìn)制中的前面5 位是符號(hào)位,如果測(cè)得的溫度大于0,這5 位為0,只要將測(cè)到的數(shù)值乘于0.0625 即可得到實(shí)際溫度;如果溫度小于0,這5 位為1,測(cè)到的數(shù)值需要取反加1 再乘于0.0625 即可得到實(shí)際溫度。例如+125的數(shù)字輸出為07D0H,+25.0625的數(shù)字輸出為0191H,-25.0625的數(shù)字輸出為FF6FH , -55 的數(shù)字輸出為FC90H , 如表3-3 所示。( 注:TEMPERATURE-溫度,DIGITAL OUTPUT-數(shù)字輸出)DS18B20 溫度傳感器的存儲(chǔ)器DS18B20 溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM 和一個(gè)非易失性的可電擦除的EEPROM,后者存放高溫度和低溫度觸發(fā)器TH、TL 和結(jié)構(gòu)寄存器。配置寄存器低五位一直都是1,TM 是測(cè)試模式位,用于設(shè)置DS18B20 在工作模式還是在測(cè)試模式。在DS18B20 出廠時(shí)該位被設(shè)置為0,用戶不要去改動(dòng)。R1 和R0 用來設(shè)置分辨率,如表3-5 所示:(DS18B20 出廠時(shí)被設(shè)置為12 位)(5)DS18B20 的工作過程初始化ROM 命令跟隨著需要交換的數(shù)據(jù);功能命令跟隨著需要交換的數(shù)據(jù)。訪問DS18B20 必須嚴(yán)格遵守這一命令序列,如果丟失任何一步或序列混亂,DS18B20 都不會(huì)響應(yīng)主機(jī)。a初始化:DS18B20 所有的數(shù)據(jù)交換都由一個(gè)初始化序列開始。由主機(jī)發(fā)出的復(fù)位脈沖和跟在其后的由DS18B20 發(fā)出的應(yīng)答脈沖構(gòu)成。當(dāng)DS18B20 發(fā)出響應(yīng)主機(jī)的應(yīng)答脈沖時(shí),即向主機(jī)表明它已處在總線上并且準(zhǔn)備工作。b. ROM 命令:ROM 命令通過每個(gè)器件64-bit 的ROM 碼,使主機(jī)指定某一特定器件(如果有多個(gè)器件掛在總線上)與之進(jìn)行通信。DS18B20 的ROM 如表3-6 所示,每個(gè)ROM 命令都是8 bit 長(zhǎng)。c. 功能命令:主機(jī)通過功能命令對(duì)DS18B20 進(jìn)行讀/寫Scratchpad 存儲(chǔ)器,或者啟動(dòng)溫度轉(zhuǎn)換。DS18B20 的功能命令如表3-6 所示。(6)DS18B20 的信號(hào)方式DS18B20 采用嚴(yán)格的單總線通信協(xié)議,以保證數(shù)據(jù)的完整性。該協(xié)議定義了幾種信號(hào)類型:復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1、讀0 和讀1。除了應(yīng)答脈沖所有這些信號(hào)都由主機(jī)發(fā)出同步信號(hào)??偩€上傳輸?shù)乃袛?shù)據(jù)和命令都是以字節(jié)的低位在前。a.初始化序列:復(fù)位脈沖和應(yīng)答脈沖在初始化過程中,主機(jī)通過拉低單總線至少480s,以產(chǎn)生復(fù)位脈沖(TX)。然后主機(jī)釋放總線并進(jìn)入接收(RX)模式。當(dāng)總線被釋放后,4.7k的上拉電阻將單總線拉高。DS18B20 檢測(cè)到這個(gè)上升沿后,延時(shí)15s60s,通過拉低總線60s240s 產(chǎn)生應(yīng)答脈沖。初始化波形如圖3-3 所示。b.讀和寫時(shí)序在寫時(shí)序期間,主機(jī)向DS18B20 寫入指令;而在讀時(shí)序期間,主機(jī)讀入來自DS18B20 的指令。在每一個(gè)時(shí)序,總線只能傳輸一位數(shù)據(jù)。讀/寫時(shí)序如圖3-4 所示。寫時(shí)序存在兩種寫時(shí)序:“寫1”和“寫0”。主機(jī)在寫1 時(shí)序向DS18B20 寫入邏輯1,而在寫0 時(shí)序向DS18B20 寫入邏輯0。所有寫時(shí)序至少需要60s,且在兩次寫時(shí)序之間至少需要1s 的恢復(fù)時(shí)間。兩種寫時(shí)序均以主機(jī)拉低總線開始。產(chǎn)生寫1 時(shí)序:主機(jī)拉低總線后,必須在15s 內(nèi)釋放總線然后由上拉電阻將總線拉至高電平。產(chǎn)生寫0 時(shí)序:主機(jī)拉低總線后,必須在整個(gè)時(shí)序期間保持低電平(至少60s)。在寫時(shí)序開始后的15s60s 期間,DS18B20 采樣總線的狀態(tài)。如果總線為高電平,則邏輯1 被寫入DS18B20;如果總線為低電平,則邏輯0 被寫入DS18B20。讀時(shí)序DS18B20 只能在主機(jī)發(fā)出讀時(shí)序時(shí)才能向主機(jī)傳送數(shù)據(jù)。所以主機(jī)在發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)序,以便DS18B20 能夠傳送數(shù)據(jù)。所有讀時(shí)序至少60s,且在兩次獨(dú)立的讀時(shí)序之間至少需要1s 的恢復(fù)時(shí)間。每次讀時(shí)序由主機(jī)發(fā)起,拉低總線至少1s。在主機(jī)發(fā)起讀時(shí)序之后,DS18B20開始在總線上傳送1 或0。若DS18B20 發(fā)送1,則保持總線為高電平;若發(fā)送0,則拉低總線。當(dāng)傳送0 時(shí),DS18B20 在該時(shí)序結(jié)束時(shí)釋放總線,再由上拉電阻將總線拉回空閑高電平狀態(tài)。DS18B20 發(fā)出的數(shù)據(jù)在讀時(shí)序下降沿起始后的15s 內(nèi)有效,因此主機(jī)必須在讀時(shí)序開始后的15s 內(nèi)釋放總線,并且采樣總線狀態(tài)。DS18B20 在使用時(shí),一般都采用單片機(jī)來實(shí)現(xiàn)數(shù)據(jù)采集。只需將DS18B20 信號(hào)線與單片機(jī)1 位I/O 線相連,且單片機(jī)的1 位I/O 線可掛接多個(gè)DS18B20 ,就可實(shí)現(xiàn)單點(diǎn)或多點(diǎn)溫度檢測(cè)。3.3單片機(jī)與報(bào)警電路系統(tǒng)中的報(bào)警電路是由三極管,蜂鳴器,發(fā)光二極管和限流電阻組成,并與單片機(jī)的P1.0P1.3 端口連接。P1 端口的作用和接法與P2 端口相同,不同的是在Flash 編程和程序校驗(yàn)期間,P1 接收低8 位地址數(shù)據(jù),如圖所示;3.4 電源電路由于該系統(tǒng)需要穩(wěn)定的5 V 電源,因此設(shè)計(jì)時(shí)必須采用能滿足電壓、電流和穩(wěn)定性要求的電源。該電源采用三端集成穩(wěn)壓器LM7805。它僅有輸入端、輸出端及公共端3 個(gè)引腳,其內(nèi)部設(shè)有過流保護(hù)、過熱保護(hù)及調(diào)整管安全保護(hù)電路由于所需外接元件少,使用方便、可靠,因此可作為穩(wěn)壓電源。圖3-6 為電源電路連接圖。3.5 顯示電路采用技術(shù)成熟,價(jià)格便宜的1602 液晶顯示器做為輸出顯示。本次設(shè)計(jì)使用的1602液晶顯示器為5V 電壓驅(qū)動(dòng),帶背光,可顯示兩行,每行16 個(gè)字符,不能顯示漢字,內(nèi)置128 個(gè)字符的ASCII 字符集字庫(kù),只有并行接口,無串行接口。3.5.1 1602 型液晶接口信號(hào)說明1602 型液晶接口信號(hào)說明如表3-7 所示:3.5.2 液晶主要技術(shù)參數(shù)3.5.3 基本操作時(shí)序讀狀態(tài)輸入:RS=L, R/W=H,E=H 輸出:D0D7=狀態(tài)字。讀數(shù)據(jù)輸入:RS=H, R/W=H,E=H 輸出:無。寫指令輸入:RS=L, R/W=L,D0D7=指令碼,E=高脈沖輸出:D0D7=數(shù)據(jù)。寫數(shù)據(jù)輸入:RS=H, R/W=L, ,D0D7=數(shù)據(jù),E=高脈沖輸出:無。3.5.4 寫操作時(shí)序(見圖3-7)分析時(shí)序圖可知操作1602 液晶的流程如下:(1)通過RS 確定是寫數(shù)據(jù)還是寫命令。寫命令包括使液晶的光標(biāo)顯示/不顯示、光標(biāo)閃爍/不閃爍、需/不需要移屏、在液晶的什么位置顯示,等等。寫數(shù)據(jù)是指要顯示什么內(nèi)容。(2)讀/寫控制端設(shè)置為寫模式,即低電平。(3)將數(shù)據(jù)或命令送達(dá)數(shù)據(jù)線上。(4)給E 一個(gè)高脈沖將數(shù)據(jù)送入液晶控制器,完成寫操作。(注:tsp1-地址建立時(shí)間(30ns) tsp2-數(shù)據(jù)建立時(shí)間(40ns) tHD1 地址保持時(shí)間(10ns ) tHD2 數(shù)據(jù)保持時(shí)間(20us) tpw 脈沖寬度(150us) tR tF 上升/下降沿時(shí)間(小于25us)Valid Data-數(shù)據(jù)。4 系統(tǒng)軟件的設(shè)計(jì)4.1軟件設(shè)計(jì)DSl8B20 的主要數(shù)據(jù)元件有:64 位激光Lasered ROM,溫度靈敏元件和非易失性溫度告警觸發(fā)器TH 和TL。DSBl820 可以從單總線獲取電源,當(dāng)信號(hào)線為高電平時(shí),將能量貯存在內(nèi)部電容器中;當(dāng)單信號(hào)線為低電平時(shí),將該電源斷開,直到信號(hào)線變?yōu)楦唠娖街匦陆由霞纳?電容)電源為止。此外,還可外接5 V 電源,給DSl8820 供電。DSl8820 的供電方式靈活,利用外接電源還可增加系統(tǒng)的穩(wěn)定性和可靠性。圖4-1 為讀取數(shù)據(jù)流程圖。4.2 程序設(shè)計(jì)主程序代碼為:#include / 51 系類單片機(jī)頭文件#include LCD1602.h /包含對(duì)1602 讀寫操作的頭文件#include Delay.h /延時(shí)操作頭文件#include 18B20.h /包含對(duì)18B20 操作的頭文件#includesbit beep = P30; /定義蜂鳴器信號(hào)線sbit led0=P10; /定義發(fā)光二極管端口sbit led1=P11;sbit led2=P12;sbit led3=P13;uint warn_l1=250; /定義溫度下限值溫度*10uint warn_l2=220;uint warn_h1=370;uint warn_h2=350;/*函數(shù)名稱:deal(uint t) * 函數(shù)功能:對(duì)18B20 獲取的溫度進(jìn)行相應(yīng)的處理*入口參數(shù):temp *出口參數(shù):無*/void deal(uint t)if(twarn_l2)&(t=warn_l1) /2225 度led0=0; /第一個(gè)閃爍Delayms(20);led0=1;mdi(); /蜂鳴器慢“滴” /模擬開啟制熱else if(t=warn_l2) / warn_h2)&(t=warn_h1) / 37 度led2=0; /第三四個(gè)燈閃爍led3=0;Delayms(10);led2=1;led3=1;kdi(); /蜂鳴器慢“滴” /模擬加大制冷功率elsebeep=1; /溫度正常/*函數(shù)名稱:display(uint t); *函數(shù)功能:顯示溫度*入口參數(shù):t *出口參數(shù):無*/void display(uint t)write_com(0 x80+12); / 第一行第13 列write_data(t/100+0 x30); / 十位+0X30 轉(zhuǎn)換為字符顯示write_com(0 x80+14);write_data(t%100/10+0 x30);write_com(0 x80+15);write_data(t%10+0 x30);/*函數(shù)名稱:main(void); * 函數(shù)功能:主函數(shù)*入口參數(shù):無* 出口參數(shù):無*/void main(void)uchar i = 0;uint temp = 0;while(1)init(); /LCD 初始化tempchange(); /溫度轉(zhuǎn)換_nop_(); /稍作延時(shí)temp = get_temp();deal(temp); /溫度處理_nop_();for(i=10;i0;i-)display(temp(); /溫度處理5 元器件的調(diào)試5.1 測(cè)試環(huán)境及工具測(cè)試溫度:20.045.0 攝氏度。(模擬多點(diǎn)不同溫度值環(huán)境)測(cè)試儀器:,溫度計(jì)0100 攝氏度,keil 51 軟件。測(cè)試方法:目測(cè)。5.1 溫度檢測(cè)部分測(cè)試當(dāng)環(huán)境溫度低于25 攝氏度時(shí),蜂鳴器開始以慢“滴”聲報(bào)警,并且伴隨著P10口發(fā)光二極管閃爍(模擬開啟制熱設(shè)備),當(dāng)環(huán)境溫度繼續(xù)降低到22 攝氏度時(shí),蜂鳴器伴隨P10 和P11 口發(fā)光二極管一起閃爍(模擬加大制熱功率)。當(dāng)環(huán)境溫度高于35攝氏度是,蜂鳴器開始以慢“滴”聲報(bào)警,并且伴隨著P12 口發(fā)光二極管閃爍(模擬開啟制熱設(shè)備),當(dāng)環(huán)境溫度繼續(xù)升高到37 攝氏度時(shí),蜂鳴器伴隨P12 和P13 口發(fā)光二極管一起閃爍(模擬加大制熱功率)。5.1 電路主板測(cè)試將電路主板通電后,發(fā)現(xiàn)電路不工作。于是我又測(cè)量AT89C51 芯片20 腳和40腳之間發(fā)現(xiàn)無5V 電壓。由此可見,電源回路有問題。于是我仔細(xì)檢查了回路發(fā)現(xiàn)20腳的地線沒有與其他地線相連,將其接好發(fā)現(xiàn)工作正常。6 結(jié)論和展望6.1結(jié)論 本文所用到的AT89C51單片機(jī)和DS18B20傳感器為主的水溫檢測(cè)控制系統(tǒng)。它的主要特點(diǎn)如下:(1) 該系統(tǒng)數(shù)學(xué)模型、測(cè)量原理簡(jiǎn)單,但精確度高,所用時(shí)間少,有高效性。(2) 用智能傳感器DS18B20對(duì)各點(diǎn)溫度進(jìn)行測(cè)量,對(duì)溫度有了全面的測(cè)量,無遺漏。(3) 系統(tǒng)中還用到了1602液晶顯示電路,將各點(diǎn)測(cè)量結(jié)果及時(shí)讀出,對(duì)溫度能進(jìn)行實(shí)時(shí)控制。(4) 該系統(tǒng)的軟件程序全部用C51匯編語言編寫,具有可讀性和可移植性。(5) 本測(cè)量系統(tǒng)具有廣闊的前景,有待于進(jìn)一步將其應(yīng)用和推廣。經(jīng)過分析和論證,整個(gè)測(cè)量誤差很小,真?zhèn)€單片機(jī)系統(tǒng)穩(wěn)定、可靠、準(zhǔn)確。 6.2展望隨著現(xiàn)代自動(dòng)控制技術(shù)以及計(jì)算機(jī)技術(shù)的迅猛發(fā)展和日益完善,工業(yè)生產(chǎn)過程已經(jīng)逐步走向標(biāo)準(zhǔn)化、自動(dòng)化。同時(shí)對(duì)自動(dòng)控制系統(tǒng)和檢測(cè)裝置提出了更高的要求?;趩纹瑱C(jī)的各種測(cè)量技術(shù)也在不斷的提高和發(fā)展。然而,任何產(chǎn)品都有一個(gè)不斷改進(jìn)和完善的過程,只有在調(diào)試和使用過程中才能知道產(chǎn)品實(shí)際存在的問題。本系統(tǒng)雖然在低溫測(cè)量有優(yōu)勢(shì),但是在高溫測(cè)量方便還是有明顯的不足,希望今后能逐漸改善。 本的時(shí)間fks本參考文獻(xiàn)致 謝在大學(xué)四年的學(xué)習(xí)當(dāng)中,我得到了湖北科技學(xué)院教師們學(xué)業(yè)上的指導(dǎo)和為人處事上的方法,以及生活上的關(guān)懷。恩師們?cè)诮逃?、科研上兢兢業(yè)業(yè)的作風(fēng)無時(shí)不刻在敲擊著我,將使我在今后的學(xué)習(xí)中和生活中受益匪淺。在畢業(yè)論文的設(shè)計(jì)中,我非常感謝指導(dǎo)老師劉宏章老師的精心知指導(dǎo)和督促,還有眾多的同學(xué)朋友們的幫助,能使我順順利利的完成課題,在此我表示深深的謝意。同時(shí),感謝學(xué)院的全體老師以及關(guān)心我的同學(xué)、朋友、親人們。衷心的感謝你們,謝謝!參考文獻(xiàn)1 郭天祥.51 單片機(jī)C 語言教程-入門、提高、開發(fā)、拓展全攻略M.北京:電子工業(yè)出版社,2009.2 蔡美琴,毛敏等.MCS-51 系列單片機(jī)系統(tǒng)及其應(yīng)用M.北京:高等教育出版社,2009.3 陶紅艷,余成波.傳感器與現(xiàn)代檢測(cè)技術(shù)M.北京:清華大學(xué)出版社,2009.4 閆勝利.Altium Designer 實(shí)用寶典原理圖與PCB 設(shè)計(jì)M.北京:電子工業(yè)出版社,2007.5 康華光.電子技術(shù)基礎(chǔ)模擬部分M.北京:高等教育出版社,2008.6 康華光.電子技術(shù)基礎(chǔ)數(shù)字部分M.北京:高等教育出版社,2008.7 張毅剛 單片機(jī)原理及應(yīng)用M。北京:高等教育出版社,2008附錄附錄118B20.H 頭文件#ifndef _18B20_h_ /防止重復(fù)定義#define _18B20_h_#include#include#include18B20.h#includeDelay.hextern void dsreset(void); /函數(shù)聲明外部可見extern void tempwritebyte(uchar dat);extern bit tempreadbit(void);extern uchar tempreadbyte(void);extern void tempchange(void);extern uint get_temp(void);#endif18B20.C 文件#include18B20.hsbit beep = P30; /定義蜂鳴器信號(hào)線sbit ds = P27; /定義18B20 信號(hào)線static uint temp = 0;static float f_temp = 0.0;/* 函數(shù)名稱:dsreset(void) * 函數(shù)功能:18B20 初始化* 入口參數(shù):無* 出口參數(shù):無*/void dsreset(void)ds = 1; /將數(shù)據(jù)線置高電平_nop_(); /稍作延時(shí),要盡可能短ds = 0; / 拉低數(shù)據(jù)線Delayus(40); /延時(shí)_nop_();ds = 1; /將數(shù)據(jù)線拉高Delayus(14); /延時(shí)ds = 1; /拉高數(shù)據(jù)線/* 函數(shù)名稱:temwritebyte(uchar dat) * 函數(shù)功能:向18B20 寫一個(gè)字節(jié)* 入口參數(shù):dat * 出口參數(shù):無*/void tempwritebyte(uchar dat)uint i;for(i=0;i=1; /左移一位,繼續(xù)發(fā)送下一位/* 函數(shù)名稱:tempreadbit(void) * 函數(shù)功能:讀一位數(shù)據(jù)* 入口參數(shù):無* 出口參數(shù):dat */bit tempreadbit(void)uint i = 0; /定義i,做延時(shí)用bit dat; /定義一位數(shù)據(jù)ds = 0;i+;ds = 1;i+;i+;dat = ds;i = 8;while(i0)i-;return(dat); /返回一位數(shù)據(jù)/* 函數(shù)名稱:tempreadbyte(void) * 函數(shù)功能:讀一個(gè)字節(jié)* 入口參數(shù):無* 出口參數(shù):dat */uchar tempreadbyte(void)uchar i,j,dat;dat=0;for(i=1;i=8;i+)j=tempreadbit();dat=(j1); /讀出的數(shù)據(jù)低位在前,剛好在一個(gè)字節(jié)dat 里return(dat);/* 函數(shù)名稱:tempchange(void) * 函數(shù)功能:獲取18B20 溫度轉(zhuǎn)換* 入口參數(shù):無* 出口參數(shù):無*/void tempchange(void)dsreset(); /18B20 復(fù)位Delayms(1); /稍作延時(shí)tempwritebyte(0 xcc);/跳過讀ROM 指令tempwritebyte(0 x44);/寫溫度轉(zhuǎn)換指令/* * 函數(shù)名稱:get_temp(void) * 函數(shù)功能:獲取18B20 寄存器中的數(shù)據(jù)* 入口參數(shù):無* 出口參數(shù):temp */uint get_temp(void)uchar a,b;dsreset();Delayms(1);tempwritebyte(0 xcc); /跳過ROMtempwritebyte(0 xbe); /讀暫存器a = tempreadbyte();/讀低8 位b = tempreadbyte();/讀高8 位temp = b;temp = 8;/將兩個(gè)字節(jié)合為一個(gè)字temp = temp|a;f_temp = temp*0.0625;/溫度在寄存器中為12 為,分辨率為0.0625temp = f_temp*10+0.5; /溫度修正四舍五入return temp;附錄2