水族箱溫度控制系統(tǒng)_第1頁
水族箱溫度控制系統(tǒng)_第2頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、水族箱溫度控制系統(tǒng)(一)系統(tǒng)的概述本系統(tǒng)以AT89C51單片機為控制核心的測控儀,主要是為了對水族箱內(nèi)的溫度控制而設(shè)計的。該測控儀具有檢測精度高、使用簡單、成本較低和工作穩(wěn)定可靠等特點,所以具有一定的應(yīng)用前景。(二)系統(tǒng)的要求本系統(tǒng)通過單片機AT89C51控制,用18B20數(shù)字溫度計采集溫度。通過LCD顯示屏顯示當(dāng)前溫度,當(dāng)溫度高于20°C,馬達將帶動風(fēng)扇的轉(zhuǎn)動,實現(xiàn)自動控制水族箱里的溫度并且隨著溫度每升高2C,馬達的轉(zhuǎn)動速率提高一倍。當(dāng)檢測到的溫度高于25C時,發(fā)出報警信號。本設(shè)計將實現(xiàn)水族箱溫度的自動化控制。用protues軟件繪制電路原理圖,再根據(jù)電路原理圖捍接電路板。捍接的電

2、路板實現(xiàn)溫度的自動化控制。(三)系統(tǒng)的主要模塊1本系統(tǒng)的主要組成部分本系統(tǒng)為一個全自動溫度檢測與控制系統(tǒng),由以下幾個部分組成:AT89C51單片機,溫度檢測,顯示電路,馬達,及報警裝置等組成。組成圖如圖1-1。圖1-1溫度自動控制主要組成部分由圖1-1所示,本系統(tǒng)的核心部分是AT89C51,此芯片是該電路的樞紐。由它先控制著溫度的檢測,用檢測到的溫度實現(xiàn)馬達的自動控制,以及顯示。若檢測到的溫度高于設(shè)定的值,則發(fā)出報警信號。2各部分的功能(1) AT89C51單片機:它是系統(tǒng)的中央處理器,擔(dān)負著系統(tǒng)的控制和運算。(2) 溫度檢測裝置:18B20數(shù)字溫度計對水族箱內(nèi)溫度進行采集,將溫度轉(zhuǎn)換成數(shù)字。

3、(3) 顯示設(shè)備:主要是用于顯示檢測到的水族箱溫度。(4) 馬達:主要用于帶動風(fēng)扇的轉(zhuǎn)動。(5) 報警裝置:產(chǎn)生報警信號。二、系統(tǒng)的硬件組成電路設(shè)計系統(tǒng)的硬件組成部分包括:主控制器AT89C51單片機、溫度傳感器DS18B20、顯示電路LED、馬達、報警裝置等構(gòu)成oAT89C51連接各模塊的主控制端口,初步選定將要運用到的電子元器件,再用Protues繪制原理圖,再根據(jù)原理圖捍接電路板。(一) 系統(tǒng)總硬件設(shè)計首先對硬件系統(tǒng)18B20定義端口為P2.0,P2.1,P2.2和P0口控制LCD的顯示,定義端口P1.5為馬達控制端口,P1.7為發(fā)光二極管控制端口。首先對溫度采集,將采集到的溫度轉(zhuǎn)換數(shù)字

4、,采集到的溫度由LCD顯示屏顯示。再將采集到的溫度所屬軟件設(shè)置的哪個范圍,而控制P1.5的電平輸出。電路原理圖如2-1所示:C1CRYSTALll1nF+88.8Q1NPN29303112JE1""567LED-BLU8LCD1LM016L189XTAL1XTAL2RSTPSENALEEAU2SW74-46a孑no1U7QO6E5rtm0-892a40Sn32P1.0P1.1P1.2P1.3P1.4P1.5P1.6AT89C51P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.

5、1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR13141516 77IR2f4.7k'HVCCDQGNDDS18B20RESPACK-82-1電路原理圖電路原理圖用Protues軟件繪制而成。用Protues軟件繪制電路原理圖方便,快捷。Protues軟件有豐富的元件庫,智能的器件搜索,智能化的連線,可輸出高質(zhì)量的圖紙。電路原理圖清晰明了。(二)時鐘電路AT89C51芯片內(nèi)部有一個高增益反向放大器,用于構(gòu)成震蕩器。反向放

6、大器的輸入端為XTAL1,輸出端為XTAL2。在TXAL1和XTAL2兩端跨接由石英晶體及兩個電容構(gòu)成的自激震蕩器,如圖2-2所示。電容器C1和C2取22pF,選用不同的電容量對震蕩頻率有微調(diào)作用。但石英晶體本身的標(biāo)定頻率才是單片機震蕩頻率的決定因素。21圖2-2時鐘電路時鐘電路中,兩個電容都選擇22pF的電容,電容各一端接與晶振相連,各一端接地。選擇的晶振是頻率為12MHZ。此模塊就是產(chǎn)生象時鐘一樣準(zhǔn)確的振蕩電路。(三)AT89C51的復(fù)位電路AT89C51單片機通常采用上電自動復(fù)位和開關(guān)手動復(fù)位兩種方式。本系統(tǒng)采用上電復(fù)位電路,如圖2-3所示,所謂上電復(fù)位,是指單片機只要一上電,便自動地進

7、入復(fù)位狀態(tài)。在通電瞬間,電容C通過電阻R充電,RST端出現(xiàn)正脈沖,用以復(fù)位。22pF10kC3RST1nF30-PSENALEEA圖2-3復(fù)位電路復(fù)位電路的基本功能是:系統(tǒng)上電時提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。RC復(fù)位電路可以實現(xiàn)上述基本功能,但解決不了電源毛刺和電源緩慢下降等問題,而其調(diào)整RC常數(shù)改變延時會令驅(qū)動能力變差。(四)單總線數(shù)字溫度傳感器DS18B20檢測電路DQ為數(shù)據(jù)輸入/輸出引腳,連接P3.3。開漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電

8、源,GND為地信號;VCC為電源信號。圖2-4為DS18B20檢測電路。P2.3/A11P2.4/A12P2.5/A13-25AFP2.6/A14P2.7/A1527-281R2P3.0/RXDP3.17TXDP3.2/INT0P33/INT1J4.7kU2123VCCDQGND132P3.4/T0P3.5/I1141115P3.6/WR16DS18B20圖2-4DS18B20檢測電路(五)LCD顯示模塊用AT89C51的P0口作為數(shù)據(jù)線,用P2.0、P2.1、P2.2分別作為LCD的4、5、6。其中4是下降沿觸發(fā)的片選信號,連接P2.0,5是讀寫信號,連接P2.1,6是寄存器選擇信號,連接P

9、2.2。圖2-5為LCD的硬件連接。SEN|6E4.7kPO.O/ADOP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9LCD1LM016L1P2.3/A1139d038d137d236d335d434d533d632d721RS22RW24RP119d7RESPACK-8圖2-5LCD的硬件連接(六)驅(qū)動電路系統(tǒng)使用的是直流馬達,包含周圍磁場、電刷、整流子等元件,電刷和整流子將外部所供應(yīng)的直流電源,持續(xù)地供應(yīng)給轉(zhuǎn)子的線圈,並適時地改變電流的方向,使轉(zhuǎn)子能以同一方向持續(xù)旋轉(zhuǎn)。直流馬達的優(yōu)點有速度調(diào)整容易

10、,啟動轉(zhuǎn)矩較大等,但是電刷與整流子保養(yǎng)維修不易。圖2-6為硬件連接圖。AT89C51+88.8圖2-6驅(qū)動電路圖中三極管采用的是2N3903,用于放大電流。基極接P1.5口,用于控制輸出信號。集電極按電源正極,發(fā)射極接馬達正極。三極管2N3903三極管最基本的作用是放大作用,它可以把微弱的電信號變成一定強度的信號,當(dāng)然這種轉(zhuǎn)換仍然遵循能量守恒,它只是把電源的能量轉(zhuǎn)換成信號的能量罷了。三極管有一個重要參數(shù)就是電流放大系數(shù)0。當(dāng)三極管的基極上加一個微小的電流時,在集電極上可以得到一個是注入電流0倍的電流,即集電極電流。集電極電流隨基極電流的變化而變化,并且基極電流很小的變化可以引起集電極電流很大的

11、變化,這就是三極管在此處的作用。用于P1.5口輸出的微弱信號經(jīng)過放大,輸出到馬達中,這樣就可以很好的控制馬達了。(七)報警電路系統(tǒng)采用的報警器件是二極管,用引腳P1.7控制。如圖2-7所示LED-BLUE丨7pig®LPAT89C51圖2-7報警電路二極管和普通揚聲器相比,最重要一個特點是只要按照極性要求加上合適的直流電壓,就可以發(fā)出固有頻率的聲音,因此使用起來比揚聲器簡單。三、系統(tǒng)軟件的設(shè)計一個應(yīng)用系統(tǒng)要完成各項功能,首先必須有較完善的硬件做保證。同時還必須得到相應(yīng)設(shè)計合理的軟件的支持,尤其是微機應(yīng)用高速發(fā)展的今天,許多由硬件完成的工作,都可通過軟件編程而代替。甚至有些必須采用很復(fù)

12、雜的硬件電路才能完成的工作,用軟件編和有時會變得很簡單。因此充分利用其內(nèi)部豐富的硬件資源和軟件資源。程序設(shè)計語言有三種:機器語言、匯編語言、高級語言。本系統(tǒng)運用的是高級語言所編寫,也就是C語言。從軟件的功能不同可分為四大類:一是檢測軟件,它是用來檢測溫度。二是顯示部分,用來顯示所檢測到的溫度。三是調(diào)控部分,用來控制馬達的轉(zhuǎn)速。四是當(dāng)溫度大于25°C,二極管發(fā)出報警信號。每一個執(zhí)行軟件也就是一個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義。下圖為軟件設(shè)計流程圖(程序見附錄)。四、總結(jié)通過這次對水族箱溫度自動控制的設(shè)計與制作,讓我自主完成了一個完整的設(shè)計,雖

13、然這次的設(shè)計做的溫度顯示以及馬達的控制都相對比較簡單,但是也給將來進入硬件開發(fā)有了一個起點的基礎(chǔ)。在這次設(shè)計的過程,剛開始的時候,真的有點不知所措,因為學(xué)習(xí)完單片機已有數(shù)日,以及微機原理課程,一些知識已忘記。畫電路原理圖,一開始就覺得有點煩,因為protues軟件安裝的版本較低,做起來非常的費時又費力,一些芯片,還不可以仿真。畫電路圖,自己學(xué)習(xí)捍接板,開始第一個板,沒有捍成功,研究數(shù)日,后來才發(fā)現(xiàn)是一些線路捍接不良導(dǎo)致電路連接出現(xiàn)錯誤。后來重新開始動工,才捍成功。常常有解決不了的問題,就上網(wǎng)查詢,或者閱覽資料書。雖此項工作枯燥無味,但可緞練其意志,耐性,堅韌。因為常會碰到很難解決的問題。所以要

14、堅持不懈。這個程序的軟件程序都是使用C語言編寫的,畢竟使用匯編對于我們來說難度都是比較大啊。這次設(shè)計是一個學(xué)習(xí)新知識、鞏固加深所學(xué)課本理論知識的過程,它培養(yǎng)了我們綜合運用知識的能力,獨立思考和解決問題的能力。它不僅加深了我對單片機技術(shù)課程的理解,還讓我感受到了電子設(shè)計的樂趣。對我來說,這次畢業(yè)設(shè)計是非常有意義的。本系統(tǒng)使用的溫度控制器結(jié)構(gòu)簡單、測溫準(zhǔn)確,具有一定的實際應(yīng)用價值。該智能溫度控制器只是DS18B20在溫度控制領(lǐng)域的一個簡單實例,還是許多需要完善的地方,例如可以將測得的溫度通過單片機與通訊模塊相連接,以手機短消息的方式發(fā)送給用戶,使用戶能夠隨時對溫度進行監(jiān)控。還可以增加對濕度的自主控

15、制。此外,還能廣泛地應(yīng)用于其他一些工業(yè)生產(chǎn)領(lǐng)域。測溫控溫系統(tǒng)得到快速的發(fā)展,國外的測量控制系統(tǒng)已經(jīng)成熟,產(chǎn)品也較多。近兩年,國內(nèi)也出現(xiàn)了許多高精度的溫度控制產(chǎn)品,但相對于用戶來說,價格還是偏高。而由于競爭越來越激烈,現(xiàn)在企業(yè)發(fā)展的趨勢是如何最有效的提高生產(chǎn)效率,降低生產(chǎn)成本。尋求性能可靠、價格低廉,應(yīng)用廣泛的元器件是生產(chǎn)過程的首先要考慮的問題。參考文獻1 謝自美,尹仕,肖看,趙云娣,羅杰電子線路綜合設(shè)計M.武漢:華中科技大學(xué)出版社,2007.2 楊旭方.單片機控制與應(yīng)用實訓(xùn)教程M.北京:電子工業(yè)出版社,2010.5.夏繼強.單片機應(yīng)用設(shè)計培訓(xùn)教程M.北京:北京航空航天大學(xué)出版社,2008.4

16、高峰.單片機微型計算機與接口技術(shù)M.北京:科學(xué)出版社.20035 李廣弟,朱月秀,王秀山.單片機基礎(chǔ)M.北京:北京航空航天大學(xué)出版社,2001.7.6 胡漢才.單片機原理及其接口技術(shù)M.北京:清華大學(xué)出版社,20047求是科技.單片機典型模塊設(shè)計實例導(dǎo)航M.北京:人民郵電出版社,2004王化詳,張淑英.傳感器原理M天津:天津大學(xué)出版社,2002.59王港元.電工電子實踐指導(dǎo)M江西:江西科學(xué)技術(shù)出版社,2005.610楊素行著.模擬電子技術(shù)基礎(chǔ)(第二版)M.北京:高等教育出版社,2006.11陳靜.單片機應(yīng)用系統(tǒng)中的編程語言J.淮北職業(yè)技術(shù)學(xué)院學(xué)報.2009.8(1):43-44.12仝慶華.基

17、于Proteus單片機虛擬實驗室J.山西大同大學(xué)學(xué)報(自然科學(xué)版).2009.25(2):23-25.13包敬海,侯昭武,吳國輝.基于AT89C51單片機設(shè)計智能鍋爐控制系統(tǒng)J.北京中國科技信息.200914周紅麗,張?zhí)扉_等.基于單片機的九路溫度監(jiān)控系統(tǒng)J.青島:微計算機信息.2008.15劉華東,張亞華.單片機原理與應(yīng)用(第二版)M.北京:電子工業(yè)出版社.2006:1-5.致謝畢業(yè)設(shè)計完成了,在這個過程中我學(xué)到了很多東西。首先我要感謝我的導(dǎo)師何子軒老師,他在我完成論文的過程中,給予了我很大的幫助。從畢業(yè)設(shè)計選題到設(shè)計完成,何老師給予了我耐心的指導(dǎo)與細心關(guān)懷。此外,此系統(tǒng)能順利完成,也得到了寢

18、室的朋友的幫忙。有些我不了解的知識,在她們悉心指導(dǎo)下,得已解決。在此,我深表感謝。最后要感謝的是我的父母,他們讓培養(yǎng)了我在遇到困難前,不倒下。讓我在漫長的人生旅途是使心靈有虔敬的歸依。在未來的日子里,我會更加努力工作和做一名優(yōu)秀的人。不辜負父母對我的期望。我一定會好好的孝敬和報答他們!附錄A:*名稱:基本單片機AT89C51的水族箱溫度自控系統(tǒng)*/#includevat89c51.h>#include"stdio.h"#include<math.h>#includevintrins.h>#include"lcd1602.h"#de

19、fineucharunsignedchar#defineuintunsignedint;/*定義端口*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/sbitDQ=PM3;dsl8b20端口sbitFan=P1A5;/風(fēng)扇端口sbitTru=P1A

20、7;喇叭的端口sfrdataled=0x80;顯示數(shù)據(jù)端口/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/*全局變量*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#

21、J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/uinttemp,i,TempH;ucharflag_get,count,num,minute,second,x;longstr6;/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J

22、*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/*函數(shù)聲明*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*

23、#J*#J*/voiddelay1(ucharMS);unsignedintReadTemperature(void);voidInit_DS18B20(void);unsignedcharReadOneChar(void);voidWriteOneChar(unsignedchardat);voiddelay(unsignedinti);/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J

24、*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/*/*延時函數(shù)聲明/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/voidmDelay(unsignedc

25、harj)unsignedinti;for(;j>O;j-)for(i=0;iv125;i+);/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/*主函數(shù)*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#

26、J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/main()unsignedcharTempH,TempL;TMODI=0x01;定時器設(shè)置THO=Oxef;TLO=OxfO;IE=0x82;TRO=1;P2=0x00;count=0;InitLcd();mDelay(20);while(1)Fan=1;mDelay(10);Tru=

27、1;mDelay(10);if(TempH>20)&&(TempHv=25)Fan=0;mDelay(10);if(TempH>25)產(chǎn)生報警信號Tru=0;mDelay(10);Fan=0;mDelay(150);for(i=1;iv5;i+)Temi=stri;disp();strO=TempH/1OO;/十位溫度str1=(TempH%1OO)/1O;十位溫度str2=(TempH%100)%10;/個位溫度,帶小數(shù)點str3=TempL;if(flag_get=1)定時讀取當(dāng)前溫度temp=ReadTemperature();if(temp&0x80

28、00)一str0=0x40;負號標(biāo)志temp=temp;/取反加1temp+=1;elsestrO=O;TempH=temp>>4;TempL=temp&0xOF;TempL=TempL*6/10;小、數(shù)近似處理flag_get=0;/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#

29、J*#J*#J*#J*#J*#J*#J*#J*#J*/*定時器中斷*/voidtim(void)interrupt1using1/中斷,用于溫度檢測間隔TH0=0xef;定時器重裝值TL0=0xf0;num+;if(num=50)num=0;flag_get=1;/標(biāo)志位有效second+;if(second>=60)second=0;/*延時函數(shù)*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*

30、#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/voiddelay(unsignedinti)延時函數(shù)while(i_);/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*

31、#J*#J*#J*#J*#J*/*初始化*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/voidInit_DS18B20(void)unsignedcharx=0;DQ=1;DQ復(fù)位delay(8);稍做延時DQ=0;單片機將DQ拉低delay(

32、80);/精確延時大于480usDQ=1;拉高總線delay(lO);x=DQ;稍做延時后如果x=0則初始化成功x=1則初始化失敗delay(5);/*讀一個字節(jié)*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/unsignedcharReadOn

33、eChar(void)unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i_)DQ=0;/給脈沖信號dat>>=1;DQ=1;/給脈沖信號if(DQ)datl=0x80;delay(5);return(dat);/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#

34、J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/*寫一個字節(jié)*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/voidWriteOneChar(unsignedchardat)unsignedchari=0;for(i=8;

35、i>0;i-)DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat>>=1;delay(5);/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/*讀取溫度*/#J*#J*#J*#J*#J*#J*#J*#J*#

36、J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/unsignedintReadTemperature(void)unsignedchara=0;unsignedintb=0;unsignedintt=0;Init_DS18B20();WriteOneChar(OxCC);/跳過讀序號列號的操作Wri

37、teOneChar(Ox44);/啟動溫度轉(zhuǎn)換delay(200);Init_DS18B20();WriteOneChar(OxCC);跳過讀序號列號的操作WriteOneChar(OxBE);讀取溫度寄存器等(共可讀9個寄存器)前兩個就是溫度a=ReadOneChar();低位b=ReadOneChar();高位b<<=8;t=a+b;return(t);附錄B#includevat89c51.h>#includevstdio.h>#includevintrins.h>sbitRS=P2A0;/Pin4sbitRW=P2A1;/Pin5sbitE=P2A2;/P

38、in6#defineDataP0數(shù)據(jù)端口unsignedcharTem5;unsignedcharSecondLine="unsignedcharFirstLine="unsignedchartime="/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J

39、*#J*#J*#J*#J*#J*/*函數(shù)聲明*/#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*#J*/voidDelayUs(unsignedcharus)/delayusunsignedcharuscnt;uscnt=us>>l;/*Crystalfrequencyin12MHz*/while(-uscnt);voidDelayMs(unsignedcharms)/delayMswhile(-ms)DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250);voidWriteCommand(unsignedcharc

溫馨提示

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

最新文檔

評論

0/150

提交評論