畢業(yè)設(shè)計(論文)基于AT89S52單片機的智能溫度系統(tǒng)的設(shè)計與制作_第1頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機的智能溫度系統(tǒng)的設(shè)計與制作_第2頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機的智能溫度系統(tǒng)的設(shè)計與制作_第3頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機的智能溫度系統(tǒng)的設(shè)計與制作_第4頁
畢業(yè)設(shè)計(論文)基于AT89S52單片機的智能溫度系統(tǒng)的設(shè)計與制作_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北北 京京 電電 子子 科科 技技 職職 業(yè)業(yè) 學(xué)學(xué) 院院 beijingbeijing electronicelectronic sciencescience andand technologytechnology vocationalvocational collegecollege 畢 業(yè) 設(shè) 計 設(shè)計題目智能溫度系統(tǒng)的設(shè)計與制作 系 部 電子工程系 專 業(yè) 應(yīng)用電子技術(shù) 班 級 08 應(yīng)用電子技術(shù) 姓 名 指導(dǎo)教師 2011 年 4 月 基于單片機溫度控制電路的設(shè)計與制作基于單片機溫度控制電路的設(shè)計與制作 摘 要:單片機在檢測和控制系統(tǒng)中得到廣泛的應(yīng)用, 溫度則是系統(tǒng)常需要測 量、控制

2、和保持的一個量。本設(shè)計以 at89s52 單片機為控制核心,由實時時鐘 芯片 ds1302 和數(shù)字溫度傳感器 ds18b20 構(gòu)成了一個高溫和低溫時,分別對相應(yīng) 的器件進行控制的系統(tǒng)。詳細(xì)地介紹了整個系統(tǒng)的硬件組成結(jié)構(gòu)、工作原理和 系統(tǒng)的軟件程序設(shè)計,重點闡述了時鐘模塊、顯示模塊、溫度檢測模塊及相關(guān) 控制模塊等的模塊化設(shè)計思路與制作。系統(tǒng)采用液晶 lcd1602 作為顯示器,具 有實時時間顯示、環(huán)境溫度顯示,顯示系統(tǒng)連續(xù)工作前 24 小時整點的溫度值。 關(guān)鍵詞:at89s52 單片機;ds1302;ds18b20;lcd1602;ad;智能溫控; abstract:microcomputer

3、in the detection and control system has been widely used in the temperature is system, usually need to be measurement, control and maintain a quantity. this design with at89s52 microcontroller as control core, by real time clock chip ds1302 and digital temperature sensor ds18b20 constitute a high te

4、mperature and low temperature respectively on the corresponding device to control system. introduced the whole systems hardware structure, working principle and system software program design in detail, expounds the clock module, display module, temperature detecting module and related control modul

5、e of modularization design and production. system adopts lcd monitor, lcd1602 as with real-time time display, environmental temperature display, display the system worked 24 hours before the temperature on the hour value. key words: at89s52single-chip; ds1302;ds18b20; lcd1602;ad;intelligent temperat

6、ure controller ; 目錄目錄 第一章 單片機介紹 . 1.1 單片機. 1.2 單片機的特點. 1.3 單片機的分類. 1.4 單片機的發(fā)展. 第二章 設(shè)計方案 . 2.1 硬件設(shè)計方案. 2.2 軟件設(shè)計方案 . 第三章 系統(tǒng)硬件設(shè)計 . 3.1 總體電路框圖. 3.2 單元電路設(shè)計. 3.2.1 單片機模塊. 3.2.2 時鐘模塊. 3.2.3 溫度采集模塊. 3.2.4 液晶顯示模塊. 3.2.5 電源電路 . 第四章 系統(tǒng)軟件設(shè)計 . 4.1 總體軟件設(shè)計圖. 4.2 時鐘驅(qū)動程序:. 4.3 溫度數(shù)據(jù)采集:. 4.4 液晶驅(qū)動程序:. 第五章 綜合調(diào)試 . 第六章 總結(jié)

7、 . 附錄 . 第一章單片機介紹第一章單片機介紹 1.1 單片機 單片機是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理 能力的中央處理器 cpu 隨機存儲器 ram、只讀存儲器 rom、多種 i/o 口和中斷系 統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多 路轉(zhuǎn)換器、a/d 轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算 機系統(tǒng)。 1.2 單片機的特點 1、芯片雖小,五臟俱全,是單片機主要特點之一。其內(nèi)部設(shè)有程序存儲器、數(shù) 據(jù)存儲器、各種接口電路。而大型的處理器運算速度較高,運算器位數(shù)較 多,處理能力較強,但需要在外部配置接口電路。 2、單片機

8、主頻一般在100mhz 以下,適合用于獨立工作的小型產(chǎn)品之中,引腳 數(shù)量從幾個到百余個。 3、應(yīng)用簡單、靈活,可用匯編語言及 c 語言開發(fā)單片機產(chǎn)品。 1.3 單片機的分類 1. 按應(yīng)用領(lǐng)域可分為:家電類,工控類,通信類,個人信息終端類等等; 2. 按通用性可分為:通用型和專用型。 通用型單片機的主要特點是:內(nèi)部資源比較豐富,性能全面,而且通用 性強,可履蓋多種應(yīng)用要求。所謂資源豐富就是指功能強。性能全面通用 性強就是指可以應(yīng)用在非常廣泛的領(lǐng)域。通用型單片機的用途很廣泛,使 用不同的接口電路及編制不同的應(yīng)用程序就可完成不同的功能。小到家用 電器儀器儀表,大到機器設(shè)備和整套生產(chǎn)線都可用單片機來實

9、現(xiàn)自動化控 制。 專用型單片機的主要特點是:針對某一種產(chǎn)品或某一種控制應(yīng)用而專門 設(shè)計的,設(shè)計時已使結(jié)構(gòu)最簡,軟硬件應(yīng)用最優(yōu),可靠性及應(yīng)用成本最佳。 專用型單片機用途比較專一,出廠時程序已經(jīng)一次性固化好,不能再修該 的單片機。例如電子表里的單片機就是其中的一種。其生產(chǎn)成本很低。 3.按總線結(jié)構(gòu)可分為總線型和非總線型。如我們常常見到的89c51單片機就 是總線結(jié)構(gòu)。89c51單片機內(nèi)部有數(shù)據(jù)總線,地址總線,還有控制總線 (wr,rd,ea,ale 等)。 1.4 單片機的發(fā)展與前景 現(xiàn)在可以說單片機是百花齊放,百家爭鳴的時期,世界上各大芯片制 造公司都推出了自己的單片機,從 8 位、16 位到

10、32 位,數(shù)不勝數(shù),應(yīng)有 盡有,有與主流 c51 系列兼容的,也有不兼容的,但它們各具特色,互成 互補,為單片機的應(yīng)用提供廣闊的天地。 縱觀單片機的發(fā)展過程,可以預(yù)示單片機的發(fā)展趨勢,大致有: 1.低功耗 cmos 化 mcs-51 系列的 8031 推出時的功耗達 630mw,而現(xiàn)在的單片機普遍都在 100mw 左右,隨著對單片機功耗要求越來越低,現(xiàn)在的各個單片機制造商基本 都采用了 cmos(互補金屬氧化物半導(dǎo)體工藝)。象 80c51 就采用了 hmos(即高密 度金屬氧化物半導(dǎo)體工藝)和 chmos(互補高密度金屬氧化物半導(dǎo)體工藝)。cmos 雖然功耗較低,但由于其物理特征決定其工作速度

11、不夠高,而 chmos 則具備了 高速和低功耗的特點,這些特征,更適合于在要求低功耗象電池供電的應(yīng)用場 合。所以這種工藝將是今后一段時期單片機發(fā)展的主要途徑 2.微型單片化 現(xiàn)在常規(guī)的單片機普遍都是將中央處理器(cpu)、隨機存取數(shù)據(jù)存儲 (ram)、只讀程序存儲器(rom)、并行和串行通信接口,中斷系統(tǒng)、定時電路、 時鐘電路集成在一塊單一的芯片上,增強型的單片機集成了如 a/d 轉(zhuǎn)換器、 pmw(脈寬調(diào)制電路)、wdt(看門狗)、有些單片機將 lcd(液晶)驅(qū)動電路都集成 在單一的芯片上,這樣單片機包含的單元電路就更多,功能就越強大。甚至單 片機廠商還可以根據(jù)用戶的要求量身定做,制造出具有自

12、己特色的單片機芯片。 此外,現(xiàn)在的產(chǎn)品普遍要求體積小、重量輕,這就要求單片機除了功能強和功 耗低外,還要求其體積要小?,F(xiàn)在的許多單片機都具有多種封裝形式,其中 smd(表面封裝)越來越受歡迎,使得由單片機構(gòu)成的系統(tǒng)正朝微型化方向發(fā)展。 3.主流與多品種共存 現(xiàn)在雖然單片機的品種繁多,各具特色,但仍以 80c51 為核心的單片 機占主流,兼容其結(jié)構(gòu)和指令系統(tǒng)的有 philips 公司的產(chǎn)品,atmel 公司的產(chǎn) 品和中國臺灣的 winbond 系列單片機。所以 c8051 為核心的單片機占據(jù)了半壁 江山。而 microchip 公司的 pic 精簡指令集(risc)也有著強勁的發(fā)展勢頭,中 國臺

13、灣的 holtek 公司近年的單片機產(chǎn)量與日俱增,與其低價質(zhì)優(yōu)的優(yōu)勢,占據(jù) 一定的市場分額。此外還有 motorola 公司的產(chǎn)品,日本幾大公司的專用單片機。 在一定的時期內(nèi),這種情形將得以延續(xù),將不存在某個單片機一統(tǒng)天下的壟斷 局面,走的是依存互補,相輔相成、共同發(fā)展的道路。 單片機的發(fā)展趨勢 目前,單片機正朝著高性能和多品種方向發(fā)展趨勢將是進一步向著 cmos 化、 低功耗、小體積、大容量、高性能、低價格和外圍電路內(nèi)裝化等幾個方面發(fā)展。 下面是單片機的主要發(fā)展趨勢。 cmos 化 近年,由于 chmos 技術(shù)的進小,大大地促進了單片機的 cmos 化。cmos 芯片除了低功耗特性之外,還具

14、有功耗的可控性,使單片機可以工作在功耗精 細(xì)管理狀態(tài)。這也是今后以 80c51 取代 8051 為標(biāo)準(zhǔn) mcu 芯片的原因。因為單片 機芯片多數(shù)是采用 cmos(金屬柵氧化物)半導(dǎo)體工藝生產(chǎn)。cmos 電路的特點是 低功耗、高密度、低速度、低價格。采用雙極型半導(dǎo)體工藝的 ttl 電路速度快, 但功耗和芯片面積較大。隨著技術(shù)和工藝水平的提高,又出現(xiàn)了 hmos(高密度、 高速度 mos)和 chmos 工藝。chmos 和 hmos 工藝的結(jié)合。目前生產(chǎn)的 chmos 電 路已達到 lsttl 的速度,傳輸延遲時間小于 2ns,它的綜合優(yōu)勢已在于 ttl 電 路。因而,在單片機領(lǐng)域 cmos 正

15、在逐漸取代 ttl 電路。 低功耗化 單片機的功耗已從 ma 級,甚至 1ua 以下;使用電壓在 36v 之間,完 全適應(yīng)電池工作。低功耗化的效應(yīng)不僅是功耗低,而且?guī)砹水a(chǎn)品的高可靠性、 高抗干擾能力以及產(chǎn)品的便攜化。 低電壓化 幾乎所有的單片機都有 wait、stop 等省電運行方式。允許使用的電 壓范圍越來越寬,一般在 36v 范圍內(nèi)工作。低電壓供電的單片機電源下限已可 達 12v。目前 0.8v 供電的單片機已經(jīng)問世。 低噪聲與高可靠性 為提高單片機的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作 環(huán)境,滿足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片廠家在單片機內(nèi)部電路中 都采用了新的技術(shù)措施。 大容

16、量化 以往單片機內(nèi)的 rom 為 1kb4kb,ram 為 64128b。但在需要復(fù)雜控 制的場合,該存儲容量是不夠的,必須進行外接擴充。為了適應(yīng)這種領(lǐng)域的要 求,須運用新的工藝,使片內(nèi)存儲器大容量化。目前,單片機內(nèi) rom 最大可達 64kb,ram 最大為 2kb。 高性能化 主要是指進一步改進 cpu 的性能,加快指令運算的速度和提高系統(tǒng)控 制的可靠性。采用精簡指令集(risc)結(jié)構(gòu)和流水線技術(shù),可以大幅度提高運 行速度?,F(xiàn)指令速度最高者已達 100mips(million instruction per seconds,即兆指令每秒) ,并加強了位處理功能、中斷和定時控制功能。這類 單

17、片機的運算速度比標(biāo)準(zhǔn)的單片機高出 10 倍以上。由于這類單片機有極高的指 令速度,就可以用軟件模擬其 i/o 功能,由此引入了虛擬外設(shè)的新概念。 小容量、低價格化 與上述相反,以 4 位、8 位機為中心的小容量、低價格化也 是發(fā)展動向之一。這類單片機的用途是把以往用數(shù)字邏輯集成電路組成的控制 電路單片化,可廣泛用于家電產(chǎn)品。 外圍電路內(nèi)裝化 這也是單片機發(fā)展的主要方向。隨著集成度的不斷提高,有可 能把眾多的各種處圍功能器件集成在片內(nèi)。除了一般必須具有的 cpu、rom、ram、定時器/計數(shù)器等以外,片內(nèi)集成的部件還有模/數(shù)轉(zhuǎn)換器、 dma 控制器、聲音發(fā)生器、監(jiān)視定時器、液晶顯示驅(qū)動器、彩色電

18、視機和錄像 機用的鎖相電路等。 串行擴展技術(shù) 在很長一段時間里,通用型單片機通過三總線結(jié)構(gòu)擴展外圍器件 成為單片機應(yīng)用的主流結(jié)構(gòu)。隨著低價位 otp(one time programble)及各種 類型片內(nèi)程序存儲器的發(fā)展,加之處圍接口不斷進入片內(nèi),推動了單片機“單 片”應(yīng)用結(jié)構(gòu)的發(fā)展。特別是 i c、spi 等串行總線的引入,可以使單片機的引腳設(shè)計得更少,單片機系統(tǒng)結(jié) 構(gòu)更加簡化及規(guī)范化。 第第 2 2 章章. .設(shè)計方案設(shè)計方案 系統(tǒng)硬件設(shè)計 單片機應(yīng)用系統(tǒng)的硬件電路設(shè)計就是為本單片機溫控系統(tǒng)選擇合適的、最優(yōu)的 系統(tǒng)配置,即按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤、顯示器、打印機、a/d 轉(zhuǎn)換

19、器、設(shè)計合適的接口電路等。系統(tǒng)設(shè)計應(yīng)本著以下原則: (1) 盡可能選擇典型電路,并符合單片機常規(guī)用法。本設(shè)計采用了典型的顯示 電路、a/d 轉(zhuǎn)化電路,為硬件系統(tǒng)的標(biāo)準(zhǔn)化、模塊化打下良好的基礎(chǔ)。 (2) 硬件結(jié)構(gòu)應(yīng)結(jié)合應(yīng)用軟件方案一并考慮。軟件能實現(xiàn)的功能盡可能由軟件 實現(xiàn),以簡化硬件結(jié)構(gòu)。由軟件實現(xiàn)的硬件功能,一般響應(yīng)時間比硬件實現(xiàn)長, 且占用 cpu 時間。由于本設(shè)計的響應(yīng)時間要求不高,所以有一些功能可以用軟 件編程實現(xiàn),如鍵盤的去抖動問題。 (3) 系統(tǒng)中的相關(guān)器件要盡可能做到性能匹配。系統(tǒng)中所有芯片都應(yīng)盡可能選 擇低功耗產(chǎn)品。 系統(tǒng)軟件設(shè)計 軟件設(shè)計采用模塊化設(shè)計,采用模塊化設(shè)計可以簡化

20、系統(tǒng)軟件的編寫,使軟件 編寫思路更加簡單明了。系統(tǒng)軟件主要由三大模塊組成:主程序模塊、功能實 現(xiàn)模塊和運算控制模塊。主程序模塊用于實現(xiàn)各個子程序間的跳轉(zhuǎn)。功能實現(xiàn) 模塊主要由 a/d 轉(zhuǎn)換子程序、鍵盤處理子程序、顯示子程序、繼電器控制程序 等部分組成。運算控制模塊涉及標(biāo)度轉(zhuǎn)換子程序等。 第三章第三章. .系統(tǒng)的硬件設(shè)計系統(tǒng)的硬件設(shè)計 3.1 總體電路圖 本設(shè)計以 at89s52 單片機為主控核心設(shè)計的一個溫度控制系統(tǒng),低溫 時可控制加熱設(shè)備,高溫時控制風(fēng)扇,超出設(shè)定最高溫度值時蜂鳴器發(fā)出聲響 報警。硬件方框圖如圖 3 所示: ds18b20 溫度檢測模 塊 ds1302 時鐘模塊 鍵盤 at8

21、9s52 單片機 lcd 顯示模塊 蜂鳴器 繼電器 光耦可控硅 加熱設(shè)備 風(fēng)扇 總體硬件方框圖 3.2 單元電路設(shè)計 3.21 單片機模塊 at89s52 單片機資源簡介 at89s52 是一種低功耗、高性能 cmos8 位微控制器,具有 8k 在系統(tǒng)可編程 flash 存儲器。使用 atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè) 8031、80c51 產(chǎn)品指令和引腳完全兼容。片上 flash 允許程序存儲器在系統(tǒng)可 編程(isp 下載) ,亦適于常規(guī)編程器。 其引 dip 封裝的腳圖如下: 在單芯片上,擁有靈巧的 8 位 cpu 和在系統(tǒng) 可編程 flash,使得 at89s52 為眾

22、多嵌入式 控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方 案。 at89s52 具有以下標(biāo)準(zhǔn)功能: 8k 字節(jié) flash 256 字節(jié) ram 32 位 i/o 口線 看門狗定時器 2 個數(shù)據(jù)指針 三個 16 位定時器/計數(shù)器 一個 6 向量 2 級中斷結(jié)構(gòu) 全雙工串行口 片內(nèi)晶振及時鐘電路。 另外,at89s52 可降至 0hz 靜態(tài)邏輯操作, 支持 2 種軟件可選擇節(jié)電模式??臻e模式下, cpu 停止工作,允許 ram、定時器/計數(shù)器、 串口、中斷繼續(xù)工作。掉電保護方式下,ram 內(nèi)容被保存,振蕩器被凍結(jié),單 片機一切工作停止,直到下一個中斷或硬件復(fù)位為止。8 位微控制器 8k 字節(jié) 在系統(tǒng)可編

23、程。 at89s52 單片機時鐘和復(fù)位電路 時鐘電路 單片機內(nèi)部有一個高增益反向放大器,輸入端為芯片引腳,輸出端 1 xtal 為引腳。而在芯片外部和 之間跨接晶體振蕩器和微調(diào)電容, 2 xtal 1 xtal 2 xtal 從而構(gòu)成一個穩(wěn)定的自激振蕩器。晶體震蕩頻率高,則系統(tǒng)的時鐘頻率也高, 單片機運行速度也就快,但反過來運行速度快對存儲器的速度要求就高,對印 制電路板的工藝要求也高,所以,這里使用震蕩頻率為 6mhz 的石英晶體。震蕩 電路產(chǎn)生的震蕩脈沖并不直接是使用,而是經(jīng)分頻后再為系統(tǒng)所用,震蕩脈沖 經(jīng)過二分頻后才作為系統(tǒng)的時鐘信號。在設(shè)計電路板 時,振蕩器和 電容應(yīng)盡量靠近單片機,以

24、避免干擾。需要注意的是: 電路板時,振蕩器和電容應(yīng)盡量安裝得與單片機靠近, 以減小寄生電容的存在更好的保障振蕩器穩(wěn)定、可靠 的工作電路圖如圖 2.2 所示 復(fù)位電路 單片機的復(fù)位電路分上電復(fù)位和按鍵復(fù)位兩種 方式。 (a)上電復(fù)位: 在加電之后通過外部復(fù)位電路的電容充電 來實現(xiàn)的。當(dāng)?shù)纳仙龝r間不超過 1ms,就可以 cc v 實現(xiàn)自動上電復(fù)位,即接通電源就完成了系統(tǒng)的初 始化電路原理圖。rst 上的電壓必須保證在斯密特觸發(fā)器的閥值電壓以上足夠 長時間,滿足復(fù)位操作的要求。 (b) 按鍵復(fù)位: 程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為了擺脫困境,也需按 復(fù)位鍵以重新啟動。rst 引腳是復(fù)位

25、信號的輸入端,復(fù) 位信號是高電平有效。按鍵復(fù)位又分按鍵脈沖復(fù)位(圖 2.3)和按鍵電平復(fù)位。電平復(fù)位將復(fù)位端通過電阻與 相連,按鍵脈沖復(fù)位是利用 rc 分電路產(chǎn)生正脈沖 cc v 來達到復(fù)位的。 (c) 注意: 因為按鍵脈沖復(fù)位是利用 rc 微分電路產(chǎn)生正脈沖 來達到復(fù)位的。所以電平復(fù)位要將復(fù)位端通過電阻與 相連.如復(fù)位電路中 r、c 的值選擇不當(dāng),使復(fù)位時 cc v 間過長,單片機將處于循環(huán)復(fù)位狀態(tài)。故本設(shè)計采用按 鍵復(fù)位。 3.22 時鐘模塊 ds1302 的引腳排列,其中 vcc1 為后備電源,vcc2 為主電源。在主電源關(guān) 閉的情況下,也能保持時鐘的連續(xù)運行。ds1302 由 vcc1

26、 或 vcc2 兩者中的較大 者供電。當(dāng) vcc2 大于 vcc10.2v 時,vcc2 給 ds1302 供電。當(dāng) vcc2 小于 vcc1 時,ds1302 由 vcc1 供電。x1 和 x2 是振蕩源,外接 32.768khz 晶振。rst 是復(fù) 位/片選線,通過把 rst 輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。rst 輸入有 兩種功能:首先,rst 接通控制邏輯,允許地址/命令序列送入移位寄存器;其 次,rst 提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) rst 為高電平時,所有 的數(shù)據(jù)傳送被初始化,允許對 ds1302 進行操作。如果在傳送過程中 rst 置為低 電平,則會終止此次數(shù)據(jù)

27、傳送,i/o 引腳變?yōu)楦咦钁B(tài)。上電運行時,在 vcc2.0v 之前,rst 必須保持低電平。只有在 sclk 為低電平時,才能將 rst 置 為高電平。i/o 為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細(xì)說明。sclk 為時鐘 輸入端。 3.23溫度采集模塊 獨特的一線接口,只需要一條口線通信 多點能力,簡化了分布式溫度傳 感應(yīng)用 無需外部元件 可用數(shù)據(jù)總線供電,電壓范圍為 3.0 v 至 5.5 v 無需備 用電源 測量溫度范圍為-55 c 至+125 。華氏相當(dāng)于是-67 f 到 257 華氏度 -10 c 至+85 c 范圍內(nèi)精度為0.5 c 溫度傳感器可編程的分辨率為 912 位 溫度轉(zhuǎn)換

28、為 12 位數(shù)字格式最大值為 750 毫秒 用戶可定義的非易失性溫度報警設(shè)置 應(yīng)用范圍包括恒溫控制,工業(yè)系統(tǒng), 消費電子產(chǎn)品溫度計,或任何熱敏感系統(tǒng) 描述該 ds18b20 的數(shù)字溫度計提供 9 至 12 位(可編程設(shè)備溫度讀數(shù)。信息被發(fā) 送到/從 ds18b20 通過 1 線接口,所以中央微處理器與 ds18b20 只有一個一條 口線連接。為讀寫以及溫度轉(zhuǎn)換可以從數(shù)據(jù)線本身獲得能量,不需要外接電源。 因為每一個 ds18b20 的包含一個獨特的序號,多個 ds18b20s 可以同時存在于 一條總線。這使得溫度傳感器放置在許多不同的地方。它的用途很多,包括空 調(diào)環(huán)境控制,感測建筑物內(nèi)溫設(shè)備或機

29、器,并進行過程監(jiān)測和控制。 ds18b20 的主要特點: 適應(yīng)電壓范圍更寬,電壓范圍:3.05.5v,在寄生電源方式下可由數(shù)據(jù)線 供電; 獨特的單線接口方式,ds18b20 在與微處理器連接時僅需要一條口線即可實 現(xiàn)微處理器與 ds18b20 的雙向通訊; ds18b20 支持多點組網(wǎng)功能,多個 ds18b20 可以并聯(lián)在唯一的三線上,實現(xiàn) 組網(wǎng)多點測溫; ds18b20 在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形 如一只三極管的集成電路內(nèi); 溫范圍55125,在-10+85時精度為0.5; 可編程的分辨率為 912 位,對應(yīng)的可分辨溫度分別為 0.5、0.25、 0.125和

30、 0.0625,可實現(xiàn)高精度測溫; 在 9 位分辨率時最多在 93.75ms 內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12 位分辨率時最多 在 750ms 內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快; 測量結(jié)果直接輸出數(shù)字溫度信號,以一線總線串行傳送給 cpu,同時可傳 送 crc 校驗碼,具有極強的抗干擾糾錯能力; 負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作249-256。 對 ds18b20 的設(shè)計外部供電方式單點測溫。在這種外部電源供電方式下, ds18b20 工作電源由 vdd 引腳接入,因為由 vdd 接入電源不存在電源電流不足 的問題,可以保證轉(zhuǎn)換精度。不過要注意。在這種外部供電的方式下,ds

31、18b20 的 gnd 腳不能懸空,否則不能轉(zhuǎn)換溫度,讀取的溫度總是 80 oc。ds18b20 的硬 件電路連接如下圖 6 所示: ds18b20 原理圖 3.24led 顯示模塊 字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、版本號等的點陣 式液晶顯示模塊。它是由若干個 57 或 511 等點陣符位組成的,第一個點陣 字符位都可以顯示一個字符。點陣字符位之間有一定點距的間隔,這樣就起到 了字符間距和行距的作用。本系統(tǒng)采用字符型液晶顯示模塊 1602,我設(shè)置單片 機驅(qū)動 lcd1602 采用并行方式,rs,rw,en 分別接主控單片機的 p25,p26,p27 腳, db0db7 接到主控

32、單片機的 p0 數(shù)據(jù)接口。bla 接口通過一個+5v 電源,blk 接地。 lcd1602 的硬件連接原理圖如圖 7 所示: 3.25 電源電路 電源變壓器 變壓部分其實就是一個變壓器,變壓器作用是將 220v 的交流電壓變換成我 們所需的電壓 5v。然后再送去整流和濾波。 整流濾波電路 變壓部分其實就是一個變壓器,變壓器作用是將 220v 的交流電壓變換成我 們所需的電壓 5v。然后再送去整流和濾波。 穩(wěn)壓電路 整流電路將交流電壓變成單向脈動的直流電壓;濾波電路用來濾除整流后 單向脈動電壓中的交流成份,合之成為平滑的直流電壓。濾波電路常見的有電 容濾波電路、電感濾波電路。一般的整流有全波整流

33、、單相半流整流、橋式整 流、及變壓整流。 第四章第四章. . 系統(tǒng)軟件設(shè)計系統(tǒng)軟件設(shè)計 4.1 總體軟件設(shè)計圖 4.2 時鐘驅(qū)動 ds1302 是 spi 總線驅(qū)動方式。它不僅要向寄存器寫入控制字,還需要 讀取相應(yīng)寄存器的數(shù)據(jù)。下圖圖 10 是 ds1302 的控制字。 控制字的最高有效位(位 7)必須是邏輯 1,如果它為 0,則不能把數(shù) 據(jù)寫入到 ds1302 中。 位 6:如果為 0,則表示存取日歷時鐘數(shù)據(jù),為 1 表示存取 ram 數(shù)據(jù); 位 5 至位 1(a4a0):指示操作單元的地址;位 0(最低有效位):如為 0,表示要進行寫操作,為 1 表示進行讀操作??刂谱挚偸菑淖畹臀婚_始輸

34、出。在控制字指令輸入后的下一個 sclk 時鐘的上升沿時,數(shù)據(jù)被寫入 ds1302,數(shù)據(jù)輸入從最低位(0 位)開始。同樣,在緊跟 8 位的控制字指 令后的下一個 sclk 脈沖的下降沿,讀出 ds1302 的數(shù)據(jù),讀出的數(shù)據(jù)也是 從最低位到最高位。數(shù)據(jù)讀寫時序如下圖 11 所示: 圖 11 ds1302 讀寫時序圖 4.3 溫度數(shù)據(jù)采集: 根據(jù) ds18b20 的通訊協(xié)議,單片機控制 ds18b20 完成溫度轉(zhuǎn)換必須經(jīng)過三個 步驟:每一次讀寫之前都要對 ds18b20 進行復(fù)位操作,復(fù)位成功后發(fā)送一條 rom 指令,最后發(fā)送 ram 指令,這樣才能對 ds18b20 進行預(yù)定的操作,復(fù)位要 求

35、單片機將數(shù)據(jù)線下拉 50 微秒,然后釋放,當(dāng) ds18b20 受到信號后等待 1660 微秒左右,然后發(fā)出 60240 微秒的存在低脈沖,主 cpu 收到此信號表 示復(fù)位成功。 圖 10 控制字(即地址和命令字節(jié)) 指令約定代碼功能 讀 rom 33h 讀 ds1820 溫度傳感器 rom 中的編碼(即 64 位地址) 符合 rom 55h 發(fā)出此命令之后,接著發(fā)出 64 位 rom 編碼,訪問單總 線上與該編碼相對應(yīng)的 bs1820 使之作出響應(yīng),為下一 步對該 ds1820 的讀寫作準(zhǔn)備。 搜索 rom ofoh 用于確定掛接在同一總線上 ds1820 的個數(shù)和識別 64 位 rom 地址

36、。為操作各器件作好準(zhǔn)備。 跳過 rom occh 忽略 64 位 rom 地址,直接向 ds1820 發(fā)溫度變換命令。 適用與單片工作。 告警搜索命 令 oech 執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出 響應(yīng)。 指令約定代碼功能 溫度變換 44h 啟動 ds1820 進行溫度轉(zhuǎn)換 12 位轉(zhuǎn)換時最廠為 750ms(9 位為 93.75ms) 。結(jié)果存入內(nèi)部 9 字節(jié) ram 中。 讀暫存器 obeh 讀內(nèi)部 ram 中 9 字節(jié)的內(nèi)容。 寫暫存器 4eh 發(fā)出向內(nèi)部 ram 的 3、4 字節(jié)寫上、下限溫度數(shù)據(jù)命令, 緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。 復(fù)制暫存器 48h 將 ram

37、中第 3、4 字節(jié)的內(nèi)容復(fù)制到 eeprom 中 重調(diào) eeprom ob8h 將 eeprom 中內(nèi)容恢復(fù)到 ram 中的第 3、4 字節(jié)。 讀供電方式 ob4h 讀 ds1820 的供電模式。寄生東佃時 ds1820 發(fā)送“0” , 外界電源供電 ds1820 發(fā)送“1” 。 4.4 液晶驅(qū)動程序 lcd 使用之前須對它進行初始初始化可通過復(fù)位完成,也可在復(fù)位后完成, 初始化過程如下: (1)清屏。將顯示緩沖區(qū) ddram 的內(nèi)容全部寫入空格(ascii20h)。 (2)功能設(shè)置。 (3)開/關(guān)顯示設(shè)置??刂骑@示的開關(guān),當(dāng) d=1 時顯示,d=0 時不顯示???制光標(biāo)開關(guān),當(dāng) c=1 時光

38、標(biāo)顯示,c=0 時光標(biāo)不顯示??刂谱址欠耖W 爍,當(dāng) b=0 時字符閃爍,b=0 時字符不閃爍。 (4)輸入方式設(shè)置。 初始化過程:(1)延時 15ms;(2)寫指令 38h(不檢測忙信號) ; (3)延時 5 ms;(4)寫指令 38h(不檢測忙信號) ;(5)延時 5ms;(6)寫指令 38h(不檢測忙信號) ;(7)以后每次寫指令、讀/寫 數(shù)據(jù)操作之前均需檢測忙信號;(8)寫指令 38h:顯 示模式設(shè) 置;(9)寫指令 08h:顯示關(guān)閉;(10)寫指令 01h:顯示清屏; (11)寫指令 06h:顯示光標(biāo)移動設(shè)置;(12)寫指令 0ch:顯示開及光 標(biāo)設(shè)置。 第第 5 5 章章. .綜合

39、調(diào)試綜合調(diào)試 硬件調(diào)試 在本溫度控制電路的設(shè)計調(diào)試中遇到了很多的問題?;叵脒@些問題只要 認(rèn)真多思考都是可以避免的,以下為主要的問題: (1) 開始調(diào)試時發(fā)現(xiàn)時鐘芯片 ds1302 發(fā)熱很厲害,后來發(fā)現(xiàn)電路沒有給它加 上拉電阻,加上上拉電阻后問題就解決了。 (2) 雙向可控硅 bta12-600b 高壓部分電路, 加 104 電容時,發(fā)生擊穿現(xiàn)象,導(dǎo)致光 耦控制部分電路癱瘓,原因是耐壓值不 夠。解決的方法有兩種,第一種是更換 耐壓值更高的電容;由于該電容的作用 是吸收可控硅元件的殘余電量,使得可 控硅能夠正常導(dǎo)通截止,而根據(jù)使用的 負(fù)載(交流電機) ,去掉該電容后,該 電路能夠正常的工作,所以第

40、二種是在電路可以運行的狀況下去掉該 104 電容相連的電路。我采取的是第二種方法。 軟件調(diào)試 在軟件調(diào)試時也出現(xiàn)了一些問題,其中主要的問題有以下兩個方面: (1) 程序讀取溫度值時,出現(xiàn)的現(xiàn)象,造成風(fēng)扇溫度在判斷時出現(xiàn)錯誤,使 風(fēng)扇經(jīng)常性突快突慢變化,蜂鳴器也不斷的蜂鳴報警。解決的方法是在 讀取溫度判斷時加延時,并且多次判斷,防止跳變。 (2) 調(diào)節(jié)系統(tǒng)參數(shù)時,液晶光標(biāo)太快以致調(diào)節(jié)的時候觀察困難,原因是刷新 液晶太快。解決的方法是在相應(yīng)數(shù)據(jù)更該時,才開始刷新液晶內(nèi)容。 第六章第六章. .總結(jié)總結(jié) 我的畢業(yè)設(shè)計課題即將將告一段落。設(shè)計實物也基本達到預(yù)期的效果,但 由于能力和時間的關(guān)系,總是覺得有

41、很多不盡人意的地方,譬如功能不全、外 觀粗糙數(shù)不勝數(shù)。但我可以自豪的說,這里面的每一段代碼,都有我的勞 動。當(dāng)看著自己的程序,自己成天相伴的系統(tǒng)能夠健康的運行,真是莫大的幸 福和欣慰。我相信其中的酸甜苦辣最終都會化為甜美的甘泉。 畢業(yè)設(shè)計,也許是我大學(xué)生涯交上的最后一個作業(yè)了。想借此機會感謝一 直以來給我?guī)椭乃欣蠋?、同學(xué),你們的友誼是我人生的財富,是我生命中 不可或缺的一部分。我的畢業(yè)指導(dǎo)老師王琳娜老師,她一直都以一位長輩的風(fēng) 范來容諒我的無知和沖動,給我不厭其煩的指導(dǎo)。在此,特向她道聲謝謝。 這次做論文的經(jīng)歷也會使我終身受益,我感受到做論文是要真真正正用心去做 的一件事情,是真正的自己學(xué)

42、習(xí)的過程和研究的過程,沒有學(xué)習(xí)就不可能有研 究的能力,沒有自己的研究,就不會有所突破,那也就不叫論文了。希望這次 的經(jīng)歷能讓我在以后學(xué)習(xí)中激勵我繼續(xù)進步。 附錄 電路圖 程序 #include #include #include #define uchar unsigned char #define uint unsigned int #define lcd_dat p0 /定義 lcd 數(shù)據(jù)口 sbit lcd_e=p27; /定義 lcd 控制口 sbit lcd_rw=p26; /定義 lcd 控制口 sbit lcd_rs=p25; /定義 lcd 控制口 sbit ds18b20_d

43、q =p15; /定義 ds18b20 通信端口 sbit led1=p12; sbit led2=p13; sbit speaker=p11; /蜂鳴器接口 sbit fan=p21;/風(fēng)扇 pwm 輸出控制口 bit fan_flag=0; sbit key_model=p31;/模式鍵 sbit key_set=p32;/設(shè)置鍵 sbit key_add=p35;/加鍵 sbit key_sub=p34;/減鍵 sbit key_left=p30;/左移鍵 sbit key_right=p33;/右移鍵 sbit e_sw=p10;/繼電器控制 uchar sw_flag=0;/繼電器自

44、動手動切換標(biāo)志 uchar switch_flag=0;/繼電器液晶設(shè)置切換標(biāo)志 int sw_open_temperature=100;/繼電器開啟的溫度值設(shè)置 uchar restrict_hour=0;/設(shè)定時間風(fēng)扇不能轉(zhuǎn) uint temp=0; /溫度緩存 uint fan_count=0;/風(fēng)扇計數(shù) bit fan_auto=0;/自動風(fēng)扇自動或手動控制標(biāo)志 uchar model_flag=0;/總的模式標(biāo)志 uchar code num_to_char = 0123456789abcdef; /*定義數(shù)字跟 ascii 碼的關(guān)系*/ uchar data lcd1602_lin

45、e1= 2010/00/00 tue ; /時間顯示緩存數(shù) 組 uchar data lcd1602_line2= 00:00:00 00.0c ; /時間顯示緩存數(shù) 組 uchar data lcd1602_line3= 00:00:00set time; /時間設(shè)置緩存數(shù) 組 uchar idata temp_record_line1=temperature note;/溫度記錄顯示緩 存數(shù)組 uchar idata temp_record_line2=time 00 t:00.0c ;/溫度記錄顯示緩 存數(shù)組 uchar xdata temp_highter_line1=sw t on/

46、off ;/繼電器手動自動 切換和自動時開啟電壓 uchar xdata temp_highter_line2=auto t=00.0c ;/繼電器手動自動 切換和自動時開啟電壓 uchar xdata temp_time_unable_line1=fan time unable; /顯示風(fēng)扇 禁止打開的時間段 uchar xdata temp_time_unable_line2=f:4 t:7 oclock; /顯示風(fēng)扇 禁止打開的時間段 uchar code temp_auto_switch6=auto ,manuel; /自動,手 動切換值 uchar idata temp_record

47、=01000000000000000000000000000000000000000000000000000 0000000000000000000;/保存每天對應(yīng)鐘點的溫度值 uchar code weeks4=sun ,mon ,tue ,wed ,thu ,fri ,sat ,sun ; /星期數(shù)組 /時鐘標(biāo)志 uint data year=0; /時間設(shè)置標(biāo)志,數(shù)據(jù) uchar data set_time=0,time_flag=0,day_flag=0,hour=0,minute=0,second=0,day=0,mont h=0,week=0;/時間設(shè)置標(biāo)志,數(shù)據(jù) uint spe

48、aker_count=0; /喇叭蜂鳴計數(shù) uchar record_hour,record_minute,record_second,record_hour_count=0; / 溫度記錄的時間設(shè)置 /小延時程序 void delay(uint x) while(x-); /*1ms 為單位的延時程序*/ void delay_1ms(uint x) uchar j; while(x-) for(j=0;j0;i-) ds18b20_dq = 0; / 給脈沖信號 dat=1; ds18b20_dq = 1; / 給脈沖信號 if(ds18b20_dq) dat|=0 x80; delay(

49、4); return(dat); /寫一個字節(jié) void writeonechar(uchar dat) uchar i=0; for (i=8; i0; i-) ds18b20_dq = 0; ds18b20_dq= dat delay(5); ds18b20_dq = 1; dat=1; /讀取溫度 readtemperature(void) uchar a=0; uchar b=0; uint t=0; float tt=0; init_ds18b20(); writeonechar(0 xcc); / 跳過讀序號列號的操作 writeonechar(0 x44); / 啟動溫度轉(zhuǎn)換 i

50、nit_ds18b20(); writeonechar(0 xcc); /跳過讀序號列號的操作 writeonechar(0 xbe); /讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個 就是溫度 a=readonechar(); b=readonechar(); t=b; t=8; t=t|a; tt=t*0.0625; /將溫度的高位與低位合并 t= tt*10+0.5; /對結(jié)果進行 4 舍 5 入 return(t); /以上是 ds18b20 驅(qū)動程序/ /以下是溫度高時處理程序 void temp_hight(void) if(fan_auto=0) /自動 led1=1; /亮

51、燈說明是自動控制 if(temp230 temp=readtemperature(); /防止跳變干擾,再讀一次溫 度 delay_1ms(5000); /防止跳變干擾,再讀一次溫度 if(temp400)tr1=1; /防止跳變干擾,再讀一次溫度 if(fan_flag=1) /這部分作為 pwm 控制程序 /這部分作為 pwm 控制程序 fan=1; /這部分作為 pwm 控制程序 delay_1ms(fan_count);/控制風(fēng)扇關(guān)閉的時間,以達到控制風(fēng)扇轉(zhuǎn)速的 目的 fan=0; /這部分作為 pwm 控制程序 if(fan_auto=1)/手動 led1=0; /滅燈說明是手動控制

52、 fan=0; /表示風(fēng)扇一直開著 /以上是溫度高時處理程序 /以下是溫度低時處理程序 void temp_low(void) if(sw_flag=0)/自動的時候繼電器根據(jù)溫度值判斷開啟 led2=1; /亮燈說明是自動控制 if(temp=4/允許標(biāo)志,0 表示不允許 else fan_flag=1;fan=1; /t1 用于蜂鳴警報 void t1_set(void) tmod=0x11; th1=(65536-1000)/256; tl1=(65536-1000)%256; ea=1; et1=1; / tr1=0; return; /t1 中斷,用于蜂鳴警報 void t1_()i

53、nterrupt 3 uchar i; th1=(65536-1000)/256; tl1=(65536-1000)%256; i+; if(i=150) speaker=speaker; i=0; speaker_count+; if(speaker_count=1000) speaker=1; speaker_count=0; tr1=0; /主函數(shù) void main() uchar i; bit dis_flag=0; t1_set();/初始化定時器,用于高溫警報 fan=1; init_lcd();/初始化 lcd /set1302(time_data_buff); /設(shè)置時間 f

54、an=1; while(1) /模式設(shè)置 if(key_model=0) delay_1ms(20); while(key_model=0); model_flag+; time_flag=0; if(model_flag=5)model_flag=0;write_instruction(0 x0c);cls(); if(model_flag=1) write_string(0 xc8,set time); write_instruction(0 x0c); if(model_flag=3)write_instruction(0 x0e);/這部分是用 于設(shè)置繼電器的開啟狀態(tài) for(i=0;

55、i6;i+)temp_highter_line2i=temp_auto_switchsw_flagi;/ 讀取緩存值 temp_highter_line29=num_to_charsw_open_temperature/100; temp_highter_line210=num_to_charsw_open_temperature%100/10; temp_highter_line212=num_to_charsw_open_temperature%10; write_string(0 x80,temp_highter_line1); write_string(0 xc0,temp_hight

56、er_line2); write_instruction(0 xc0); /顯示時間 if(model_flag=0) time_restrict(); temp_hight(); temp_low(); if(key_set=0) /風(fēng)扇自動手動切換 delay_1ms(20); while(key_set=0); fan_auto=fan_auto; get1302(time_data_buff); /讀取當(dāng)前時間 temp=readtemperature(); record(); lcd1602_line13 = num_to_chartime_data_buff6/0 x10; lcd

57、1602_line14 = num_to_chartime_data_buff6%0 x10; /*年*/ lcd1602_line16 = num_to_chartime_data_buff4/0 x10; lcd1602_line17 = num_to_chartime_data_buff4%0 x10; /*月*/ lcd1602_line19 = num_to_chartime_data_buff3/0 x10; lcd1602_line110 = num_to_chartime_data_buff3%0 x10; /*日*/ for(i=0;i4;i+) lcd1602_line1i

58、+12=weekstime_data_buff5 /*星期*/ lcd1602_line20 = num_to_chartime_data_buff2/0 x10; lcd1602_line21 = num_to_chartime_data_buff2%0 x10; /*時*/ lcd1602_line23 = num_to_chartime_data_buff1/0 x10; lcd1602_line24 = num_to_chartime_data_buff1%0 x10; /*分*/ lcd1602_line26 = num_to_chartime_data_buff0/16; lcd1

59、602_line27 = num_to_chartime_data_buff0%16; /*秒*/ lcd1602_line29 = num_to_char(temp)/100; /*溫度*/ lcd1602_line210 = num_to_char(temp)%100/10; /*溫度 */ lcd1602_line212 = num_to_char(temp)%10; /*溫度*/ delay_1ms(100); write_string(0 x80,lcd1602_line1); write_string(0 xc0,lcd1602_line2); /以上顯示正常運行的時間 /以下設(shè)置

60、時間 if(model_flag=1) if(key_set=0) delay_1ms(20); while(key_set=0); set_time+; if(set_time=3)set_time=0; if(set_time=1)write_instruction(0 xc6); write_instruction(0 x0e);/顯示光 標(biāo) if(set_time=0) write_instruction(0 x0c);/關(guān)掉光標(biāo) write_string(0 xc8,set time); if(set_time=1) if(key_left=0) /設(shè)置時分秒星期日月年的標(biāo)志 del

溫馨提示

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

評論

0/150

提交評論