恒溫箱溫度計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)報(bào)告_第1頁(yè)
恒溫箱溫度計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)報(bào)告_第2頁(yè)
恒溫箱溫度計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)報(bào)告_第3頁(yè)
恒溫箱溫度計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)報(bào)告_第4頁(yè)
恒溫箱溫度計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

22、出版社,2004附錄一 源程序代碼#include/=/=液晶初始化及顯示模塊=/=/sbit RS=P25; /數(shù)據(jù)/命令選擇端sbit RW=P26; /讀/寫(xiě)選擇端sbit E=P27; /使能端uchar table10=0,1,2,3,4,5,6,7,8,9;/-delay延時(shí)函數(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; /-寫(xiě)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;/-寫(xiě)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í)函數(shù)v

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

27、沖信號(hào) if(DQ) dat|=0 x80; delayDs18b20(5); return(dat);/-寫(xiě)一個(gè)字節(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);/-讀取溫度f(wàn)loat ReadTemperature(void)uchar TH=0;uchar TL=0;Init_DS18B20();WriteOneChar(0 xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOne

28、Char(0 x44); / 啟動(dòng)溫度轉(zhuǎn)換delayDs18b20(200);Init_DS18B20();WriteOneChar(0 xCC); /跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0 xBE); /讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度TL=ReadOneChar();TH=ReadOneChar();return(TH*256+TL)*0.0625);#include/=/=鍵盤(pán)延時(shí)函數(shù)=/=/void DelayKeyms(int z) int i,j;for(j=z;j=0;j-)for(i=110;i=0;i-); /=/=鍵盤(pán)掃描函數(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í)函數(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) /鍵盤(pán)數(shù)據(jù)處理 /蜂鳴器報(bào)警 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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論