基于89C51和DS18B20的多通道溫度測量設計(程序可使用)_第1頁
基于89C51和DS18B20的多通道溫度測量設計(程序可使用)_第2頁
基于89C51和DS18B20的多通道溫度測量設計(程序可使用)_第3頁
基于89C51和DS18B20的多通道溫度測量設計(程序可使用)_第4頁
基于89C51和DS18B20的多通道溫度測量設計(程序可使用)_第5頁
已閱讀5頁,還剩49頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

PAGEKC021-1KC021-1題目:基于單片機的多通道測溫系統設計2012年6月摘要摘要隨著國民經濟的發展,人們需要對各種加熱爐、熱處理爐、反應爐和鍋爐中溫度進行監測和控制。采用單片機來測量溫度不僅具有測溫方便,簡單和靈活性大等優點,而且可以大幅度提高被測溫度的技術指標,從而能夠大大的提高產品的質量和數量。本文簡述了一個基于單片機的多通道測溫系統的設計過程,對系統的主要元器件、原理圖中的重要組成部分、軟件設計等分別進行了介紹。本系統包括數據采集、數據處理、數據顯示三個模塊。主要元器件有溫度傳感器DS18B20、單片機AT89S51、七段數碼顯示器。系統以DS18B20為檢測元件,將溫度轉換為數字信號后輸送到單片機中。單片機對數據處理后送至七段數碼管中進行顯示。系統可以實現功能包括:四個通道循環顯示或者單獨顯示某通道溫度;被測溫度超過20°C~31°C這一范圍則發出報警經過調試實驗,溫度檢測范圍為-55~125oC;精度為0.5oC。該系統具有結構簡單,抗干擾能力強,可靠性高,功耗低等特點。并且根據測試要求,本系統可以很方便的擴展為8通道溫度檢測,具有一定的實用性。關鍵詞:多通道溫度測量DS18B20AT89S51AbstractPAGEIIAbstractWiththedevelopmentofnationaleconomy,peopleneedmonitorandcontrolthetempe-ratureofallkindsofheatingfurnace,thermaltreatmentfurnace,reactingfurnaceandboiler.Itisconvenient,simpleandflexibletomeasuretemperaturebysinglechipmicrocomputerwhi-chcanenhanceThepaperintroducesadesignbasedonSCMwhichisusedasamulti-channeltemperaturemeasurementsystem.Thenthemaincomponents,importantpartsofschematicandsoftwaredesigninthesystemareintroduced.Thesystemconsistsofdatacollecting,dataprocessinganddatadisplay.ThemaincomponentsaretemperaturesensorDS18B20,SCMAT89S51andsevendigitaldisplaytube.ThesystemwhichusesDS18B20asdetectingelement,transformsvaluetemperaturetodigitalsignaltoSCM.Thedataisdeliveredtosevendigitaldisplaytubeanddisplayed,afteritisprocessedbySCM.Thefunctionofthesystemisthatcertainpassagewaytemperatureisdisplayedbyfourpassagewayscircularlyorallalone,anditcangivethealarm,whenthetemperaturemeasuredisnotwithinthescopeof20oC~31°C.Accordingtodebuggingexperiment,theconclusioncanbegot:thedetectionscopeoftemperatureis55~125oCandtheaccuracyis0.5oC.Simpleconstruction,strongcapacityofresistingdisturbance,highreliability,lowpowerconsumptionisthecharacteristicsofthesystem.Accordingtotestdemand,thesystemwhichispracticalisconvenienttoexpandtoeightpassagewaytemperaturetest.Keywords:Multi-channelTemperaturemeasurementDS18B20;AT89S51目錄目錄TOC\h\z\t"樣式1,1,樣式3,3,樣式2,2"TOC\f\h\z\t"樣式1,1,樣式3,3,樣式2,2"第1章緒論 11.1課題背景及研究意義 11.2國內外現狀 11.3設計的目的和內容 2第2章系統設計 42.1總體方案 42.2編程語言選擇 42.2.1匯編語言 42.2.2C語言 52.3 難點分析 5第3章系統硬件設計 73.1元器件選擇 73.1.1單片機的選擇 73.1.2溫度傳感器的選擇 93.1.3七段數碼顯示器 123.2原理圖 133.2.1DS18B20與單片機的連接 133.2.2復位電路 153.2.3顯示電路 173.3制板 17第4章軟件系統設計 194.1主程序設計 194.2DS18B20的初始化及讀寫模塊 204.3數據處理模塊 224.4P3.0開關模塊 244.5P3.1開關模塊 254.6數據顯示模塊 26第5章測試結果 27第6章總結與展望 28致謝 29參考文獻 30附錄一原理圖 31附錄二程序清單 32第1章緒論PAGE26第1章緒論1.1課題背景及研究意義溫度是工業對象中的一個重要的被控參數。傳統的溫度采集方法不僅費時費力,而且精度差。采用的測溫元件不同、測量方法不相同、產品的工藝不同,控制溫度的精度也不相同。傳統的測溫方式已不能滿足高精度,高速度的檢測要求,如溫度控制接觸器,其主要缺點是溫度波動范圍大,由于它主要通過控制接觸器的通斷時間比例來達到改變加熱功率的目的,受儀表本身誤差和交流接觸器的壽命限制,通斷頻率很低。隨著單片機技術的飛速發展,通過單片機對被控對象進行檢測日益成為今后自動控制領域的一個重要發展方向,電流、電壓、溫度、壓力、流量、流速和開關量都是常用的主要被控參數。采用MCS-51單片機來對溫度進行控制,不僅具有控制方便、組態簡單和靈活性大等優點,而且可以大幅度提高被控溫度的技術指標和被測溫度的準確性,從而能夠大大提高產品的質量和數量。因此,單片機對溫度的檢測問題是一個工業生產中經常會遇到的問題。1.2國內外現狀2011年5月18日慶天袆公布了專利“紅外線測溫裝置”。發明公開了一種紅外線測溫裝置,屬于測溫裝置技術領域。紅外線測溫裝置,包括紅外線測溫儀,端蓋,信號處理裝置,所述紅外線測溫儀前端設有端蓋,信號處理裝置與紅外線測溫儀相連接,所述紅外線測溫裝置的前部還設有L板,紅外線測溫儀穿過L板的通孔,在L板的底部設有調節板。在紅外線測溫儀的外部設有風冷管和水冷管,2011年6月29日

哈爾濱松江電爐廠有限責任公司公布了專利“熔煉保溫爐鋁液測溫”2011年8月18號DENPOHKAZUKI(JP)公布專利“Electrontemperaturemeasurementmethod,electrontemperaturemeasurementprogramforimplementingthemethod,andstoragemediumstoringtheelectrontemperaturemeasurementprogram”。發明公布了一種使等離子體參數來精確地測量電子溫度的測量方法。2011年9月7日上海華勤通訊技術有限公司公布了專利“具測溫功能的移動終端及其測溫方法

”。發明公開了一種具測溫功能的移動終端及其測溫方法,其包括控制芯片以及均與控制芯片相連的儲存單元、顯示屏、按鍵、揚聲器和溫度ADC檢測模塊,溫度ADC檢測模塊與控制芯片通過I2C2011年9月29號MATSUDOTATSUO公布專利“PROBEFORTEMPERATUREMEASUREMENT,TEMPERATUREMEASUREMENTSYSTEM,ANDTEMPERATUREMEASUREMENTMETHODUSINGTHIS”發明公布了一種不需要任何麻煩操作,溫度測量對象限制范圍較小,且可以廣泛使用的測量方法。2011年11月9日天津市中環溫度儀表有限公司公布了專利“精確測溫型多點熱電偶”。發明2012年01月15日徐方明、郭曈曈、彭文才發表名為《多通道智能熱電偶測溫模塊的研制國內外的很多專家學者都致力于溫度檢測的研究,溫度檢測的方法在飛速發展。1.3設計的目的和內容此次畢業設計主要是為了鞏固、加深和擴大單片機應用的知識面,提高綜合及靈活運用所學知識解決工業控制的能力;培養針對課題需要,選擇和查閱有關手冊、圖表及文獻資料的自學能力,提高組成系統、編程、調試的動手能力;通過對課題設計方案的分析、選擇、比較、熟悉單片機用系統開發、研制的過程,軟硬件設計的方法、內容及步驟。本課題的研究重點是設計一種基于單片機的多通道數字溫度計控制系統。利用溫度傳感、單片機、顯示器組成一個系統,可以直觀的顯示出當前的溫度。具體工作內容為:實現多通道溫度檢測系統設計;LED顯示器顯示當前環境溫度;測溫范圍達-55-125℃,精度達0.5℃;溫度高于31℃或低于20℃時,實現報警功能第2章系統設計第2章系統設計2.1總體方案系統分為三個部分:數據采集、數據處理和數據顯示。數據采集階段由溫度傳感器將溫度信號轉化為電信號。數據的處理通過單片機進行,單片機只接收數字信號。集成傳感器可直接輸出數字信號,可與單片機直接相連。總體方案為通過多路溫度傳感器將現場溫度轉化為多路數字信號,將信號傳輸給單片機,單片機處理后輸入到LED七段數碼管顯示器中,從而顯示當前環境溫度。原理框圖如下:晶振電路晶振電路復位電位DS18B20DS18B20DS18B20DS18B20單片機報警電路顯示電路圖2.1多通道測溫原理框圖2.2編程語言選擇單片機的編程語言有多種,其中常用的為C語言和匯編語言。2.2.1匯編語言匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬件特性并能直接控制硬件的語言。匯編語言作為一門語,對應于高級語言的編譯器,需要一個“匯編器”來把匯編語言原文件匯編成機器可執行的代碼。高級的匯編器如MASM,TASM等等為我們寫匯編程序提供了很多類似于高級語言的特征,比如結構化、抽象等。在這樣的環境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經類同于高級語言。現在的匯編環境已經如此高級,即使全部用匯編語言來編寫Windows的應用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在于編寫高效且需要對機器硬件精確控制的程序。匯編語言直接同計算機的底層軟件甚至硬件進行交互,它具有如下一些優點:1.能夠直接訪問與硬件相關的存儲器或I/O端口;2.能夠不受編譯器的限制,對生成的二進制代碼進行完全的控制;3.能夠對關鍵代碼進行更準確的控制,避免因線程共同訪問或者硬件設備共享引起的死鎖;4.能夠根據特定的應用對代碼做最佳的優化,提高運行速度;5.能夠最大限度地發揮硬件的功能。2.2.2C語言C語言是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出。1978后,C語言已先后被移植到大、中、小及微型機上。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件、三維、二維圖形和動畫。具體應用比如單片機以及嵌入式系統開發。C語言特點如下:1.C是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C語言可以像匯編語言一樣對位、字節和地址進行操作,而這三者是計算機最基本的工作單元。2.C是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。C語言是以函數形式提供給用戶的,這些函數可方便的調用,并具有多種循環、條件語句控制程序流向,從而使程序完全結構化。3.C語言功能齊全。具有各種各樣的數據類型,并引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實現決策目的的游戲。4.C語言適用范圍大。適合于多種操作系統,如Windows、DOS、UNIX等等,也適用于多種機型。綜合比較兩種語言的優缺點并結合所學知識,本設計中選擇C語言。難點分析系統中的難點包括硬件選擇、軟件編程、軟件調試等。硬件選擇:根據功能需求選擇合適的元器件,確定型號。軟件編程:確定具體功能子程序的實現,在每種子程序功能確定之后,安排好各個子程序的時序。合理安排主程序和子程序的調度。軟件調試:某些功能難以實現時,先檢查程序是否正確,再檢查電路的連接是否正確、是否存在虛焊等。第3章硬件系統設計第3章系統硬件設計硬件是一個系統的基礎。硬件選擇的對錯將直接關系到系統功能的實現。本系統的硬件設計主要包括元器件的選擇、原理圖的設計、制板。3.1元器件選擇基于單片機的多通道測溫系統主要是利用單片機進行測溫。在設計過程中對本系統的主要元器件包括單片機、溫度傳感器、顯示器進行選擇。3.1.1單片機的選擇根據系統的性能要求,單片機選擇AT89S51。AT89S51是一個低功耗,高性能CMOS8位單片機,片內含4kBytesISP(In-systemprogrammable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISPFlash存儲單元,AT89S51在眾多嵌入式控制應用系統中得到廣泛應用。1.AT89S51單片機主要性能包括4kBytesFlash片內程序存儲器;128bytes的隨機存取數據存儲器(RAM);32個外部雙向輸入/輸出(I/O)口;5個中斷優先級、2層中斷嵌套中斷;6個中斷源;2個16位可編程定時器/計數器;2個全雙工串行通信口;看門狗(WDT)電路;片內振蕩器和時鐘電路;與MCS-51兼容;全靜態工作:0Hz-33MHz;三級程序存儲器保密鎖定;可編程串行通道;低功耗的閑置和掉電模式。2.單片機AT89S51引腳說明單片機的引腳圖如圖3.1所示,主要引腳包括:圖3.1單片機AT89S51引腳圖(1)VCC:電源電壓輸入端。(2)GND:電源地。(3)I/O口作為輸入口時有兩種工作方式,即所謂的讀端口與讀引腳。讀端口時實際上并不從外部讀入數據,而是把端口鎖存器的內容讀入到內部總線,經過某種運算或變換后再寫回到端口鎖存器。只有讀端口時才真正地把外部的數據讀入到內部總線。89C51的P0、P1、P2、P3口作為輸入時都是準雙向口。除了P1口外P0、P2、P3口都還有其他的功能。P0口:P0口為一個8位寬開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的低八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P0口在訪問外部存儲器時,P0口既是一個真正的雙向數據總線口,又是從分時輸出8位地址口。它包括一個輸出鎖存器,兩個三態緩沖器,一個輸出驅動電路和一個輸出控制電路。P2口:P2口為一個內部帶有8個上拉電阻的雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。當P2口用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1P3口:P3口管腳是內部帶有8個上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”P3口除了作為普通I/O口,還有第二功能:P3.0/RXD(串行輸入口)P3.1/TXD(串行輸出口)P3.2/(外部中斷0)P3.3/(外部中斷1)P3.4/T0(T0定時器的外部計數輸入)P3.5/T1(T1定時器的外部計數輸入)P3.6/(外部數據存儲器的寫通道)P3.7/(外部數據存儲器的讀通道)P3口同時為閃爍編程和編程校驗接收一些控制信號。(4)RST:復位輸入端,高電平有效。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。(5)ALE/:地址鎖存控制信號:在系統擴展時,ALE用于控制把P0口輸出的低8位地址送鎖存器鎖存起來,以實現低位地址和數據的隔離。在沒有訪問外部存儲器期間,ALE以1/6振蕩周期頻率輸出(即6分頻),當訪問外部存儲器以1/12振蕩周期輸出(12分頻)。從這里我們可以看到,當系統沒有進行擴展時ALE會以1/6振蕩周期的固定頻率輸出,因此可以做為外部時鐘,或者外部定時脈沖使用。在EPROM編程期間,作輸入。輸入編程脈沖。ALE可以驅動8個LSTTL負載。為編程脈沖的輸入端:在8051單片機內部有一個4KB或8KB的程序存儲器(ROM),ROM的作用就是用來存放用戶需要執行的程序的,那么我們是怎樣把編寫好的程序存入進這個ROM中的呢?實際上是通過編程脈沖輸入才能寫進去的,這個脈沖的輸入端口就是。在EPROM編程期間,作輸入。輸入編程脈沖。ALE可以驅動8個LSTTL負載。(6):外部程序存儲器的選通信號,低電平有效。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的信號將不出現。在從片外程序存儲器取指期間,在每個機器周期中,當有效時,程序存儲器的內容被送上P0口(數據總線)。可以驅動8個LSTTL負載。(7)/VPP:外部程序存儲器訪問允許。當保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,將內部鎖定為;當端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。(12)XTAL1:片內振蕩器反相放大器和時鐘發生器的輸入端。(13)XTAL2:片內振蕩器反相放大器的輸出端。3.1.2溫度傳感器的選擇基于單片機的多通道測溫系統的設計要求測量范圍為-55-125℃,精度達0.5℃1.DS18B20測溫原理低溫度系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,2.DS18B20外部形狀及管腳圖DS18B20外部形狀及管腳圖如圖3.2所示:圖3.2DS18B20外部形狀及管腳圖3.DS18B20功能特點(1)采用單總線技術,與單片機通信只需要一根I/O線,在一根線上可以掛接多個DS18B20。(2)每只DS18B20具有一個獨有的,不可修改的64位序列號,根據序列號訪問地應的器件。(3)低壓供電,電源范圍從3~5V,可以本地供電,也可以直接從數據線上竊取電源(寄生電源方式)。(4)測溫范圍為-55℃~+125℃,在-10℃~85℃(5)可編輯數據為9~12位,轉換12位溫度時間為750ms(最大)。(6)用戶可自設定報警上下限溫度。(7)報警搜索命令可識別和尋址哪個器件的溫度超出預定值。(8)DS18B20的分辯率由用戶通過EEPROM設置為9~12位。(9)DS18B20可將檢測到溫度值直接轉化為數字量,并通過串行通信的方式與主控制器進行數據通信。4.DS18B20的主要數據部件(1)光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位(28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一個DS18B20都各不相同這樣就可以實現一根總線上掛接多個DS18B20的目的。(2)DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以0.0625℃(3)DS18B20溫度傳感器的存儲器DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發器TH、TL和結構寄存器。(4)配置寄存器。5.DS18B20內部結構DS18B20的內部結構如圖3.3所示。主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數據的高速暫存器RAM,用于存儲用戶設定溫度上下限值的TH和TL觸發器,存儲與控制邏輯,8位循環冗余校驗碼(CRC)發生器等7部分。圖3.3內部結構6.DS18B20使用中的注意事項DS18B20雖然具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點,但在實際應用中也應注意以下幾方面的問題:(1)DS18B20從測溫結束到將溫度值轉換成數字量需要一定的轉換時間,這是必須保證的,不然會出現轉換錯誤的現象,使溫度輸出總是顯示85。(2)在實際使用中發現,應使電源電壓保持在5V左右,若電源電壓過低,會使所測得的溫度精度降低。(3)較小的硬件開銷需要相對復雜的軟件進行補償,由于DS1820與微處理器間采用串行數據傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M、C等高級語言進行系統程序設計時,對DS1820操作部分最好采用匯編語言實現。(4)在DS18B20的有關資料中均未提及單總線上所掛DS18B20數量問題,容易使人誤認為可以掛任意多個DS18B20,在實際應用中并非如此,當單總線上所掛DS18B20超過8個時,就需要解決微處理器的總線驅動問題,這一點在進行多點測溫系統設計時要加以注意。(5)在DS18B20測溫程序設計中,向DS18B20發出溫度轉換命令后,程序總要等待DS18B20的返回信號,一旦某個DS18B20接觸不好或斷線,當程序讀該DS18B20時,將沒有返回信號,程序進入死循環,這一點在進行DS18B20硬件連接和軟件設計時也要給予一定的重視。3.1.3七段數碼顯示器七段數碼顯示器是微機系統常用的輸出設備,由多個發光二極管組成。發光二極管,即LED是由半導體材料制成的PN結,在正向偏置時會發光,具有工作電壓低、體積小、壽命長、響應快等優點。常用的顏色有紅、綠、黃。發光二極管的正向壓降為2.2V~2.6V,工作電流為5~10mA,其發光亮度基本與工作電流成正比。因此在使用發光二極管時,必須串限流電阻。發光二極管可工作于脈沖狀態,在平均電流相同的情況下,脈沖工作狀態比直流工作狀態的亮度增加約20%。發光二極管可以單個的形式使用,也可將幾個發光二極管封裝在一起,根據封裝的形狀有七段數碼顯示器、米字型顯示器和點陣式顯示器等不同的形式。當發光二極管導通時,點亮相應的筆劃或點。控制這些發光二極管的亮與暗,即可顯示不同的字符或符號。七段數碼顯示器按其連接形式可分為共陽極顯示器和共陰極顯示器。圖3.4所示為共陽和共陰的七段顯示器,在顯示器中除了顯示數字必須的七段筆畫外,還提供了小數點。共陽顯示器的陽極連接在一起,此時對陽極提供一正電壓,通過限流電阻控制其陰極為高電平或是低電平來決定其暗或是亮。共陰極顯示器的陰極連在一起,此時可將陰極接地,通過限流電阻控制其陽極為高電平或是低電平來決定其亮或是暗。(a)共陽極七段數碼顯示器的結構(b)共陰極七段數碼顯示器的結構(c)七段數碼顯示器的顯示形狀圖3.4七段數碼顯示器設計中采用共陽極七段數碼顯示器,型號為CFS50641BR。引腳圖如圖3.5所示:圖3.5CFS50641BR引腳圖3.2原理圖3.2.1DS18B20與單片機的連接DS18B20僅需一根I/O口線便可與單片相連,簡化了分布式溫度傳感器的應用。無需外部元件,可用數據總線供電,電壓范圍為3.0V至5.5V無需備用電源。測量溫度范圍為-55°C至+125°C。精度為±0.5°CDS18B20測溫系統具有測溫系統簡單、測溫精度高、連接方便、占用口線少等優點。以下是DS18B20幾個不同應用方式下的測溫電路圖。1.DS18B20寄生電源供電方式電路圖如下面圖3.6所示,在寄生電源供電方式下,DS18B20從單線信號線上汲取能量:在信號線DQ處于高電平期間把能量儲存在內部電容里,在信號線處于低電平期間消耗電容上的電能工作,直到高電平到來再給寄生電源(電容)充電。圖3.6DS18B20寄生電源供電方式2.DS18B20寄生電源強上拉供電方式電路圖改進的寄生電源供電方式如下面圖3.7所示,為了使DS18B20在動態轉換周期中獲得足夠的電流供應,當進行溫度轉換或拷貝到E2存儲器操作時,用MOSFET把I/O線直接拉到VCC就可提供足夠的電流,在發出任何涉及到拷貝到E2存儲器或啟動溫度轉換的指令后,必須在最多10μS內把I/O線轉換到強上拉狀態。在強上拉方式下可以解決電流供應不走的問題,因此也適合于多點測溫應用,缺點就是要多占用一根I/O口線進行強上拉切換。在圖3.6和圖3.7寄生電源供電方式中,DS18B20的VDD引腳必須接地。圖3.7DS18B20寄生電源強上拉供電方式3.DS18B20的外部電源供電方式在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時在總線上理論可以掛接任意多個DS18B20傳感器,組成多點測溫系統。需要注意的是在外部供電的方式下,DS18B20的GND引腳不能懸空,否則不能轉換溫度,讀取的溫度總是85℃本設計中采用外部電源供電方式,連接圖如圖3.8所示:圖3.8DS18B20與單片機的連接3.2.2復位電路在上電或復位過程中,控制CPU的復位狀態:這段時間內讓CPU保持復位狀態,而不是一上電或剛復位完畢就工作,防止CPU發出錯誤的指令、執行錯誤操作,也可以提高電磁兼容性能。單片機復位電路設計的好壞,直接影響到整個系統工作的可靠性。許多用戶在設計完單片機系統,并在實驗室調試成功后,在現場卻出現了“死機”、“程序走飛”等現象,這主要是單片機的復位電路設計不可靠引起的。基本的復位方式有手動按鈕復位、上電復位、積分型上電復位。1.手動按鈕復位手動按鈕復位如圖3.9所示,動按鈕復位需要人為在復位輸入端RST上加入高電平,一般采用的辦法是在RST端和正電源Vcc之間接一個按鈕。當人為按下按鈕時,則Vcc的+5V電平就會直接加到RST端。手動按鈕復位的電路如所示。由于人的動作再快也會使按鈕保持接通達數十毫秒,所以,完全能夠滿足復位的時間要求。圖3.9手動按鈕復位2.上電復位AT89S51的上電復位電路如圖3.10所示,只要在RST復位輸入引腳上接一電容至Vcc端,下接一個電阻到地即可。對于CMOS型單片機,由于在RST端內部有一個下拉電阻,故可將外部電阻去掉,而將外接電容減至1μF。上電復位的工作過程是在加電時,復位電路通過電容加給RST端一個短暫的高電平信號,此高電平信號隨著Vcc對電容的充電過程而逐漸回落,即RST端的高電平持續時間取決于電容的充電時間。為了保證系統能夠可靠地復位,RST端的高電平信號必須維持足夠長的時間。上電時,Vcc的上升時間約為10ms,而振蕩器的起振時間取決于振蕩頻率,如晶振頻率為10MHz,起振時間為1ms;晶振頻率為1MHz,起振時間則為10ms。在圖3.10復位電路中,當Vcc掉電時,必然會使RST端電壓迅速下降到0V以下,但是,由于內部電路的限制作用,這個負電壓將不會對器件產生損害。另外,在復位期間,端口引腳處于隨機狀態,復位后,系統將端口置為全“l”態。如果系統在上電時得不到有效的復位,則程序計數器PC將得不到一個合適的初值,因此,CPU可能會從一個未被定義的位置開始執行程序。圖3.10上電復位3積分型上電復位常用的上電或開關復位電路如圖3.11所示。上電后,由于電容C3的充電和反相門的作用,使RST持續一段時間的高電平。當單片機已在運行當中時,按下復位鍵K后松開,也能使RST為一段時間的高電平,從而實現上電或開關復位的操作。圖中C=1uF,Rl=lk,R2=10k。圖3.11積分型上電復位電路本設計中采用手動按鍵復位和上電復位的結合,其原理圖如下:圖3.12復位電路3.2.3顯示電路顯示電路采用4位一體的數碼管來實現。數碼管動態顯示介面是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃“a,b,c,d,e,f,g,dp”的同名端連在一起,另外為每個數碼管公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位元就顯示出字形,沒有選通的數碼管就不會亮。透過分時輪流控制各個LED數碼管的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位元數碼管的點亮時間為1~2ms,由于人的視覺暫留現象及發光二極體的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示資料,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O口,而且功耗更低。連接電路如圖3.13所示。8段連接單片機的P2口,位選通常采用PNP9012(或者8550)三極管來有效控制它的通斷,分別對應單片機的P2.3、P2.2、P2.1、P2.0。3.3制板制作實物之前應根據原理圖確定好元器件的擺放位置。焊接時注意虛焊的存在。不同導線的兩端裸露出來的部分不要接觸到一起,不然將會導致短路,使得某一元器件無法正常工作,甚至會導致整個線路的短路。在焊接時還應注意:焊接前應觀察各個焊點(銅皮)是否光潔、氧化等;在焊接物品時,要看準焊接點,以免線路焊接不良引起的短路圖3.13顯示器連接原理圖第4章軟件系統設計第4章軟件系統設計整個系統的功能是由硬件電路配合軟件來實現的,當硬件基本定型后,軟件的功能也就基本定下來了。根據功能不同軟件可分為兩大類:一是監控軟件(主程序),它是整個控制系統的核心,專門用來協調各執行模塊和操作者的關系。二是執行軟件(子程序),它是用來完成各種實質性的功能如測量、計算、顯示、通訊等。每一個執行軟件也就是一個小的功能執行模塊。本章將各執行模塊一一列出,并為每一個執行模塊進行功能定義和接口定義。各執行模塊規劃好后,就可以規劃監控程序了。首先要根據系統的總體功能選擇一種最合適的監控程序結構,然后根據實時性的要求,合理地安排監控軟件和各執行模塊之間地調度關系。執行模塊有:DS18B20的初始化及讀寫模塊,數據處理模塊,數據顯示模塊,P3.0開關控制模塊,P3.0開關控制模塊。4.1主程序設計程序的總體方案為先顯示一號通道溫度。顯示2秒后,若P3.1開關按下一次,則顯示二號通道溫度,再按一下顯示三號通道,再按一下顯示四號通道,再按一下顯示一號道依次循環。若P3.0開關按下則輪流顯示四個通道溫度。主程序流程圖如下圖4.1所示P3.0是否按下YY。P3.0是否按下YY開始開始結束P3.1開關子程序P3.0開關子程序四位數碼管顯示“8888”處理并顯示第一個DS18B20溫度約2S初始化P3.0是否按下P3.1是否按下結束P3.1開關子程序P3.0開關子程序四位數碼管顯示“8888”處理并顯示第一個DS18B20溫度約2S初始化P3.0是否按下P3.1是否按下圖4.1主程序流程圖4.2DS18B20的初始化及讀寫模塊DS18B20數據讀取時必需要一位一位的讀取,且功能命令為固定值,命令表如表3所示:表3DS18B20命令表命令功能描述代碼CONVERT啟動溫度轉換44HREADSCRATCHPAD讀取溫度寄存器BEHREADROM讀DS18B20的序列號33HWRITESCRATPAD將數據寫入暫存器的第2、3字節中4EHMATCHROM匹配ROM55HSEARCHROM搜索ROMF0HALARMSEARCH報警搜索ECHSKIPROM跳過讀序列號的操作CCHREADPOWERSUPPLY讀電源供給方式,0寄生,1外部電源B4H主要程序代碼如下:1.DS18B20的初始化如下ow_reset1(void){charpre=1;while(pre){while(pre){DQ1=1;_nop_();_nop_();//DQ復位,稍做延時 DQ1=0;//將DQ拉低 delay(50);//延時 DQ1=1; delay(6); pre=DQ1;}delay(45);pre=~DQ1;//延時后。如果pre=0則初始化成功。pre=1則失敗}DQ1=1;}單片機實現溫度轉換讀取溫度值程序的流程如圖4.2所示。開始開始初始DS18B20應答脈沖?發送SkipRom命令發起Convert命令延時1S等待溫度轉換完成初始化DS18B20發起ReadScratchpad命令讀取第1、2字節即為溫度數據YN應答脈沖?YN圖4.2DS18B20的處理程序流程圖2.DS18B20寫命令函數voidwrite_byte1(ucharval){uchari;for(i=8;i>0;i--)//將數據一位一位寫進去{DQ1=1;_nop_();_nop_();//數據線置高電平DQ1=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ1=val&0x01;//將數據放在數據線上delay(6);val=val/2;}DQ1=1;delay(1);3.DS18B20讀1字節函數ucharread_byte1(void){uchari;ucharvalue=0;for(i=8;i>0;i--)//一個字節分8位讀取{DQ1=1;_nop_();_nop_();value>>=1;//讀取1位右移1位DQ1=0;_nop_();_nop_();_nop_();_nop_();DQ1=1;_nop_();_nop_();_nop_();_nop_();if(DQ1){value|=0x80;}delay(6);//讀取1位后延時12us}DQ1=1;return(value);}4.3數據處理模塊計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖4.3所示。部分數據處理程序:work_temp1()//第1位DS18B20的溫度數據處理函數{ucharn=0;if(temp_data[1]>127)//負數{temp_data[1]=256-temp_data[1];temp_data[0]=256-temp_data[0];n=1;}display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];//小數display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);計算小數位溫度計算小數位溫度BCD值計算整數位溫度BCD值開始結束溫度<0?溫度值取補碼置“-”標志置“+”標志NY圖4.3數據處理原理框圖if(display[4]>t_high||display[4]<t_low)//超過t_high,低于t_low,報警{BELL=1;}display[3]=display[4]/100;if(display[3])//超過100度,只顯示整數部分,并報警{display[2]=display[3];display[0]=display[4]%100;display[1]=display[0]/10;display[0]=display[0]%10;m=1;}if(n)//低于0度,顯示"-"和2位整數部分,并報警{display[2]=0x0B;display[0]=display[4]%100;display[1]=display[0]/10;display[0]=display[0]%10;m=1;}display[1]=display[4]%100;display[2]=display[1]/10;display[1]=display[1]%10;display[3]=1;//最高位顯示測量點序號if(!display[2])//最高位是0,不顯示display[2]=0x0A;}}4.4P3.0開關模塊P3.0開關模塊流程圖如圖4.4所示:處理并顯示第處理并顯示第1個DS18B20的溫度處理并顯示第4個DS18B20的溫度處理并顯示第3個DS18B20的溫度處理并顯示第2個DS18B20的溫度P3.0開關按下結束圖4.4P3.0開關模塊流程圖4.5P3.1開關模塊P3.1開關模塊流程圖如圖4.5所示:P3.1開關按下P3.1開關按下處理并顯示下一個DS18B20DS18B20的溫度延時約2S結束圖4.5P3.1開關模塊流程圖4.6數據顯示模塊將百、十、個、小數位的數據查表,送到對應的數碼管顯示,程序流程圖如4.6所示:讀取溫度讀取溫度tt<0?一號位顯示通道數二號位顯示“-”三號位顯示十位四號位顯示個位t>100?一號位顯示通道數二號位顯示十位三號位顯示個位四號位顯示小數一號位顯示通道數二號位顯示百位三號位顯示十位四號位顯示個位結束圖4.6顯示程序流程圖第5章測試結果PAGE27第5章測試結果下圖為系統實物圖,圖中顯示一號通道測量的溫度單通道選擇開關復位按鈕DS18B20個位小數位單通道選擇開關復位按鈕DS18B20個位小數位通道數十位通道數十位循環顯示開關循環顯示開關圖5.1實物圖經測試復位功能,單通道、多通道的切換均實現。當溫度超過31℃時,蜂鳴器會發出警報。在實際溫度為31.1℃時,測得各通道溫度以及各通道升溫至表5.1通道實際溫度及反映時間表通道數測量溫度(℃)升溫到33℃130.46230.38330.36430.48第6章總結與展望PAGE49第6章總結與展望此次的基于單片機的多通道測溫系統。以單片機作為處理中心,以集成溫度傳感器為檢測元件,采用數碼顯示器顯示溫度。本系統具有結構簡單、抗干擾能力強經濟實用、測溫范圍較大,可適用于很多場合、若有需要可升級到8個通道等優點。系統實現了預期目標:1.顯示當前環境溫度,既可以顯示單獨通道,也可以循環顯示四個通道的溫度;2.系統實現了報警功能,報警范圍為20°C到313.系統誤差誤差范圍在±0.5°C范圍內。系統仍有不足之處。如系統對外界溫度的反映慢,溫差變化較大時,不能快速反應。溫度報警范圍只可通過程序的調整進行修改。另外系統還可增加其他功能。如:測溫為基礎實現恒溫控制;度的同時實現溫度的測量;利用單片機測溫的同時測量距離等,有待進一步改進。致謝致謝在這為期一學期的畢業設計中,許多人對我伸出了援助之手。對于褚老師對于我的教導,我十分感謝。設計初期對設計沒有什么概念,褚老師為我指明了方向。原件選擇階段褚老師為我提供意見,是我少走了彎路。程序編程階段,褚老師為我理清了邏輯順序。調試階段,功能無法實現有是褚老師給我以啟示。在與褚老師一次次的不斷反復的討論、思考中,自己的認知與能力逐漸提高。對此,對褚老師表示萬分的感謝。導師嚴謹求實的治學作風、扎實勤勉的工作態度、誨人不倦的高尚品德、樂于助人的師表精神是我在今后的工作和生活中學習的榜樣。我還要感謝同學的幫助。在遇到不懂得地方,同學們會和我一起討論。由于同學們的無私的幫助使得我更好的完成設計。更讓我知道了同窗之情的彌足珍貴。最后,謹向百忙中抽出寶貴時間評審本論文的各位專家、老師致敬!參考文獻參考文獻[1]楊素行著.模擬電子技術基礎(第二版)[M].北京:高等教育出版社,2006.[2]閻石著.數字電子技術基礎(第五版)[M].北京:高等教育出版社,2006.[3]李全利,仲偉峰,徐軍著.單片機原理及應用[M].北京:清華大學社,2006.[4]何立名著.單片機高級教程[M].北京:北京航空航空航天大學出版社,2005.[5]楊路明著.C語言程序設計教程(第二版)[M].北京:北京郵電大學出版社,2005.[6]馬忠梅,籍順心,張凱等著.單片機的C語言應用程序設計(第四版)[M].北京:北京航空航天大學出版社,2007.[7]白駒珩,雷曉平著.單片計算機及其應用[M].成都:電子科技大學出版社,1997.[8]譚浩強著.程序設計與開發技術[M].北京:清華大學出版社,1991.[9]鐘富昭著.8051單片機典型模塊設計與應用[M].北京:人民郵電出版社.2007.[10]于永,戴佳,常江著.51單片機C語言常用模塊與綜合系統設計實例[M].北京:電子工業出版社,2007.[11]梁翎著.C語言程序設計實用技巧與程序實例[M].上海:上海科普出版社,1998.[12]張毅剛,劉杰著.單片機原理及應用[M].哈爾濱:哈爾濱工業大學出版社,2004.[13]沙占友,王彥朋,孟志勇著.單片機外圍電路設計[M].北京:電子工業出版社,2003.[14]張鑫.單片機原理及應用(第2版)[M].北京:電子工業出版社,2010.[15]張毅剛.單片機原理與應用設計[M].電子工業出版社,2008.[16]何立民.單片機應用系統設計系統配置與接口技術[M].北京航空航天大學出版社,2001.[17]周立功.單片機實驗與實踐教程(三)[M].北京航空航天大學出版社,2006.[18]胡漢才.單片機原理及其接口技術(第3版)[M].清華大學出版社,2010.[19]孟憲玲.淺析數字溫度傳感器DSl8B20的應用[J].中國科技信息,2007(3):70—7l,74.[20]雷建龍.數字溫度傳感器DSl8B20讀出數據錯誤分析[J].電子器件,2007(6):2178—2182.[21]徐華英,徐秋華,趙莉,等.用DSl8B20和單片機構成小測溫系統[J].中國計量,2003(6):61—64.[22]張培仁等.基于C語言編程MCS-51單片機原理與應用[M].清華大學出版社,2003.[23]張洪潤等.單片機應用技術教程[M].清華大學出版社,2009.附錄一原理圖附錄一原理圖附錄二程序清單附錄二程序清單#include<reg51.h>#include"intrins.h"#defineDisdataP0#definediscanP2#defineucharunsignedchar#defineuintunsignedintconstuintt_high=30;//設置報警溫度上限constuintt_low=20;//設置報警溫度下限sbitDQ1=P1^0;//四個BS18B20溫度傳感器sbitDQ2=P1^1;sbitDQ3=P1^2;sbitDQ4=P1^3;sbitalarm_con=P1^4;//蜂鳴器ucharBELL=0;//報警標志位sbitDIN=P0^7;//小數點位置ucharm=0;//若溫度大于100度或小于0度,小數部分不顯示,控制小數點sbitkey0=P3^0;//循環顯示按鍵sbitkey1=P3^1;//單路顯示按鍵ucharkey_numb=0;//顯示那一路標志位uinth; ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};//小數點部分對應表ucharcodedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//共陽數碼管段碼表“0-9,不亮,-”ucharcodescan_con[4]={0xfe,0xfd,0xfb,0xf7};//數碼管位選uchardatatemp_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//中間量存放uchardisplay[5]={0x00,0x00,0x00,0x00,0x00};//顯示變量//延時函數余額11usvoiddelay(uintt){for(;t>0;t--);}/*************1msdelay**********/delay1ms(uintt){uinti,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}//顯示函數scan(){chark;for(k=0;k<4;k++){Disdata=dis_7[display[k]];if(m==1){DIN=1; }elseif(k==1){DIN=0; }discan=scan_con[k];delay(90);discan=0xff;}}//DS18B20復位函數ow_reset1(void)//第1位DS18B20的復位函數{charpre=1;while(pre){while(pre){DQ1=1;_nop_();_nop_(); DQ1=0; delay(50); DQ1=1; delay(6); pre=DQ1;}delay(45);pre=~DQ1;}DQ1=1;}ow_reset2(void)//第2位DS18B20的復位函數{charpre=1;while(pre){while(pre){DQ2=1;_nop_();_nop_(); DQ2=0; delay(50); DQ2=1; delay(6); pre=DQ2;}delay(45);pre=~DQ2;}DQ2=1;}ow_reset3(void)//第3位DS18B20的復位函數{charpre=1;while(pre){while(pre){DQ3=1;_nop_();_nop_(); DQ3=0; delay(50); DQ3=1; delay(6); pre=DQ3;}delay(45);pre=~DQ3;}DQ3=1;}ow_reset4(void)//第4位DS18B20的復位函數{charpre=1;while(pre){while(pre){DQ4=1;_nop_();_nop_(); DQ4=0; delay(50); DQ4=1; delay(6); pre=DQ4;}delay(45);pre=~DQ4;}DQ4=1;}//DS18B20寫命令函數voidwrite_byte1(ucharval)//第1位DS18B20的寫命令函數{uchari;for(i=8;i>0;i--){DQ1=1;_nop_();_nop_();DQ1=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ1=val&0x01;delay(6);val=val/2;}DQ1=1;delay(1);}voidwrite_byte2(ucharval)//第2位DS18B20的寫命令函數{uchari;for(i=8;i>0;i--){DQ2=1;_nop_();_nop_();DQ2=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ2=val&0x01;delay(6);val=val/2;}DQ2=1;delay(1);}voidwrite_byte3(ucharval)//第3位DS18B20的寫命令函數{uchari;for(i=8;i>0;i--){DQ3=1;_nop_();_nop_();DQ3=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ3=val&0x01;delay(6);val=val/2;}DQ3=1;delay(1);}voidwrite_byte4(ucharval)//第4位DS18B20的寫命令函數{uchari;for(i=8;i>0;i--){DQ4=1;_nop_();_nop_();DQ4=0;_nop_();_nop_();_nop_();_nop_();_nop_();DQ4=val&0x01;delay(6);val=val/2;}DQ4=1;delay(1);}////DS18B20讀1字節函數ucharread_byte1(void)//第1位DS18B20的讀1字節函數{uchari;ucharvalue=0;for(i=8;i>0;i--){DQ1=1;_nop_();_nop_();value>>=1;DQ1=0;_nop_();_nop_();_nop_();_nop_();DQ1=1;_nop_();_nop_();_nop_();_nop_();if(DQ1){value|=0x80;}delay(6);}DQ1=1;return(value);}//ucharread_byte2(void)//第2位DS18B20的讀1字節函數{uchari;ucharvalue=0;for(i=8;i>0;i--){DQ2=1;_nop_();_nop_();value>>=1;DQ2=0;_nop_();_nop_();_nop_();_nop_();DQ2=1;_nop_();_nop_();_nop_();_nop_();if(DQ2){value|=0x80;}delay(6);}DQ2=1;return(value);}//ucharread_byte3(void)//第3位DS18B20的讀1字節函數{uchari;ucharvalue=0;for(i=8;i>0;i--){DQ3=1;_nop_();_nop_();value>>=1;DQ3=0;_nop_();_nop_();_nop_();_nop_();DQ3=1;_nop_();_nop_();_nop_();_nop_();if(DQ3){value|=0x80;}delay(6);}DQ3=1;return(value);}////ucharread_byte4(void)//第4位DS18B20的讀1字節函數{uchari;ucharvalue=0;for(i=8;i>0;i--){DQ4=1;_nop_();_nop_();value>>=1;DQ4=0;_nop_();_nop_();_nop_();_nop_();DQ4=1;_nop_();_nop_();_nop_();_nop_();if(DQ4){value|=0x80;}delay(6);}DQ4=1;return(value);}//讀出溫度函數read_temp1()//第1位DS18B20的讀出溫度函數{ow_reset1();write_byte1(0xCC);//SkipROMwrite_byte1(0xBE);//讀取內容命令temp_data[0]=read_byte1();temp_data[1]=read_byte1();ow_reset1();write_byte1(0xCC);write_byte1(0x44);//溫度轉換命令}//read_temp2()//第2位DS18B20的讀出溫度函數{ow_reset2();write_byte2(0xCC);write_byte2(0xBE);temp_data[2]=read_byte2();temp_data[3]=read_byte2();ow_reset2();write_byte2(0xCC);write_byte2(0x44);}//read_temp3()//第3位DS18B20的讀出溫度函數{ow_reset3();write_byte3(0xCC);write_byte3(0xBE);temp_data[4]=read_byte3();temp_data[5]=read_byte3();ow_reset3();write_byte3(0xCC);write_byte3(0x44);}//read_temp4()//第4位DS18B20的讀出溫度函數{ow_reset4();write_byte4(0xCC);write_byte4(0xBE);temp_data[6]=read_byte4();temp_data[7]=read_byte4();ow_reset4();write_byte4(0xCC);write_byte4(0x44);}////溫度數據處理函數work_temp1()//第1位DS18B20的溫度數據處理函數{ucharn=0;if(temp_data[1]>127){temp_data[1]=256-temp_data[1];temp_data[0]=256-temp_data[0];n=1;}display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];//小數display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);if(display[4]>t_high||display[4]<t_low)//超過t_high,低于t_low,報警{BELL=1;}display[3]=display[4]/100;if(display[3])//超過100度,只顯示整數部分,并報警{display[2]=display[3];display[0]=display[4]%100;display[1]=display[0]/10;display[0]=display[0]%10;m=1;}if(n)//低于0度,顯示"-"和2位整數部分,并報警{display[2]=0x0B;display[0]=display[4]%100;display[1]=display[0]/10;display[0]=display[0]%10;m=1;}display[1]=display[4]%100;display[2]=display[1]/10;display[1]=display[1]%10;display[3]=1;//最高位顯示測量點序號if(!display[2])//最高位是0,不顯示{display[2]=0x0A;}}//work_temp2()//第2位DS18B20的溫度數據處理函數{ucharn=0;if(temp_data[3]>127){temp_data[3]=256-temp_da

溫馨提示

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

評論

0/150

提交評論