




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 畢業設計 (論文)題目:基于單片機的上下限溫度控制報警器 專 業:應用電子技術年 級:11 級學 號:10605111049姓 名: 指導老師: 完成時間:2014年6月摘 要本設計的主要功能是在一定范圍內檢測實時溫度并顯示,同時根據設定的上下限溫度實現報警功能。本設計主要用于對測溫比較準確的場所,或科研實驗室使用。與傳統的溫度報警器相比,具有讀數方便,測溫范圍廣,測溫準確,其輸出溫度采用數字顯示,該設計控制器使用單片機stc12c5a16s2,測溫傳感器使用ds18b20,用3位共陽極led數碼管實現溫度顯示,能準確達到以上要求。同時本設計的硬件結構簡單、人機界面友善、管理功能健全、系統可
2、靠性高、記錄數據準確、使用維護方便等優點。設計時我們按照模塊化程序設計思想,完成了對系統軟件部分的設計,給出了各個功能模塊的設計思想和流程圖。溫度采集控制控制系統能夠準確地進行溫度數據的采樣轉換,數碼顯示管對采集的溫度進行數碼顯示,穩定進行升溫、降溫的控制過程。現場實驗表明,該系統在測試過程中工作穩定,滿足設計要求。自動控制技術尤其是溫度控制技術在國內外得到廣泛的應用和發展,時滯效應始終困擾著其實際應用,為此人們發明了多種控制方法來解決時滯問題,例如比例控制方式、本文將針對一種溫度控制方式進行學習,并設計一個以stc12c5a16s2單片機為核心、利用新型集成化智能1-wire總線數字溫度傳感
3、器ds18b20實現的溫度采集控制系統。關鍵詞:溫度自動控制、單片機stc12c5a16s2、led數碼顯示管、蜂鳴器、溫度傳感器ds18b20說 明本文主要設計了一種采用單片機stc12c5a16s2作為核心的低成本、高精度、微型化的溫度報警器,本設計的硬件結構簡單、人機界面友善、管理功能健全、系統可靠性高、記錄數據準確、使用維護方便。本文詳細論述由單片機控制的溫度上下限報警器的基本原理,并用軟件protel dip 2004 sp2實現了系統的設計。序號姓名學號班級任務分配1李自鵬10605111054應用電子技術11-1班 組長總體方案設計、電路設計、電路板制作、最終調試2宋朝鳳1060
4、5111049應用電子技術11-1班總體方案設計、焊接安裝、購買元器件、撰寫論文 目 錄 第一章:設計意義與相關技術發展41:設計背景42:溫度檢測的意義與技術發展4第二章:設計方案51:方案一52:方案二5第三章:硬件電路61:主控制器7stc12c5a16s2單片機主要性能92:溫度傳感器93:顯示電路124:報警電路135:按鍵電路136:繼電器輸出電路147:系統整體硬件電路14第四章:系統軟件設計161:主程序162:讀出溫度子程序173:溫度轉換命令子程序174:計算溫度子程序175:顯示溫度刷新子程序18第五章:系統測試與總結181:系統測試182:總結19致謝19附件20第一章
5、:設計意義與相關技術發展 1:設計背景溫度是生產工藝過程中最基本、最重要的控制參數之一,關系到生產條件的建立,產品的產量、質量、效率,以及生產設備的壽命與安全等。溫度是物體冷熱程度的表現參數。溫度測量儀的由感溫元件幫助完成檢測。隨著溫度檢測理論和技術的不斷更新, 溫度傳感器的種類也越來越多,在微機系統中使用的傳感器,必須是能夠將非電量轉換成電量的傳感器,目前常用的有熱電偶傳感器、熱電阻傳感器和半導體集成傳感器等,每種傳感器根據其自身特性,都有它自己的應用領域。我們希望通過自己的所學的知識和借助這次畢業設計的機會做出一個與生活密切相關且實用的東西,通過我們的篩選和結合自身所學知識的局限性,我們選
6、擇了上下限溫度控制報警器。本設計的主要功能是在一定范圍內檢測實時溫度并顯示,同時根據設定的上下限溫度實現報警功能。本設計主要用于對測溫比較準確的場所,或科研實驗室使用。與傳統的溫度報警器相比,具有讀數方便(led數碼管顯示),測溫范圍廣(溫度調節上限為125度,下限為-55度),測溫準確,其輸出溫度采用數字顯示,該設計控制器使用單片機stc12c5a16s2,測溫傳感器使用ds18b20,用3位共陽極led數碼管實現溫度顯示,能準確達到以上要求。同時本設計的硬件結構簡單、人機界面友善、管理功能健全、系統可靠性高、記錄數據準確、使用維護方便等優點。 2:溫度檢測的意義與技術發展 溫度是一種最基本
7、的環境參數,人們的生活與環境的溫度息息相關,在工業生產過程中需要實時測量溫度,在農業生產中也離不開溫度的測量,因此研究溫度的測量方法和裝置具有重要的意義。 溫度是一個十分重要的物理量,對它的測量與控制有十分重要的意義。隨著現代工農業技術的發展及人們對生活環境要求的提高,人們也迫切需要檢測與控制溫度:如大氣及空調房中溫度的高低,直接影響著人們的身體健康;在大規模集成電路生產線上,環境溫度不適當,會嚴重影響產品的質量。測溫技術在生產過程中,在產品質量控制和監測,設備在線故障診斷和安全保護以及節約能源等方面發揮了著重要作用。現今世界上的溫度檢測技術已經喜人的成果,其中前蘇聯的壓電石英頻率溫度計分辨能
8、力可達0.0001,理論上可達0.00001,而且在-40230范圍內具有溫度與頻率的線性特性;日本利用所謂石英溫度頻率轉換器-80200的溫度范圍,最大分辨率達0.0001;美國標準局研制的電阻溫度計25歐標準鉑電阻溫度計,電橋分辨0.00002;我國生產的石英溫度傳感器分辨率達到0.0001,誤差在0.05以內,中國航天工業總公司702所研制的5901(stp-1000)型粘貼式測溫片,其靜態測溫精度為0.5%,快速響應時間小于0.013s。如今溫度檢測發展的主要方向為薄膜溫度傳感器、輻射測溫技術和光纖測溫技術。溫度采集系統是在嵌入式系統設計的基礎上發展起來的。嵌入式系統雖然起源于微型計算
9、機時代,但是微型計算機的體積、價位、可靠性,都無法滿足廣大對象對嵌入式系統的要求,因此,嵌入式系統必須走獨立發展道路。這條道路就是芯片化道路。將計算機做在一個芯片上,從而開創了嵌入式系統獨立發展的單片機時代。單片機誕生于二十世紀七十年代末,經歷了scm、mcu和soc三大階段。 第二章:設計方案 1:方案一由于本設計是測溫電路,可以使用熱敏電阻之類的器件利用其感溫效應,在將隨被測溫度變化的電壓或電流采集過來,進行a/d轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來,這種設計需要用到a/d轉換電路,感溫電路比較麻煩。并且測量溫度精度不高,有偏差。 ds18b20at
10、89c52 主控制器 顯示電路 掃描驅動 2:方案二進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器,傳感器可以很容易直接讀取被測溫度值,進行轉換,就可以滿足設計要求,且測量精度很高。從以上兩種方案,很容易看出,采用方案二,電路比較簡單,軟件設計也比較簡單,故采用方案二。進一步我們先大概設計出了方案框圖(如圖1),控制器采用單片機stc12c5a16s2,溫度傳感器采用ds18b20,用3位led數碼管實現溫度顯示,用一位數碼管顯示攝氏度符號。三個按鍵進行溫度上、下限報警值設置。在硬件選擇上為了有利于購買和實驗方便,根據當前市場
11、上各種處理器的性價比,本設計選擇stc12c5a16s2單片機,溫度檢測采用ds18b20溫度傳感器,輸入部分用三個按鍵,可以調整溫度上下限的范圍,顯示部分采用經濟適用的3位led數碼管實現溫度顯示,用一位數碼管顯示攝氏度符號,超出的溫度上限或下限用led表示,報警采用蜂鳴器。功能上:當溫度傳感器ds18b20采集到環境溫度高于設定溫度,表示高溫的發光二極管亮并且蜂鳴器報警,當溫度傳感器ds18b20采集到環境溫度低于設定溫度,表示低溫的發光二極管亮并且蜂鳴器報警。對溫度傳感器的啟用與控制需要嚴格的時間限制,這部分程序的編寫是復雜而繁瑣的。這些部分是一個連貫的過程,又有著不確定時間,時間要求比
12、較嚴格。所以在軟件設計上我們采用簡單易懂的c語言實現,同時把整個系統程序分為幾大快來實現,主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷新子程序等。led顯示主控制器單片機復位按鍵調整溫度傳感器 報警電路1路輸出時鐘振蕩2路輸出圖1總體設計方框圖第三章:硬件電路一個完整的控制系統,單純依靠一塊單片機是遠遠不夠的。它必須與外圍電路元件相互搭配,共同完成任務。本設計用到的外圍電路有:顯示電路、報警電路、按鍵電路和繼電器輸出電路。要讓各個部分電路能在一起穩定的工作,就要讓它們銜接的很匹配,如各部分電路對電壓、電流的要求等都要合理的設計。下面是對各部分硬件電路的介紹。
13、1:主控制器單片微型計算機(single chip microcomputer)簡稱單片機,是指集成在一塊芯片上的計算機,它具有結構簡單、控制功能強、可靠性高、體積小、價格低、等優點。單片機技術作為計算機技術的一個重要分支,廣泛地應用于工業控制、智能化儀器儀表、家用電器、電子玩具等各領域。盡管單片機種類很多,但無論是從世界范圍還是從全國范圍來看,使用最為廣泛的應屬mcs-51系列單片機。其生產廠家有:intel公司、atmel公司、philips公司等。本設計采用atmel公司的stc12c5a16s2,其它廠家單片機這里不再多說,以下是對stc12c5a16s2的介紹。atmel公司生產的s
14、tc12c5a16s2單片機是一種低功耗/低電壓、高性能的8位單片機,內部除cpu外,還包括128b的內部用戶數據存儲器ram,4kb的內部用戶程序存儲器,4個8位并行可編程i/0口,2個16位計數/定時器,5個中斷源,2個優先級別,1個可編程的串行通信口。以下是對各部分的具體介紹:內部介紹:(1) 中央處理器又稱cpu,是整個單片機的核心部件,是8位數據寬度的處理器,能處理8位二進制數據或代碼,cpu負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。(2) 數據存儲器又稱ram,stc12c5a16s2內部有128個8位用戶數據存儲單元和128個專用寄存器單元,它
15、們是統一編址的,專用寄存器只能用于存放控制指令數據,用戶只能訪問,而不能用于存放用戶數據,所以,用戶能使用的ram只有128個,可存放讀寫的數據,運算的中間結果或用戶定義的字型數據。并具有64kb外部數據存儲器尋址空間。(3) 程序存儲器又稱rom,s51共有4kb的掩膜rom,用于存放用戶程序,原始數據或表格。并具有64kb外部程序存儲器尋址空間。(4) 定時/計數器,s51有兩個16位的可編程定時/計數器,稱為定時器0(t0)和定時器1(t1)。t0有專用寄存器th0和tl0組成,t10有專用寄存器th1和tl1組成。并且可編程定時/計數器的工作方式、定時時間、計數值、啟動、中斷請求等都可
16、以由程序設定。(5) 中斷系統,s51的中斷功能較強,可滿足控制應用的需要。共有5個中斷源,即兩個外中斷、兩個定時/計數器中斷和一個串行中斷,并具有兩個優先級別的選擇。時鐘電路,stc12c5a16s2內部有時鐘電路,但石英晶體和微調電容需外接。用于產生整個單片機運行的脈沖時序,系統允許的晶振頻率一般位6mhz和12mhz,在應用精度要求較高的場合一般選用11.0592mhz,可以使定時器/計數器更精確。4路pwm 8路高速10位a、d轉換,針對電機控制,強干擾場合。外部介紹:stc12c5a16s2單片機引腳如下圖:stc12c5a16s2單片機引腳介紹:p0.0p0.7(3932):p0口
17、是一個漏極開路型準雙向i/o口。在訪問外部存儲器時,它是分時多路轉換的地址(低8位)和數據總線,在訪問期間激活了內部的上拉電阻。在eprom編程時,它接收指令字節,而在驗證程序時,則輸出指令字節。驗證時,要求外接上拉電阻。 p1.0p1.7(1-8):p1口是帶內部上拉電阻的8位雙向i/o口。在eprom編程和程序驗證時,它接收低8位地址。 p2.0p2.7(21-28):p2口是一個帶內部上拉電阻的8位雙向i/o口。在訪問外部存儲器時,它送出高8位地址。在對efrom編程和程序驗證期間,它接收高8位地址。 p3.0p3.7(10-17):p3口是一個帶內部上拉電阻的8位雙向i/o口。p1口設
18、定p1m07:0p1m17:0i/o口模式(p1.x如做a/d使用。需先將其設置成開漏或高阻輸入)00準雙向口(傳統8051 i/o口模式),灌電流可達20ma,拉電源為230微安,由于制造誤差,實際為250150微安01推挽輸出10僅為輸入(高阻),如果該i/o口需作a/d使用,可選此模式11開漏,如果該i/o口需作a/d使用,可選此模式stc12c5a16s2單片機主要性能高速:1 個時鐘/ 機器周期,增強型8051 內核,速度比普通8051 快812 倍寬電壓:5.53.8v,2.43.8v(stc12le5410ad 系列)低功耗設計:空閑模式,掉電模式(可由外部中斷喚醒)工作頻率:0
19、35mhz,相當于普通8051:0420mhz- 實際可到48mhz,相當于8051: 0576mhz時鐘:外部晶體或內部rc 振蕩器可選,在isp 下載編程用戶程序時設置 16k 字節片內flash 程序存儲器,擦寫次數10 萬次以上 512 字節片內ram 數據存儲器芯片內eeprom 功能 isp / iap,在系統可編程/ 在應用可編程,無需編程器/ 仿真器 10 位adc,8 通道, stc12c5a16s2 系列為8 位adc。4 路pwm 還可當4 路d/a 使用 2 個硬件16 位定時器,兼容普通8051 的定時器。4 路pca 還可再實現4 個定時器硬件看門狗(wdt)高速s
20、pi 通信端口全雙工異步串行口(uart),兼容普通8051 的串口先進的指令集結構,兼容普通8051指令集4 組8 個8 位通用工作寄存器(共32 個通用寄存器)有硬件乘法/ 除法指令通用i/o 口(27/23/15 個),復位后為: 準雙向口/ 弱上拉(普通8051 傳統i/o 口)可設置成四種模式:準雙向口/ 弱上拉,推挽/ 強上拉,僅為輸入/ 高阻,開漏每個i/o 口驅動能力均可達到20ma,但整個芯片最大不得超過55ma。 2:溫度傳感器美國dallas半導體公司的數字化溫度傳感器ds1820是世界上第一片支持 一線總線接口的溫度傳感器,在其內部使用了在板(on-b0ard)專利技術
21、。全部傳感元件及轉換電路集成在形如一只三極管的集成電路內。一線總線獨特而且經濟的特點,使用戶可輕松地組建傳感器網絡,為測量系統的構建引入全新概念。現在,新一代的ds18b20體積更小、更經濟、更靈活。使你可以充分發揮“一線總線”的優點。目前ds18b20批量采購價格僅10元左右。 在傳統的模擬信號遠距離溫度測量系統中,需要很好的解決引線誤差補償問題、多點測量切換誤差問題和放大電路零點漂移誤差問題等技術問題,才能夠達到較高的測量精度。另外一般監控現場的電磁環境都非常惡劣,各種干擾信號較強,模擬溫度信號容易受到干擾而產生測量誤差,影響測量精度。因此,在溫度測量系統中,采用抗干擾能力強的新型數字溫度
22、傳感器是解決這些問題的最有效方案,新型數字溫度傳感器ds18b20具有體積更小、精度更高、適用電壓更寬、采用一線總線、可組網等優點,在實際應用中取得了良好的測溫效果。 ds18b20產品的特點 (1).只要求一個端口即可實現通信。 (2).在ds18b20中的每個器件上都有獨一無二的序列號。 (3).實際應用中不需要外部任何元器件即可實現測溫。 (4).測量溫度范圍在55。c到125。c之間。 (5).數字溫度計的分辨率用戶可以從9位到12位選擇。 (6).內部有溫度上、下限告警設置。ds18b20引腳圖及引腳功能介紹 to92封裝的ds18b20的引腳排列見下圖,其引腳功能描述見下表。 序號
23、名稱引腳功能描述1gnd地信號2dq數據輸入/輸出引腳。3vdd可選擇的vdd引腳。當工作于寄生電源時,此引腳必須接地。ds18b20的使用方法 由于ds18b20采用的是1wire總線協議方式,即在一根數據線實現數據的雙向傳輸,而對at89s51單片機來說,硬件上并不支持單總線協議,因此,我們必須采用軟件的方法來模擬單總線的協議時序來完成對ds18b20芯片的訪問。由于ds18b20是在一根i/o線上讀寫數據,因此,對讀寫的數據位有著嚴格的時序要求。ds18b20有嚴格的通信協議來保證各位數據傳輸的正確性和完整性。該協議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為
24、主設備,單總線器件作為從設備。而每一次命令和數據的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數據,在進行寫命令后,主機需啟動讀時序完成數據接收。數據和命令的傳輸都是低位在先。ds18b20的讀時序對于ds18b20的讀時序分為讀0時序和讀1時序兩個過程。 對于ds18b20的讀時隙是從主機把單總線拉低之后,在15秒之內就得釋放單總線,以讓ds18b20把數據傳輸到單總線上。ds18b20在完成一個讀時序過程,至少需要60us才能完成。 ds18b20的寫時序 對于ds18b20的寫時序仍然分為寫0時序和寫1時序兩個過程。 對于ds18b20寫0時序和寫1時序的要求不同,當要寫0時
25、序時,單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當要寫1時序時,單總線被拉低之后,在15us之內就得釋放單總線。 3:顯示電路顯示電路采用3位共陽led數碼管做為溫度值顯示。用三個8550pnp三極做為每一位led管的驅動電路,這樣使得數碼管電流量更大,亮度更亮。一位共陽極數碼管顯示攝氏度符號,使得整個顯示電路更加人性化(實際效果如下圖)。4:報警電路采用有源蜂鳴器做為報警器,用一個pnp三極管8550做為驅動。蜂鳴器可以在被測溫度超過上限溫度或者低于下限溫度時,發出報警鳴叫聲音。1ls1speaker+5vq48550r1
26、610kp3.7 5:按鍵電路三個輕觸開關組成按鍵電路,因為都是獨立的按鍵所以采用直接接地的方法,這樣電路比較簡單,達到了效果。三個獨立式按鍵可以分別調整溫度的上下限報警溫度,當按下設置鍵一次,數碼管顯示hxx且 led數碼管閃爍,這時可以調整報警上限溫度值。按下設置鍵第二次,l xx且數碼管閃爍,這時可以調整報警下限溫度值。通過“加鍵”可以對設置數值加。通過“減鍵”可以對設置數值減。每按一次減1。最高可加到100,最低可減到0。 6:繼電器輸出電路如下圖所示: +5vr1510kp3.5q68550jdq2v21n4148123j3con3+5vr1410kp3.7q58550jdq1v11
27、n4148123j2con3 7:系統整體硬件電路系統整體硬件電路包括,傳感器數據采集電路,溫度顯示電路,上下限報警調整電路,單片機主板電路等,如下圖所示(圖見下頁)。圖中沒有采用按鍵做為復位電路,直接采用電容充電的方式做為復位,在每上電時單片機復位一次這樣就可以達到重啟單片機的效果。第四章:系統軟件設計在系統軟件設計上我們采用簡單易懂的c語言實現,同時把整個系統程序分為幾大快來實現,主要包括主程序,讀出溫度子程序,溫度轉換命令子程序,計算溫度子程序,顯示數據刷新子程序等。 1:主程序主程序的主要功能是負責溫度的實時顯示、讀出并處理ds18b20的測量的當前溫度值,溫度測量每1s進行一次。這樣
28、可以在一秒之內測量一次被測溫度,其程序流程見圖2所示。y發ds18b20復位命令發跳過rom命令發讀取溫度命令讀取操作,crc校驗9字節完?crc校驗正?確?移入溫度暫存器結束nny初始化調用顯示子程序1s到?初次上電讀出溫度值溫度計算處理顯示數據刷新發溫度轉換開始命令nyny圖2 主程序流程圖 圖3讀溫度流程圖 2:讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節,在讀出時需進行crc校驗,校驗有錯時不進行溫度數據的改寫。其程序流程圖如圖2示。 3:溫度轉換命令子程序溫度轉換命令子程序主要是發溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示
29、程序延時法等待轉換的完成。溫度轉換命令子程序流程圖下圖所示:發ds18b20復位命令發跳過rom命令發溫度轉換開始命令結束溫度轉換流程圖 4:計算溫度子程序計算溫度子程序將ram中讀取值進行bcd碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖4所示:開始溫度零下?溫度值取補碼置“”標志計算小數位溫度bcd值 計算整數位溫度bcd值 結束置“+”標志ny溫度數據移入顯示寄存器個位數0?十位數0?個位數顯示符號十位數不顯示十位數顯示數據(不顯示符號) 結束nnyy圖4計算溫度流程圖 圖5顯示數據刷新流程圖 5:顯示溫度刷新子程序顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,
30、當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖5。第五章:系統測試與總結 1:系統測試當溫度傳感器ds18b20采集到環境溫度高于設定溫度,表示高溫的led閃爍并且蜂鳴器報警,當溫度傳感器ds18b20采集到環境溫度低于設定溫度,表示低溫的led閃爍并且蜂鳴器報警。按功能鍵,按一下調整溫度下限,按加減可以對溫度下限的參數調整,在按功能鍵,調整溫度上限,按加減可以對溫度上限進行調整,按第三次恢復正常顯示。1、測試儀器 測試儀器包括數字萬用表、stc仿真機、直流穩壓電源等。2、測試方法 數字萬用表主要用來測試分立元件的電阻、壓降、漏電流、截止/導通狀態等參數;直流穩壓電源在測試期間為各待
31、測系統供電。測試結果及結論分析: 通過萬用表的測試發現了個別地方的有虛焊、短路的問題;主要是在電路板制作過程中焊盤、電路密集的地方焊盤和線路之間的距離設置過小,在腐蝕的過程中由于fecl3的量不夠,個別地方腐蝕不徹底,留有銅斑所至,所幸通過小刀修改最后順利完成作品的制作。 2:總結經過1個多月的設計與制作,終于完成了我們的數字溫度報警器的畢業設計,雖然沒有完全達到設計要求,但從心底里說,還是高興的,畢竟這次設計把實物都做了出來,高興之余不得不深思呀!在本次設計的過程中,我們發現很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我們長進了很多。這次在初期電路設計時,由于個別元件在protel
32、2004中的元件庫里面沒有,需自己繪制元件,在這個過程中的封裝時由于對實物元件沒有清晰的認識(個別元件之前沒有見過實物),以至于封裝不正確導致整個電路有錯,在軟件模擬和制作pcb板圖時連線不正確;但慶幸的是電路本身沒有太大問題,最終在老師的幫助下把作品成功做出來了。這次畢業設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我們覺的寫好一個程序并不是一件簡單的事,有好多的東西,只有我們們去試著做了,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌握。從這次的課程設計中,我們真真正正的意識到,在以后的學習中,要理論聯系實際,把我們們所學的理論知識用到實際當中,
33、學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我們在這次課程設計中的最大收獲。致謝首先要衷心感謝的是我們的指導教師陳顯祥和王松老師!在我們學習期間不僅傳授了做學問的秘訣,還傳授了做人的準則。這些都將使我們終生受益。無論是在理論學習階段,還是在論文的選題、資料查詢、開題、研究和撰寫的每一個環節,無不得到導師的悉心指導和幫助。我們愿借此機會向導師表示衷心的感謝!其次要感謝所有教育過我們的老師!你們傳授給我的專業知識是我不斷成長的源泉,也是完成本論文的基礎。我們還要向關心和支持我學習的朋友們表示真摯的謝意!感謝他們對我們的關心、關注和支持! 大學的生活讓我們有了堅強的性格,冷靜
34、的頭腦和永遠樂觀的態度。最重要的是讓我們有了責任感,對自己、對家人和對社會。附件附件1:pcb板圖:附件2:成品實物圖: 附件3:程序源文件/*-/*-溫度控制器v1.5顯示為三個共陽極led溫度傳感器用單總線ds18b20cpu為2051,四個按鍵,分別為up,down,set溫度調節上限為125度,下限為-55度只能用于單只18b20-*/#include #include #define uchar unsigned char#define uint unsigned intcode unsigned char seg7code=0xc0,0xf9,0xa4,0xb0,0x99,0x92
35、, 0x82,0xf8,0x80,0x90,0xff,0xbf; /不帶小數點的共陽數碼管段碼code unsigned char seg7codeb=0x40,0x79,0x24,0x30,0x19,0x12, 0x02,0x78,0x00,0x10,0xff,0xbf; /帶小數點的共陽數碼管段碼sbit key_up=p16; /上調溫度sbit key_down=p17; /下調溫度sbit key_set=p15; /設定鍵(溫度設定,長按開電源) sbit ledonec=p26; /led ds1控制(百位)sbit ledtwoc=p25; /led ds2控制(十位)sbit
36、 ledthreec=p24; /led ds3控制(個位)sbit dq=p20;/ds1820 dataportsbit hout=p37;/繼電器輸出器輸出sbit hled=p36;sbit lout=p35;sbit lled=p34;sbit bell=p33;unsigned int shangxian; /上限報警溫度,默認值為38unsigned int xiaxian; /下限報警溫度,默認值為5uchar data wendu3;uchar user_set4;unsigned char l,h,j,k,fuhao,fg,fg1;unsigned int temp,num
37、;/*ds18b20延時函數*/void delay(unsigned int i)while(i-);/*初始化ds18b20*/void ds18b20_init(void)unsigned char i;bit flag;while(flag=0)dq=1;delay(20);dq=0;delay(200);dq=1;delay(10);while(1)i=dq;if(i=0)flag=1;delay(50);break;flag=0;/*主機發送一個字節的數據到ds18b20的子程序*/void ds18b20_write(unsigned char date)unsigned cha
38、r i;for(i=8;i0;i-)dq=0;dq=date&0x01;delay(20);dq=1;date=1;delay(15);/*主機從ds18b20讀取一個字節子程序*/unsigned char ds18b20_read(void)unsigned char i,date;for(i=8;i0;i-)dq=0;date=1;dq=1;if(dq=1) / 檢測總線當前位的高低,如果為低就跳過,繼續下一個循環 date=date|0x80;/如果為高,就把date的當前位也置高,繼續下一個循環 delay(15);return(date);/*溫度顯示*/ void temp_re
39、ad(void)ea=0; ds18b20_init(); ds18b20_write(0xcc);ds18b20_write(0x44);delay(300);ds18b20_init();ds18b20_write(0xcc);ds18b20_write(0xbe);l=ds18b20_read();h=ds18b20_read();delay(200);k=h&0x08;/提取h的第4位if(k=0x08)/檢測h的第4位是否為1 fuhao=1;/負溫度符號的掃描位碼 temp=(h*256)+l);/把h左移8位,加上l后再按位取反temp=temp+1; temp=temp*0.6
40、25;/把取反后的值乘以0.625得到10進制實際溫度值再擴大100倍,精確到小數點后面2位數(h和l的值計算的時候由軟件自動轉換成10進制)else fuhao=0;/如果溫度為正值,符號位就不顯示 temp=(h*256)+l)*0.625;/把h左移8位,加上l后的值乘以0.625得到10進制實際溫度值再擴大100倍,精確到小數點后面2位數待添加的隱藏文字內容3 ea=1; /*顯示函數*void wendu_display(void) if(fuhao=0) if(temp=1000)temp=99.9; /設置顯示最大值 ledonec=0; p0=seg7codetemp%1000
41、/100; delay(120); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codebtemp%100/10; delay(120); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codetemp%10; delay(120); ledthreec=1; p0=0xff; if(fuhao=1) /溫度為負時顯示的數據 ledonec=0; p0=seg7code11; delay(120); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codetemp/10; delay(120); le
42、dtwoc=1; p0=0xff; ledthreec=0; p0=seg7codetemp%10; delay(120); ledthreec=1; p0=0xff; /*進入設置顯示畫面*/void xiaxian_disp(void) /下限設置界面 ledonec=0; p0=0xc7; delay(50); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codexiaxian/10; delay(50); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codexiaxian%10; delay(50); ledthree
43、c=1; p0=0xff; void shangxian_disp(void) /上限設置界面 ledonec=0; p0=0x89; delay(50); ledonec=1; p0=0xff; ledtwoc=0; p0=seg7codeshangxian/10; delay(50); ledtwoc=1; p0=0xff; ledthreec=0; p0=seg7codeshangxian%10; delay(50); ledthreec=1; p0=0xff; /*eeprom部份*/* 關閉 ispiap 功能 *void isp_iap_disable(void)iap_contr
44、 = 0x00;iap_cmd = 0x00; iap_trig = 0x00;iap_addrh=0x00;iap_addrl=0x00;ea = 1; /開中斷/*字節讀*uchar byte_read(uint byte_addr)iap_contr = 0x85; /開啟isp/iap;并送等待時間 iap_cmd = 0x01; /送字節讀命令字 iap_addrh = (uchar)(byte_addr 8); /送地址高字節iap_addrl = (uchar)(byte_addr &0x00ff); /送地址低字節ea = 0; /關中斷iap_trig = 0x5a; /送觸
45、發命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /關閉isp/iap功能ea = 1; /開中斷return (iap_data);/*字節編程*void byte_program(uint byte_addr ,uchar isp_iap_data)iap_contr = 0x85; /開啟isp/iap;并送等待時間iap_cmd = 0x02; /送字節編程命令字 iap_addrh = (uchar)(byte_addr 8); /送地址高字節iap_addrl = (uchar)(byte_addr &0x00ff);
46、 /送地址低字節 iap_data = isp_iap_data; /送數據進isp_dataea = 0; /關中斷iap_trig = 0x5a; /送觸發命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /關閉isp/iap功能ea = 1; /開中斷 /* 扇區擦除*void sector_erase(uint sector_addr) iap_contr = 0x85; /開啟isp/iap;并送等待時間/ isp_contr=0xc1;iap_cmd = 0x03; /送扇區擦除命令字 iap_addrh = (uchar)(sector_addr 8); /送地址高字節iap_addrl = (uchar)(sector_addr &0x00ff); /送地址低字節ea = 0; /關中斷iap_trig = 0x5a; /送觸發命令字 0x46、0xb9iap_trig = 0xa5;_nop_();isp_iap_disable(); /關閉isp/iap功能ea = 1;/*eeprom擦寫數據*/ void iap_set(void) fg1=1; sector_erase(0x2000); byte_program(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學年成都市錦江區數學三年級第一學期期末綜合測試模擬試題含解析
- 職業發展的2025年主管護師考試試題及答案
- 知識更新試題及答案指導
- 2025年執業護士考試高效備考試題及答案
- 2025年藥師考試藥物暴露應對題目及答案
- 2025主管護師考試綜合能力評價與試題及答案
- 經驗分享2025主管護師考試試題及答案
- 2025年執業藥師考試新規試題及答案
- 2025年行政法學備考資源及試題及答案
- 經濟法概論課程體會試題及答案
- 數學文化與數學史融入
- 高二學考動員主題班會課件
- 水溝抹灰施工方案
- 人教版八年級物理下冊 實驗題03 浮力的實驗(含答案詳解)
- spc(xbar-r-xbar-s-中位數極差3合一控制圖)
- SCARA工業機器人手臂設計
- 公路工程竣工環境保護驗收調查報告
- 第二章殘疾康復
- 三年級下冊美術說課稿-第十二課 賽龍舟 ︳湘美版
- 國家開放大學電大《建筑制圖基礎》機考網考題庫及答案
- 上海市材料工程學校教師招聘考試真題2022
評論
0/150
提交評論