紅外遙控多點溫度采集系統畢業設計論文_第1頁
紅外遙控多點溫度采集系統畢業設計論文_第2頁
紅外遙控多點溫度采集系統畢業設計論文_第3頁
紅外遙控多點溫度采集系統畢業設計論文_第4頁
紅外遙控多點溫度采集系統畢業設計論文_第5頁
已閱讀5頁,還剩44頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

鄭州大學本科畢業論文題目紅外遙控多點溫度采集系統

畢業設計(論文)原創性聲明和使用授權說明原創性聲明本人鄭重承諾:所呈交的畢業設計(論文),是我個人在指導教師的指導下進行的研究工作及取得的成果。盡我所知,除文中特別加以標注和致謝的地方外,不包含其他人或組織已經發表或公布過的研究成果,也不包含我為獲得及其它教育機構的學位或學歷而使用過的材料。對本研究提供過幫助和做出過貢獻的個人或集體,均已在文中作了明確的說明并表示了謝意。作者簽名:日期:指導教師簽名:日期:使用授權說明本人完全了解大學關于收集、保存、使用畢業設計(論文)的規定,即:按照學校要求提交畢業設計(論文)的印刷本和電子版本;學校有權保存畢業設計(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務;學校可以采用影印、縮印、數字化或其它復制手段保存論文;在不以贏利為目的前提下,學校可以公布論文的部分或全部內容。作者簽名:日期:

學位論文原創性聲明本人鄭重聲明:所呈交的論文是本人在導師的指導下獨立進行研究所取得的研究成果。除了文中特別加以標注引用的內容外,本論文不包含任何其他個人或集體已經發表或撰寫的成果作品。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式標明。本人完全意識到本聲明的法律后果由本人承擔。作者簽名: 日期:年月日學位論文版權使用授權書本學位論文作者完全了解學校有關保留、使用學位論文的規定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權大學可以將本學位論文的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。涉密論文按學校規定處理。作者簽名: 日期:年月日導師簽名:日期:年月日指導教師評閱書指導教師評價:一、撰寫(設計)過程1、學生在論文(設計)過程中的治學態度、工作精神□優□良□中□及格□不及格2、學生掌握專業知識、技能的扎實程度□優□良□中□及格□不及格3、學生綜合運用所學知識和專業技能分析和解決問題的能力□優□良□中□及格□不及格4、研究方法的科學性;技術線路的可行性;設計方案的合理性□優□良□中□及格□不及格5、完成畢業論文(設計)期間的出勤情況□優□良□中□及格□不及格二、論文(設計)質量1、論文(設計)的整體結構是否符合撰寫規范?□優□良□中□及格□不及格2、是否完成指定的論文(設計)任務(包括裝訂及附件)?□優□良□中□及格□不及格三、論文(設計)水平1、論文(設計)的理論意義或對解決實際問題的指導意義□優□良□中□及格□不及格2、論文的觀念是否有新意?設計是否有創意?□優□良□中□及格□不及格3、論文(設計說明書)所體現的整體水平□優□良□中□及格□不及格建議成績:□優□良□中□及格□不及格(在所選等級前的□內畫“√”)指導教師:(簽名)單位:(蓋章)年月日評閱教師評閱書評閱教師評價:一、論文(設計)質量1、論文(設計)的整體結構是否符合撰寫規范?□優□良□中□及格□不及格2、是否完成指定的論文(設計)任務(包括裝訂及附件)?□優□良□中□及格□不及格二、論文(設計)水平1、論文(設計)的理論意義或對解決實際問題的指導意義□優□良□中□及格□不及格2、論文的觀念是否有新意?設計是否有創意?□優□良□中□及格□不及格3、論文(設計說明書)所體現的整體水平□優□良□中□及格□不及格建議成績:□優□良□中□及格□不及格(在所選等級前的□內畫“√”)評閱教師:(簽名)單位:(蓋章)年月日 PAGEIV教研室(或答辯小組)及教學系意見教研室(或答辯小組)評價:一、答辯過程1、畢業論文(設計)的基本要點和見解的敘述情況□優□良□中□及格□不及格2、對答辯問題的反應、理解、表達情況□優□良□中□及格□不及格3、學生答辯過程中的精神狀態□優□良□中□及格□不及格二、論文(設計)質量1、論文(設計)的整體結構是否符合撰寫規范?□優□良□中□及格□不及格2、是否完成指定的論文(設計)任務(包括裝訂及附件)?□優□良□中□及格□不及格三、論文(設計)水平1、論文(設計)的理論意義或對解決實際問題的指導意義□優□良□中□及格□不及格2、論文的觀念是否有新意?設計是否有創意?□優□良□中□及格□不及格3、論文(設計說明書)所體現的整體水平□優□良□中□及格□不及格評定成績:□優□良□中□及格□不及格(在所選等級前的□內畫“√”)教研室主任(或答辯小組組長):(簽名)年月日教學系意見:系主任:(簽名)年月日

紅外遙控多點溫度采集系統摘要溫度的檢測并報警在現今生產生活和工業控制過程中得到越來越廣泛的應用,要求也越來越高。本設計采用美國Dallas半導體公司推出的DS18B20型溫度傳感器,依據DS18B20的單線協議和一些操作指令,首先讀取每個傳感器的序列號,并確定傳感器對應各點位置關系,由單片機控制循環顯示各點的溫度值。顯示部分采用數碼管,亮度大,更適合遠距離觀察。采用目前廣泛應用的紅外遙控技術,完成各點溫度報警上下限的設置。單片機依據按鍵進行解碼完成相應的操作,并能依據設定的溫度報警上下限做出報警處理。實踐證明該系統工作穩定,成本低廉,操作方便,在現實中有廣泛應用[1]。關鍵詞單片機/DS18B20/紅外遙控/數碼管/多點采集

THESYSTEMOFMULTIPOINTACQUISITIONBASEDONINFRAREDREMOTECONTROLABSTRACTThemeasureandalarmoftemperatureisusedmoreandmoreinmodernproduction,lifeandindustrialprocesscontrolfield.WeuseonedigitalthermometercalledDS18B20producedbyDallasSemiconductorCorporationinAmerica.Accordingtothe1-WireprotocolandsomeoperationcommandswecanreadtheserialnumberofanyDS18B20thenconfirmtherelationoftheDS18B20anditslocation.Controlledbymicrocontrollerthevalueoftemperatureanditslocationwillbedisplayedinacycle.ThemoduleofdisplayuseLED,thenumberisbiggerandlighterthanLCDsoitismoresuitableforalong-distanceobservation.AdoptthetechnologyofRemoteInfraredControlwhichappliedextensivelycurrentlytoachievethedisplayoftemperatureinrandomway.Themicrocontrollerwilldecodethekey-pressandfinishanoperationaccordingtothekey-press.Thefulfillmentprovedthatthesystemworksstably,thecostischeap,theoperationisconvenience,soitwillhaveafar-rangingapplicationinthereality.KEYWORDSMCU,DS18B20,RemoteControl,MultipointTemperaturePAGEIV目錄摘要 IABSTRACT II1緒論 11.1紅外遙控溫度采集系統的應用價值 11.2系統設計的必要性分析 12系統單元模塊介紹 22.1溫度采集模塊 22.1.1溫度傳感器的選擇 22.2DS18B20溫度傳感器 22.2.1DS18B20的特點 22.2.2DS18B20內部結構 32.2.3DS18B20的操作流程 42.2.4DS18B20ROM命令 42.2.5DS18B20存儲器操作命令 42.2.6DS18B20的操作時序 52.3運算控制模塊 62.3.1AT89S52單片機的主要參數及性能 62.3.2AT89S52單片機引腳功能介紹 62.4紅外遙控通信模塊 82.4.1紅外通信簡介 82.4.2紅外編解碼原理 82.5顯示模塊 102.5.1顯示元件介紹 102.5.2數碼管顯示方式 102.6報警模塊 112.6.1蜂鳴器介紹 113系統實現的總體方案 123.1系統設計總體方案 123.2系統實現的具體方法 133.2.1DS18B20序列號的讀取 133.2.2紅外遙控多點溫度采集的實現 134硬件電路設計介 164.1單片機電路 164.1.1單片機復位電路 164.1.2晶振電路 164.1.3單片機串口電路 174.2顯示單元電路 174.3鎖存器連接電路 184.4報警單元電路 184.5DS18B20連接電路 184.6紅外接收電路 194.7系統總體電路原理圖 19結論 20致謝 21參考文獻 22附錄1 23附錄2 24附錄3 26附錄4 34PAGE391緒論1.1紅外遙控溫度采集系統的應用價值溫度檢測并報警在現代的生活、生產特中得到了越來越廣泛的應用,要求也越來越高。近幾年來,許多數字溫度傳感器相繼問世,如AD公司的AD系列溫度傳感器、Dallas半導體公司的DS18B20系列溫度傳感器等,這些新型溫度傳感器的問世大大簡化了溫度檢測裝置的設計方案,穩定性高,并且能夠直接將溫度模擬量轉換為數字量,便于計算機綜合處理。在特殊場合,由于不同的設備對溫度的要求不相同,報警上下限自然也就不同,單點溫度檢測難以實現。用紅外遙控器設置溫度報警上下限電路簡單,工作穩定,操作方便。1.2系統設計的必要性分析目前市場上流行的數字溫度采集系統主要有3類:第一種是儀表式單點數字溫度計,并且基本上都是LCD顯示,不適合夜間觀察,也不具有溫度報警功能,價格比較便宜。第二種是多點溫度計,目前主要用在對局部溫度要求較高的場合,其中很多是進口產品。雖然價格很昂貴,但是仍然沒有紅外遙控操作模塊。由此可見,設計一種紅外遙控多點溫度采集系統,不僅服務了社會,同時又滿足了市場需要,具備一定的經濟價值。2系統單元模塊介紹整個系統主要包括溫度采集模塊,運算控制模塊,紅外遙控通信模塊,數碼管顯示模塊和報警模塊幾部分構成。在進行設計前首先對各個單元模塊的功能進行介紹。2.1溫度采集模塊2.1.1溫度傳感器的選擇溫度傳感器是一種將溫度轉換為電量的裝置。主要分為三大類:第一類是熱電偶。它是將溫度變化轉化為電勢變化的裝置,自19世紀發現熱電效應以來熱電偶被廣泛用于測量100到1600攝氏度的溫度,同時還可以根據需要測量更低或更高的溫度,主要用于高溫測量;第二類是熱電阻。它是將溫度的變化轉換為電阻值的變化。然后通過電橋使電阻兩端的電壓發生變化,主要用于中低溫度的測量;第三類是集成溫度傳感器。它將溫度的變化轉換為電壓或電流的變化。常見的如模擬輸出式溫度傳感器AD590和數字輸出式溫度傳感器DS18B20。其中DS18B20測溫范圍從-50攝氏度到正125攝氏度,每個元件有唯一的序列號,支持多點溫度采集。由于此設計主要用來監控室溫內設備各點的溫度,并且是多點溫度采集,所以選用DS18B20作為溫度傳感器[2]2.2DS18B20溫度傳感器2.2.1DS18B20的特點DS18B20是美國達拉斯半導體公司生產的一款新型可編程分辨率的單線數字溫度傳感器。它有如下特色:1.獨特的一線接口,只要求用一個引腳進行通訊。2.可以進行多點簡化分布式的溫度采集。3.不需要外接任何輔助組件。4.可以從數據在線獲取電壓,電壓的范圍是3~5伏。5.待機狀態下不消耗能量。6.測溫范圍-55-128攝氏度,相當于華氏溫度的-67~+253度。7.在-10到85攝氏度的范圍之內,精確度達到0.5攝氏度。8.溫度分辨力在9位到12位之間可編程。9.把溫度轉換為12位的數字溫度最多只需要750ms。8.具有用戶自定義可變溫度報警設置。還可以進行報警命令的抵制識別,以便確認是那個溫度傳感器發出報警。10.應用的范圍涵蓋溫度控制,工業系統,消費品,溫度計,和任何對熱量敏感的系統DS18B20芯片外形和封裝如圖2-1:圖2-1DS18B20的外形和封裝引腳功能:GND電壓地DQ:單數據總線VDD:電源電壓NC:空引腳2.2.2DS18B20內部結構(1)DS18B20的內部結構如圖2-2:圖2-2DS18B20內部結構圖(2)ROM存儲器用來存放DS18B20的編碼如表2-1:表2-164光刻ROM數據結構8位CRC冗余校驗碼48位序列號8位家族編碼(28H)最高位最低位(3)讀取溫度時,低八位和高八位的詳細數據格式如下表2-2:表2-2溫度數據結構2.2.3DS18B20的操作流程(1)初始化:1-Wire總線上所有的轉換開始于初始化序列。初始化序列是有主機發出復位脈沖和從機發出的應答脈沖組成。應答脈沖使主機知道DS18B20在總線上,并且開始操作。(2)ROM命令:一旦主機檢測到存在脈沖就可以發出五個ROM功能命令其中的一個所有ROM功能命令長度為8位。(3)存儲器命令:在ROM完成之后緊接著有主機發送,以便為數據交換準備。(4)數據交換:通過嚴格的讀寫時序完成[4]。2.2.4DS18B20ROM命令(1)讀ROM[33H]:這個命令允許總線控制器讀到DS18B20的64位ROM。只有當總線上只存在一個DS18B20的時候才可以使用此指令,如果掛接不只一個,當通信時將會發生數據沖突。(2)MatchROM命令[55H]:此條命令發出后,讀取64位ROM數據,允許總線主機讀取總線上特定的DS18B20的。

(3)跳過ROM命令[CCH]:這條指令使芯片不對ROM編碼做出反應,在單總線的情況之下,為了節省時間則可以選用此指令。如果在多芯片掛接時使用此指令將會出現數據沖突,導致錯誤出現。(4)搜索ROM[F0H]:當系統啟動初始化時,總線主機可能不知道的設備的數目,用此條指令通過序列號排除法進行搜索。2.2.5DS18B20存儲器操作命令(1)寫暫存器命令[4EH]:寫入DS18B20時是從TH寄存器開始,另外的三個字節將會被保存在第2到第4的地址單元[5]。(2)讀暫存器命令[BEH]:讀取暫存器中的內容,讀取過程將會從第0個字節開始一直讀到第8個字節。(3)復制暫存器的內容[48H]:把暫存器中的內容復制到EEPROM中,把溫度觸發器B的TH和TL中的內容復制到非易失性儲存單元中。(4)溫度轉換命令[44H]:這條指令用來開啟一次溫度轉換[6]。2.2.6DS18B20的操作時序(1)DS18B20初始化時序如下圖2-3:圖2-3DS18B20初始化時序(2)主機寫時序如下圖2-4:圖2-4主機寫0寫1時序(3)主機讀時序如圖2-5:

圖2-5主機讀0讀1時序編程時必須嚴格按照時序圖,詳細程序見附錄1。2.3運算控制模塊2.3.1AT89S52單片機的主要參數及性能本設計選用被普及使用的性價比很高的微處理器AT89S52作為系統核心,它是一種低功耗、高性能CMOS8位微控制器,具有8K在系統可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術制造,與工業80C51產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統可編程,亦適于常規編程器。在單芯片上,擁有靈巧的8位CPU和在系統可編程Flash,使得AT89S52為眾多嵌入式控制應用系統提供高靈活、超有效的解決方案。它還有256字節RAM,32位I/O口線,看門狗定時器,2個數據指針,三個16位定時器/計數器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89S52可降至0Hz靜態邏輯操作,支持2種軟件可選擇節電模式。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止[7]。2.3.2AT89S52單片機引腳功能介紹(1)AT89S52單片機的引腳分布如下圖2-6:圖2-6AT89S52單片機引腳分布圖(2)單片機的P1附加功能如表2-4,P3附加功能如表2-5。表2-3P1特殊功能引腳號第二功能P1.0T2(外部定時計數器輸入),時鐘輸出P1.1T2EX(定時計數器T2的)捕捉重載觸發信號P1.5MOSI(在線編程系統用)P1.6MISO(在線編程系統用)P1.7SCK(在線系統編程用)表2-4P3特殊功能引腳號第二功能P3.0RXD串行輸入口P3.1TXD串行輸出口P3.2/INT0外部中斷0P3.3/INT1外部中斷1P3.4T0計時器0外部輸入P3.5T1計時器1外部輸入P3.6/WR外部數據存儲器寫選通P3.0/RD外部數據存儲器讀選通2.4紅外遙控通信模塊2.4.1紅外通信簡介紅外線遙控器已被廣泛使用在各種類型的家電產品上,它的出現給使用電器提供了很多的便利。紅外遙控系統一般由紅外發射裝置和紅外接收設備兩大部分組成(如圖2-7)。紅外發射裝置又可由鍵盤電路、紅外編碼芯片、電源和紅外發射電路組成。紅外接收設備可由紅外接收電路、紅外解碼芯片、電源和應用電路組成。通常為了使信號能更好的被傳輸發送端將基帶二進制信號調制為脈沖串信號,通過紅外發射管發射。常用的有通過脈沖寬度來實現信號調制的脈寬調制(PWM)和通過脈沖串之間的時間間隔來實現信號調制的脈時調制(PPM)兩種方法。圖2-7紅外遙控原理簡圖在同一個遙控電路中通常要使用實現不同的遙控功能或區分不同的機器類型,這樣就要求信號按一定的編碼傳送,編碼則會由編碼芯片和相關電路完成。對應于編碼芯片通常會有相配對的解碼芯片或包含解碼模塊的應用芯片。本設計使用集成紅外一體化接收頭1838,內部含有濾波電路和放大電路,大大簡化了紅外接收電路[8]。2.4.2紅外編解碼原理(1)載波波形使用455KHz晶體,經內部分頻電路,信號被調制在37.91KHz,占空比為3分之1調制頻率(晶振使用455KHz時)fCAR=1/Tc=fOSC/12≈38KHzfOSC是晶振頻率占空比=T1/Tc=1/3如下圖2-8:圖2-8紅外載波波形(2)紅外發射數據格式:數據格式包括了引導碼、用戶碼、數據碼和數據碼反碼,編碼總占32位如:圖2-9,數據反碼是數據碼反相后的編碼,編碼時可用于對數據的糾錯。圖2-9紅外發射數據格式本設計使用紅外遙控器的主控芯片TC9012使用455KHz晶振時各代碼所占的時間如圖2-10:圖2-10紅外發射數據時序(3)位定義用戶碼或數據碼中的每一個位可以是位‘1’,也可以是位‘0’。區分‘0’和‘1’是利用脈沖的時間間隔來區分,這種編碼方式稱為脈沖位置調制方式,英文簡寫PPM。脈沖波形如圖2-11,圖2-12:(4)紅外解碼紅外解碼的方式多種多樣,本設計中用單片機解碼。將紅外接收頭的輸出端接在單片機的外部中斷的輸出端,在通過定時器算出兩個下降沿之間的時間,然后判斷所得到的是0或1。再將八個數字進行合并,就得到一組代碼,然后把代碼編碼以完成相應的動作。圖2-11位0時序圖2-12位1時序2.5顯示模塊2.5.1顯示元件介紹目前常用的顯示元件有液晶和數碼管。液晶顯示的字符的種類較多,但是顯示的亮度較低,顯示的數字較小。數碼管顯示數字十分方便,并且亮度較量,適合遠距離的觀察。本設計采用的是簡單的數字顯示,所以采用數碼管顯示,由于顯示的數據位數較多,采用兩個四位的共陽數碼管聯合作為基本顯示單元。數碼管的引腳分布如圖2-13:圖2-13數碼管引腳分布2.5.2數碼管顯示方式數碼管有兩種顯示方式:靜態顯示和動態顯示。靜態顯示電路簡單,只可以顯示固定的數字。動態掃描顯示通過人眼的視覺暫留效應,形成一組數字,但是電路中為了穩定顯示,保證顯示的亮度,節約單片機的IO口,常采用鎖存器74HC573作為輔助元件,控制位選和段選。74HC573鎖存器的引腳分布如圖2-13。圖2-1374HC573引腳分布其中D0-D7是數據輸入端口,Q0-Q7是數據輸出端口,OE是輸出使能端,LE是鎖存使能端,如表2-4(其中的H表示高電平,L表示低電平,X表示無效,Z表示高阻)。表2-574HC573引腳功能表2.6報警模塊2.6.1蜂鳴器介紹蜂鳴器是一種一體化結構的電子訊響器,廣泛應用于計算機、打印機、復印機等電子產品中作發聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。按有無振蕩源可以分為有源蜂鳴器和無源蜂鳴器。不管是壓電式還是電磁式都有有源和無源的差別。蜂鳴器在電路中用字母“H”或“HA”(舊標準用“FM”、“LB”、“JD”等)表示[9]。本設計的報警系統要求不高,只要當溫度在超過報警限時可以發出聲音提示報警即可,所以可以用直流電壓驅動的電磁式有源蜂鳴器。由于單片機IO口的驅動能力有限,蜂鳴器發出的聲音較小,可以用三極管進行電流放大。單片機的輸出端口在正常情況下是高電平,而正常情況下蜂鳴器不發聲,所以選用PNP三極管,并且在基極要加一個限流電阻。詳細的電路圖見硬件電路圖4-6。3系統實現的總體方案3.1系統設計總體方案系統設計的基本要求是在正常情況下,巡回檢測各個點的溫度,由于不止一個溫度傳感器所以第一步就是要知道每個溫度傳感器的序列號,建立每個DS18B20序列號與位置的關系。通過紅外遙控器可以設置每個DS18B20的溫度報警上下限,當達到報警限時可以通過蜂鳴器實現報警。每一種狀態都要在數碼管上有對應的顯示。所以可以用紅外遙控器上的一個鍵設置為總的設置開關,來切換多點溫度巡回檢測和設置溫度報警上下限這兩種最基本的狀態。再用兩個按鍵分別定義為高溫保溫設置鍵和低溫報警設置鍵。當高溫報警設置鍵按下一次,數碼管顯示1號報警上限值,第二次按下,以此類推,第n次按下時將顯示第n號DS18B20的報警上限值。之后按下增加鍵和減少鍵將會對應不同號的DS18B20完成溫度增加和減少的操作。在用紅外遙控器實現人機對話時,要用單片機進行解碼,所以用外部中斷0和定時器0配合實現紅外解碼。用相應的標志位快速記下相關按鍵按下的信息,在主程序中根據相應的標志位完成對應的操作。由于設置了多個溫度報警上下限,所以報警不僅和所測溫度有關還和對應的編號有關。巡回檢測可以啟用定時器1,利用定時器中斷,實現一定的時間間隔,在間隔中對每一點的溫度進行實時的溫度檢測。總如圖3-1。圖3-1系統總體流程圖3.2系統實現的具體方法3.2.1DS18B20序列號的讀取由于是多點溫度的采集,通過前面對溫度傳感器DS18B20的介紹,首先要知道每個DS18B20都有唯一的48位的序列號,多個溫度采集如果不知道對應各個點的序列號,將導致讀取溫度的紊亂,無法讀取溫度數據,所以設計的第一步就是要讀取每個DS18B20的序列號,顯示序列號的方法也很多,但是為了簡便,直接選用今后顯示溫度的八個數碼管,因為每個數碼管內部實際上市8個LED,根據對應段碼的點亮情況,通過正確的譯碼正好顯示一個字節的數據,通過數碼管的動態掃描,即可顯示64位的光刻ROM代碼。對應的流程圖如圖3-2,具體的實現程序見附錄2。圖3-2讀取序列號對應的流程圖3.2.2紅外遙控多點溫度采集的實現在本設計中,用一個紅外遙控按鍵對巡回多點溫度采集和紅外報警設置兩種大的工作狀態進行切換,設計的思路是沒有紅外按鍵按下時,工作在巡回多點溫度采集并顯示的工作狀態。根據設置的需要,定義紅外遙控器上五個按鍵。依次是設置總開關“SET”高溫報警設置開關記為“H”,低溫報警設置開關記為“L”,報警溫度增加鍵記為“ADD”報警溫度減少鍵記為“DEC”。當設置總開關打開后,數碼管上顯示“SETH—L”的字符,提示可以進行設置溫度報警上下限的操作。此后如果沒有按鍵按下將一直顯示此種狀態,如果再按一次“SET”將進入巡回檢測的狀態。如果“H”按下一次,將顯示“H155C”的字符并閃爍,其中的H提示此時設置的是高溫報警溫度,1代表DS18B20的編號,55C表示系統默認的初始溫度值。即可以對1號DS18B20進行報警上限值的設置。如果“H”再按下一次,將會出現“H266C”的字符,表示的意義與前邊一致。如果“H”按下n次將會出現“Hn__C”的字符。之后“ADD”每按下一次將會使報警上限值加1,由于DS18B20的測量上限溫度為125C,故將報警上限溫度設最大限設為122C。當“DEC”按下一次,將會使對應的高溫報警溫度值減1,為了使高溫報警溫度和低溫報警溫度區分開來,設置高溫報警的最低限不會低于低溫報警值,如果低于將顯示低溫報警值。低溫報警設置與其類似,如果“L”按下一次,將顯示“L1-18C”的字符并閃爍,其中的L提示此時設置的是低溫報警溫度,1代表DS18B20的編號,-18C表示系統默認的初始溫度值。即可以對1號DS18B20進行報警上限值的設置。如果“L”再按下一次,將會出現“L2-8C”的字符,表示的意義與前邊一致。如果“L”按下n次將會出現“Ln__C”的字符。之后“ADD”每按下一次將會使低溫報警溫度值加1,為了區分高低溫報警限,設置低溫報警溫度的最大值不得高于高溫報警溫度。“DEC”每按下一次將會使低溫報警溫度值減1,由于DS18B20的測溫下限溫度為-55C,故將報警溫度的最小值設置為-52C。此系統的重點在于狀態轉換,類似狀態機。為了用單片機實現簡單的狀態轉換功能,程序中要正確運用標志位,根據標志的不同組合,完成相應的操作。程序總的流程圖如圖3-4,詳細的主程序程序見附錄3圖3-4紅外遙控多點溫度采集系統流程圖4硬件電路設計介4.1單片機電路4.1.1單片機復位電路圖4-1復位電路為確保微機系統中電路穩定可靠工作,復位電路是必不可少的一部分,復位電路的第一功能是上電復位。一般微機電路正常工作需要供電電源為5V±5%,即4.75~5.25V。穩定工作時,復位信號才被撤除,微機電路開始正常工作。4.1.2晶振電路一般的晶振振蕩有兩個電容分別接到晶振的兩端,每個電容的另一端再接到地,這兩個電容串聯的容量值就應該等于負載電容。圖4-2晶振電路4.1.3單片機串口電路(1)RS-232標準,是一種在數據終端設備(DTE)與數據運載設備(DCE)之間進行串行二進制數據交換的標準,該標準主要應用于計算機端口中。RS232只是眾多標準中的一種。(2)TTL邏輯1和邏輯0的電平分別為+5V和0V。RS-232的邏輯1和邏輯0電平卻分別為-15V和+15V,單片機的I/O口都是依據TTL邏輯電平來設計,而在計算機中編程時的信息是用RS-232標準進行儲存的[10]。所以在進行燒錄程序時需要通過一個電平接口芯片來進行電平的轉換,本設計選用目前廣泛應用的MAX232,其電路連接如圖4-3:圖4-3單片機內部串口與RS232電平轉化電路4.2顯示單元電路圖4-4數碼管連接電路4.3鎖存器連接電路圖4-5鎖存器連接電路4.4報警單元電路圖4-6報警電路4.5DS18B20連接電路圖4-7DS18B20連接電路4.6紅外接收電路圖4-8紅外接收電路其中的R6和C4組成RC濾波電路,使紅外接收頭的工作電壓更為穩定,1838的信號輸出端接上拉電阻R4,放大了輸出信號,使紅外接收頭可以提供紅外接收頭的接收距離。4.7系統總體電路原理圖見附錄4結論本此畢業設計以AT89S52單片機和多個DS18B20溫度傳感器位基本元件,實現溫度多點巡回檢測,并且以紅外遙控器為人機對話工具,實現遠距離溫度設置溫度的報警上下限,同時用蜂鳴器實現報警的功能。解決了在大面積環境中單個溫度計測溫不準的問題和透明密閉環境中無法手動設置問題。雖然我的設計完成了要求的基本功能,但是還有很多可以擴展的空間。比如可以首先通過無線模塊發射模塊把溫度信息發射出去,然后通過接受模塊接收數據,通過VB編程實現溫度在電腦上圖形化顯示和遠程電腦設置溫度報警上下限,通過Internet相關的協議可以實現數據網絡傳輸。實現溫度檢測的全球遠程監控。如果有更高的條件,可以通過收到的溫度信號,通過機器人實現整個控制系統的智能化無人操作。這樣的設計需要具備各個方面的知識,查閱更多的資料,投入更多的精力。在大學四年期間,我把主要精力都放在了理論課的學習上,在理論課的學習中我又很少涉及編程方面的訓練。這次畢業設計難度適中,不僅是對自己理論課程的一次全面的復習,也是對編程的一次訓練,更是對自己動手能力的訓練。在畢業設計中我也深切的體會要做成一件事情一定要有耐心和毅力,踏踏實實一步一個腳印,最終就一定把問題解決。由于本次設計使我一個人做的,我也深切的體會到了一個人的力量是多么的有限。在與忽老師的交流過程中我也意識到了方向對做一件事情是多么的重要,如果思路錯了再多的努力也不會有結果。在歷時三個月的設計中,我學的不僅僅是專業知識,更多的是一種思路,一種成功做好一件事情應有的品質。通過這次比較完整的紅外遙控多點溫度采集系統的設計,自己學到了一點東西。同時也發現自己的知識還很有限,要想實現更多的功能還有很多知識需要學習。大學畢業不是學習的結束,而是剛剛開始。一定要樹立終身學習的觀念,讓自己的能力有更大的提升!致謝大學四年轉瞬即逝,歷時三個月的畢業設計也在今天畫上了圓滿的句號,此時此刻我的心情無比的激動,因為我的畢業設計完全是在指導老師的幫助下自己獨立完成的。現在回想我的大學四年,我過的很充實。這次畢業設計更是對以前所學知識的一次全面系統的復習。不僅訓練了自己的思維方式,還磨礪了自己的性格和品質。這次畢業設計我知道了自己對電子有一種特殊的愛,在走出校門后,我也打算在電子行業踏踏實實干下去,爭取早日成材,養活自己,幫助家人以及其他需要幫助的人,為母校爭光,為社會做出貢獻。大學四年,首先感謝我的父母,若不是他們整天辛苦工作,就沒有我的大學。其次,要感謝我的指導老師忽曉偉,正是由于他的正確指導,我的畢業設計才得以順利完成。最后,感謝所有教我知識的老師,他們交給我的不僅僅是知識,更是一種思考問題的方式和做人的道理。最后,祝所有在學業中幫助過我的人身體健康,工作順利!參考文獻[1]何立民.紅外技術應用:光電光子器件及傳感器.化學工業出版社,2004[2]那彥,電子及通信專業畢業設計寶典.西安電子科技大學出版社,2008[3]李群芳.單片機原理與接口及應用.清華大學出版社,2005[4]段九洲.放大電路實用設計手冊.遼寧科學技術出版社,2002[5]謝淑如,鄭光欽,楊渝生.AltiumDesigner電路版設計.清華大學出版社,2008[6]譚浩強.C程序設計(第三版).清華大學出版社,2007[7]張義和,王敏男.例說51單片機.人民郵電出版社,2008[8]黃智偉.全國大學生電子設計競賽系統設計.北京航天航空大學出版社,2006[9]JiaweiHan,MichelineKamber.DataMining:ConceptsandTechniques.Copyright2001byMorganKaufmannPublishers,Inc.[10]LanTian.ElectronicinformationscienceprofessionalEnglish.Copyright2005byTsinghuaUniversityPress.

附錄1/*名稱:18B20溫度傳感器初始化程序及延時程序*/#include"delay.h"#include"18b20.h"/*18b20初始化*/bitInit_DS18B20(void){bitdat=0;DQ=1;//DQ復位DelayUs2x(5);//稍做延時DQ=0;//單片機將DQ拉低DelayUs2x(200);//精確延時大于480us小于960usDelayUs2x(200);DQ=1;//拉高總線DelayUs2x(50);//15~60us后接收60-240us的存在脈沖dat=DQ;//如果x=0則初始化成功,x=1則初始化失敗DelayUs2x(25);//稍作延時返回returndat;}/*讀取一個字節*/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//給脈沖信號dat>>=1;DQ=1;//給脈沖信號if(DQ)dat|=0x80;DelayUs2x(25);}return(dat);}/*寫入一個字節*/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;DelayUs2x(25);DQ=1;dat>>=1;}DelayUs2x(25);}#include"delay.h"/*這里使用晶振12M大致延時長度如下T=tx2+5uS*/voidDelayUs2x(unsignedchart){while(--t);}/*這里使用晶振12M,大致延時1mS*/voidDelayMs(unsignedchart){while(t--){DelayUs2x(245); DelayUs2x(245);}}附錄2/*讀取DS18B20序列號的主程序*/#include<reg52.h>#include"delay.h"#include"18b20.h"ucharRomCode[8]={0};ucharj;uchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共陽數碼管0~9驅動碼unsignedcharcodeWeiMa[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分別對應相應的數碼管點亮,即位碼sbitLATCH1=P2^2;//定義鎖存使能端口段鎖存sbitLATCH2=P2^3;//位鎖存voidDisp_code(){{for(j=0;j<8;j++) { P0=0XFF;//清空數據,防止有交替重影LATCH1=1;//段鎖存LATCH1=0;P0=WeiMa[j];//取位碼LATCH2=1;//位鎖存LATCH2=0;P0=RomCode[j];//取顯示數據,段碼LATCH1=1;//段鎖存LATCH1=0; DelayUs2x(200); }}}voidmain(){ uchari; unsignedintcount; for(count=0;count<100;count++) { P0=0xff; //數據清零 LATCH1=1;//段鎖存 LATCH1=0; P0=0xFF;//取位碼 LATCH2=1;//位鎖存 LATCH2=0; DelayUs2x(200); } while(1) {Init_DS18B20(); WriteOneChar(0x33);//讀序號列號的操作 DelayMs(5);for(i=0;i<8;i++){ RomCode[i]=ReadOneChar(); //讀取序列號,從低位開始讀取 } Disp_code();} }附錄3/* 紅外遙控多點溫度采集系統的主程序*/#include<reg52.h>#include<stdio.h>#include<intrins.h>#include"18b20.h"#include"delay.h"#defineDataPortP0//定義數據端口程序中遇到DataPort則用P0替換sbitIR=P3^2;//紅外接口標志sbitLATCH1=P2^0;//定義鎖存使能端口段鎖存sbitLATCH2=P2^1;//位鎖存sbitbeep=P1^6; //bitshanshuo_st;ucharsetflag,hflag,lflag,num;signedintshangxian1=55,xiaxian1=-18;signedintshangxian2=66,xiaxian2=-8;unsignedintm,v;signedinttemp,tempe;signedintTempH; unsignedintTempL;ucharcodeDuanMa[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};ucharcodeWeiMa[]={0x80,0x40,0x20,0x10,0x08,0x04,0x01};ucharcodeset[]={0x92,0x86,0x87,0x89,0xbf,0xbf,0xc7}; //SET_H--Lucharcodesetwei[]={0x80,0x40,0x20,0x08,0x04,0x02,0x01};ucharcodebaojingWeiMa[]={0x80,0x40,0x10,0x08,0x04,0x02,0x01};//報警設置時的掃描代碼ucharTempData[7];//共陽存儲顯示值的全局變量ucharbaojingtab[7];//報警溫度表格/******************************************************************//*變量聲明*//******************************************************************/ucharirtime;//紅外用全局變量bitirpro_ok,irok;ucharIRcord[4];ucharirdata[33];/******************************************************************//*函數聲明*//******************************************************************/voidwarn(void);voidDisplay(void);//數碼管正常巡回顯示顯示函數voidDisp_set(void); voidIr_work(void);voidIrcordpro(void);voidDisp_alarm(unsignedcharbaojing);voidMatchRom(void);/******************************************************************//*定時器0中斷服務函數*//******************************************************************/voidtim0_isr(void)interrupt1using1//定時器0中斷服務函數{irtime++;//用于計數2個下降沿之間的時間}/******************************************************************//*外部中斷0函數*//******************************************************************/voidex0_isr(void)interrupt0using0//外部中斷0服務函數{staticunsignedchari;//接收紅外信號處理staticbitstartflag;//是否開始處理標志位if(startflag){if(irtime<60&&irtime>=30)//引導碼TC9012的頭碼,9ms+4.5msi=0; irdata[i]=irtime;//存儲每個電平的持續時間,用于以后判斷是0還是1 irtime=0; i++; if(i==33) { irok=1; i=0; }} else {irtime=0; startflag=1; }}/******************************************************************//*定時器0初始化*//******************************************************************/voidInitTimer0(void)//定時器0初始化{TMOD=0x12;//定時器0工作方式2,TH0是重裝值,TL0是初值TH0=0x00;//重載值TL0=0x00;//初始化值ET0=1;//開中斷TR0=1;}/******************************************************************//*外部中斷初始化*//******************************************************************/voidEX0init(void){IT0=1;//指定外部中斷0下降沿觸發,INT0(P3.2)EX0=1;//使能外部中斷EA=1;//開總中斷}/*****初始化定時器1*****/voidInitTimer1(void){TMOD=0x12;TH1=0x3c;TL1=0xb0;EA=1;ET1=1;TR1=1;}/*****定時器1中斷服務程序*****/voidtimer1(void)interrupt3 //50ms(晶振12M){TH1=0x3c;TL1=0xb0;m++;v++;}/******************************************************************//*紅外解碼函數處理*//******************************************************************/voidIrcordpro(void)//紅外碼值處理函數{unsignedchari,j,k;unsignedcharcord,value;k=1;for(i=0;i<4;i++)//處理4個字節{for(j=1;j<=8;j++)//處理1個字節8位{cord=irdata[k];if(cord>6)//大于某值為1,這個和晶振有絕對關系,這里使用12M計算 {value=value|0x80; }else {value=value; }if(j<8) { value=value>>1; }k++;}IRcord[i]=value;value=0;} irpro_ok=1;//處理完畢標志位置1}/******************************************************************//*紅外鍵值處理*//******************************************************************/voidIr_work(void)//紅外鍵值散轉程序{if(IRcord[2]==4) //總設置鍵對應鍵盤5號鍵 setflag++; if(setflag==2) { setflag=0; hflag=0; lflag=0; } if(setflag) //總的設置開關已經啟動 { if(IRcord[2]==1) //高溫報警設置已經按下用標志位記下對應的詳細情況 { hflag++; if(hflag==3) hflag=1; lflag=0; } if(hflag) //高溫報警已經啟動 { if(IRcord[2]==5) //ADD鍵按下 { if(hflag==1) //高位報警設置位按下一次的情況 { if(shangxian1<122) shangxian1++; else shangxian1=122; } if(hflag==2) { if(shangxian2<122) shangxian2++; else shangxian2=122; } } if(IRcord[2]==3) //DEC鍵按下 { if(hflag==1) { if(shangxian1>xiaxian1) shangxian1--; else shangxian1=xiaxian1; } if(hflag==2) { if(shangxian2>xiaxian2) shangxian2--; else shangxian2=xiaxian2; } }} if(IRcord[2]==7) //低溫報警設置已經按下 { lflag++; if(lflag==3) lflag=1; hflag=0; } if(lflag) //低溫報警已經啟動 { if(IRcord[2]==5) //ADD鍵按下 { if(lflag==1) { if(xiaxian1<shangxian1) xiaxian1++; else xiaxian1=shangxian1;} if(lflag==2) { if(xiaxian2<shangxian2) xiaxian2++; else xiaxian2=shangxian2; } } if(IRcord[2]==3) //DEC鍵按下 { if(lflag==1) { if(xiaxian1>-52) xiaxian1--; else xiaxian1=-52; } if(lflag==2) { if(xiaxian2>-52) xiaxian2--; else xiaxian2=-52; } }} }}voidmain(void){EX0init();//初始化外部中斷InitTimer0();//初始化定時器0InitTimer1();//初始化定時器1while(1)//主循環{if(irok)//如果接收好了進行紅外處理 { Ircordpro(); irok=0; }if(irpro_ok)//如果處理好后進行工作處理,如按對應的按鍵后顯示對應的數字等 { Ir_work(); irpro_ok=0;//處理完成標志} if(setflag) { if(hflag) { if(v>=9){shanshuo_st=~shanshuo_st;v=0;}//用定時器來設置閃爍的時間間隔if(shanshuo_st) { if(hflag==1) Disp_alarm(shangxian1); if(hflag==2) Disp_alarm(shangxian2); } } if(lflag) { if(v>=9){shanshuo_st=~shanshuo_st;v=0;}//用定時器來設置閃爍的時間間隔if(shanshuo_st) { if(lflag==1) Disp_alarm(xiaxian1); if(lflag==2) Disp_alarm(xiaxian2); } } if((hflag==0)&&(lflag==0)) Disp_set(); } else //溫度正常循環顯示 { temp=ReadTemperature(); warn(); //檢測是否報警 if(temp&0x8000) //說明溫度是個負數 { TempData[0]=0xbf;//負號標志 temp=~temp;//取反加1 temp+=1; //得到對應的正數溫度 } else TempData[0]=0xff; //如果是正數符號位不顯示 tempe=temp;

溫馨提示

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

評論

0/150

提交評論