摘要
在日常生活及工業生產過程中,經常要用到溫度的檢測及控制,溫度是生產過程和科學實驗中普遍而且重要的物理參數之一。在生產過程中,為了高效地進行生產,必須對它的主要參數,如溫度、壓力、流量等進行有效的控制。溫度控制在生產過程中占有相當大的比例。溫度測量是溫度控制的基礎,技術已經比較成熟。傳統的測溫元件有熱電偶和二電阻。而熱電偶和熱電阻測出的一般都是電壓,再轉換成對應的溫度,這些方法相對比較復雜,需要比較多的外部硬件支持。
本文采用美國DALLAS半導體公司推出的一種改進型溫度傳感器DS18B20作為檢測元件,溫度范圍為-55~125oC,最高分辨率可達0.0625oC。DS18B20可以直接讀出被測溫度值,而且采用三線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。
本文介紹一種基于STC89C51單片機的溫度測量及報警電路,該電路采用DS18B20作為溫度監測元件,測量范圍-55℃-~+125℃,使用液晶模塊顯示,能設置溫度報警上下限。正文著重給出了軟硬件系統的各部分電路,介紹了集成溫度傳感器DS18B20的原理,STC89C51單片機功能和應用。該電路設計合理、功能實用、結構簡單。
目 錄
引言
1 選題的背景和意義
1.1 設計任務與要求
1.2 設計目的
2 總體設計方案
2.1 方案闡述
2.2 基本思路
2.3 方案選擇與論證
2.4 系統設計原理
2.5 系統組成
3 硬件設計
3.1 硬件原理框圖
3.2 硬件結構及原理
4 軟件設計
4.1 軟件編寫工具
4.2 總體設計
4.3 主程序流程
4.4 程序分析
5 制板流程
6 系統調試
6.1 硬件調試
6.2 軟件調試
6.3 調試結果
7 結論 21
謝 辭
參考文獻
附 錄
引言 溫度是一個十分重要的物理量,對它的測量與控制有著十分重要的意義。隨著現代工農業技術的發展及人們對生活環境要求的提高,人們也迫切需要檢測與控制溫度。在人類的生活環境中,溫度扮演者極其重要的角色。無論你生活在哪里,從事什么工作,無時無刻不在與溫度打著交道。自18世紀工業革命以來,工業發展對是否能掌握溫度有著絕對的聯系。在冶金、鋼鐵、石化、水泥、玻璃、醫藥等等行業,可以說幾乎80%的工業部門都不得不考慮著溫度的因素。 信息科學和微電子技術的飛速發展給控制領域帶來了巨大的飛躍;控制技術更加趨向自動化和智能化,為無數的使用者帶來了方便。在控制領域里,溫度是一個常見的名詞,然而它所帶來的技術問題和所起的作用卻是非同一般的。在控制領域中,對溫度的控制有著舉足輕重的作用。例如陶瓷的燒烤,只有控制住溫度的適度,才能制作出一個完美的藝術品,否則只是一件廢品;還有如釀酒的過程,也需要對溫度進行控制?梢,在生活的許許多多的方面都有著對溫度進行感知和控制的需要。 1 選題的背景和意義隨著社會的發展特別是工業的發展,人民生活的改善,安全問題變得更加重要。目前,在許多情況下,都需要對環境的溫度進行限定,其中包括人的生活工作環境、儀器設備的工作環境以及動植物的生長環境等。如果環境溫度超過或者低于限制值,必定對所處環境的人或設備造成影響,甚至給個人和社會造成巨大的損失。 因此,在某些特定環境內使用溫度報警器來對溫度進行實時監控并做到超溫報警,而使用單片微型計算機實時控制溫度報警系統則是其中的一種重要方式。 主要是了解了單片機微型計算機實時控制的溫度測量報警系統的歷史與現狀,根據現實生活的需要以及已掌握的理論知識,制定出單片微型計算機實時控制的溫度報警系統硬件、軟件的設計方案,把溫度傳感器這個單獨的器件,配以一些其他電路,讓它實現探測溫度、顯示溫度、并且超高溫、低溫報警,并進行調試驗證方案的可行性,最終完成設計。 1.1 設計任務與要求(1)溫度檢測:通過傳感器和系統連接,能實時準確檢測到現場溫度。 (2)溫度顯示:把現場實時檢測到的溫度值顯示出來。 (3)報警溫度設定和報警:根據需要可以設置報警溫度,并且當達到報警溫度時 會發出報警提示。 1.2 設計目的(1)通過對溫度報警電路的設計、安裝和調試,掌握溫度報警電路的工作原理和運算放大器在實際電子電路中的應用。 (2)學會運用keil軟件編寫程序,提高分析程序的能力。 (3)進一步熟悉STC89C52RC單片機外部引腳的線路連接方法。 (4)熟悉LCD1602使用方法。 (5)學會使用Proteus仿真軟件對設計的電路進行仿真,驗證電路功能是否正確。 (6)學會使用DXP制作電路圖。 (7)熟悉制作電路板的流程。 2 總體設計方案2.1 方案闡述通過分析可以知道,所要設計溫度檢測與報警裝置的溫度測量范圍為-55~125℃,在lcd上并能設置上下限報警溫度,超過或低于限制溫度發出報警提示。該系統主要由溫度測量和數據采集兩部分電路組成,實現的方法有很多種,下面將列出兩種在日常生活中和工農業生產中經常用到的實現方案。 2.2 基本思路利用單片機的P2.5、P2.6、P2.7作為LCD1602的控制位,P0口作為數據位控制LCD1602,用LCD1602顯示被測量溫度的數值、上下限報警溫度;P3.4、P3.5 、P3.6、P3.7口控制手動控制按鍵,用來調節上下限報警溫度;P2.0口作為18b20的接入端; P2.口作為蜂鳴器的接入端。 2.3. 方案選擇與論證對采集的溫度數值正確的顯示是程序設計的核心,其測量的結果要求準確度高,測量過程要方便。 方案一:采用熱電偶溫差電路測溫,溫度檢測部分可以使用低溫熱偶,熱電偶由兩個焊接在一起的異金屬導線所組成,熱電偶產生的熱電勢由兩種金屬的接觸電勢和單一導體的溫差電勢組成。將兩種不同材料的導體或半導體A和B連接起來,構成一個閉合回路,就構成熱電偶.溫度t端為感溫端稱為測量端, 溫度t0端為連接儀表端稱為參比端或冷端,當導體A和B的兩個執著點t和t0之間存在溫差時,就在回路中產生電動勢EAB(t,t0), 因而在回路中形成電流,這種現象稱為熱電效應".這個電動勢稱為熱電勢,熱電偶就是利用這一效應來工作的.熱電勢的大小與t和t0之差的大小有關.當熱電偶的兩個熱電極材料已知時,由熱電偶回路熱電勢的分布理論知熱電偶兩端的熱電勢差可以用下式表示:
EAB(t,t0)=EAB(t)-EAB(t0)
式中 EAB(t,t0)-熱電偶的熱電勢;
EAB(t)-溫度為t時工作端的熱電勢;
EAB(t0)-溫度為t0時冷端的熱電勢.
從上式可看出!當工作端的被測介質溫度發生變化時,熱電勢隨之發生變化,因此,只要測出EAB(t,t0)和知道EAB(t0)就可得到EAB(t),將熱電勢送入顯示儀表進行指示或記錄,或送入微機進行處理,即可獲得測量端溫度t值。數據采集部分則使用帶有A/D 通道的單片機,在將隨被測溫度變化的電壓或電流采集過來,進行A/D 轉換后,就可以用單片機進行數據的處理,在顯示電路上,就可以將被測溫度顯示出來。熱電偶的優點是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來自導線環路的噪聲影響以及漂移較高的缺點,并且這種設計需要用到A/D 轉換電路,感溫電路比較麻煩。 系統主要包括對A/D0809 的數據采集,自動手動工作方式檢測,溫度的顯示等,這幾項功能的信號通過輸入輸出電路經單片機處理。此外還有復位電路,晶振電路,啟動電路等。故現場輸入硬件有手動復位鍵、A/D 轉換芯片,處理芯片為52芯片,執行機構有4 位數碼管、報警器等。 方案二:采用數字溫度芯片DS18B20 測量溫度,輸出信號全數字化。便于單片機處理及控制,省去傳統的測溫方法的很多外圍電路。且該芯片的物理化學性很穩定,它能用做工業測溫元件,此元件線形較好。在0—100 攝氏度時,最大線形偏差小于1 攝氏度。DS18B20 的最大特點之一采用了單總線的數據傳輸,由數字溫度計DS18B20和微控制器STC89C52RC構成的溫度測量裝置,它直接輸出溫度的數字信號,可直接與計算機連接。這樣,測溫系統的結構就比較簡單,體積也不大。采用單片機控制,軟件編程的自由度大, 
可通過編程實現各種各樣的算術算法和邏輯控制,而且體積小,硬件實現簡單,安裝方便。既可以單獨對多DS18B20控制工作,還可以與PC 機通信上傳數據,下圖為18b20的溫度與數據的關系。 圖1 溫度與數據關系圖 該系統利用STC89C52RC芯片控制溫度傳感器DS18B20進行實時溫度檢測并顯示,能夠實現快速測量環境溫度,并可以根據需要設定上下限報警溫度。以此來對某些時間點的溫度數據進行存儲,利用鍵盤來進行調時和溫度查詢。 從以上兩種方案,容易看出方案一的測溫裝置可測溫度范圍寬、體積小,且復雜,線性誤差較大,適合實驗。方案二的測溫裝置電路簡單、精確度較高、實現方便、軟件設計也比較簡單,故本次設計采用了方案二。 2.4系統設計原理利用溫度傳感器DS18B20可以直接讀取被測溫度值,進行轉換的特性,模擬溫度值經過DS18B20處理后轉換為數字值,然后送到單片機中進行數據處理,并與設置的溫度報警限比較,超過限度后通過揚聲器報警。同時處理后的數據送到LCD中顯示。 2.5系統組成本課題以是STC89C52RC單片機為核心設計的一種數字溫度控制系統,系統整體硬件電路包括,傳感器數據采集電路,溫度顯示電路,上下限報警調整電路,單片機主板電路等組成。 系統框圖主要由主控制器STC89C52RC、單片機復位、報警按鍵設置、時鐘振蕩、LCD顯示、溫度傳感器組成。 3 硬件設計3.1硬件原理框圖 溫度檢測與報警系統設計由主控制器STC89C52RC、單片機復位、報警溫度按鍵設置、時鐘振蕩、LCD1602顯示、溫度傳感器及蜂鳴器組成。 原理框圖如圖2所示:
0.png (20.34 KB, 下載次數: 48)
下載附件
2018-11-17 15:36 上傳
圖 2 原理框圖 3.2硬件結構及原理3.2.1 STC89C52RC單片機工作電路本設計的核心是單片機電路,考慮到需要一個中斷輸入,存儲容量、外部接口對單片機端口的需要以及兼顧到節約成本的原則,選用了常用的STC89C52RC單片機。STC89C52RC是低功耗、高性能、經濟的8位CMOS微處理器,工作頻率為0—40MHz,內置8K字節可編程只讀閃存,512位的內部RAM,16位可編程I/O總線。它采用Atmel公司的非易儲器制造技術,與MCS-51的指令設置和芯片引腳可兼容。STC89C52RC可以按照常規方法進行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。STC89C52RC工作的最簡單的電路是其外圍接一個晶振和一個復位電路,給單片機接上電源和地,單片機就可以工作了。 STC89C52RC各管腳功能如下: VCC:供電電壓。 GND:接地。 P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的低八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須接上拉電阻。 P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為低八位地址接收。 P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 P3口也可作為STC89C52RC的一些特殊功能口,如下表所示。在flash編程和校驗時,P3口也接收一些控制信號。 表3.2.1 P3口第二功能 | | | | |  (外部中斷0) | |  (外部中斷1) | | | | | |  (外部數據存儲器寫選通) | |  (外部數據存儲器寫選通) |
RST:復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。 ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的低位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數據存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執行狀態ALE禁止,置位無效。 /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周 期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。 
/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內部時鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 圖3 STC89C52RC工作電路 3.2.2 STC89C52RC復位電路在上電或復位過程中,控制CPU的復位狀態:這段時間內讓CPU保持復位狀態,而不是一上電或剛復位完畢就工作,防止CPU發出錯誤的指令、執行錯誤操作,也可以提高電磁兼容性能。無圖3 STC89C52RC工作電路論用戶使用哪種類型的單片機,總要涉及到單片機復位電路的設計。 而單片機復位電路設計的好壞,直接影響到整個系統工作的可靠性。許多用戶在設計完單片機系統,并在實驗室調試成功后,在現場卻出現了“死機”、“程序走飛”等現象,這主要是單片機的復位電路設計不可靠引起的。 
單片機在啟動時都需要復位,以使CPU及系統各部件處于確定的初始狀態, 并從初態開始工作。89系列單片機的復位信號是從RST引腳輸入到芯片內的施密特觸發器中的。當系統處于正常工作狀態時,且振蕩器穩定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應并將系統復位。 圖4 復位電路 復位電路通常采用上電自動復位和按鈕復位兩種方式。上電自動復位是通過外部復位電路的電容充電來實現的。只要VCC的上升時間不超過1ms,就可以實現自動上電復位。除了上電復位外,有時還需要按鍵手動復位。按鍵手動復位有電平方式和脈沖方式兩種。其中電平復位是通過RST端經電阻與電源VCC接通而實現的。兼有上電復位和按鈕復位的電路。在單片機設計中,若有外部擴展的I/O接口電路需初始復位,如果它們的復位端和MCS-51單片機的復位端相連,復位電路中的R、C參數要受到影響,這時復位電路中的R、C參數要統一考慮以保證可靠的復位。如果單片機MCS-51單片機與外圍I/O接口電路的復位電路和復位時間不完全一致,單片機初始化程序不能正常運行,外 圍/O接口電路的復位也可以不和MCS-51單片機復位端相連,僅采用獨立的上電復位電路。一般來說,單片機的復位速度比外圍I/O快些。若RC上電復位電路接MCS-51單片機和外圍電路復位端,則能使系統可靠地同步復位。為保證系統可靠復位,在初始化程 序中應用到一定的復位延遲時間。復位電路軟件程序跑飛或者硬件發生錯誤的時候產生一個復位信號,控制MCS-51單片機從0000H單元開始執行程序,重新執行軟件程序。此電路的輸出端RESET接在單片機的復位引腳。 3.2.3 STC89C52RC時鐘電路時鐘在單片機中非常重要,單片機各功能部件的運行都是以時鐘頻率為基準。時鐘頻率直接影響單片機的速度,時鐘電路的質量也直接影響單片機系統的穩定性。常用的時鐘電路有兩種方式,一種是內部時鐘方式,另一種為外部時鐘方式。內部時鐘方式電路圖如圖5所示: 
圖5 時鐘電路 MCS-51單片機內部有一個用與構成振蕩器的高增益反相放大器,該高增益反相放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳接石英晶體振蕩器和微調電容,就構成一個穩定的自激振蕩器電路。電路中的電容C1和C2典型值通常選擇為20PF左右。對外接電容的值雖然沒有嚴格的要求,但是電容的大小會影響振蕩器頻率的高低、振蕩器的穩定性和起振的快速性。晶體的振蕩頻率的范圍通常是在1.2MHz—12MHz之間。晶體的頻率越高,則系統的時鐘頻率也就越高,單片機的運行速度也就越快。為了提高溫度穩定性,應采用溫度穩定性能好的NPO高頻電容。MCS-51單片機常選擇振蕩頻率12MHz的石英晶體。外部時鐘方式是使用外部振蕩脈沖信號,常用于多片MCS-51單片機同時工作,以便于同步。對外部脈沖信號只要求高電平的持續時間大于20us,一般為低于12MHz的方波。外部的時鐘源直接接到XTAL2端,直接輸入到片內的時鐘發生器上。由于XTAL2的邏輯電平不是TTL的,因此要外接一個4.7k~10k的上拉電阻。這次的設計采用MCS-51的內部時鐘方式。因為外部時鐘方式是用外部振蕩脈沖信號,用于多片MCS-51單片機同時工作。在這次設計中只用一個MCS-51單片機,不需要振蕩脈沖信號。 3.2.4 STC89C52RC按鍵電路按鍵是實現人機對話的比較直觀的接口,可以通過按鍵實現人們想讓單片機做的不同的工作。常用的鍵盤接口分為獨立式鍵盤接口和矩陣式鍵盤接口。獨立式鍵盤接口就是各鍵相互獨立,每個按鍵各接一根輸入線,一根輸入線上的按鍵工作狀態不影響其他輸入線的工作狀態。通過檢測輸入電平狀態可以很容易判斷哪個按鍵被按下了。獨立式按鍵電路配置靈活,軟件實現簡單。但每個按鍵需占用一根輸入口線,在按鍵數量較多時,需要較多的輸入口線而且電路結構繁雜,故此種鍵盤適用于按鍵較少或操作速度較高的場合。而矩陣式鍵盤有行線和列線組成,按鍵位于行,列的交叉點上,適用于按鍵較多的場合。下圖就是一種比較典型的獨立按鍵電路,在按鍵沒有按下的時候,I/O口采集到的是高電平,當按鍵按下去的時候,I/O口采集到的是低電平。 3.2.5 STC89C52RC顯示電路1602字符型LCD模塊的應用非常廣泛,而各種液晶廠家均有提供幾乎都是同樣規格的1602模塊或兼容模塊,盡管各廠家的對其各自的產品命名不盡相同;1602字符型LCD 模塊最初采用的LCD控制器采用的是HD44780,在各廠家生產的1602模塊當中,基本上也都采用了與之兼容的控制IC,所以從特性上基本上是一樣的;當然,很多廠商提供了不同的字符顏色、背光色之類的顯示模塊。 圖6 液晶顯示電路
表3.2.5 LCD管腳功能
3.2.6 DS18B20DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數因分辨率不同而不同,且溫度轉換時的延時時間由2s 減為750ms。 DS18B20測溫原理:低溫度 系數晶振的振蕩頻率受溫度影響很小,用于產生固定頻率的脈沖信號送給計數器1。高溫度系數晶振 隨溫度變化其振蕩率明顯改變,所產生的信號作為計數器2的脈沖輸入。計數器1和溫度寄存器被預置在-55℃所對應的一個基數值。計數器1對 低溫度系數晶振產生的脈沖信號進行減法計數,當計數器1的預置值減到0時,溫度寄存器的值將加1,計數器1的預置將重新被裝入,計數器1重 新開始對低溫度系數晶振產生的脈 沖信號進行計數,如此循環直到計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。 圖7 DS18B20
DS18B20功能特點:(1)采用單總線技術,與單片機通信只需要一根I/O線,在一根線上可以掛接多個DS18B20。 (2)每只DS18B20具有一個獨有的,不可修改的64位序列號,根據序列號訪問地應的器件。 (3)低壓供電,電源范圍從3~5V,可以本地供電,也可以直接從數據線上竊取電源(寄生電源方式)。 (4)測溫范圍為-55℃~+125℃,在-10℃~85℃范圍內誤差為±0.5℃。 (5)可編輯數據為9~12位,轉換12位溫度時間為750ms(最大)。 (6)用戶可自設定報警上下限溫度。 (7)報警搜索命令可識別和尋址哪個器件的溫度超出預定值。 (8) DS18B20的分辯率由用戶通過EEPROM設置為9~12位。 (9) DS18B20可將檢測到溫度值直接轉化為數字量,并通過串行通信的方式與主控制器進行數據通信。 DS18B20有4個主要的數據部件: (1) 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位 (28H)是產品類型標號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環冗余校驗碼(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一個DS18B20都各不相同,這樣就可以實現一根總線上掛接多個DS18B20的目的。 (2) DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數形式提供,以 0.0625℃/LSB形式表達,其中S為符號位。 (3) DS18B20溫度傳感器的存儲器 DS18B20溫度傳感器的內部存儲器包括一個高速暫存RAM和一個非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發器 TH、TL和結構寄存器。 (4) 配置寄存器。 DS18B20內部結構及功能:DS18B20的內部結構主要包括:寄生電源,溫度傳感器,64位ROM和單總線接口,存放中間數據的高速暫存器RAM,用于存儲用戶設定溫度上下限值的TH和TL觸發器,存儲與控制邏輯,8位循環冗余校驗碼(CRC)發生器等7部分。 溫度的讀。 DS18B20在出廠時以配置為12位,讀取溫度時共讀取16位,所以把后11位的2進制轉化為10進制后在乘以0.0625便為所測的溫度,還需要判斷正負。前5個數字為符號位,當前5位為1時,讀取的溫度為負數;當前5位為0時,讀取的溫度為正數。 DS18B20的初始化:(1)先將數據線置高電平“1”。 (2)延時(該時間要求的不是很嚴格,但是盡可能的短一點)。 (3)數據線拉到低電平“0”。 (4)延時750微秒(該時間的時間范圍可以從480到960微秒)。 (5)數據線拉到高電平“1”。 (6)延時等待(如果初始化成功則在15到60毫秒時間之內產生一個由DS18B20所返回的低電平“0”。據該狀態可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環,所以要進行超時控制 (7)若CPU讀到了數據線上的低電平“0”后,還要做延時,其延時的時間從發出的高電平算起(第(5)步的時間算起)最少要480微秒。 (8)將數據線再次拉高到高電平“1”后結束。 DS18B20的寫操作:(1)數據線先置低電平“0”。 (2) 延時確定的時間為15微秒。 (3) 按從低位到高位的順序發送字節(一次只發送一位)。 (4)延時時間為45微秒。 (5)將數據線拉到高電平。 (6) 重復上(1)到(6)的操作直到所有的字節全部發送完為止。 (7) 最后將數據線拉高。 DS18B20的讀操作:(1)將數據線拉高“1”。 (2)延時2微秒。 (3)將數據線拉低“0”。 (4)延時15微秒。 (5)將數據線拉高“1”。 (6)延時15微秒。 (7)延時30微秒。
圖8 DS18B20電路 3.2.7 蜂鳴器
蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。 蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“H”或“HA”(舊標準用“FM”、“LB”、“JD”等)表示。 
圖9 蜂鳴器 圖10 蜂鳴器電路圖 4 軟件設計本設計智能溫度報警系統由溫度采集、信號處理、溫度監測、輸出控制四部分組成。它通過預先設在單片機中的高低溫度值來對非常溫度值進行報警,也可以通過安檢的控制對溫度進行高低的設定最低可以由0℃開始進行溫度的設定,從DSI8B20 采集到的溫度經信號調理電路處理后直接送入單片機進行刷新。微控制器根據信號數據及設定的各種控制參數,按照嵌入的軟件控制規律執行計算與處理,自動顯示溫度值、輸出相應的控制信號,并根據當前狀態輸出正常、報警等信號,同時將各種數據通過數碼管進行顯示監控。 4.1 軟件編寫工具軟件編寫工具選用美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統Keil C51,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢。 4.2 總體設計該溫度檢測的軟件設計采用C51語言編程。系統程序由主程序、溫度設定子程序、溫度采集子程序、溫度刷新子程序、液晶顯示程序和按鍵子程序等部分組成(程序流程圖如圖12所示)。
圖11 系統的軟件設計流程 4.3 主程序流程主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,其程序流程見圖13所示:
圖12 主程序流程 4.4 程序分析4.4.1 讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫。 程序如下: void ReadTemperature(void) { unsigned char L=0; unsigned char H=0; Init_DS18B20(); WriteOneChar(0xCC);//跳過讀序號列號的操作 WriteOneChar(0x44);//啟動溫度轉換 delay_18B20(100); Init_DS18B20(); WriteOneChar(0xCC);//跳過讀序號列號的操作 WriteOneChar(0xBE);//讀取溫度寄存器等(共可讀9個寄存器前兩個就是 溫度 L=ReadOneChar(); H=ReadOneChar(); if(H>0xf8) //高位前五位為1時溫度是負 { L=~L+1; H=~H; f=0; //讀取溫度為負時fg=0 sdata = L/16+H*16; //整數部分 xiaoshu1 = (L&0x0f)*10/16; //小數第一位 xiaoshu2 = (L&0x0f)*100/16%10; //小數第二位 } //傳感器返回值除16得實際溫度值 //為了得到2位小數位,先乘100,再除16,考慮整型數據長度, else { f=1; sdata = L/16+H*16; //整數部分 xiaoshu1 = (L&0x0f)*10/16; //小數第一位 xiaoshu2 = (L&0x0f)*100/16%10; //小數第二位 } } 4.4.2 顯示數據刷新子程序顯示數據刷新子程序主要是對分離后的溫度顯示數據進行刷新操作,當標志位位為1時將符號顯示。 程序如下: void display(unsigned int date) //顯示溫度, { if(date/100==0) //100度內 { write_com(0x84); write_data(shuzu[date/10]);//十位 write_com(0x85); write_data(shuzu[date%10]);//個位 write_com(0x86); write_data(shuzu[13]);//小數點 write_com(0x87); write_data(shuzu[xiaoshu1]);//小數點后一位 write_com(0x88); write_data(shuzu[xiaoshu2]); //小數點后二位 write_com(0x89); write_data(shuzu[12]); } else if(date/100==1) //100度上 { write_com(0x84); write_data(shuzu[date/100]);//百位 write_com(0x85); write_data(shuzu[(date-100)/10]);//十位 write_com(0x86); write_data(shuzu[date%10]);//個位 write_com(0x87); write_data(shuzu[13]);//點 write_com(0x88); write_data(shuzu[xiaoshu1]);//小數點后一位 write_com(0x89); write_data(shuzu[xiaoshu2]);//小數點后二位 } } 4.4.3 按鍵掃描子程序第一步:平時沒有按鍵被觸發時,不會執行程序。 第二步:一旦有按鍵被按下,執行去抖動延時,再判定。 第三步:如果按鍵按下的時間超過了去抖動延時,則觸發按鍵,馬上把按鍵值鎖定,防止按住按鍵不松手后一直觸發。 第四步:等按鍵松開后,自鎖不執行,為下一次自鎖做準備。 第五步:以上整個過程,就是識別按鍵IO口下降沿觸發的過程。 程序如下: void key() //按鍵加減標尺
{ if(keym==0)//判定 { delay_50us(100);//延時 if(keym==0) { y++;//轉換加減的數值 if(y==2)m=1; else if(y==3)m=5;//數值5 else if(y==4)m=10; //數值10 else if(y>=5)y=1; //數值1 while(keym==0);//自鎖 } } if(keyh==0)//上下限轉換按鍵 { delay_50us(100); if(keyh==0) { o++; if(o>=3)o=0;//1為上限選中,2為下限選中,0為隱藏 while(keyh==0); } } /////調節上限溫度 if(keyu==0&o==1)//上限加按鍵 { delay_50us(100); if(keyu==0&o==1) { u=u+m; while(keyu==0); } } if(keyl==0&o==1) //上限減按鍵
{ delay_50us(100); if(keyl==0&o==1) { u=u-m; while(keyl==0); } } //// 調節下限溫度 if(keyu==0&o==2)//下限加按鍵 { delay_50us(100); if(keyu==0&o==2) { l=l+m;while(keyu==0); } } if(keyl==0&o==2)//下限減按鍵 { delay_50us(100); if(keyl==0&o==2) { l=l-m;while(keyl==0); } } } 5 制板流程(1)打印電路板將繪制好的電路板用轉印紙打印出來,注意滑的一面面向自己,一般打印兩張電路板,即一張紙上打印兩張電路板。在其中選擇打印效果最好的制作線路板。 (2)裁剪覆銅板用感光板制作電路板全程圖解 。覆銅板,也就是兩面都覆有銅膜的線路板,將覆銅板裁成電路板的大小,不要過大,以節約材料。 (3)預處理覆銅板用細砂紙把覆銅板表面的氧化層打磨掉,以保證在轉印電路板時,熱轉印紙上的碳粉能牢固的印在覆銅板上,打磨好的標準是板面光亮,沒有明顯污漬。 (4)轉印電路板將打印好的電路板裁剪成合適大小,把印有電路板的一面貼在覆銅板上,對齊好后把覆銅板放入熱轉印機,放入時一定要保證轉印紙沒有錯位。一般來說經過2-3次轉印,電路板就能很牢固的轉印在覆銅板上。熱轉印機事先就已經預熱,溫度設定在160-200攝氏度,由于溫度很高,操作時注意安全! (5)腐蝕線路板先檢查一下電路板是否轉印完整,若有少數沒有轉印好的地方可以用黑色油性筆修補。然后就可以腐蝕了,等線路板上暴露的銅膜完全被腐蝕掉時,將線路板從腐蝕液中取出清洗干凈,這樣一塊線路板就腐蝕好了。腐蝕液的成分為濃鹽酸、濃雙氧水、水,比例為1:2:3,在配制腐蝕液時,先放水,再加濃鹽酸、濃雙氧水,若操作時濃鹽酸、濃雙氧水或腐蝕液不小心濺到皮膚或衣物上要及時用清水清洗,由于要使用強腐蝕性溶液,操作時一定注意安全! (6)線路板鉆孔線路板上是要插入電子元件的,所以就要對線路板鉆孔了。依據電子元件管腳的粗細選擇不同的鉆針,在使用鉆機鉆孔時,線路板一定要按穩,鉆機速度不能開的過慢,請仔細看操作人員操作。 (7)線路板預處理鉆孔完后,用細砂紙把覆在線路板上的墨粉打磨掉,用清水把線路板清洗干凈。水干后,用松香水涂在有線路的一面,為加快松香凝固,本文用熱風機加熱線路板,只需2-3分鐘松香就能凝固。 (8)焊接電路板,最后把元器件焊接在電路板上,注意要盡量減少虛焊,空焊,連焊等現象。 6 系統調試6.1 硬件調試(1)目測,檢查外部的各種元件或者電路是否有斷點。 (2)溫度檢測與報警裝置在沒通電的情況下,用數字萬用表的二極管檔檢查電路板線路是否導通或者短路。 (3)加電檢測,給電路板加電檢測所有的插座或者硬件的電源是否符合要求的值。 6.2 軟件調試6.2.1 仿真軟件隨著科技的發展,“計算機仿真技術”已成為許多設計部門重要的前期設計手段。它具有設計靈活,仿真的結果與測試結果較為接近。Proteus軟件是英國L阿寶center electronics公司出版的EDA工具軟件。它不僅具有其他EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。該軟件功能強大。先在proteus上按照電路圖連接好電路圖,打開程序HEX文件進行仿真。仿真結果如下,lcd能正常顯示溫度和上下限溫度,按鍵可以準確調節上下限溫度,仿真結果與理論接近。 
圖13 仿真圖 6.3 調試結果開啟電源,打開開關,LCD1206顯示歡迎并開始測溫。當溫度超過上限溫度或低于下限溫度時報警提示正常,以下是實時溫度的一些測量值,因1602的顯示屏大小不能設置到小數部分的報警溫度,只能設定到整數部分的報警溫度。 表6.3.1 溫度測試結果
7 結論該智能溫度報警系統結構簡單,具有一定的實際應用價值。該智能溫度報警系統只是DS18B20在溫度控制領域的一個簡單實例,此外,還能廣泛地應用于各種工業生產領域,如建筑,倉儲等行業,特別是在蔬菜大棚的應用上,本次設計雖然完成了,但是次設計也還是有些許不足的地方,與實際溫度計測量到的溫度還是有差距,因為能力的問題,該智能溫度報警系統精確度最高可達到相差0.1℃,最大誤差為1.5℃;能夠設定的上限溫度范圍為0℃到120℃,下限溫度為-50℃到99℃。
謝 辭 畢業設計是對本文知識運用能力的一次全面的考核,也是對本文進行科學研究基本功的訓練,培養本文綜合運用所學知識獨立地分析問題和解決問題的能力,為以后撰寫專業學術論文和工作打下良好的基礎。 本次設計能夠順利完成,首先要感謝母校,是她為本文提供了學習知識的土壤,使本文在這里茁壯成長;其次要感謝電子信息工程系的老師們,他們不僅教會本文專業方面的知識,而且教會本文做人做事的道理,也要感謝本次設計的指導老師。
原理圖
PCB 
0.png (38.65 KB, 下載次數: 49)
下載附件
2018-11-17 15:34 上傳
完整的Word格式文檔51黑下載地址(仿真+pcb+代碼):
http://www.zg4o1577.cn/bbs/dpj-142007-1.html
|