題目 基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)
作 者 姓 名 張 三
專(zhuān) 業(yè) 班 級(jí)
學(xué) 號(hào)
指導(dǎo)教師姓名
摘要
隨著國(guó)民經(jīng)濟(jì)的發(fā)展,人們需要對(duì)各中加熱爐、熱處理爐、反應(yīng)爐和鍋爐中溫度進(jìn)行監(jiān)測(cè)和控制。采用單片機(jī)來(lái)對(duì)他們控制不僅具有控制方便,簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大的提高產(chǎn)品的質(zhì)量和數(shù)量。
在日常生活及工業(yè)生產(chǎn)過(guò)程中,經(jīng)常要用到溫度的檢測(cè)及控制,溫度是生產(chǎn)過(guò)程和科學(xué)實(shí)驗(yàn)中普遍而且重要的物理參數(shù)之一。在生產(chǎn)過(guò)程中,為了高效地進(jìn)行生產(chǎn),必須對(duì)它的主要參數(shù),如溫度、壓力、流量等進(jìn)行有效的控制。溫度控制在生產(chǎn)過(guò)程中占有相當(dāng)大的比例。溫度測(cè)量是溫度控制的基礎(chǔ),技術(shù)已經(jīng)比較成熟。傳統(tǒng)的測(cè)溫元件有熱電偶和熱敏電阻,而熱電偶和熱電阻測(cè)出的一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,這些方法相對(duì)比較復(fù)雜,需要比較多的外部硬件支持。本文采用一種相對(duì)比較簡(jiǎn)單的方式來(lái)測(cè)量。
本文介紹一種基于AT89C51單片機(jī)的溫度測(cè)量及報(bào)警電路,該電路采用DS18B20作為溫度監(jiān)測(cè)元件,測(cè)量范圍-50℃-110℃,使用LED數(shù)碼管顯示,能設(shè)置溫度報(bào)警上下限。正文著重給出了軟硬件系統(tǒng)的各部分電路,介紹了集成溫度傳感器DS18B20的原理,AT89C51單片機(jī)的功能和應(yīng)用等。本文設(shè)計(jì)的電路通過(guò)Proteus軟件仿真實(shí)現(xiàn),并在單片機(jī)開(kāi)發(fā)板中進(jìn)行了實(shí)現(xiàn)。
ABSTRACT
Along with the development of national economy , people need to monitor and the control all kinds of the temperature of heating furnace,the heat-treatment furnace, the reactor and the boiler. Not only using the single chip machine can make control becoming convenient, simple and flexibility, but also it enhance the technical specification of controled temperature in large scale, which as a result can improve the quality and quantity.of products efficiently.
During daily life and industrial production process, the detection and control of temperature always play an important role, temperature is one of the general but important physical parameter in the production process and scientific experiments. In the production process, in order to carry out the production efficiently, it’s necessary to control its main parameters effectively, such as temperature, pressure, flow control, etc. Temperature control occupy a large proportion in the production process. Temperature measurement is the basis of temperature control,which technology has been matured. The thermocouple and thermal resistance are traditional temperature measured components, which receivce voltage and then replace into the corresponding temperature.These methods are rather complex relatively, which requiring a large number of external hardware support. In this paper,we use a relatively simple method to measure it.
This paper introduced a temperature measurement and alerting electrocircuits based MCU-AT89C51, the electrocircuits uses DS18B20 as its temperature sensor with measuring scope range from -50℃to100℃ which uses the seven segments LED to display the current temperature and it can set the warning limitation. The paper focuses on providing the components electrocircuit of the software and hardware system, and introduces the theory of DS18B20, the founctions and application of AT89C51.The electrocircuits designed in this paper was realized and simulated in Proteus,which has also been realized in the developing-board of MCU.
目錄
摘 要
ABSTRACT
第一章 緒論
1.1課題背景及研究意義
1.2國(guó)內(nèi)外現(xiàn)狀
1.3設(shè)計(jì)目的
1.4課題的主要工作
1.5本文研究?jī)?nèi)容
第二章 系統(tǒng)概述
2.1方案選擇
2.1.1主控制部分
2.1.2 溫度傳感器部分
2.1.3顯示電路部分
2.1.4報(bào)警電路部分
2.2系統(tǒng)總體方案
第三章 系統(tǒng)硬件設(shè)計(jì)
3.1 80C51單片機(jī)的介紹
3.1.1引腳功能說(shuō)明
3.1.2時(shí)鐘電路
3.1.3復(fù)位電路
3.2 LED顯示部分
3.2.1 LED數(shù)碼管的管腳
3.2.2數(shù)碼管驅(qū)動(dòng)電路
3.3 DS18B20部分
3.3.1 DS18B20管腳功能
3.3.2 DS18B20驅(qū)動(dòng)電路
3.3.3DS18B20測(cè)溫原理
3.3.4 DS18B20工作過(guò)程
3.3.5 DS18B20使用中的注意事項(xiàng)
3.4報(bào)警電路部分設(shè)計(jì)
3.5按鍵部分
第四章 系統(tǒng)軟件設(shè)計(jì)
4.1主程序流程圖
4.2數(shù)碼管顯示子程序流程圖
4.3 DS18B20讀取溫度子程序流程圖
4.4按鍵掃描子程序流程圖
4.5報(bào)警子程序流程圖
第五章 系統(tǒng)仿真
5.1仿真軟件簡(jiǎn)介
5.1.1 Keil軟件簡(jiǎn)介
5.1.2 Proteus簡(jiǎn)介
5.2仿真結(jié)果
5.2.1仿真總體設(shè)計(jì)圖
5.2.2溫度顯示仿真
5.2.3溫度設(shè)定仿真
5.2.4報(bào)警仿真
第六章 系統(tǒng)開(kāi)發(fā)板實(shí)現(xiàn)
6.1 AT89C51單片機(jī)開(kāi)發(fā)板簡(jiǎn)介
6.2開(kāi)發(fā)板連線(xiàn)及效果圖
第七章 課題總結(jié)
7.1系統(tǒng)評(píng)價(jià)
7.1.1系統(tǒng)的優(yōu)點(diǎn)
7.1.2系統(tǒng)的缺點(diǎn)
7.1.3將來(lái)可能改進(jìn)的方向
7.2課題結(jié)論
參考文獻(xiàn)
致 謝
附 錄:源程序代碼
第一章緒論 1.1課題背景及研究意義 隨著新技術(shù)的不斷開(kāi)發(fā)與應(yīng)用,近年來(lái)單片機(jī)發(fā)展十分迅速,一個(gè)以微機(jī)應(yīng)用為主的新技術(shù)革命浪潮正在蓬勃興起,單片機(jī)的應(yīng)用已經(jīng)滲透到電力、冶金、化工、建材、機(jī)械、食品、石油等各個(gè)行業(yè)。傳統(tǒng)的溫度采集方法不僅費(fèi)時(shí)費(fèi)力,而且精度差,單片機(jī)的出現(xiàn)使得溫度的采集和數(shù)據(jù)處理問(wèn)題能夠得到很好的解決。溫度是工業(yè)對(duì)象中的一個(gè)重要的被控參數(shù)。傳統(tǒng)的控制方式以不能滿(mǎn)足高精度,高速度的控制要求,如溫度控制表溫度接觸器,其主要缺點(diǎn)是溫度波動(dòng)范圍大,由于主要通過(guò)控制接觸器的通斷時(shí)間比例來(lái)達(dá)到改變加熱功率的目的,受儀表本身誤差和交流接觸器的壽命限制,通斷頻率很低。近幾年來(lái)快速發(fā)展了多種先進(jìn)的溫度控制方式,如:PID控制,模糊控制,神經(jīng)網(wǎng)絡(luò)及遺傳算法控制等。這些控制技術(shù)大大的提高了控制精度,不但使控制變得簡(jiǎn)便,而且使產(chǎn)品的質(zhì)量更好,降低了產(chǎn)品的成本,提高了生產(chǎn)效率[1]。 本設(shè)計(jì)使用單片機(jī)作為核心進(jìn)行控制。單片機(jī)具有集成度高,通用性好,功能強(qiáng),特別是體積小,重量輕,耗能低,可靠性高,抗干擾能力強(qiáng)和使用方便等獨(dú)特優(yōu)點(diǎn),在數(shù)字、智能化方面有廣泛的用途。 1.2國(guó)內(nèi)外現(xiàn)狀 溫度控制系統(tǒng)在國(guó)內(nèi)各行各業(yè)的應(yīng)用雖然已經(jīng)十分廣泛,但從國(guó)內(nèi)生產(chǎn)的溫度控制器來(lái)講,總體發(fā)展水平仍然不高,同日本、美國(guó)、德國(guó)等先進(jìn)國(guó)家相比,仍然有著較大的差距。成熟的溫控產(chǎn)品主要以“點(diǎn)位”控制及常規(guī)的PID控制器為主,它們只能適應(yīng)一般溫度系統(tǒng)控制,而用于較高控制場(chǎng)合的智能化、自適應(yīng)控制儀表,國(guó)內(nèi)技術(shù)還不十分成熟,形成商品化并廣泛應(yīng)用的控制儀表較少。隨著我國(guó)經(jīng)濟(jì)的發(fā)展及加入WTO,我國(guó)政府及企業(yè)對(duì)此都非常重視,對(duì)相關(guān)企業(yè)資源進(jìn)行了重組,相繼建立了一些國(guó)家、企業(yè)的研發(fā)中心,開(kāi)展創(chuàng)新性研究,使我國(guó)儀表工業(yè)得到了迅速的發(fā)展。 自70年代以來(lái),由于工業(yè)過(guò)程控制的需要,特別是在微電子技術(shù)和計(jì)算機(jī)技術(shù)的迅猛發(fā)展,以及自動(dòng)控制理論和設(shè)計(jì)方法發(fā)展的推動(dòng)下,國(guó)外溫度控制系統(tǒng)發(fā)展迅速,并在智能化自適應(yīng)參數(shù)自整定等方面取得成果。在這方面以日本、美國(guó)、德國(guó)、瑞典等國(guó)技術(shù)領(lǐng)先,并且都生產(chǎn)出了一批商品化的性能優(yōu)異的溫度控制器及儀器儀表,目前,國(guó)外溫度控制系統(tǒng)及儀表正朝著高精度智能化、小型化等方面快速發(fā)展。 溫度控制系統(tǒng)在國(guó)內(nèi)各行各業(yè)的應(yīng)用雖然已經(jīng)十分廣泛,但從國(guó)內(nèi)生產(chǎn)的溫度控制器來(lái)講,總體發(fā)展水平仍然不高,同日本、美國(guó)、德國(guó)等先進(jìn)國(guó)家相比,仍然有著較大的差距。成熟的溫控產(chǎn)品主要以“點(diǎn)位”控制及常規(guī)的PID控制器為主,它們只能適應(yīng)一般溫度系統(tǒng)控制,而用于較高控制場(chǎng)合的智能化、自適應(yīng)控制儀表,國(guó)內(nèi)技術(shù)還不十分成熟,形成商品化并廣泛應(yīng)用的控制儀表較少。 1.3設(shè)計(jì)目的 1. 鞏固、加深和擴(kuò)大單片機(jī)應(yīng)用的知識(shí)面,提高綜合及靈活運(yùn)用所學(xué)知識(shí)解決工業(yè)控制的能力。 2. 培養(yǎng)針對(duì)課題需要,選擇和查閱有關(guān)手冊(cè)、圖表及文獻(xiàn)資料的自學(xué)能力,提高組成系統(tǒng)、編程、調(diào)試的動(dòng)手能力。 3. 通過(guò)對(duì)課題設(shè)計(jì)方案的分析、選擇、比較、熟悉單片機(jī)用系統(tǒng)開(kāi)發(fā)、研制的過(guò)程,軟硬件設(shè)計(jì)的方法、內(nèi)容及步驟。 4.通過(guò)設(shè)計(jì)實(shí)現(xiàn)一定的智能功能,培養(yǎng)學(xué)術(shù)能力和科研能力。 1.4課題的主要工作 本設(shè)計(jì)主要研究單片機(jī)控制的數(shù)字溫度計(jì),本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。 主要要求如下: 1.設(shè)置溫度范圍為: -50℃-110℃; 2.精度誤差小于0.5℃,LED數(shù)碼直讀顯示; 3. LED數(shù)碼直讀顯示; 4.可以任意設(shè)定溫度的上下限報(bào)警功能。 1.5本文研究?jī)?nèi)容 本文是基于AT89C51單片機(jī),采用數(shù)字溫度傳感器DS18B20,利用DS18B20不需要A/D轉(zhuǎn)換,可直接進(jìn)行溫度采集顯示,報(bào)警的數(shù)字溫度計(jì)設(shè)計(jì)。包括傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等組成。
第二章 系統(tǒng)概述 2.1方案選擇 該系統(tǒng)主要由主控部分、溫度傳感部分、顯示部分、報(bào)警部分等電路組成,每部分實(shí)現(xiàn)的方法都有很多種,現(xiàn)把常見(jiàn)的實(shí)現(xiàn)方案列出并進(jìn)行比較。 2.1.1主控制部分 方案一:采用PC機(jī)實(shí)現(xiàn) 此方案采用PC機(jī)實(shí)現(xiàn)。它可在線(xiàn)編程,可在線(xiàn)仿真的功能,這讓調(diào)試變得方便。且人機(jī)交互友好。但是PC機(jī)輸出信號(hào)不能直接與DS18B20通信。需要通過(guò)RS232電平轉(zhuǎn)換兼容,硬件的合成在線(xiàn)調(diào)試,較為繁瑣,很不簡(jiǎn)便。而且在一些環(huán)境比較惡劣的場(chǎng)合,PC機(jī)的體積大,攜帶安裝不方便,性能不穩(wěn)定,給工程帶來(lái)很多麻煩。 方案二:采用AT89C51八位單片機(jī)實(shí)現(xiàn) 此方案采用AT89C51八位單片機(jī)實(shí)現(xiàn)。單片機(jī)軟件編程的自由度大,可通過(guò)編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制。而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC機(jī)通信。運(yùn)用主從分布式思想,由一臺(tái)上位機(jī)(PC微型計(jì)算機(jī)),下位機(jī)(單片機(jī))多點(diǎn)溫度數(shù)據(jù)采集,組成兩級(jí)分布式多點(diǎn)溫度測(cè)量的巡回檢測(cè)系統(tǒng),實(shí)現(xiàn)遠(yuǎn)程控制。另外AT89C51在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。 最終方案:采用AT89C51八位單片機(jī)實(shí)現(xiàn) 2.1.2 溫度傳感器部分 溫度檢測(cè)系統(tǒng)有共同的特點(diǎn):環(huán)境復(fù)雜、布線(xiàn)分散、測(cè)量點(diǎn)多、現(xiàn)場(chǎng)離監(jiān)控室遠(yuǎn)等,這都會(huì)使檢測(cè)系統(tǒng)的穩(wěn)定性和可靠性下降 。因此需要針對(duì)這些特點(diǎn)選擇合適的測(cè)溫方案,常見(jiàn)的有以下三種方案。 方案一:采用熱敏電阻 采用熱敏電阻,可滿(mǎn)足40攝氏度至90攝氏度測(cè)量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對(duì)于檢測(cè)1攝氏度的信號(hào)是不適用的。而且在溫度測(cè)量系統(tǒng)中,采用單片溫度傳感器,比如AD590,LM35等.但這些芯片輸出的都是模擬信號(hào),必須經(jīng)過(guò)A/D轉(zhuǎn)換后才能送給計(jì)算機(jī),這樣就使得測(cè)溫裝置的結(jié)構(gòu)較復(fù)雜。另外,這種測(cè)溫裝置的一根線(xiàn)上只能掛一個(gè)傳感器,不能進(jìn)行多點(diǎn)測(cè)量.即使能實(shí)現(xiàn),也要用到復(fù)雜的算法,一定程度上也增加了軟件實(shí)現(xiàn)的難度[2]。 方案二:采用熱電偶溫差電路 采用熱電偶溫差電路測(cè)溫,溫度檢測(cè)部分可以使用低溫?zé)崤迹瑹犭娕加蓛蓚(gè)焊接在一起的異金屬導(dǎo)線(xiàn)所組成,熱電偶產(chǎn)生的熱電勢(shì)由兩種金屬的接觸電勢(shì)和單一導(dǎo)體的溫差電勢(shì)組成。通過(guò)將參考結(jié)點(diǎn)保持在已知溫度并測(cè)量該電壓,便可推斷出檢測(cè)結(jié)點(diǎn)的溫度。數(shù)據(jù)采集部分則使用帶有A/D 通道的單片機(jī),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行A/D 轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái)。熱電偶的優(yōu)點(diǎn)是工作溫度范圍非常寬,且體積小,但是它們也存在著輸出電壓小、容易遭受來(lái)自導(dǎo)線(xiàn)環(huán)路的噪聲影響以及漂移較高的缺點(diǎn),并且這種設(shè)計(jì)需要用到A/D 轉(zhuǎn)換電路,感溫電路比較麻煩[2]。 方案三:采用數(shù)字溫度芯片DS18B20測(cè)量溫度 采用數(shù)字溫度芯片DS18B20測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線(xiàn)形較好。在0—100攝氏度時(shí),最大線(xiàn)形偏差小于1攝氏度。DS18B20的最大特點(diǎn)之一采用了單總線(xiàn)的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS1820和微控制器AT89C51構(gòu)成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu)就比較簡(jiǎn)單,體積也不大,且由于AT89C51可以帶多個(gè)DSB1820,因此可以非常容易實(shí)現(xiàn)多點(diǎn)測(cè)量。輕松的組建傳感器網(wǎng)絡(luò)[3]。 采用溫度芯片DS18B20測(cè)量溫度,可以體現(xiàn)系統(tǒng)芯片化這個(gè)趨勢(shì)。部分功能電路的集成,使總體電路更簡(jiǎn)潔,搭建電路和焊接電路時(shí)更快。而且,集成塊的使用,有效地避免外界的干擾,提高測(cè)量電路的精確度。所以集成芯片的使用將成為電路發(fā)展的一種趨勢(shì)。 最終方案:采用數(shù)字溫度芯片DS18B20測(cè)量溫度 2.1.3顯示電路部分 方案一:LED數(shù)碼管顯示: 成本低、電路設(shè)計(jì)簡(jiǎn)單、亮度高、夜間及光照差的情況無(wú)需額外光源; 方案二:LCD1602顯示 顯示信息豐富、電路設(shè)計(jì)簡(jiǎn)單,但是價(jià)格相對(duì)較高,而且夜間沒(méi)有背光。 最終方案:LED數(shù)碼管顯示 2.1.4報(bào)警電路部分 方案一:?jiǎn)纹瑱C(jī)控制繼電器控制220V鬧鈴及閃光燈; 方案二:通過(guò)單片機(jī)控制蜂鳴器報(bào)警,控制發(fā)光二極管交替點(diǎn)亮形成閃光效果; 最終方案:通過(guò)單片機(jī)控制蜂鳴器報(bào)警,控制發(fā)光二極管交替點(diǎn)亮形成閃光效果。 2.2系統(tǒng)總體方案 經(jīng)過(guò)各部分方案選擇與匯總,得到系統(tǒng)總體方案。系統(tǒng)主控電路采用AT89C51單片機(jī),溫度傳感器部分采用DS18B20,顯示部分4位LED共陰極數(shù)碼管,報(bào)警部分采用蜂鳴器與發(fā)光二極管實(shí)現(xiàn)報(bào)警,系統(tǒng)如圖2-1所示。 
圖2-1 系統(tǒng)總體圖
第三章 系統(tǒng)硬件設(shè)計(jì) 3.1 80C51單片機(jī)的介紹 80C51有40個(gè)引腳,4個(gè)8位并行I/O口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級(jí),2個(gè)16位定時(shí)/計(jì)數(shù)器。80C51的存儲(chǔ)器系統(tǒng)由4K的程序存儲(chǔ)器(掩膜ROM),和128B的數(shù)據(jù)存儲(chǔ)器(RAM)組成[4]。單片機(jī)引腳如圖3-1所示。 3.1.1引腳功能說(shuō)明 
圖3-1 AT89C51單片機(jī)管腳圖 1.時(shí)鐘電路引腳XTAL1 和XTAL2: (1)XTAL2(18 腳):接外部晶體和微調(diào)電容的一端;在8051 片內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體固有頻率。若需采用外部時(shí)鐘電路時(shí),該引腳輸入外部時(shí)鐘脈沖。 要檢查8051/8031 的振蕩電路是否正常工作,可用示波器查看XTAL2 端是否有脈沖信號(hào)輸出。 (2)XTAL1(19 腳):接外部晶體和微調(diào)電容的另一端;在片內(nèi)它是振蕩電路反相放大器的輸入端。在采用外部時(shí)鐘時(shí),該引腳必須接地。 2.控制信號(hào)引腳RST,ALE,PSEN 和EA: (1)RST/VPD(9 腳):RST 是復(fù)位信號(hào)輸入端,高電平有效。當(dāng)此輸入端保持備用電源的輸入端。當(dāng)主電源Vcc 發(fā)生故障,降低到低電平規(guī)定值時(shí),將+5V 電源自動(dòng)兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘振蕩周期)的高電平時(shí),就可以完成復(fù)位操作。RST 引腳的第二功能是VPD,即接入RST 端,為RAM 提供備用電源,以保證存儲(chǔ)在RAM 中的信息不丟失,從而合復(fù)位后能繼續(xù)正常運(yùn)行。 (2)ALE/PROG(30 腳):地址鎖存允許信號(hào)端。當(dāng)8051 上電正常工作后,ALE 引腳不斷向外輸出正脈沖信號(hào),此頻率為振蕩器頻率fOSC 的1/6。CPU 訪(fǎng)問(wèn)片外存儲(chǔ)器時(shí),ALE 輸出信號(hào)作為鎖存低8 位地址的控制信號(hào)。 平時(shí)不訪(fǎng)問(wèn)片外存儲(chǔ)器時(shí),ALE 端也以振蕩頻率的1/6 固定輸出正脈沖,因而ALE 信號(hào)可以用作對(duì)外輸出時(shí)鐘或定時(shí)信號(hào)。如果想確定8051/8031 芯片的好壞,可用示波器查看ALE端是否有脈沖信號(hào)輸出。如有脈沖信號(hào)輸出,則8051/8031 基本上是好的。 ALE 端的負(fù)載驅(qū)動(dòng)能力為8 個(gè)LS 型TTL(低功耗甚高速TTL)負(fù)載。 此引腳的第二功能PROG 在對(duì)片內(nèi)帶有4KB EPROM 的8751 編程寫(xiě)入(固化程序)時(shí),作為編程脈沖輸入端。 (3)PSEN(29 腳):程序存儲(chǔ)允許輸出信號(hào)端。在訪(fǎng)問(wèn)片外程序存儲(chǔ)器時(shí),此端定時(shí)輸出負(fù)脈沖作為讀片外存儲(chǔ)器的選通信號(hào)。此引肢接EPROM 的OE 端(見(jiàn)后面幾章任何一個(gè)小系統(tǒng)硬件圖)。PSEN 端有效,即允許讀出EPROM/ROM 中的指令碼。PSEN 端同樣可驅(qū)動(dòng)8個(gè)LS 型TTL 負(fù)載。要檢查一個(gè)8051/8031 小系統(tǒng)上電后CPU 能否正常到EPROM/ROM 中讀取指令碼,也可用示波器看PSEN 端有無(wú)脈沖輸出。如有則說(shuō)明基本上工作正常。 (4)EA/Vpp(31 腳):外部程序存儲(chǔ)器地址允許輸入端/固化編程電壓輸入端。當(dāng)EA 引腳接高電平時(shí),CPU只訪(fǎng)問(wèn)片內(nèi)EPROM/ROM并執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令,但當(dāng)PC(程序計(jì)數(shù)器)的值超過(guò)0FFFH(對(duì)8751/8051 為4K)時(shí),將自動(dòng)轉(zhuǎn)去執(zhí)行片外程序存儲(chǔ)器內(nèi)的程序。當(dāng)輸入信號(hào)EA 引腳接低電平(接地)時(shí),CPU 只訪(fǎng)問(wèn)外部EPROM/ROM 并執(zhí)行外部程序存儲(chǔ)器中的指令,而不管是否有片內(nèi)程序存儲(chǔ)器。對(duì)于無(wú)片內(nèi)ROM 的8031 或8032,需外擴(kuò)EPROM,此時(shí)必須將EA 引腳接地。此引腳的第二功能是Vpp 是對(duì)8751 片內(nèi)EPROM固化編程時(shí),作為施加較高編程電壓(一般12V~21V)的輸入端。 3.輸入/輸出端口P0/P1/P2/P3: (1)P0口(P0.0~P0.7,39~32 腳):P0口是一個(gè)漏極開(kāi)路的8 位準(zhǔn)雙向I/O口。作為漏極開(kāi)路的輸出端口,每位能驅(qū)動(dòng)8 個(gè)LS 型TTL負(fù)載。當(dāng)P0 口作為輸入口使用時(shí),應(yīng)先向口鎖存器(地址80H)寫(xiě)入全1,此時(shí)P0 口的全部引腳浮空,可作為高阻抗輸入。作輸入口使用時(shí)要先寫(xiě)1,這就是準(zhǔn)雙向口的含義。在CPU 訪(fǎng)問(wèn)片外存儲(chǔ)器時(shí),P0口分時(shí)提供低8 位地址和8 位數(shù)據(jù)的復(fù)用總線(xiàn)。在此期間,P0口內(nèi)部上拉電阻有效。 (2)P1口(P1.0~P1.7,1~8 腳):P1口是一個(gè)帶內(nèi)部上拉電阻的8 位準(zhǔn)雙向I/O口。P1口每位能驅(qū)動(dòng)4 個(gè)LS 型TTL 負(fù)載。在P1口作為輸入口使用時(shí),應(yīng)先向P1口鎖存地址(90H)寫(xiě)入全1,此時(shí)P1口引腳由內(nèi)部上拉電阻拉成高電平。 (3)P2口(P2.0~P2.7,21~28 腳):P2口是一個(gè)帶內(nèi)部上拉電阻的8 位準(zhǔn)雙向I/O口。P口每位能驅(qū)動(dòng)4個(gè)LS 型TTL 負(fù)載。在訪(fǎng)問(wèn)片外EPROM/RAM 時(shí),它輸出高8 位地址。 (4)P3口(P3.0~P3.7,10~17 腳):P3口是一個(gè)帶內(nèi)部上拉電阻的8 位準(zhǔn)雙向I/O口。P3口每位能驅(qū)動(dòng)4個(gè)LS型TTL負(fù)載。P3口與其它I/O 端口有很大的區(qū)別,它的每個(gè)引腳都有第二功能,詳見(jiàn)表3-1。 表3-1 P3口的第二功能 | | | | | | | | | | | | | | | | | 定時(shí)器/計(jì)數(shù)器0的外部輸入 | | | 定時(shí)器/計(jì)數(shù)器1的外部輸入 | | | | | | |
3.1.2時(shí)鐘電路 時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào),而時(shí)序所研究的是指令執(zhí)行中各地信號(hào)之間的相互關(guān)系。單片機(jī)本身就如一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信號(hào)控制下嚴(yán)格地按時(shí)序進(jìn)行工作。單片機(jī)的時(shí)鐘電路,如圖3-2所示。 
圖3-2 時(shí)鐘振蕩電路 一般電容C1,C2取22pF左右,晶體X1的振蕩頻率范圍是1.2MHz~12 MHz 。晶體振蕩頻率高, 則系統(tǒng)的時(shí)鐘頻率也高, 單片機(jī)運(yùn)行速度也就快。MCS-51在通常應(yīng)用情況下,使用振蕩頻率為的6MHz或12MHz。本設(shè)計(jì)采用12MHz的振蕩頻率。 3.1.3復(fù)位電路 單片機(jī)復(fù)位的條件是:必須使RST/VPD 或RST引腳(9)加上持續(xù)二個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。單片機(jī)常見(jiàn)的復(fù)位電路如圖3-3所示。該電路除具有上電復(fù)位功能外,若要復(fù)位,只需按圖3-3中的“復(fù)位”鍵,此時(shí)電源VCC經(jīng)電阻R2、R8分壓,在RST端產(chǎn)生一個(gè)復(fù)位高電平。 
圖3-3復(fù)位電路 3.2 LED顯示部分 3.2.1 LED數(shù)碼管的管腳 本設(shè)計(jì)采用4位LED共陰極數(shù)碼管顯示,數(shù)碼管均為7段數(shù)碼管,共有12個(gè)管腳,其中1—4管腳用于位選,5—12腳顯示段碼,數(shù)碼管如圖3-4所示。 圖3-4 LED數(shù)碼管管腳圖 3.2.2數(shù)碼管驅(qū)動(dòng)電路 驅(qū)動(dòng)電路使用2片74HC573鎖存器驅(qū)動(dòng)。74HC573是8位數(shù)據(jù)鎖存器,主要用于數(shù)碼管、按鍵等等的控制與驅(qū)動(dòng)。驅(qū)動(dòng)電路如圖3-5所示。 
圖3-5 數(shù)碼管驅(qū)動(dòng)電路 3.3 DS18B20部分 DALLAS 最新單線(xiàn)數(shù)字溫度傳感器DS18B20是一種新型的“一線(xiàn)器件”,其體積更小、更適用于多種場(chǎng)合、且適用電壓更寬、更經(jīng)濟(jì)。DALLAS 半導(dǎo)體公司的數(shù)字化溫度傳感器DS18B20是世界上第一片支持“一線(xiàn)總線(xiàn)”接口的溫度傳感器。溫度測(cè)量范圍為-55~+125 攝氏度,可編程為9位~12 位轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0.0625攝氏度,分辨率設(shè)定參數(shù)以及用戶(hù)設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM 中,掉電后依然保存。被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)字量方式串行輸出;其工作電源既可以在遠(yuǎn)端引入,也可以采用寄生電源方式產(chǎn)生;多個(gè)DS18B20可以并聯(lián)到3 根或2 根線(xiàn)上,CPU只需一根端口線(xiàn)就能與諸多DS18B20 通信,占用微處理器的端口較少,可節(jié)省大量的引線(xiàn)和邏輯電路。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線(xiàn)路簡(jiǎn)單,在一根通信線(xiàn),可以?huà)旌芏噙@樣的數(shù)字溫度計(jì),十分方便[5]。DS18B20如圖3-6所示。 
圖3-6 DS18B20引腳圖 1.DS18B20有4個(gè)主要的數(shù)據(jù)部件: (1)光刻ROM中的64位序列號(hào)是出廠(chǎng)前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開(kāi)始8位(28H)是產(chǎn)品類(lèi)型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線(xiàn)上掛接多個(gè)DS18B20的目的。 (2)DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。 (3)DS18B20溫度傳感器的存儲(chǔ)器 DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPRAM,后者存放高溫度和低溫度觸發(fā)器 TH、TL和結(jié)構(gòu)寄存器。 (4)配置寄存器。 2.DS18B20內(nèi)部結(jié)構(gòu)及功能: DS18B20的內(nèi)部結(jié)構(gòu)如圖4-7所示。主要包括:寄生電源,溫度傳感器,64位ROM和單總線(xiàn)接口,存放中間數(shù)據(jù)的高速暫存器RAM,用于存儲(chǔ)用戶(hù)設(shè)定溫度上下限值的TH和TL觸發(fā)器,存儲(chǔ)與控制邏輯,8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等7部分 3.3.1 DS18B20管腳功能 DS18B20引腳功能如表3-2所示[7]。 表3-2 DS18B20管腳功能表 | | | | | | | | 數(shù)據(jù)輸入/輸出引腳。開(kāi)漏單總線(xiàn)接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源。 | | | 可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí)此引腳必須接地。 |
3.3.2 DS18B20驅(qū)動(dòng)電路 在硬件上,DS18B20與單片機(jī)的連接有兩種方法,一種是VCC接外部電源,GND接地,I/O與單片機(jī)的I/O線(xiàn)相連;另一種是用寄生電源供電,此時(shí)VDD、GND接地,I/O接單片機(jī)I/O。無(wú)論是內(nèi)部寄生電源還是外部供電,I/O口線(xiàn)要接上拉電阻。我們采用的是第一種方法,如圖3-7所示 
圖3-7 DS18B20驅(qū)動(dòng)電路 3.3.3DS18B20測(cè)溫原理 DS18B20測(cè)溫原理:低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì) 低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重 新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即 為所測(cè)溫度。 3.3.4 DS18B20工作過(guò)程 1.溫度的讀取: DS18B20在出廠(chǎng)時(shí)以配置為12位,讀取溫度時(shí)共讀取16位,所以把后11位的2進(jìn)制轉(zhuǎn)化為10進(jìn)制后在乘以0.0625便為所測(cè)的溫度,還需要判斷正負(fù)。前5個(gè)數(shù)字為符號(hào)位,當(dāng)前5位為1時(shí),讀取的溫度為負(fù)數(shù);當(dāng)前5位為0時(shí),讀取的溫度為正數(shù)。 2.DS18B20的初始化: (1)先將數(shù)據(jù)線(xiàn)置高電平“1”。 (2)延時(shí)(該時(shí)間要求的不是很?chē)?yán)格,但是盡可能的短一點(diǎn))。 (3)數(shù)據(jù)線(xiàn)拉到低電平“0”。 (4)延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480到960微秒)。 (5)數(shù)據(jù)線(xiàn)拉到高電平“1”。 (6)延時(shí)等待(如果初始化成功則在15到60毫秒時(shí)間之內(nèi)產(chǎn)生一個(gè)由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來(lái)確定它的存在,但是應(yīng)注意不能無(wú)限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制 (7)若CPU讀到了數(shù)據(jù)線(xiàn)上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最少要480微秒。 (8)將數(shù)據(jù)線(xiàn)再次拉高到高電平“1”后結(jié)束。 3.DS18B20的寫(xiě)操作: (1)數(shù)據(jù)線(xiàn)先置低電平“0”。 (2)延時(shí)確定的時(shí)間為15微秒。 (3)按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。 (4)延時(shí)時(shí)間為45微秒。 (5)將數(shù)據(jù)線(xiàn)拉到高電平。 (6)重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。 (7)最后將數(shù)據(jù)線(xiàn)拉高。 4.DS18B20的讀操作: (1)將數(shù)據(jù)線(xiàn)拉高“1”。 (2)延時(shí)2微秒。 (3)將數(shù)據(jù)線(xiàn)拉低“0”。 (4)延時(shí)15微秒。 (5)將數(shù)據(jù)線(xiàn)拉高“1”。 (5)延時(shí)15微秒。 (6)讀數(shù)據(jù)線(xiàn)的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。 (7)延時(shí)30微秒。 3.3.5 DS18B20使用中的注意事項(xiàng) DS18B20 雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線(xiàn)少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問(wèn)題: 1. DS18B20 從測(cè)溫結(jié)束到將溫度值轉(zhuǎn)換成數(shù)字量需要一定的轉(zhuǎn)換時(shí)間,這是必須保證的,不然會(huì)出現(xiàn)轉(zhuǎn)換錯(cuò)誤的現(xiàn)象,使溫度輸出總是顯示85。 2. 在實(shí)際使用中發(fā)現(xiàn),應(yīng)使電源電壓保持在5V 左右,若電源電壓過(guò)低,會(huì)使所測(cè)得的溫度精度降低。 3. 較小的硬件開(kāi)銷(xiāo)需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此,在對(duì)DS1820進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格的保證讀寫(xiě)時(shí)序,否則將無(wú)法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語(yǔ)言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì)DS1820操作部分最好采用匯編語(yǔ)言實(shí)現(xiàn)。 4. 在DS18B20的有關(guān)資料中均未提及單總線(xiàn)上所掛DS18B20 數(shù)量問(wèn)題,容易使人誤認(rèn)為可以?huà)烊我舛鄠(gè)DS18B20,在實(shí)際應(yīng)用中并非如此,當(dāng)單總線(xiàn)上所掛DS18B20 超過(guò)8 個(gè)時(shí),就需要解決微處理器的總線(xiàn)驅(qū)動(dòng)問(wèn)題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要加以注意。 5. 在DS18B20測(cè)溫程序設(shè)計(jì)中,向DS18B20 發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào),一旦某個(gè)DS18B20 接觸不好或斷線(xiàn),當(dāng)程序讀該DS18B20 時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán),這一點(diǎn)在進(jìn)行DS18B20硬件連接和軟件設(shè)計(jì)時(shí)也要給予一定的重視[8]。 3.4報(bào)警電路部分設(shè)計(jì) 閃光燈部分主要由發(fā)光二極管LED組成,紅燈交替閃爍實(shí)現(xiàn)閃光功能以表示報(bào)警狀態(tài)。單片機(jī)的P1.0和P1.1口分別控制LED燈D1和D2的開(kāi)關(guān),在兩個(gè)二極管加1k的保護(hù)電阻,防止電流過(guò)大燒壞二極管[6]。 蜂鳴器由NPN三極管驅(qū)動(dòng),由單片機(jī)P1.3口提供控制信號(hào),并傳送至三極管的基極,引起蜂鳴器發(fā)聲。報(bào)警電路圖如圖3-7所示。 
圖3-7 報(bào)警電路 3.5按鍵部分 本系統(tǒng)按鍵部分設(shè)置了三個(gè)按鍵,分別是“SET”、“ADD”、“DEC”鍵,分別實(shí)現(xiàn)功能選定和報(bào)警溫度的加減。按鍵分別經(jīng)三個(gè)上拉電阻接+5V電源。按鍵放開(kāi)時(shí),單片機(jī)管腳輸入高電平;按鍵按下時(shí),單片機(jī)管腳接地,輸入低電平。按鍵采用軟件消抖。按鍵電路設(shè)計(jì)如圖3-8所示。 
圖3-8 按鍵電路
第四章 系統(tǒng)軟件設(shè)計(jì) 系統(tǒng)程序主要包括:主程序、數(shù)碼管顯示子程序、DS18B20讀取溫度子程序、按鍵掃描子程序、報(bào)警子程序等五部分組成[9]。 4.1主程序流程圖 主程序?qū)崿F(xiàn)按鍵的判斷,在無(wú)按鍵按下的情況下讀取并顯示溫度;若有按鍵按下,則進(jìn)行報(bào)警上下限溫度的設(shè)定;每次讀取顯示溫度后與報(bào)警溫度比較,若正常則繼續(xù)讀取溫度,否則將進(jìn)行報(bào)警。程序流程圖如圖4-1所示。 
圖4-1 主程序流程圖 4.2數(shù)碼管顯示子程序流程圖 數(shù)碼管顯示子程序:先讀取需要顯示的數(shù)值t,然后判斷t的正負(fù);若t為負(fù)則在最高位顯示“-“號(hào),然后掃描顯示t的百位、十位、各位、小數(shù);若t不為負(fù)則直接掃描顯示。程序流程圖如圖4-2所示。 
圖4-2數(shù)碼管顯示子程序流程圖 4.3 DS18B20讀取溫度子程序流程圖 該子程序?qū)崿F(xiàn)了DS18B20的初始化,并讀出溫度數(shù)據(jù),最后進(jìn)行數(shù)值轉(zhuǎn)換并返回該數(shù)值。流程圖如圖4-3所示。 
圖4-3 讀取溫度子程序流程圖 4.4按鍵掃描子程序流程圖 按鍵采用掃描查詢(xún)方式,其中按鍵采用了軟件消抖。其中功能標(biāo)志位func=0時(shí),顯示當(dāng)前溫度;func=1時(shí),設(shè)置溫度上限;func=2時(shí),設(shè)置溫度下限;func>=3時(shí),令func=1,并顯示當(dāng)前溫度。程序流程圖如圖4-4所示。 
圖4-4 按鍵掃描子程序流程圖 4.5報(bào)警子程序流程圖 該子程序?qū)崿F(xiàn)系統(tǒng)的聲光報(bào)警,程序流程圖如圖4-5所示。 
圖4-5報(bào)警子程序流程圖
第五章 系統(tǒng)仿真 系統(tǒng)仿真過(guò)程主要用到了Keil和Proteus兩個(gè)軟件,其中Keil用于程序的編譯以及生成.hex格式的燒錄文件,Proteus用于系統(tǒng)的仿真。 5.1仿真軟件簡(jiǎn)介 5.1.1 Keil軟件簡(jiǎn)介 Keil C51是美國(guó)Keil Software公司出品的51系列兼容單片機(jī)C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比,C語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。用過(guò)匯編語(yǔ)言后再使用C來(lái)開(kāi)發(fā),體會(huì)更加深刻。Keil C51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。Keil C51軟件是一個(gè)基于32位Windows環(huán)境的應(yīng)用程序,支持C語(yǔ)言和匯編語(yǔ)言編程,其6.0以上的版本將編譯和仿真軟件統(tǒng)一為μVision(通常稱(chēng)為μV2)。軟件圖標(biāo)如圖5-1所示。 
圖5-1 Keil軟件 5.1.2 Proteus簡(jiǎn)介 Proteus軟件是英國(guó)Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。其處理器模型支持8051、PIC、AVR、ARM、8086等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它支持IAR、Keil和MPLAB等多種編譯器[10]。軟件圖標(biāo)如圖5-2所示。 
圖5-2 Proteus軟件 該軟件的特點(diǎn)是: 1. 容易實(shí)現(xiàn)單片機(jī)仿真。 2. 提供了多種虛擬儀器。如示波器、邏輯分析儀、信號(hào)發(fā)生器等,調(diào)試非常方便。 3. 提供軟件調(diào)試功能,同時(shí)支持第三方的軟件編譯和調(diào)試環(huán)境,如Keil、Matlab等軟件。 4. 具有強(qiáng)大的原理圖繪制功能。 5.2仿真結(jié)果 5.2.1仿真總體設(shè)計(jì)圖 總體設(shè)計(jì)圖如圖5-3所示。 
圖5-3仿真總體設(shè)計(jì)圖 5.2.2溫度顯示仿真 當(dāng)溫度在正常范圍時(shí),LED數(shù)碼管正常顯示當(dāng)前溫度。如圖5-4所示。 
圖5-4溫度顯示仿真 5.2.3溫度設(shè)定仿真 當(dāng)按下一次SET鍵時(shí),可以通過(guò)ADD鍵和DEC鍵設(shè)置報(bào)警溫度上限;當(dāng)按下二次SET鍵時(shí),可以通過(guò)ADD鍵和DEC鍵設(shè)置報(bào)警溫度下限;按下三次SET鍵時(shí),返回,并顯示當(dāng)前溫度。如圖5-5所示。 
圖5-5 溫度設(shè)定仿真 5.2.4報(bào)警仿真 設(shè)置環(huán)境溫度為31.0,高于報(bào)警溫度上限30.0。此時(shí)仿真系統(tǒng)中,蜂鳴器發(fā)出警報(bào)聲,二極管交替閃光報(bào)警。
第六章 系統(tǒng)開(kāi)發(fā)板實(shí)現(xiàn) 6.1 AT89C51單片機(jī)開(kāi)發(fā)板簡(jiǎn)介 該開(kāi)發(fā)板采用獨(dú)立模塊式結(jié)構(gòu),大部分模塊都是完全獨(dú)立的,僅有電源部分連接,信號(hào)接口部分默認(rèn)懸空,需要用到該器件時(shí),可用杜邦線(xiàn)連接到對(duì)應(yīng)的單片機(jī)端口,不使用時(shí)懸空即可。這種方式大大提高了自由度,模塊完全獨(dú)立,可以自由配置端口。開(kāi)發(fā)板集成了AT89C51單片機(jī)、DS18B20溫度傳感模塊、4位共陰極LED數(shù)碼管、74HC573鎖存器、獨(dú)立按鍵、發(fā)光二極管等模塊,可完全滿(mǎn)足本設(shè)計(jì)需求。開(kāi)發(fā)板總體圖如圖6-1(a)所示。 6.2開(kāi)發(fā)板連線(xiàn)及效果圖 如圖6-1所示:當(dāng)系統(tǒng)接通電源后,顯示當(dāng)前溫度,如圖6-1(a)所示;當(dāng)?shù)谝淮伟聪耂ET鍵時(shí),系統(tǒng)顯示報(bào)警上限溫度“30.0”,此時(shí)按ADD鍵和DEC鍵,可實(shí)現(xiàn)上限溫度的設(shè)定,如圖6-1(b)所示;當(dāng)?shù)诙伟聪耂ET鍵時(shí),系統(tǒng)顯示報(bào)警下限溫度“20.0”,此時(shí)按ADD鍵和DEC鍵,可實(shí)現(xiàn)下限溫度的設(shè)定,如圖6-1(c)所示;當(dāng)再次按下SET鍵時(shí),系統(tǒng)返回,并顯示當(dāng)前溫度,如圖6-1(d)所示。 
圖6-1系統(tǒng)開(kāi)發(fā)板實(shí)現(xiàn)
第七章 課題總結(jié) 7.1系統(tǒng)評(píng)價(jià) 系統(tǒng)評(píng)價(jià)就是客觀(guān)、公正的從各個(gè)方面評(píng)價(jià)系統(tǒng)的各項(xiàng)功能。本部分將具體從三方面闡述:優(yōu)點(diǎn),缺點(diǎn)以及將來(lái)可能改進(jìn)的方向。 7.1.1系統(tǒng)的優(yōu)點(diǎn) (1)該系統(tǒng)實(shí)現(xiàn)了溫度的實(shí)時(shí)轉(zhuǎn)換,而且轉(zhuǎn)換精度達(dá)到0.1度。 (2)溫度顯示清晰,無(wú)需額外光源,可適應(yīng)各種光照環(huán)境。 (3)提供溫度報(bào)警上下限的自由設(shè)定。 (4)溫度不正常時(shí),高響度的蜂鳴器報(bào)警和醒目的閃光燈設(shè)計(jì)。 (5)設(shè)計(jì)簡(jiǎn)單,易于維護(hù),低功耗,成本低廉。 7.1.2系統(tǒng)的缺點(diǎn) (1)由于時(shí)間及經(jīng)費(fèi)原因,未能實(shí)現(xiàn)系統(tǒng)的封裝與產(chǎn)品化。 (2)測(cè)溫范圍較窄,無(wú)法測(cè)量超過(guò)125度的高溫。 (3)系統(tǒng)的穩(wěn)定性還有待加強(qiáng)。 7.1.3將來(lái)可能改進(jìn)的方向 (1)將系統(tǒng)與PC機(jī)連接,實(shí)現(xiàn)通過(guò)PC機(jī)的遠(yuǎn)程控制; (2)實(shí)現(xiàn)智能化,如加入語(yǔ)音報(bào)告溫度,按鍵改進(jìn)為觸摸屏,已獲得更好的用戶(hù)體驗(yàn); (3)將系統(tǒng)進(jìn)行封裝,并將體積壓縮,以實(shí)現(xiàn)設(shè)計(jì)的產(chǎn)品化。 7.2課題結(jié)論 經(jīng)過(guò)不斷實(shí)踐與探索,基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)己經(jīng)完成,基本上達(dá)到了預(yù)期的設(shè)計(jì)要求和目的。該系統(tǒng)可實(shí)現(xiàn)溫度的實(shí)時(shí)轉(zhuǎn)換顯示,以及設(shè)置溫度報(bào)警上下限的功能。該數(shù)字溫度計(jì)的轉(zhuǎn)換精度高,速度快,操作簡(jiǎn)單,功耗低,成本低廉。 通過(guò)課程設(shè)計(jì),我學(xué)到了很多知識(shí),也提高了自己的科研和學(xué)術(shù)能力。在設(shè)計(jì)中搜集資料,調(diào)試程序的過(guò)程讓我受益匪淺。課程設(shè)計(jì)不僅是對(duì)我在大學(xué)所學(xué)知識(shí)的一個(gè)綜合運(yùn)用,也是一次增長(zhǎng)知識(shí)和經(jīng)驗(yàn)的好機(jī)會(huì),同時(shí)也使我學(xué)會(huì)了許多處理、解決問(wèn)題的方法,大大提高了自己的動(dòng)手能力,為即將走上工作崗位打下了良好的基礎(chǔ)。 由于時(shí)間和經(jīng)費(fèi)原因,系統(tǒng)的功能還有待完善,希望以后有機(jī)會(huì)對(duì)該系統(tǒng)進(jìn)行進(jìn)一步的設(shè)計(jì)和改進(jìn)。 總之,該課題得到了成功的實(shí)現(xiàn)。
附 錄:源程序代碼
- //課程設(shè)計(jì)題目《基于單片機(jī)的數(shù)字溫度計(jì)設(shè)計(jì)》//
- //學(xué)校: 齊魯***************//
- //學(xué)院: *********//
- //專(zhuān)業(yè): ***************//
- //姓名: *****************//
- //學(xué)號(hào): **************//
- //時(shí)間: *****************//
-
- #include "reg51.h"
- #define DataPort P0 //定義數(shù)據(jù)端口程序中遇到DataPort 則用P0 替換
- sbit LATCH1=P2^2; //定義鎖存使能端口 段鎖存
- sbit LATCH2=P2^3; // 位鎖存
- sbit DQ = P1^0; //定義ds18B20總線(xiàn)IO
- sbit set=P3^5; //溫度設(shè)置切換鍵
- sbit add=P3^4; //溫度加
- sbit dec=P3^3; //溫度減
- sbit bj=P1^3; //蜂鳴器
- sbit fg1=P1^1; //指示燈
- sbit fg2=P1^2;
- unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f}; // 顯示段碼值0~9
- unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f}; //分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼
- unsigned char TempData[8]; //存儲(chǔ)顯示值的全局變量
- int func=0,i=0; //設(shè)置溫度的標(biāo)志位
- unsigned int high=280,low=200,tempera=0;
-
- /****************************延時(shí)子函數(shù)***************************************/
- void delay(int num)//延時(shí)函數(shù)
- {
- while(num--) ;
- }
-
- /******************************初始化DS18B20*******************************/
- void Init_DS18B20() //初始化ds1820
- {
- unsigned char x=0;
- DQ = 1; //DQ復(fù)位
- delay(8); //稍做延時(shí)
- DQ = 0; //單片機(jī)將DQ拉低
- delay(80); //精確延時(shí) 大于 480us
- DQ = 1; //拉高總線(xiàn)
- delay(14);
- x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
- delay(20);
- }
-
- /*********************DS18B20讀一個(gè)字節(jié)***********************************/
- unsigned char ReadOneChar() //讀一個(gè)字節(jié)
- {
- unsigned char i=0;
- unsigned char dat = 0;
- for (i=8;i>0;i--)
- {
- DQ = 0; // 給脈沖信號(hào)
- dat>>=1;
- DQ = 1; // 給脈沖信號(hào)
- if(DQ)
- dat|=0x80;
- delay(4);
- }
- return(dat);
- }
-
- /****************************DS18B20寫(xiě)一個(gè)字節(jié)*******************************/
- void WriteOneChar(unsigned char dat) //寫(xiě)一個(gè)字節(jié)
- {
- unsigned char i=0;
- for (i=8; i>0; i--)
- {
- DQ = 0;
- DQ = dat&0x01;
- delay(5);
- DQ = 1;
- dat>>=1;
- }
- }
-
- /***************************讀取溫度并進(jìn)行轉(zhuǎn)換*******************************/
- unsigned int Readtemp() //讀取溫度
- {
- unsigned char a=0;
- unsigned char b=0;
- unsigned int t=0;
- float tt=0;
- Init_DS18B20();
- WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
- WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
- Init_DS18B20();
- WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
- WriteOneChar(0xBE); //讀取溫度寄存器
- a=ReadOneChar(); //連續(xù)讀兩個(gè)字節(jié)數(shù)據(jù) //讀低8位
- b=ReadOneChar(); //讀高8位
- t=b;
- t<<=8;
- t=t|a; //兩字節(jié)合成一個(gè)整型變量。
- tt=t*0.0625; //得到真實(shí)十進(jìn)制溫度值,因?yàn)镈S18B20可以精確到0.0625
- //度,所以讀回?cái)?shù)據(jù)的最低位代表的是0.0625度
- t= tt*10+0.5; //放大十倍,這樣做的目的將小數(shù)點(diǎn)后第一位也轉(zhuǎn)換為可顯
- //示數(shù)字,同時(shí)進(jìn)行一個(gè)四舍五入操作。
- return(t);
- }
-
- /**********************LED數(shù)碼管顯示**************************/
- void display(unsigned int temp)
- {
- TempData[0]=0;
- if(temp&0x8000)
- {
- TempData[0]=0x40; //負(fù)號(hào)標(biāo)志
- temp=~temp; // 取反加1
- temp +=1;
- }
-
- if(temp/1000==0)
- TempData[1]=0;
- else
- TempData[0]=DuanMa[temp/1000]; //百位溫度
- if((temp/1000==0)&&((temp%1000)/100==0)) //消隱
- TempData[1]=0;
- else
- TempData[1]=DuanMa[(temp%1000)/100]; //十位溫度
- TempData[2]=DuanMa[(temp%1000)%100/10]|0x80; //個(gè)位溫度,帶小數(shù)點(diǎn)
- TempData[3]=DuanMa[((temp%1000)%100)%10];
- for(i=0;i<4;i++)
- {DataPort=0; //清空數(shù)據(jù),防止有交替重影
- LATCH1=1; //段鎖存
- LATCH1=0;
-
- DataPort=WeiMa[i]; //取位碼
- LATCH2=1; //位鎖存
- LATCH2=0;
-
- DataPort=TempData[i]; //取顯示數(shù)據(jù),段碼
- LATCH1=1; //段鎖存
- LATCH1=0;
-
- delay(50);}
- }
-
- /******************************報(bào)警子程序************************************/
- void baojing()
- {
-
-
- for(i=0;i<200;i++)
- {
- delay(100);
- bj=!bj;fg1=0; fg2=1;
- }
- bj=0; //防止一直給喇叭通電造成損壞
- for(i=0;i<100;i++)
- {
- delay(500); fg1=1;fg2=0;
- }
-
- }
-
-
- /***********************鍵盤(pán)掃描子程序**************************************/
- void keyscan()
- {
- //最高溫度和最低溫度標(biāo)志位
- if(set==0)
- {
- while(1)
- {
- delay(500); //消抖
- if(set==0)
- {
-
- while(!set)
- display(high);
- func++;
- }
- if(func==1)
- {
- display(high);
- if(add==0)
- {
- while(!add)
- display(high);
- high+=1;
- }
- if(dec==0)
- {
- while(!dec)
- display(high);
- high-=1;
- }
- }
- if(func==2)
- {
- display(low);
- if(add==0)
- {
- while(!add)
- display(low);
- low+=1;
- }
- if(dec==0)
- {
- while(!dec)
- display(low);
- low-=1;
- }
- }
- if(func>=3)
- {
- func=0;
- break;
- }
- }
- }
- }
-
- /***************************主程序*****************************************/
- void main()
- {Init_DS18B20();
- WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
- WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
- while(1)
- {
- while(func==0)
-
- {display(Readtemp());delay(10);fg1=1;fg2=1;
- if((set&&(func==0))&&((Readtemp()<=low)|(Readtemp()>=high)))
- {baojing();}
- keyscan();
- }
- keyscan();
-
- }
- }
- /************************結(jié)束*****************************************/</font>
復(fù)制代碼
完整的Word格式文檔51黑下載地址:
智能儀器設(shè)計(jì)---參考.rar
(6.96 MB, 下載次數(shù): 56)
2018-8-26 02:08 上傳
點(diǎn)擊文件名下載附件
|