溫度自動控制畢業(yè)設計--基于51單片機的溫度自動控制系統(tǒng)設計研究_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本 科 畢 業(yè) 設 計(論文)</p><p>  題目 基于51單片機的溫度自動控制 </p><p>  系統(tǒng)設計研究 </p><p>  院(系部) 電氣與自動化工程系 </p><p>  專業(yè)名稱 通信工程 </p><p>

2、  年級班級 09-2通信 </p><p>  學生姓名 </p><p>  指導教師 </p><p>  2013年05月10日</p><p><b>  摘 要</b></p><p>  基于單片機的溫度控制器,

3、采用DS18B20溫度傳感器采集所要測量的當前環(huán)境的溫度,通過單片機進行處理并加以顯示。單片機采用的是AT89S52系列單片機。溫度傳感器DS18B20具有12位精度,可較為精確的測量當前環(huán)境的溫度。</p><p>  該溫度控制器具有設定溫度上、下限的功能,通過控制繼電器控制外部降溫、加熱裝置,從而實現(xiàn)環(huán)境溫度處于設定溫度上、下限范圍內。</p><p>  該溫度控制器的顯示部分采用

4、LED數(shù)碼管顯示,具有顯示當先溫度、溫度上、下限值的功能。按鍵部分采用四個按鍵,每個按鍵的功能不同,通過按鍵的配合使用,可以實現(xiàn)切換LED數(shù)碼管顯示,調節(jié)溫度上下限的功能。</p><p>  該系統(tǒng)結構簡單,精度高、量程寬、靈敏度高、體積小、功耗低,抗干擾能力強,適合于惡劣環(huán)境下進行現(xiàn)場溫度測量,有廣泛的應用前景。</p><p>  關鍵詞:單片機 AT89S52 DS18B20 數(shù)碼

5、管 繼電器</p><p><b>  Abstract</b></p><p>  Temperature controller based on MCU, using the current environment to measure the temperature of sensor DS18B20, processing and display by MCU

6、. The microcontroller is series of MCU AT89S52. The temperature of sensor DS18B20, with 12 accuracy, can accurately measure the current environment temperature.</p><p>  The temperature controller can set te

7、mperature, and have the lower limit function,control the relay to control the external cooling, heate device. So as to realize the environmental temperature at the setting temperature, and lower bounds.</p><p&

8、gt;  The temperature controller with the display parts, adopts LED digital tube display. Displaying the current temperature, lower value. The part of the four keys, with defferent function , can realize the switch LED di

9、gital tube display, adjust the temperature upper limition .</p><p>  This system is simple, high precision, wide range, high sensitivity, small size, low power consumption, strong anti-jamming capability, su

10、itable for harsh environments on-site temperature measurement, has a broad application prospection.</p><p>  Key words: MCU AT89S52 DS18B20 digitron relay目 錄</p><p><b>  前 言1</b>&

11、lt;/p><p>  1 系統(tǒng)方案設計2</p><p>  1.1 方案論證2</p><p>  1.1.1 方案一2</p><p>  1.1.2 方案二2</p><p>  1.2 系統(tǒng)設計框圖3</p><p>  2 系統(tǒng)硬件設計4</p><p&g

12、t;  2.1 單片機選擇4</p><p>  2.1.1 AT89S52 特點4</p><p>  2.1.2 AT89S52 功能描述5</p><p>  2.1.3 AT89S52 引腳功能5</p><p>  2.2 溫度傳感器的選擇6</p><p>  2.2.1 DS18B20簡單介紹

13、6</p><p>  2.2.2 DS18B20性能特點7</p><p>  2.2.3 DS18B20內部結構7</p><p>  2.2.4 DS18B20測溫原理8</p><p>  2.2.5 DS18B20工作時序10</p><p>  2.3 硬件電路設計11</p>&l

14、t;p>  2.3.1 測溫電路11</p><p>  2.3.2 顯示電路13</p><p>  2.3.3 報警電路15</p><p>  2.3.4 降溫、加熱電路15</p><p>  2.3.5 其他電路16</p><p>  3 系統(tǒng)軟件設計18</p><p

15、>  3.1軟件設計18</p><p><b>  4 系統(tǒng)調試20</b></p><p>  4.1 軟件調試20</p><p>  4.2 元器件調試20</p><p><b>  5 總 結22</b></p><p><b>  致

16、 謝23</b></p><p><b>  參考文獻24</b></p><p><b>  附錄一25</b></p><p><b>  附錄二34</b></p><p><b>  前 言</b></p>&

17、lt;p>  溫度是工業(yè)生產中常見的工藝參數(shù)之一,任何物理變化和化學反應過程都與溫度密切相關,因此溫度控制是生產自動化的重要任務。例如:在農業(yè)溫室大棚生產、冶金工業(yè)、化工生產、電力工程、造紙行業(yè)、機械制作、和食品加工等諸多領域中,人們都需要對各類環(huán)境、加熱爐、熱處理爐、反應爐和鍋爐中的溫度進行檢測和控制。采用單片機對溫度進行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點,而且可以大幅度提高被控溫度的技術指標,從而能夠大大提高產品

18、的質量和數(shù)量。因此,單片機對溫度的控制問題是一個工業(yè)中經常遇到的問題。</p><p>  基于單片機的溫度控制系統(tǒng)可以實現(xiàn)溫度的顯示、預警等功能,對于工業(yè)生產效率的提高,可以起到很大的作用??茖W技術是第一生產力,對溫度實現(xiàn)比較系統(tǒng)化的檢測控制使人們的生產節(jié)奏有一個良好的循環(huán)。從而將節(jié)約更多的人力物力,降低生產過程中可以省略的一些繁瑣的細節(jié)。一個簡單有效地控制系統(tǒng)可以在一定程度上使工廠的生產效益上一個臺階,只要運

19、用得當,就有可能做到。</p><p>  本設計是基于當前社會發(fā)展的良好形勢,經過慎重考慮后決定的,也是對自己所學知識的一次檢驗,期望能夠獲得溫故而知新的效果。只有不斷地學習才能不斷的進步。結合社會的實際情況,然后根據(jù)自己的特點,更好的去了解自己,充分挖掘自己的潛力。學以致用是老師要求我們的努力方向,現(xiàn)今社會要求我們對知識的應用越來越熟練,只有靠自己鍥而不舍的奮發(fā)圖強,才能爭取自己的一片天地。</p>

20、;<p><b>  1 系統(tǒng)方案設計</b></p><p><b>  1.1 方案論證</b></p><p>  由于本方案是基于溫度傳感器的溫度自動控制??梢圆捎脙煞N方案:一種是使用熱敏電阻之類的元件;另一種是使用數(shù)字溫度傳感器</p><p><b>  1.1.1 方案一</b&

21、gt;</p><p>  選用熱敏電阻電路,測溫部分選用熱敏電阻,將隨被測溫度變化的電壓或電流采樣,進行A/D轉換后就可以用單片機進行數(shù)據(jù)處理,實現(xiàn)溫度顯示。這種設計需要用到A/D轉換電路,增大了電路的復雜性,而且要做到高精度也比較困難。</p><p><b>  1.1.2 方案二</b></p><p>  考慮到單片機屬于數(shù)字系統(tǒng),容

22、易想到數(shù)字溫度傳感器,可選用DS18B20數(shù)字溫度傳感器,此傳感器為單總線數(shù)字溫度傳感器,體積小、構成的系統(tǒng)結構簡單,它可直接將溫度轉化成數(shù)字信號給單片機處理。另外DS18B20具有3引腳的小體積封裝,測溫范圍為-55~+125攝氏度,測溫分辨率可達0.0625攝氏度,其測量范圍與精度都能符合設計要求。</p><p>  以上兩種方案相比較,第二種方案的電路、軟件設計更簡單,此方案設計的系統(tǒng)在功耗、測量精度、范

23、圍等方面都能很好地達到要求,故本設計采用方案二。</p><p>  1.2 系統(tǒng)設計框圖</p><p>  本方案設計的系統(tǒng)由單片機系統(tǒng)、數(shù)字溫度傳感器、數(shù)碼管顯示模塊、按鍵控制模塊、溫度報警模塊、溫度控制模塊組成,其總體架構如圖1-1所示</p><p><b>  圖1-1 系統(tǒng)框圖</b></p><p>&l

24、t;b>  2 系統(tǒng)硬件設計</b></p><p><b>  2.1 單片機選擇</b></p><p>  AT89S52作為溫度測試系統(tǒng)的核心器件。該器件是INTEL公司生產的MCS-51系列單片機中的基礎產品,采用可靠的CMOS工藝制造技術,具有高性能的8位單片機,屬于標準的MCS-51產品。單片機AT89S52具有低電壓供電和體積小等特點

25、,四個端口只需要兩個口就能滿足電路系統(tǒng)的設計需要,單片機如圖2-1所示。</p><p>  2.1.1 AT89S52 特點</p><p>  與MCS-51 兼容;</p><p>  4K字節(jié)可編程閃爍存儲器;</p><p>  壽命:1000寫/擦循環(huán);</p><p>  數(shù)據(jù)保留時間:10年;</

26、p><p>  全靜態(tài)工作:0MHz-33MHz;</p><p>  三級程序存儲器鎖定;</p><p>  128*8位內部RAM;</p><p>  32位可編程I/O線;</p><p>  兩個16位定時器/計數(shù)器;</p><p><b>  5個中斷源;</b>

27、;</p><p><b>  可編程串行通道;</b></p><p>  低功耗的閑置和掉電模式;</p><p>  片內振蕩器和時鐘電路。</p><p>  圖2-1 AT89S52單片機</p><p>  2.1.2 AT89S52 功能描述</p><p>

28、  AT89S52是一種低損耗、高性能、CMOS八位微處理器,片內有4k字節(jié)的在線可重復編程、快速擦除、快速寫入程序的存儲器,能承復寫入/擦除1000次,數(shù)據(jù)保存時間為十年。它與MCS-51系列單片機在指令系統(tǒng)和引腳上完全兼容,不僅可完全代替MCS-51系列單片機,而且能使系統(tǒng)具有許多MCS-51系列產品沒有的功能[]。</p><p>  AT89S52可構成真正的單片機最小應用系統(tǒng),縮小系統(tǒng)休積,增加系統(tǒng)的可

29、靠性,降低系統(tǒng)的成本。只要程序長度小于4K,四個I/O全部提供給用戶。可用5V電壓編程,而且擦寫時間僅擊10毫秒,僅為8751/87C51的擦除時間的百分之一,與8751/87C51的12V電壓擦寫相比,不易損壞器件,沒有兩種電源的需求,可以直接在5V電壓下進行編程,不需要12V電源。改寫時不拔下芯片,適合許多嵌入式控制領域。工作電壓范圍寬,全靜態(tài)工作,工作頻率寬在0MHz-33MHz之間,比8751/87C51等51系列的6MHz-1

30、2MHz更具有靈活性。 AT89S52芯片提供三級程序存儲器加密,提供了方便靈活而可靠的硬加密于段,能完全保證程序或系統(tǒng)不被仿制。</p><p>  2.1.3 AT89S52 引腳功能</p><p>  AT89S52 單片機 P3 口第二功能如圖2-2所示[]。</p><p>  圖2-2 P3口的第二功能</p><p>  2.

31、2 溫度傳感器的選擇</p><p>  由于傳統(tǒng)的熱敏電阻等測溫元件測出的一般都是電壓,再轉換成對應的溫度,需要比較多的外部元件支持,且硬件電路復雜,制作成本相對較高。這里采用DALLAS公司的數(shù)字溫度傳感器DS18B20作為測溫元件。</p><p>  2.2.1 DS18B20簡單介紹</p><p>  DALLAS 最新單線數(shù)字溫度傳感器DS18B20是

32、一種新型的“一線器件”,其體積更小、更適用于多種場合、且適用電壓更寬、更經濟。DALLAS 半導體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線總線”接口的溫度傳感器。溫度測量范圍為-55~+125 攝氏度,可編程為9位~12 位轉換精度,測溫分辨率可達0.0625攝氏度,分辨率設定參數(shù)以及用戶設定的報警溫度存儲在EEPROM 中,掉電后依然保存。被測溫度用符號擴展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠端引入,也

33、可以采用寄生電源方式產生;多個DS18B20可以并聯(lián)到3 根或2 根線上,CPU只需一根端口線就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。因此用它來組成一個測溫系統(tǒng),具有線路簡單,在一根通信線,可以掛很多這樣的數(shù)字溫度計,十分方便。</p><p>  2.2.2 DS18B20性能特點</p><p> ?。?)獨特的單線接口方式,DS18B20在

34、與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。</p><p> ?。?)DS18B20支持多點組網功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網多點測溫</p><p> ?。?)DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內</p><p> ?。?)適應電壓范圍更寬,電壓范

35、圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電</p><p> ?。?)測溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃</p><p> ?。?)可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫</p><p> ?。?)在9位分辨率時最多在93.75ms內把

36、溫度轉換為數(shù)字,12位分辨率時最多在750ms內把溫度值轉換為數(shù)字,速度更快</p><p> ?。?)測量結果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力</p><p>  2.2.3 DS18B20內部結構</p><p>  DS18B20內部結構主要由四部分組成:64位光刻ROM

37、、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。</p><p>  圖2-3為DS18B20的內部框圖,它主要包括寄生電源、溫度傳感器、64位激光ROM單線接口、存放中間數(shù)據(jù)的高速暫存器(內含便箋式RAM),用于存儲用戶設定的溫度上下限值的TH和TL觸發(fā)器存儲與控制邏輯、8位循環(huán)冗余校驗碼(CRC)發(fā)生器等七部分,如圖2-3所示。</p><p>  圖2-3 DS18B20

38、內部結構框圖</p><p>  2.2.4 DS18B20測溫原理</p><p>  DS18B20的測溫原理如圖2-4所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小用于產生固定頻率的脈沖信號送給減法計數(shù)器1,高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,所產生的信號作為減法計數(shù)器2的脈沖輸入,圖中還隱含著計數(shù)門,當計數(shù)門打開時,DS18B20就對低溫度系數(shù)振蕩器產生的時鐘脈沖進行計

39、數(shù),進而完成溫度測量.計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將-55 ℃所對應的基數(shù)分別置入減法計數(shù)器1和溫度寄存器中,減法計數(shù)器1和溫度寄存器被預置在-55 ℃所對應的一個基數(shù)值。</p><p>  減法計數(shù)器1對低溫度系數(shù)晶振產生的脈沖信號進行減法計數(shù),當減法計數(shù)器1的預置值減到0時溫度寄存器的值將加1,減法計數(shù)器1的預置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產生的脈沖信號進

40、行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫圖2中的斜率累加器用于補償和修正測溫過程中的非線性其輸出用,于修正減法計數(shù)器的預置值,只要計數(shù)門仍未關閉就重復上述過程,直至溫度寄存器值達到被測溫度值,這就是DS18B20的測溫原理。如圖2-4所示。</p><p>  另外,由于DS18B20單線通信功能是分時完成的,他有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)

41、對DS18B20的各種操作必須按協(xié)議進行。操作協(xié)議為:初始化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p>  圖2-4 DS18B20測溫原理圖</p><p>  2.2.5 DS18B20工作時序</p><p>  圖2-5為時序圖中各總線狀態(tài)。</p><p><b>  圖2

42、-5工作時序圖</b></p><p> ?。ǎ保┏跏蓟〞r序圖見圖2-6)。</p><p>  圖2-6 初始化時序圖</p><p> ?、?先將數(shù)據(jù)線置高電平1。</p><p>  ② 延時(改時間要求不是很嚴格,但是要盡可能短一點)。</p><p> ?、?數(shù)據(jù)線拉到低電平0.</p&g

43、t;<p>  ④ 延時750us(改時間范圍可以在480-960us)。</p><p>  ⑤ 數(shù)據(jù)線拉到高電平1。</p><p> ?、?延時等待。如果初始化成功則在15-60ms 內產生一個有DS18B20 返回的低電平0,據(jù)該狀態(tài)可以確定它的存在。但是應注意不能無限的等待,不然會使程序進入死循環(huán),所以要進行超時判斷。</p><p> ?、?/p>

44、 若CPU 讀到數(shù)據(jù)線上的低電平0 后,還要進行延時,其延時的時間從發(fā)出高電平算起(第5 步的時間算起)最少要480us。</p><p> ?、?將數(shù)據(jù)線再次拉到高電平1 后結束。</p><p> ?。ǎ玻〥S18B20 寫數(shù)據(jù)</p><p> ?、?數(shù)據(jù)線先置低電平0。</p><p> ?、?延時確定的時間為15us。</p&

45、gt;<p>  ③ 按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。</p><p> ?、?延時時間為45us。</p><p> ?、?將數(shù)據(jù)線拉到高電平1。</p><p> ?、?重復①-⑤步驟,直到發(fā)送完整個字節(jié)。</p><p>  ⑦ 最后將數(shù)據(jù)線拉到高電平1。</p><p> ?。ǎ常?/p>

46、DS18B20 讀數(shù)據(jù)</p><p> ?、?將數(shù)據(jù)線拉到高電平1。</p><p><b> ?、?延時2us。</b></p><p> ?、?將數(shù)據(jù)線拉低到0。</p><p><b> ?、?延時6us。</b></p><p> ?、?將數(shù)據(jù)線拉高到1。</

47、p><p><b> ?、?延時4us。</b></p><p> ?、?讀數(shù)據(jù)線的狀態(tài)得到一個狀態(tài)位,并進行數(shù)據(jù)處理。</p><p><b>  ⑧ 延時30us。</b></p><p> ?、?重復①-⑦步驟,直到讀完一個字節(jié)。</p><p>  2.3 硬件電路設計&

48、lt;/p><p>  2.3.1 測溫電路</p><p>  本設計采用DS18B20溫度傳感器作為溫度采集電路核心部件。DS18B20是美國DALLAS 半導體公司推出的第一片支持“一線總線”接口的溫度傳感器,它具有微型化、低功耗、高性能、抗干擾能力強、易配微處理器等優(yōu)點,可直接將溫度轉化成串行數(shù)字信號供處理器處理。</p><p>  目前常用的單片機與外設之間

49、進行數(shù)據(jù)傳輸?shù)拇锌偩€主要有I²C 總線以同步串行二線方式進行通信(一條時鐘線,一條數(shù)據(jù)線),SPI總線則以同步串行三線方式進行通信(一條時鐘線,一條數(shù)據(jù)輸入線,一條數(shù)據(jù)輸出線),而SCI 總線是以異步方式進行通信的(一條數(shù)據(jù)輸入線,一條數(shù)據(jù)輸出線)。這些總線至少需要兩條或兩條以上的信號線,而DS18B20使用的單總線技術與上述總線不同,它采用單條信號線,既可傳輸時鐘,又可傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,因而單總線技術具有線路

50、簡單,硬件開銷少,成本低廉,便于總線擴展和維護等優(yōu)點。單總線適用于單主機系統(tǒng),能夠控制一個或多個從機設備。主機可以是微控制器,從機可以是單總線器件,他們之間的數(shù)據(jù)交換只通過一條信號線。當只有一個從機設備時,系統(tǒng)可按單節(jié)點系統(tǒng)操作;當有從機設備時,系統(tǒng)則按多節(jié)點系統(tǒng)操作。設備(主機或從機)通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設備在不發(fā)送數(shù)據(jù)時能夠釋放出總線,而讓其他設備使用總線。單總線要求外接4.7kΩ的上拉電阻。本設計系統(tǒng)的溫

51、度采集電路圖如圖2-7所示[]。</p><p><b>  圖2-7 測溫電路</b></p><p>  由圖可以看出,DS18B20 和單片機的連接非常簡單,單片機只需要一個I/O 口就可以控制DS18B20。這個圖的接法是單片機與一個DS18B20 通信,如果要控制多個DS18B20 進行溫度采集,只要將所有的DS18B20 的I/O 口全部連在一起就可以了。

52、在具體操作時,通過讀取每個DS18B20 內部芯片的序列號來識別。本系統(tǒng)僅操作一個DS18B20 進行溫度采集。</p><p>  2.3.2 顯示電路</p><p>  單片機應用系統(tǒng)中,通常都需要進行人機對話,這包括人對應用系統(tǒng)的狀態(tài)干預與數(shù)據(jù)輸入,以及應用系統(tǒng)向人們顯示運行狀態(tài)與運行結果等。</p><p>  LED 顯示電路由段驅動電路和位驅動電路組成

53、。由于單片機的并行口不能驅動LED 顯示器,必須采用專門的驅動電路芯片,使之產生足夠大的電流,顯示器才能正常工作。如果驅動電路能力差,即負載能力不夠,顯示器亮度就低,而且驅動電路長期在超負荷下運行容易損壞。</p><p>  LED 顯示器的顯示控制方式分為靜態(tài)顯示和動態(tài)顯示兩種,若選擇靜態(tài)顯示,則LED 驅動器的選擇較為簡單,只要驅動器的驅動能力與顯示器的電流相匹配即可;動態(tài)顯示則不同,由于一位數(shù)據(jù)的顯示是由

54、段和位選信號共同配合完成的,因此,要同時考慮段和位的驅動能力,而且段的驅動能力決定位的驅動能力[]。數(shù)碼管位選代碼如圖2-8所示。</p><p>  圖2-8 數(shù)碼管位選代碼</p><p>  2.3.3 報警電路</p><p>  當溫度超過設定溫度時,實現(xiàn)聲光報警,蜂鳴器鳴叫、二極管閃爍。蜂鳴器由單片機P3~7口控制,用三極管驅動,電路如圖2-9所示[]。

55、</p><p><b>  圖2-9 報警電路</b></p><p>  2.3.4 降溫、加熱電路</p><p>  繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應用于自動控制電路中,它實際上是用較小的電流去控制較大電流的一種“自動開關”。故在電路中起著自動調節(jié)、安全保護、轉換電路等作用。&

56、lt;/p><p>  當溫度超過設定溫度后,單片機控制繼電器,繼電器通過三極管驅動,但三極管由導通變?yōu)榻刂箷r,繼電器繞組感生出一個較大的自感電壓。它與電源電壓疊加后加到控制繼電器線圈的三極管上,使發(fā)射結有可能被擊穿。為了消除這個感應電動勢的有害影響,在繼電器線圈兩端反向并聯(lián)抑制二極管,以吸收該電動勢,保證三極管的安全。降溫、加熱電路如圖2-10所示。</p><p>  圖2-10 降溫、加

57、熱電路</p><p>  2.3.5 其他電路</p><p><b>  按鍵輸入電路</b></p><p>  考慮到系統(tǒng)的要求,還需設計按鍵輸入電路,基于單片機的溫度控制系統(tǒng)工作時應具備以下功能:可以切換顯示實時溫度和溫度上限值??梢哉{節(jié)溫度上、下限。要實現(xiàn)這些功能,可以通過按鍵輸入電路。</p><p>  

58、鍵盤結構可分為獨立式鍵盤和行列式鍵盤(矩陣式)兩類,由于本系統(tǒng)只采用4 個按鍵,因此可選用獨立式按鍵,按鍵采用輕觸開關。這4個按鍵的功能分別是:調整溫度上限、加1、減1,復位。如圖2-11所示。</p><p>  圖2-11 按鍵電路</p><p><b>  電源電路</b></p><p>  由于該系統(tǒng)需要穩(wěn)定的5V 電源,因此設計時

59、必須采用能滿足電壓,電流和穩(wěn)定性要求的電源。本電源采用三端集成穩(wěn)壓器LM7805。它僅有輸入端、輸出端及公共端三個引腳。其內部設有過流保護,過熱保護及調整管安全保護電路。由于所需外接元件少,使用方便、可靠,因此可作為穩(wěn)壓電源。圖2-12為電源電路連接圖[]。</p><p>  圖2-12 電源電路</p><p><b>  3 系統(tǒng)軟件設計</b></p&g

60、t;<p><b>  3.1軟件設計</b></p><p>  整個系統(tǒng)的功能是由硬件電路配合軟件來實現(xiàn)的,當硬件基本定型后,軟件的功能也就基本定下來了。按照軟件的功能,把軟件分為兩大類:一是監(jiān)控軟件(主程序),它是整個控制系統(tǒng)的核心,專門用來協(xié)調各執(zhí)行模塊和操作者的關系。二是執(zhí)行軟件(子程序),它是用來完成各種實質性的功能如測量、計算、顯示、通訊等。每一個執(zhí)行軟件也就是一

61、個小的功能執(zhí)行模塊。這里將各執(zhí)行模塊一一列出,并為每一個執(zhí)行模塊進行功能定義和接口定義。各執(zhí)行模塊規(guī)劃好后,就可以規(guī)劃監(jiān)控程序了。首先要根據(jù)系統(tǒng)的總體功能選擇一種最合適的監(jiān)控程序結構,然后根據(jù)實時性的要求,合理地安排監(jiān)控軟件和各執(zhí)行模塊之間地調度關系。圖3-1為讀取數(shù)據(jù)流程圖,具體代碼參考附錄一[]。</p><p><b>  N</b></p><p><b

62、>  Y</b></p><p>  圖3-1 數(shù)據(jù)讀取流程圖[]</p><p><b>  4 系統(tǒng)調試</b></p><p><b>  4.1 軟件調試</b></p><p>  本次設計采用preteus仿真,測試采用模擬溫度測試,測試結果如下。</p>

63、<p>  當環(huán)境溫度大于38度時,蜂鳴器報警,并啟動繼電器,模擬降溫裝置啟動。當環(huán)境溫度小于5度時,蜂鳴器報警,并啟動繼電器,模擬加熱裝置啟動。</p><p>  在用proteus仿真過程中出現(xiàn)一些問題,包括以下幾個方面。</p><p>  數(shù)碼管顯示亂碼,出現(xiàn)這種情況主要是程序錯誤,我用的是四位共陰數(shù)碼管,而在編寫程序時,卻誤用成了共陽數(shù)碼管的代碼,經改正后顯示正常。

64、</p><p>  降溫、加熱電路啟動錯誤,在沒有超過報警溫度時,電路啟動,超過報警溫度后,卻又關閉,經排查是單片機引腳是高電平,而降溫加熱子程序中,設置的是高電平啟動。設置成低電平啟動時,電路工作正常。</p><p>  按鍵電路沒反應,在按下設置鍵以及調整鍵時,系統(tǒng)沒有反應。經排查后發(fā)現(xiàn)是按鍵沒接地。接地后按鍵電路工作正常。</p><p><b>

65、;  4.2 元器件調試</b></p><p>  在系統(tǒng)元件的焊接中出現(xiàn)過很多問題,在經過逐一排查后,系統(tǒng)最終運行起來,其中出現(xiàn)的包括以下幾個方面。</p><p>  開機后系統(tǒng)顯示亂碼,系統(tǒng)不起作用,經排查后發(fā)現(xiàn)晶振電路用錯了電容,換成22pF后系統(tǒng)工作,但仍顯示亂碼。查資料后發(fā)現(xiàn),由于用的是片內存儲器,但EA/Vpp沒有接高電平,接上高電平后數(shù)碼管顯示正常。</

66、p><p>  系統(tǒng)工作不正常,溫度一直顯示85度,確定程序沒有問題后,經排查后發(fā)現(xiàn)由于之前把傳感器接反,導致DS18B20燒壞,重新更換后問題解決,顯示正常。</p><p>  數(shù)碼管顯示太暗,系統(tǒng)運行后發(fā)現(xiàn),數(shù)碼管顯示的太暗,看不太清楚,故在數(shù)碼管位選腳上加上拉電阻,經測試后,數(shù)碼管顯示正常。</p><p><b>  5 總 結</b>

67、</p><p>  此次課程設計中,難點在于DS18B20的使用,即對它的時序控制、初始化以及字節(jié)讀寫方法,任何一個環(huán)節(jié)出錯或是時序控制不到位的話就不能得到正確的數(shù)據(jù)。一旦學會了正確的使用方法,就能感覺到它帶來的便利是熱電偶不能比擬的,以后再次使用的話就能很快上手了。</p><p>  軟件設計中,把程序按功能分模塊的話能提高編程效率,把問題一一解決,同時畫流程圖能幫助理清思路,使問題

68、簡單化。定義變量時,盡量定義局部變量,在字符型變量能達到要求的情況下就不用定義成整形變量了,以節(jié)省內存空間。同時局部變量應避免與全局變量取同名,否則全局變量將被屏蔽或與局部變量相沖突而達不到設計的效果。另一方面,取變量名時也要講究技巧,應盡量使其見名知意,同樣地,寫程序時加注釋確是非常必要的,否則隔一段時間后,想再改進或做擴展的話就比較困難了,因為即使是自己寫的程序也變得難讀難懂了。在做鍵盤消抖時,延時的時間比較重要,一般為10ms左右

69、,延時太短就會使按鍵太過靈敏,按一下就使數(shù)字跳變幾次;而延時過長則可能使按鍵按下了卻無響應,在外部定義初始化一個延時函數(shù)的入口參量則能很方便地調整延時時間,以達到比較好的效果。另外,如果對按鍵進行釋放判斷的話就能解決長時間按鍵導致按鍵重復響應的問題。</p><p>  總的來說,自己從這次獨立的畢業(yè)設計中收獲了一些知識與經驗,一些從書本中學之不來的東西,不是說理論無用,而這恰恰是在理論的土壤中開出的花朵,是在理

70、論的肩膀望見的更寬廣的道路!成功來之不易,自主動手動腦實踐,小小的成果亦能帶來碩大的喜悅。</p><p><b>  致 謝</b></p><p>  首先,我要感謝河南理工大學萬方科技學院,感謝電氣系對我四年的培養(yǎng),讓我學到了許許多多的知識,感謝各位老師在這四年里對我的關懷與照顧,在此致以我深深的謝意。</p><p>  本論文從選題

71、到最后定稿成文,本校趙鴻圖老師一直給予了悉心指導,趙老師那種嚴謹求實的作風,廣博深邃的洞察力,孜孜不倦的開拓精神和敬業(yè)精神令我深受啟迪和教益,謹向我的指導老師趙鴻圖老師致以深深的謝意。</p><p>  我國古代有句成語叫做“管中窺豹,略見一斑”,本文是基于單片機及溫度傳感器,組成溫度自動控制裝置。但是,由于我水平有限,在理論的描述、資料的運用等方面難免有不當、不深、不周之處,有些觀點也尚欠成熟,敬請各位老師批

72、評指正。 </p><p>  最后,我還要向所有曾經幫助過我的同學和朋友們致敬。你們的鼓勵和幫助永遠是我前進的動力。</p><p><b>  參考文獻</b></p><p>  [1] 郭天祥.51單片機C語言教程--入門、提高、開發(fā)、拓展全攻略[M].北京:電子工業(yè)出版社,2009.</p><p>  [2]

73、 蔡美琴、毛敏等.MCS-51系列單片機系統(tǒng)及其應用[M].北京:高等教育出版社,2009.</p><p>  [3] 閆勝利.Altium Designer實用寶典-原理圖與PCB設計[M]. 北京,電子工業(yè)出版社,2007.</p><p>  [4] 朱清惠等.Prnteus教程:電子線路設計制版與仿真[M].北京:清華大學出版社,2008.</p><p>

74、;  [5] 康華光.電子技術基礎一模擬部分[M].北京:高等教育出版社,2008.</p><p>  [6] 康華光.電子技術基礎一數(shù)字部分[M].北京:高等教育出版社,2009.</p><p>  [7] 鈴術雅成.晶體管電路設計[M].科學出版社,2010.</p><p>  [8] 譚浩強.C程序設計[M].北京:清華人學出版社, 2008.</

75、p><p><b>  附錄一 </b></p><p><b>  源程序:</b></p><p>  /*************************************************************</p><p>  程序名稱:DS18B20溫度測量、報警系統(tǒng)<

76、/p><p>  簡要說明:DS18B20溫度計,溫度測量范圍0~99.9攝氏度</p><p>  可設置上限報警溫度、下限報警溫度</p><p>  即高于上限值或者低于下限值時蜂鳴器報警,并啟動降溫、加熱電路</p><p>  默認上限報警溫度為38℃、默認下限報警溫度為5℃</p><p>  報警值可設置范圍

77、:最低上限報警值等于當前下限報警值</p><p>  最高下限報警值等于當前上限報警值</p><p>  將下限報警值調為0時為關閉下限報警功能 </p><p>  *************************************************************/</p><p>  #include &

78、lt;AT89X52.h></p><p>  #include "DS18B20.h" </p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char //宏定義</p><p>  #define SET P3_1

79、 //定義調整鍵</p><p>  #define DEC P3_2 //定義減少鍵</p><p>  #define ADD P3_3 //定義增加鍵</p><p>  #define BEEP P3_7 //定義蜂鳴器</p><p>  #define Cool P3_5 //定義降溫</p>

80、<p>  #define Hot P3_0 //定義加熱</p><p>  bit shanshuo_st; //閃爍間隔標志</p><p>  bit beep_st; //蜂鳴器間隔標志</p><p>  sbit DIAN = P2^7; //小數(shù)點</p><p>  ucha

81、r x=0; //計數(shù)器</p><p>  signed char m; //溫度值全局變量</p><p>  uchar n; //溫度值全局變量</p><p>  uchar set_st=0; //狀態(tài)標志</p><p>  signed char shangxian=38; //上限報警溫

82、度,默認值為38</p><p>  signed char xiaxian=5; //下限報警溫度,默認值為5</p><p>  uchar code LEDData[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  uchar code ALARMData[]={0x3f

83、,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  /*****延時子程序*****/</p><p>  void Delay(uint num)</p><p><b>  {</b></p><p>  while( --num );</p&g

84、t;<p><b>  }</b></p><p>  /*****初始化定時器0*****/</p><p>  void InitTimer(void)</p><p><b>  {</b></p><p><b>  TMOD=0x1;</b></p

85、><p><b>  TH0=0x3c;</b></p><p>  TL0=0xb0; //50ms(晶振12M)</p><p><b>  }</b></p><p>  /*****定時器0中斷服務程序*****/</p><p>  void timer0(vo

86、id) interrupt 1</p><p><b>  {</b></p><p><b>  TH0=0x3c;</b></p><p><b>  TL0=0xb0;</b></p><p><b>  x++;</b></p>&l

87、t;p><b>  }</b></p><p>  /*****外部中斷0服務程序*****/</p><p>  void int0(void) interrupt 0</p><p><b>  {</b></p><p>  EX0=0; //關外部中斷0</p>

88、<p>  if(DEC==0&&set_st==1)</p><p><b>  {</b></p><p>  shangxian--;</p><p>  if(shangxian<xiaxian)shangxian=xiaxian;</p><p><b>  }<

89、;/b></p><p>  else if(DEC==0&&set_st==2)</p><p><b>  {</b></p><p>  xiaxian--;</p><p>  if(xiaxian<0)xiaxian=0;</p><p><b> 

90、 }</b></p><p><b>  }</b></p><p>  /*****外部中斷1服務程序*****/</p><p>  void int1(void) interrupt 2</p><p><b>  {</b></p><p>  EX1=0

91、; //關外部中斷1</p><p>  if(ADD==0&&set_st==1)</p><p><b>  {</b></p><p>  shangxian++;</p><p>  if(shangxian>99)shangxian=99;</p><p>

92、;<b>  }</b></p><p>  else if(ADD==0&&set_st==2)</p><p><b>  {</b></p><p>  xiaxian++;</p><p>  if(xiaxian>shangxian)xiaxian=shangxian

93、;</p><p><b>  } </b></p><p><b>  }</b></p><p>  /*****讀取溫度*****/</p><p>  void check_wendu(void)</p><p><b>  {</b><

94、/p><p>  uint a,b,c;</p><p>  c=ReadTemperature()-5; //獲取溫度值并減去DS18B20的溫漂誤差</p><p>  a=c/100; //計算得到十位數(shù)字</p><p>  b=c/10-a*10; //計算得到個位數(shù)字</p><p>  m=c

95、/10; //計算得到整數(shù)位</p><p>  n=c-a*100-b*10; //計算得到小數(shù)位</p><p>  if(m<0){m=0;n=0;} //設置溫度顯示上限</p><p>  if(m>99){m=99;n=9;} //設置溫度顯示上限 </p><p><b>  

96、}</b></p><p>  /*****顯示開機初始化等待畫面*****/</p><p>  Disp_init() </p><p><b>  {</b></p><p>  P0 = 0xf7;</p><p>  Delay(200);</p><

97、;p>  P0 = 0xfb;</p><p>  Delay(200); </p><p>  P0 = 0xfd;</p><p>  Delay(200);</p><p>  P0 = 0xfe;</p><p>  Delay(200);</p><p>  P2 = 0xb

98、f; //顯示-</p><p>  P0 = 0xff; //關閉顯示</p><p><b>  }</b></p><p>  /*****顯示溫度子程序*****/</p><p>  Disp_Temperature() //顯示溫度</p><p>&

99、lt;b>  {</b></p><p>  P0 = 0xf7;</p><p>  P2 =LEDData[n]; //顯示個位</p><p>  Delay(300);</p><p>  P0 = 0xfb;</p><p>  P2 =LEDData[m%10]; //顯示十位

100、</p><p>  DIAN = 1; //顯示小數(shù)點</p><p>  Delay(300);</p><p>  P0 = 0xfd;</p><p>  P2 =LEDData[m/10]; //顯示百位</p><p>  Delay(300);</p><p>

101、;  P0 = 0xff; //關閉顯示</p><p><b>  }</b></p><p>  /*****顯示報警溫度子程序*****/</p><p>  Disp_alarm(uchar baojing)</p><p><b>  {</b></p>&l

102、t;p>  P0 = 0xf7;</p><p>  P2 =ALARMData[baojing%10]; //顯示十位</p><p>  Delay(200);</p><p>  P0 = 0xfb;</p><p>  P2 =ALARMData[baojing/10]; //顯示百位</p><p> 

103、 Delay(200);</p><p>  P0 = 0xfd;</p><p>  if(set_st==1)P2 =0x76;</p><p>  else if(set_st==2)P2 =0x38; //上限H、下限L標示</p><p>  Delay(200);</p><p>  P0 = 0xff;

104、 //關閉顯示</p><p><b>  }</b></p><p>  /*****報警子程序*****/</p><p>  void Alarm()</p><p><b>  {</b></p><p>  if(x>=10){beep_st=~

105、beep_st;x=0;}</p><p>  if((m>=shangxian&&beep_st==1)||(m<xiaxian&&beep_st==1))BEEP=0;</p><p>  else BEEP=1;</p><p><b>  }</b></p><p> 

106、 /*****降溫子程序*****/</p><p>  void jiangwen()</p><p><b>  {</b></p><p>  if(m>shangxian-1) Cool=0;</p><p>  else Cool=1;</p><p><b>  }&l

107、t;/b></p><p>  /*****加熱子程序*****/</p><p>  void jiare()</p><p><b>  {</b></p><p>  if(m<xiaxian) Hot=0;</p><p>  else Hot=1;</p&g

108、t;<p><b>  }</b></p><p>  /*****主函數(shù)*****/</p><p>  void main(void)</p><p><b>  {</b></p><p><b>  uint z;</b></p><p

109、>  InitTimer(); //初始化定時器</p><p>  EA=1; //全局中斷開關</p><p><b>  TR0=1;</b></p><p>  ET0=1; //開啟定時器0</p><p>  IT0=1; </p><p>

110、;<b>  IT1=1;</b></p><p>  check_wendu();</p><p>  check_wendu();</p><p>  for(z=0;z<300;z++)</p><p><b>  {</b></p><p>  Disp_ini

111、t(); </p><p><b>  }</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(SET==0)</p><p><b>  {</b

112、></p><p>  Delay(2000);</p><p>  do{}while(SET==0);</p><p>  set_st++;x=0;shanshuo_st=1;</p><p>  if(set_st>2)set_st=0;</p><p><b>  }</b>

113、</p><p>  if(set_st==0)</p><p><b>  {</b></p><p>  EX0=0; //關閉外部中斷0</p><p>  EX1=0; //關閉外部中斷1</p><p>  check_wendu();</p><p>

114、;  Disp_Temperature();</p><p>  Alarm(); //報警檢測</p><p>  jiangwen();</p><p><b>  jiare();</b></p><p><b>  }</b></p><p>  else if(

115、set_st==1)</p><p><b>  {</b></p><p>  BEEP=1; //關閉蜂鳴器</p><p>  EX0=1; //開啟外部中斷0</p><p>  EX1=1; //開啟外部中斷1</p><p>  if(x>=10){shansh

116、uo_st=~shanshuo_st;x=0;}</p><p>  if(shanshuo_st) {Disp_alarm(shangxian);}</p><p><b>  }</b></p><p>  else if(set_st==2)</p><p><b>  {</b></p

117、><p>  BEEP=1; //關閉蜂鳴器</p><p>  EX0=1; //開啟外部中斷0</p><p>  EX1=1; //開啟外部中斷1</p><p>  if(x>=10){shanshuo_st=~shanshuo_st;x=0;}</p><p>  if(shanshuo_

118、st) {Disp_alarm(xiaxian);}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****END*****/</p><p><b&

溫馨提示

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

評論

0/150

提交評論