恒溫箱溫度計算機(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頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機(jī)控制系統(tǒng)設(shè)計報告 設(shè)計名稱: 恒溫箱溫度計算機(jī)控制系統(tǒng)設(shè)計 姓 名: 學(xué) 號: 班 級: 學(xué) 院: 信息工程學(xué)院 任課教師: 基于單片機(jī)的恒溫箱控制系統(tǒng)設(shè)計 摘要: 本設(shè)計是基于AT89S52單片機(jī)的恒溫箱控制系統(tǒng),系統(tǒng)分為硬件和軟件兩部分,其中硬件包括:電源、溫度傳感器、顯示、控制、晶閘管驅(qū)動和報警的設(shè)計;軟件包括:鍵盤管理程序設(shè)計、顯示程序設(shè)計、PID控制程序設(shè)計和溫度報警程序設(shè)計。編寫程序結(jié)合硬件進(jìn)行調(diào)試,能夠?qū)崿F(xiàn)設(shè)置和調(diào)節(jié)初始溫度值,進(jìn)行液晶顯示,當(dāng)加熱到設(shè)定值后立刻報警。本設(shè)計從實際應(yīng)用出發(fā)選取了體積小、精度相對高的數(shù)字式溫度傳感元件DS18B20作為溫度采集器,單片機(jī)AT89

2、S52為主控芯片,液晶作為顯示輸出,實現(xiàn)了對溫度的實時測量與恒定控制。關(guān)鍵詞:單片機(jī)、溫度傳感器、恒溫、聲光報警、PID。引言: 溫度控制是工業(yè)生產(chǎn)過程中經(jīng)常遇到的過程控制,特別是在冶金、化工、建材、食品、機(jī)械、石油等工業(yè)中,具有舉足重輕的作用,其溫度的控制效果直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計一種較為理想的溫度控制系統(tǒng)是非常有價值的。對于不同場所、不同工藝、所需溫度高低范圍不同、精度不同,則采用的測溫元件、測溫方法以及對溫度的控制方法也將不同;產(chǎn)品工藝不同、控制溫度的精度不同、時效不同,則對數(shù)據(jù)采集的精度和采用的控制算法也不同。因而,對溫度的測控方法多種多樣。隨著電子技術(shù)和微型計算機(jī)的迅速發(fā)展,

3、微機(jī)測量和控制技術(shù)也得到了迅速的發(fā)展和廣泛的應(yīng)用。利用微機(jī)對溫度進(jìn)行測控的技術(shù),也便隨之而生,并得到日益發(fā)展和完善,越來越顯示出其優(yōu)越性。然而現(xiàn)有的溫度傳感元件大多為模擬器件(熱電耦)體積大、應(yīng)用復(fù)雜、而且不容易實現(xiàn)數(shù)字化等缺點,阻礙了應(yīng)用領(lǐng)域的擴(kuò)展。本設(shè)計從實際應(yīng)用出發(fā)選取了體積小、精度相對高的數(shù)字式溫度傳感元件DS18B20作為溫度采集器,單片機(jī)AT89S52作為主控芯片,數(shù)碼管作為顯示輸出,實現(xiàn)了對溫度的實時測量與恒定控制。本課題設(shè)計要求 如下圖所示,恒溫箱采用木箱或紙箱(外形尺寸不大于30cm30cm30cm),內(nèi)置白熾燈泡(功率不大于100W)用于加熱。30cm30cm木箱或紙箱白熾

4、燈泡100W 自制恒溫箱要求(1)溫度采集傳感器采用熱電阻或熱電偶,或一體化數(shù)字溫度傳感器DS18B20。(2)控制燈泡亮度或發(fā)熱量,采用可控硅平滑控制。(3)采用單片機(jī)作為控制器。(4)采用LCD的液晶顯示器作為顯示器,同時顯示給定溫度和實際溫度。(5)采用自制按鍵的鍵盤作為溫度給定值輸入。(6)恒溫箱實際溫度達(dá)到給定值時(誤差要求1)需聲光提示,聲音延時5秒后停止。(7)恒溫箱最高溫度50。二、總體方案設(shè)計系統(tǒng)整體框圖如下圖: 圖1 系統(tǒng)結(jié)構(gòu)框圖首先是電源模塊,利用變壓器把220V的交流電轉(zhuǎn)為正負(fù)12V的交流電,再用二極管橋式整流電路,整流出直流電。之后用大電容平波,小電容濾波,之后在用7

5、805穩(wěn)壓芯片穩(wěn)出5V的直流電,供給各個部分。其次是單片機(jī)的外圍電路,其中包括有單片機(jī)最小系統(tǒng)、LCD顯示、按鍵、晶閘管控制電路以及溫度采集電路。2.溫度傳感器方案一:使用熱敏電阻作為傳感器,用熱敏電阻與一個相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進(jìn)行A/D轉(zhuǎn)換,此設(shè)計方案需要A/D轉(zhuǎn)換電路,增加了硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán)格性的,會產(chǎn)生較大的測量誤差。方案二:采用溫度傳感器鉑電阻 Pt1000。鉑熱電阻的物理化學(xué)性能在高溫和氧化性介質(zhì)中很穩(wěn)定,它能用作工業(yè)測溫元件,且此元件線性較好。在 0100 攝氏度時,最大非線性偏差小

6、于 0.5 攝氏度。鉑熱電阻與溫度關(guān)系是,Rt = R0(1+At+Bt) ;其中 Rt 是溫度為 t 攝氏度時的電阻;R0 是溫度為 0 攝氏度時的電阻;t 為任意溫度值,A,B 為溫度系數(shù)。方案三:采用模擬溫度傳感器AD590K,AD590K具有較高精度和重復(fù)性(重復(fù)性優(yōu)于0.1),其良好的非線性可以保證優(yōu)于0.1的測量精度。但其測量的值需要經(jīng)過運算放大、模數(shù)轉(zhuǎn)換再傳給單片機(jī),硬件電路較復(fù)雜,調(diào)試也會相對困難,所以本系統(tǒng)不宜采用此法。 方案四:采用數(shù)字式溫度傳感器DS18B20,此類傳感器為數(shù)字式傳感器,而且僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以去除A/D模塊,降低了硬件成本

7、,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高,測量范圍廣等優(yōu)點。綜合以上四種方案,本設(shè)計采用第四種方案,利用數(shù)字溫度計DS18B20作為溫度傳感器。3.顯示部分方案一:溫度的顯示可以用數(shù)碼管,但數(shù)碼管只能顯示簡單的數(shù)字,它有電路復(fù)雜,占用資源較多,顯示信息少等缺點。方案二:1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。顯示字母和數(shù)字比較方便,控制簡單,成本較低。我們設(shè)計的系統(tǒng)需要顯示更多的信息,所以考慮顯示功能更好的液晶顯示,要求能顯示更多的數(shù)據(jù),增強(qiáng)顯示信息的可讀性,看起來更方便。綜合以上兩種方案,本設(shè)計采用方案二,用1602液晶顯示器

8、來顯示數(shù)據(jù)。4.輸出控制方案一:采用繼電器,易于控制,且實行比較簡單,但強(qiáng)電和弱電不能很好的隔離,抗干擾能力極差,開關(guān)頻率不能太高,燈泡會一直閃爍。方案二:采用固態(tài)繼電器,易于控制,電路簡單,但需要PWM波來進(jìn)行控制,普通51單片機(jī)無PWM口,故不采用此法。方案三:采用晶閘管,控制信號與輸出信號可以很好的隔離,增強(qiáng)了系統(tǒng)的安全性和抗干擾能力。綜合以上三種方案,本設(shè)計采用晶閘管控制負(fù)載工作。三、硬件電路設(shè)計及工作原理1.系統(tǒng)功能及工作流程介紹根據(jù)恒溫箱控制器的功能要求,并結(jié)合對51系列單片機(jī)的資源分析,即單片機(jī)軟件編程自由度大,可用編程實現(xiàn)各種控制算法和邏輯控制。所以采用AT89C52作為電路系

9、統(tǒng)的控制核心。恒溫箱控制器的總體布局如圖1所示。按鍵將設(shè)置好的溫度值傳給單片機(jī),通過溫度顯示模塊顯示出來。初始溫度設(shè)置好后,單片機(jī)開啟輸出控制模塊,使電熱器開始加熱,同時將從數(shù)字溫度傳感器DS18B20測量到的溫度值實時的顯示出來,當(dāng)加熱到設(shè)定溫度值時,單片機(jī)控制聲光報警模塊,發(fā)出聲光報警,當(dāng)超過設(shè)置溫度關(guān)閉加熱器。當(dāng)自然冷卻到設(shè)定溫度以下時,單片機(jī)再次啟動加熱器,如此循環(huán)反復(fù),以達(dá)到恒溫控制的目的。系統(tǒng)結(jié)構(gòu)框圖如圖1所示,系統(tǒng)基本硬件電路圖如圖2所示。 圖2 基本硬件電路圖系統(tǒng)硬件設(shè)計(1)DS18B20測溫電路DS18B20數(shù)字溫度計是Dallas公司生產(chǎn)的1Wire器件 HYPERLIN

10、K :/ mcu99 ,即單總線器件。與傳統(tǒng)的熱敏電阻有所不同,DS18B20可直接將被測溫度轉(zhuǎn)化成串行數(shù)字信號,以供單片機(jī)處理,具有連線簡單、微型化、低功耗、高性能、抗干擾能力強(qiáng)、精度高等特點。因此用它來組成一個測溫系統(tǒng),具有電路簡單,在一根通信線上可以掛很多這樣的數(shù)字溫度計,十分方便。目前已被眾多行業(yè)進(jìn)行廣泛的運用(鍋爐、溫控表糧庫、冷庫、工業(yè)現(xiàn)場溫度監(jiān)控、儀器儀表溫度監(jiān)控、農(nóng)業(yè)大棚溫度監(jiān)控等)。通過編程,DS18B20可以實現(xiàn)912位的溫度讀數(shù)。信息經(jīng)過單線接口送入DS18B20或從DS18B20送出,因此從微處理器到DS18B20僅需連接一條信號線和地線。讀、寫和執(zhí)行溫度變換所需的電源

11、可以由數(shù)據(jù)線本身提供,而不需要外部電源。每片DS18B20在出廠時都設(shè)有唯一的產(chǎn)品序列號,因此多個DS18B20可以掛接于同一條單線總線上,這允許在許多不同的地方放置溫度傳感器,特別適合于構(gòu)成多點溫度測控系統(tǒng)由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S52單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對DS18B20芯片的訪問。1Wire總線支持一主多從式結(jié)構(gòu),硬件上需外接上拉電阻。當(dāng)一方完成數(shù)據(jù)通信需要釋放總線時,只需將總線置高點平即可;若需要獲得總線進(jìn)行通信時則要監(jiān)視總線是否空閑,若空閑,

12、則置低電平獲得總線控制權(quán)。 圖3 DS18B20測溫電路(2)輸出控制電路加熱電路中采用MOC3023的目的是實現(xiàn)強(qiáng)電與弱電的隔離,其在電路中的工作原理是單片機(jī)根據(jù)傳感器和設(shè)定開關(guān)輸入的控制指令,控制電器的電源通斷。BTA16是小型塑封雙向晶閘管,當(dāng)電源控制電路的輸出管腳送出的開關(guān)控制指令為高電平,MOC3023截止,BTA16截止,電器被關(guān)閉;當(dāng)電源控制電路送出的開關(guān)控制指令為低電平,MOC3023導(dǎo)通,BTA16導(dǎo)通,電器被打開。R4是BTA16的保護(hù)電路。 圖4 光耦控制輸出(3)顯示電路1602液晶也叫1602字符型液晶 它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊 它有若干

13、個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符。顯示電路采用LCD1602液晶顯示,如圖(7)所示,圖中只畫出了其相應(yīng)的接口,3腳用于調(diào)節(jié)LCD1602的背光,4、5、6為LCD1602的控制口,用于控制其寫入或是讀出指令,7至14腳為LCD1602的數(shù)據(jù)口,將數(shù)傳送到LCD1602中。 圖5 LCD1602顯示電路LCD1602的特性:+5V電壓,對比度可調(diào);內(nèi)含復(fù)位電路;提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能;有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM;內(nèi)建有160個5X7點陣的字型的字符發(fā)生器CGROM,8個可由用戶自定義的5X7的字符發(fā)生器C

14、GRAM;基本操作時序: 讀狀態(tài):輸入:RS=L,RW=H,E=H;輸出:DB0DB7=狀態(tài)字 ;寫指令:輸入:RS=L,RW=L,E=下降沿脈沖,DB0DB7=指令碼 ;輸出:無。讀數(shù)據(jù):輸入:RS=H,RW=H,E=H;輸出:DB0DB7=數(shù)據(jù) ;寫數(shù)據(jù):輸入:RS=H,RW=L,E=下降沿脈沖,DB0DB7=數(shù)據(jù) ;輸出:無。LCD1602的各種指令不再一一說明。(4)溫度越線報警電路報警電路如圖8所示,該電路采用一個小功率三極管Q1驅(qū)動蜂鳴器BELL,當(dāng)單片機(jī)接收到超額溫度信號或危險信號時,輸出腳BELL輸出高點平,Q1導(dǎo)通,致使蜂鳴器BELL得電工作,發(fā)出報警聲。同時,電路中的發(fā)光二

15、極管指示出電路的工作狀態(tài)。 圖6 報警電路 (5)過零檢測 TLP521-2是一個內(nèi)部集成兩個光耦的芯片,主要用于過零檢測,當(dāng)電源的正弦交流電過零時,在三極管的集電極的會產(chǎn)生一個下降沿和一個上升沿,這樣單片機(jī)的外部中斷口可以識別到,最終用于控制晶閘管的導(dǎo)通角。圖7過零檢測電路四、系統(tǒng)的應(yīng)用軟件設(shè)計軟件描述本程序的主要功能就是控制晶閘管的導(dǎo)通角,來控制白熾燈的亮度,最終達(dá)到控制溫度的目的。設(shè)置有兩個按鍵,一個按鍵可以增加期望溫度,另一個可以減少期望溫度,步進(jìn)最小是攝氏度。有一個LCD顯示屏,可以顯示當(dāng)前溫度和期望,當(dāng)實際溫度達(dá)到期望溫度時,蜂鳴器和LED燈報警5s后停止。運用的控制策略是PID算

16、法,PID算法的精華之處就是利用偏差進(jìn)行控制。P代表的是比例,這個參數(shù)可是使調(diào)節(jié)更快速,I是積分,這個參數(shù)可以消除穩(wěn)態(tài)誤差,D是微分,可以超前控制。根據(jù)以上對操作和工作過程的分析,程序應(yīng)分為兩個階段:一是通電或復(fù)位后到給定溫度;二是檢測并顯示系統(tǒng)的實時溫度,并根據(jù)檢測的結(jié)果控制電熱器,這時系統(tǒng)不接收鍵盤的輸入。因此,程序可以分為以下幾個功能模塊:溫度設(shè)定和啟動;顯示;溫度檢測;溫度控制以及報警。(1)鍵盤管理模塊當(dāng)通電以后,系統(tǒng)進(jìn)入鍵盤管理狀態(tài),單片機(jī)只接收設(shè)定溫度和啟動。當(dāng)檢測到有鍵閉合時先去除抖動,這里采用軟件延時的方法,延時一段時間后,再確定是否有鍵閉合,然后將設(shè)定好的值送入預(yù)置溫度數(shù)據(jù)

17、區(qū),并調(diào)用溫度合法檢測報警程序,當(dāng)設(shè)定溫度超過最大值時就會報警,最后當(dāng)啟動鍵閉合時啟動加熱。鍵盤設(shè)定:用于溫度設(shè)定。共兩個按鍵。 KEY1(P3.6): 設(shè)置溫度“+”。KEY2(P3.7): 設(shè)置溫度“-”。 (2)顯示模塊顯示子程序的功能是將緩沖區(qū)的二進(jìn)制數(shù)據(jù)先轉(zhuǎn)換成3個BCD碼,再將其分別存入百位、十位、個位3個顯示緩沖區(qū),送往串行口,利用單片機(jī)的P0口進(jìn)行掃描,讓數(shù)據(jù)動態(tài)的在1602上顯示出來,可顯示設(shè)置溫度和測量溫度。(3)控制模塊溫度控制子程序流程如圖7所示,將當(dāng)前溫度與設(shè)定好的溫度比較,當(dāng)當(dāng)前溫度小于設(shè)定溫度時,開啟電熱器;當(dāng)當(dāng)前溫度大于設(shè)定溫度時,關(guān)閉電熱器;當(dāng)二者相等時,電熱

18、器保持這一狀態(tài)。圖8控制模塊程序流程(4)溫度報警模塊根據(jù)設(shè)計要求,當(dāng)檢測到當(dāng)前溫度值高于設(shè)定溫度值時報警,報警的同時關(guān)閉電熱器。為了防止誤報,設(shè)置了報警允許標(biāo)志,只有在允許報警的情況下,溫度值高于設(shè)定溫度值時才報警。(5)主程序和中斷服務(wù)程序流程主程序采用中斷嵌套方式設(shè)計,各功能模塊可直接調(diào)用。主程序完成系統(tǒng)的初始化,溫度預(yù)置及其合法性檢測,預(yù)置溫度的顯示及定時器0設(shè)置。定時器0中斷服務(wù)子程序是溫度控制體系的主體,用于溫度檢測、控制和報警(包括啟動溫度轉(zhuǎn)換、讀入采樣數(shù)據(jù)、數(shù)字濾波、越限溫度報警和越限處理、輸出控制脈沖等)。 圖9 主程序流程圖 圖10 中斷服務(wù)程序流程圖五、系統(tǒng)調(diào)試與仿真硬件

19、調(diào)試時,可先檢查印制板及焊接的質(zhì)量是否符合要求,有無虛焊點及線路間有無短路、斷路。然后用萬用表檢測,檢查無誤后,可通電檢查 LCD 液晶顯示器亮度情況,一般情況下取背光電壓為 45.5V 即可得到滿意的效果,再依次檢查各部分結(jié)構(gòu)安裝是否牢固。 軟件調(diào)試是在proteus編譯器下進(jìn)行,源程序編譯及仿真調(diào)試應(yīng)分段或以子程序為單位逐個進(jìn)行,最后結(jié)合硬件實時調(diào)試。 子程序調(diào)試包括: 1).LCD1602顯示程序; 2).延時函數(shù)子程序; 3).DS18B20讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計算溫度子程序、顯示數(shù)據(jù)刷新子程序。六、設(shè)計心得這次課程設(shè)計是對過去所學(xué)的知識的一次回顧與鞏固,也是一次特別的

20、實踐能力。通過該次課程設(shè)計,不但培養(yǎng)了我們實踐動手的能力,而且也學(xué)到了很多東西。因為以前學(xué)習(xí)的知識,都是基于理論,就算是實驗課,器材也是學(xué)校已經(jīng)弄好了,我們做實驗基本就是連接線路,也根本了解的不深入。但是,這次的課程設(shè)計,不但要我們自己買器材,更要我們設(shè)計電路、畫出電路圖、畫出PCB、最終焊接成一塊板子,然后調(diào)試板子,板子調(diào)試差不多了就要開始設(shè)計程序了。恒溫箱顧名思義就是要讓溫度基本恒定在一個我們期望的值,所以在設(shè)計程序時,就要想一個算法來控制單片機(jī),使之能夠恒定溫度。當(dāng)然對于這種控制,最好的算法莫過于PID算法,因為此法簡單而有效,工業(yè)上也有很多的應(yīng)用,如果需要更精確的控制,可以在PID的基

21、礎(chǔ)增加一些算法,比如模糊控制、魯棒控制等。 看到完成的課程設(shè)計時,我知道還有一些不足,很多地方需要更進(jìn)一步的改進(jìn),但是我仍然很高興,因為我盡心盡力的將它全部都完成了,我盡到自己最大的努力。雖然還是有很多不懂之處,但是在同學(xué)的幫助下也弄懂了不少。參考文獻(xiàn)(1) 郭天祥,新概念51單片機(jī)c語言教程,電子工業(yè)出版社,2009(2) 陳躍東,DS18B20集成溫度傳感器原理與應(yīng)用J,安徽教育出版社,2002,5-23(3) 李廣弟,單片機(jī)基礎(chǔ)M,北京航空航天大學(xué)出版社,1994,1-56(4) 譚浩強(qiáng),C程序設(shè)計(第二版)M,清華大學(xué)出版社,2003 (5) 付家才,單片機(jī)控制工程實踐技術(shù)M,化學(xué)工業(yè)

22、出版社,2004附錄一 源程序代碼#include/=/=液晶初始化及顯示模塊=/=/sbit RS=P25; /數(shù)據(jù)/命令選擇端sbit RW=P26; /讀/寫選擇端sbit E=P27; /使能端uchar table10=0,1,2,3,4,5,6,7,8,9;/-delay延時函數(shù)void delay1602(int z) int i,j;for(j=z;j=0;j-)for(i=11;i=0;i-); uchar gfReverse_Bits(uchar Data) Data=(Data4); Data=(Data2)&0 x33); Data=(Data1)&0 x55); re

23、turn Data; /-寫com為命令void write_com(uchar com) com=gfReverse_Bits(com); E=0;RS=0; RW=0;P0=com;E=1; delay1602(20);E=0; RS=1;/-寫dat為數(shù)據(jù)void write_dat ( uchar dat )dat=gfReverse_Bits(dat); E=0; RS=1; RW=0;P0=dat;E=1;delay1602(20); E=0; RS=0; /-初始化液晶屏void init_1602()write_com(0 x38);delay1602(50); write_c

24、om(0 x38);write_com(0 x0c);write_com(0 x06);write_com(0 x01);write_com(0 x80);/-液晶顯示函數(shù)/-address為顯示地址:/0 x80-第一行,0 x80+0 x40-第二行/-mean為意義字符串/-value為顯示值/-unit單位字符串void dispaly(uchar address,uchar mean,float value,uchar unit)uchar *pt;int Val;write_com(address);for(pt=mean;*pt!=0;pt+)write_dat(*pt);Val

25、 = (int)(value*10);write_dat(tableVal/100);write_dat(tableVal%100/10);write_dat(.);write_dat(tableVal%10);for(pt=unit;*pt!=0;pt+)write_dat(*pt);void bdispaly(uchar ad,uchar sta)uchar *pp;write_com(ad);for(pp=sta;*pp!=0;pp+)write_dat(*pp);#include/=/=DS18b20模塊初始化=/=/ sbit DQ = P21;/-delayDs18b20延時函數(shù)v

26、oid delayDs18b20(uint i)/延時函數(shù) while(i-);/-18b20初始化函數(shù)void Init_DS18B20(void) DQ = 1; /DQ復(fù)位 delayDs18b20(8); /稍做延時 DQ = 0; /單片機(jī)將DQ拉低 delayDs18b20(80); /精確延時 大于 480us DQ = 1; /拉高總線 delayDs18b20(20);/-讀一個字節(jié)uchar ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DQ = 0; / 給脈沖信號 dat=1; DQ = 1; / 給脈

27、沖信號 if(DQ) dat|=0 x80; delayDs18b20(5); return(dat);/-寫一個字節(jié)void WriteOneChar(uchar dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0 x01; delayDs18b20(5); DQ = 1; dat=1; delayDs18b20(5);/-讀取溫度float ReadTemperature(void)uchar TH=0;uchar TL=0;Init_DS18B20();WriteOneChar(0 xCC); / 跳過讀序號列號的操作WriteOne

28、Char(0 x44); / 啟動溫度轉(zhuǎn)換delayDs18b20(200);Init_DS18B20();WriteOneChar(0 xCC); /跳過讀序號列號的操作 WriteOneChar(0 xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度TL=ReadOneChar();TH=ReadOneChar();return(TH*256+TL)*0.0625);#include/=/=鍵盤延時函數(shù)=/=/void DelayKeyms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-); /=/=鍵盤掃描函數(shù)=/=/sbit

29、 SET=P10;sbit UP=P11;sbit DOWN=P12;sbit OUT=P13;uchar count=1;uchar OutFlag=1;float TempSet=27.0;float temp;/*uchar KeyScan(void)if(Key1=0)DelayKeyms(10);if(Key1=0)while(!Key1);return 1; if(Key2=0)DelayKeyms(10);if(Key2=0)while(!Key2);return 2;if(Key3=0)DelayKeyms(10);if(Key3=0)while(!Key3);return 3

30、;return 0; */void SetKey() /模式選擇 if(SET=0) DelayKeyms(10); if(SET=0) count+; if(count2) count=1; while(SET=0); void UpKey() /按鍵加 if(UP=0) DelayKeyms(10); if(UP=0) switch(count) case 1:temp=TempSet; temp=temp+1; if(temp50.0) temp=20.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp+0.1; if(temp5

31、0.0) temp=20.0; TempSet=temp; break; default:break; while(UP=0); void DownKey() /按鍵減 if(DOWN=0) DelayKeyms(10); if(DOWN=0) switch(count) case 1:temp=TempSet; temp=temp-1; if(temp20.0) temp=50.0; TempSet=temp; break; case 2:temp=TempSet; temp=temp-0.1; if(temp1) OutFlag=0; while(OUT=0); void keyDone(

32、) /按鍵功能執(zhí)行 bdispaly(0 x80,please set Tempset:); dispaly(0 x80+0 x40,Temp_Set:,TempSet,C); SetKey(); switch(count) case 1: UpKey(); DownKey(); dispaly(0 x80+0 x40,Temp_Set:,TempSet,C); break; case 2: UpKey(); DownKey();dispaly(0 x80+0 x40,Temp_Set:,TempSet,C); break; default:break; OutKey(); #includes

33、bit Controlpin=P20;sbit Light=P23;sbit Beep=P22;/=/=延時函數(shù)=/=/void Delayms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-); /=/=主函數(shù)=/=/uchar beepflag=0;uchar Be_LiFlag=0;extern float TempSet;float TempReal=0;uchar ExpectTime=0;void main()/初始化定義/uchar k;float TempNew = 0;/float TempOld1 = 0;/float TempOld2 = 0;init_1602();XInterruptInit();TimerInit();Beep =1;Controlpin=1;EA=0;while(1) /鍵盤數(shù)據(jù)處理 /蜂鳴器報警 OutKey(); while(OutFlag=0) keyDone(); Light=1; beepflag=0; if(TempSet=TempReal&!beepflag) Be_LiFlag+; if(Be_LiFlag=6) Be_LiFlag=0; Beep =0; Light=0; Delayms(

溫馨提示

  • 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

提交評論