版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1引言在現(xiàn)代化的工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力、流量、流速和開(kāi)關(guān)量都是常用的主要被控參數(shù),例如:在冶金工業(yè)、化工生產(chǎn)、電力工程、造紙行業(yè)、機(jī)械制造和食品加工等諸多領(lǐng)域中,人們都需要對(duì)各類(lèi)加熱爐、熱處理爐、反響爐和鍋爐中的溫度進(jìn)行檢測(cè)和控制。由于單片機(jī)控制功能強(qiáng)、體積小、功耗低、本錢(qián)小等一系列特點(diǎn),使它在工業(yè)控制、智能儀器、節(jié)能技術(shù)改造、通信系統(tǒng)、信號(hào)處理及家用電器產(chǎn)品中得到廣泛應(yīng)用,隨著數(shù)字技術(shù)的開(kāi)展及單片機(jī)在電子系統(tǒng)中的應(yīng)用,在很大程度上改變了原有的傳統(tǒng)設(shè)計(jì)方法。以往采用模擬電路數(shù)字電路實(shí)現(xiàn)電路系統(tǒng),大局部功能單元都可以通過(guò)對(duì)單片機(jī)硬件功能的擴(kuò)展及專(zhuān)有程序的開(kāi)發(fā),來(lái)實(shí)現(xiàn)系統(tǒng)提出的要求,這意味著許多電路設(shè)計(jì)問(wèn)題將轉(zhuǎn)化為程序設(shè)計(jì)問(wèn)題。這種用軟件取代硬件實(shí)現(xiàn)和提高系統(tǒng)性能的設(shè)計(jì)思想稱(chēng)之為微控制技術(shù),微控制技術(shù)最根本的研究對(duì)象是單片機(jī)。采用單片機(jī)來(lái)對(duì)溫度進(jìn)行控制,不僅具有控制方便、組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。因此,采用單片機(jī)對(duì)溫度的控制問(wèn)題是一個(gè)工業(yè)生產(chǎn)中經(jīng)常會(huì)遇到的問(wèn)題。1.1溫度檢測(cè)的意義溫度這個(gè)和我們每個(gè)人生活息息相關(guān)的詞匯在工業(yè)、農(nóng)業(yè)中發(fā)揮著越來(lái)越大的作用,各種工礦企業(yè),科研機(jī)構(gòu),都要用到溫度控制。例如:煙花爆竹工廠的倉(cāng)庫(kù)必須對(duì)溫度的上限有嚴(yán)格的控制,煉鋼廠的鍋爐溫度,孵化室等等,都需要對(duì)溫度的變化進(jìn)行嚴(yán)密的監(jiān)測(cè)和控制,這就需要一些溫度監(jiān)控設(shè)備,來(lái)對(duì)溫度進(jìn)行監(jiān)控,以防止不幸事件和不必要的損失,因此研究溫度的控制方法和裝置具有重要的意義。隨著現(xiàn)代信息技術(shù)的飛速開(kāi)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn),能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)的溫度檢測(cè)以熱敏電阻為溫度敏感元件,熱敏電阻的本錢(qián)低,但需后續(xù)信號(hào)處理電路,而且可靠性相對(duì)較差,測(cè)溫準(zhǔn)確度低,檢測(cè)系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度計(jì)相比,這里設(shè)計(jì)的數(shù)字溫度控制系統(tǒng)具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫精確,數(shù)字顯示,適用范圍寬等特點(diǎn)。單片機(jī)來(lái)對(duì)溫度進(jìn)行控制,不僅具有控制方便與組態(tài)簡(jiǎn)單和靈活性大等優(yōu)點(diǎn),而且可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量,因此單片機(jī)對(duì)溫度的控制在社會(huì)工業(yè)化中起著關(guān)鍵作用。1.2溫度檢測(cè)技術(shù)的開(kāi)展及趨勢(shì)自20世紀(jì)70年代起采用模擬式組合儀表,采集現(xiàn)場(chǎng)數(shù)據(jù)信息,并以相關(guān)的模擬式儀表進(jìn)行指示、記錄和控制。隨著現(xiàn)代信息技術(shù)的飛速開(kāi)展和傳統(tǒng)工業(yè)改造的逐步實(shí)現(xiàn).能夠獨(dú)立工作的溫度檢測(cè)和顯示系統(tǒng)應(yīng)用于諸多領(lǐng)域。傳統(tǒng)的溫度檢測(cè)以熱敏電阻為溫度敏感元件。熱敏電阻的本錢(qián)低,但需后續(xù)信號(hào)處理電路,而且可靠性相對(duì)較差,測(cè)溫準(zhǔn)確度低,檢測(cè)系統(tǒng)也有一定的誤差。與傳統(tǒng)的溫度檢測(cè)系統(tǒng)相比,這里設(shè)計(jì)的超溫報(bào)警系統(tǒng)具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫精確,數(shù)字顯示,適用范圍寬等特點(diǎn)。選用AT89S51型單片機(jī)作為主控制器件,以DSl8820作為測(cè)溫傳感器通過(guò)4位共陽(yáng)極LED數(shù)碼管串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度的實(shí)時(shí)顯示。通過(guò)DSl8820直接讀取被測(cè)溫度值,進(jìn)行數(shù)據(jù)轉(zhuǎn)換,該器件的物理化學(xué)性能穩(wěn)定,線性度較好,在O℃--100℃最大線性偏差小于0.1℃,可直接向單片機(jī)傳輸數(shù)字信號(hào),便于單片機(jī)及時(shí)智能溫度控制器正朝著高精度、多功能、總線標(biāo)準(zhǔn)化、高可靠性及平安性、開(kāi)發(fā)虛擬溫度控制器和網(wǎng)絡(luò)溫度控制器、研制單片測(cè)溫控溫系統(tǒng)等高科技的方向迅速開(kāi)展。目前,我國(guó)的計(jì)算機(jī)控制技術(shù)還大多處于單控制器+單傳感器+執(zhí)行機(jī)構(gòu)這種較原始的狀態(tài),由于工廠及其它場(chǎng)所特殊的高溫環(huán)境,各類(lèi)國(guó)產(chǎn)傳感器的可靠性、穩(wěn)定性也是一個(gè)較為重要的問(wèn)題,急需解決。此外,溫度控制的計(jì)算機(jī)軟件也有待于進(jìn)一步開(kāi)發(fā)。近百年來(lái),溫度控制器的開(kāi)展大致經(jīng)歷了以下階段:1)模擬、集成機(jī)械式溫度控制器;2)電子式智能溫度控制器。目前,國(guó)際上新型溫度控制器正從模擬式向數(shù)字式、電子式由集成化向智能化、網(wǎng)絡(luò)化的方向開(kāi)展。溫度控制器開(kāi)展初期是機(jī)械式溫度控制器,這類(lèi)溫度控制器采用雙金屬片或充氣膜盒感測(cè)室內(nèi)溫度,使用波段開(kāi)關(guān)直接調(diào)整風(fēng)速。雙金屬片溫度控制器現(xiàn)根本已淘汰,只使用在一些要求不高較低檔場(chǎng)合;充氣膜盒溫度控制器當(dāng)前較流行,但總體來(lái)講機(jī)械式溫度控制器缺點(diǎn)十清楚顯:1.機(jī)械式溫度控制器外觀陳舊呆板。2.機(jī)械式溫度控制器控溫精度差。3.容易打火〔直接切換強(qiáng)電〕。4.極易在一個(gè)極小溫差范圍內(nèi)頻繁開(kāi)關(guān)水閥〔風(fēng)閥〕。5.功能比擬單一。在當(dāng)今電子信息時(shí)代,電子自動(dòng)化、信息采集控制在任何行業(yè)都是不可逆轉(zhuǎn)的潮流,電子式溫度控制器全面取代機(jī)械式溫度控制器將在未來(lái)很短時(shí)間內(nèi)實(shí)現(xiàn)。當(dāng)今時(shí)代是信息化時(shí)代,各個(gè)領(lǐng)域常以信息的獲取與利用為中心,一些先進(jìn)技術(shù),如信息傳感技術(shù)、數(shù)據(jù)處理技術(shù)及計(jì)算機(jī)控制技術(shù)正在飛速開(kāi)展并不斷變革。智能化是現(xiàn)代控制系統(tǒng)的主要開(kāi)展趨勢(shì)。所謂智能是指隨外界條件的變化,具有確定正確行動(dòng)的能力,也即具有人的思維能力以及推理并作出決策的能力。從溫度控制系統(tǒng)的智能化的措施來(lái)看,以單片機(jī)為核心構(gòu)成的微型溫度控制系統(tǒng)調(diào)節(jié)裝置己被國(guó)內(nèi)外許多公司和單位作為研究對(duì)象,客觀存在的硬件簡(jiǎn)單,軟件豐富,能方便地實(shí)現(xiàn)現(xiàn)代化控制規(guī)律和多種功能,性能優(yōu)良,運(yùn)行、調(diào)試都非常方便,且生產(chǎn)本錢(qián)低,可加快生產(chǎn)設(shè)備的更新?lián)Q代,已開(kāi)始受到重視和歡送。加之近年來(lái),單片機(jī)的性能不斷提高,而價(jià)格卻逐年降低,所以單片機(jī)溫度控制裝置將具有廣闊的開(kāi)展和運(yùn)用前景。單片機(jī)具有體積小、重量輕、價(jià)格低、可靠性高、耗電少和靈活機(jī)動(dòng)等許多優(yōu)點(diǎn),因此利用單片機(jī)進(jìn)行溫度的測(cè)量和控制,將會(huì)大大提高溫度測(cè)控的可靠性和靈活性。單片機(jī)是一種非?;顫姾皖H具生命力的機(jī)種,特別適合用于智能控制系統(tǒng).與PC機(jī)用于控制系統(tǒng)相比,其具有明顯的性能價(jià)格比。智能化的一個(gè)措施就是控制算法的參加,目前以模糊控制為核心的控制算法被廣泛的應(yīng)用。模糊控制系統(tǒng)是基于知識(shí)或基于規(guī)那么的系統(tǒng),它的核心就是由所謂的IF—THEN規(guī)那么所組成的知識(shí)庫(kù)。模糊系統(tǒng)理論的最大奉獻(xiàn)就是它為從知識(shí)庫(kù)向非線形映射的轉(zhuǎn)換提供了一套系統(tǒng)的程序。正是由于這一轉(zhuǎn)換,我們才能將基于知識(shí)的系統(tǒng)〔模糊系統(tǒng)〕采用同數(shù)學(xué)模型及傳感器測(cè)量一樣的方式,應(yīng)用到工程應(yīng)用中〔控制、信號(hào)處理及通信系統(tǒng)等〕。這樣,最終組合而成的系統(tǒng)的分析和設(shè)計(jì)就會(huì)以數(shù)學(xué)這種嚴(yán)密方式來(lái)進(jìn)行。1.3本課題主要研究的內(nèi)容及現(xiàn)實(shí)意義本課題分為硬件設(shè)計(jì)和軟件設(shè)計(jì)兩大模塊,其中本人負(fù)責(zé)完成軟件設(shè)計(jì)這一模塊。本系統(tǒng)的主要任務(wù)是以單片機(jī)為核心,利用溫度傳感器對(duì)環(huán)境的溫度進(jìn)行采集與處理,如果溫度超過(guò)設(shè)定的報(bào)警上限值,那么揚(yáng)聲器鳴叫報(bào)警,如果低于報(bào)警上限值那么不報(bào)警,另外可以根據(jù)需要人工設(shè)定報(bào)警上限值。隨著單片機(jī)和傳感技術(shù)的迅速開(kāi)展,自動(dòng)檢測(cè)領(lǐng)域發(fā)生了巨大變化,溫室環(huán)境自動(dòng)監(jiān)測(cè)控制方面的研究有了明顯的進(jìn)展,并且必將以其優(yōu)異的性能價(jià)格比,逐步取代傳統(tǒng)的溫度控制措施.但是,目前應(yīng)用于溫室大棚的溫度檢測(cè)系統(tǒng)大多采用模擬溫度傳感器、多路模擬開(kāi)關(guān)、A/D轉(zhuǎn)換器及單片機(jī)等組成的傳輸系統(tǒng),這種溫度采集系統(tǒng)需要在溫室大棚內(nèi)布置大量的測(cè)溫電纜,才能把現(xiàn)場(chǎng)傳感器的信號(hào)送到采集卡上,安裝和拆卸繁雜,本錢(qián)也高。同時(shí)線路上傳送的是模擬信號(hào),易受干擾和損耗,測(cè)量誤差也比擬大。為了克服這些缺點(diǎn),本文參考了一種基于單片機(jī)并采用數(shù)字化單總線技術(shù)的溫度測(cè)控系統(tǒng)應(yīng)用于溫室大棚的的設(shè)計(jì)方案,根據(jù)試用者提出的問(wèn)題進(jìn)行了改良,提出了一種新的設(shè)計(jì)方案。在本設(shè)計(jì)中編程語(yǔ)言采用的是C語(yǔ)言,C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,它既有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫(xiě)工作系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫(xiě)不依賴(lài)計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,其主要有以下特點(diǎn):1.C是中級(jí)語(yǔ)言它把高級(jí)語(yǔ)言的根本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來(lái)。C語(yǔ)言可以象匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最根本的工作單元。2.C是結(jié)構(gòu)式語(yǔ)言結(jié)構(gòu)式語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)局部除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?便于使用、維護(hù)以及調(diào)試。C語(yǔ)言是以函數(shù)形式提供應(yīng)用戶(hù)的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語(yǔ)句控制程序流向,從而使程序完全結(jié)構(gòu)化。3.C語(yǔ)言功能齊全C語(yǔ)言具有各種各樣的數(shù)據(jù)類(lèi)型,并引入了指針概念,可使程序效率更高。另外C語(yǔ)言也具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。而且計(jì)算功能、邏輯判斷功能也比擬強(qiáng)大,可以實(shí)現(xiàn)決策目的編游戲,編3D游戲,做數(shù)據(jù)庫(kù),做聯(lián)眾世界,做聊天室,做PHOTOSHOP做FLASH,做3DMAX。4.C語(yǔ)言適用范圍大C語(yǔ)言還有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型。C語(yǔ)言對(duì)操作系統(tǒng)和系統(tǒng)使用程序以及需要對(duì)硬件進(jìn)行操作的場(chǎng)合,用C語(yǔ)言明顯優(yōu)于其它解釋型高級(jí)語(yǔ)言,有一些大型應(yīng)用軟件也是用C語(yǔ)言編寫(xiě)的。C語(yǔ)言具有繪圖能力強(qiáng),可移植性,并具備很強(qiáng)的數(shù)據(jù)處理能力,因此適于編寫(xiě)系統(tǒng)軟件,三維、二維圖形和動(dòng)畫(huà),它是數(shù)值計(jì)算的高級(jí)語(yǔ)言。2系統(tǒng)總體設(shè)計(jì)2.1控制方案溫度控制局部,提出了用數(shù)字溫度傳感器DS18B20、單片機(jī)AT89C51及七段數(shù)碼管和一個(gè)揚(yáng)聲器的硬件電路完成對(duì)溫度的實(shí)時(shí)檢測(cè)及顯示,利用DS18B20與單片機(jī)連接由軟件與硬件電路配合來(lái)實(shí)現(xiàn)對(duì)溫度的實(shí)時(shí)控制及超出測(cè)量范圍的上限溫度的報(bào)警系統(tǒng),另加一個(gè)小的獨(dú)立鍵盤(pán),來(lái)控溫度報(bào)警的上限值。系統(tǒng)總體設(shè)計(jì)框圖如圖1所示。2.2器件選擇本設(shè)計(jì)是在和做硬件的同學(xué)的密切配合下完成的,其中硬件局部的器件選擇是:核心處理器為單片機(jī)AT89C51,數(shù)字式溫度傳感器DS18B20,溫度超限報(bào)警時(shí)選用揚(yáng)聲器,并用四位共陽(yáng)極數(shù)碼管顯示出來(lái)檢測(cè)到的環(huán)境溫度,另外選用了四個(gè)獨(dú)立按鍵作為控制鍵盤(pán)。2.2.1AT89CAT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低電壓,高性能CMOS8位微處理器,俗稱(chēng)單片機(jī)。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。AT89C51具有如下特點(diǎn):與MCS-51兼容,4K字節(jié)可編程閃爍存儲(chǔ)器,壽命:1000寫(xiě)/擦循環(huán),數(shù)據(jù)保存時(shí)間:10年,全靜態(tài)工作:0Hz-24MHz,三級(jí)程序存儲(chǔ)器鎖定,128×8位內(nèi)部RAM,32可編程I/O線,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,5個(gè)中斷源,可編程串行通道,低功耗的閑置和掉電模式,片內(nèi)振蕩器和時(shí)鐘電路整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過(guò)正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms來(lái)完成。在芯片擦操作中,代碼陣列全被寫(xiě)“1〞且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。引腳圖如下列圖2:圖1系統(tǒng)結(jié)構(gòu)框圖圖2STC89C51單片機(jī)引腳圖數(shù)字式溫度傳感器DS18B20DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單、體積小的特點(diǎn),因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有硬件線路簡(jiǎn)單、低本錢(qián)等優(yōu)點(diǎn),另外在一根通信線上可以掛很多這樣的數(shù)字溫度計(jì),十分方便。由于DS18B20是在一根I/O線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性,該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序,所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收,數(shù)據(jù)和命令的傳輸都是低位在先。DS18B20的復(fù)位時(shí)序:使用DS18B20時(shí),首先需將其復(fù)位,然后才能執(zhí)行其它命令。復(fù)位時(shí),主機(jī)將數(shù)據(jù)線拉為低電平,并保持480-960us,然后釋放數(shù)據(jù)線,再由上拉電阻將數(shù)據(jù)線拉高15-60us,等待DS18B20發(fā)出存在脈沖,存在脈沖有效時(shí)間為60-240us,這樣就完成了復(fù)位操作。DS18B20的讀時(shí)序:對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。對(duì)于DS18B20的讀時(shí)序是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。DS18B20的寫(xiě)時(shí)序:對(duì)于DS18B20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。對(duì)于DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0〞電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。為保證DS18B20的嚴(yán)格的I/O時(shí)序,需要做精確的延時(shí),主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)3個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。在DS18B20測(cè)溫程序設(shè)計(jì)中,向DS18B20發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS18B20的返回信號(hào),一旦某個(gè)DS18B20接觸不好或斷線,在程序讀該DS18B20時(shí),將沒(méi)有返回信號(hào),程序進(jìn)入死循環(huán),所以程序設(shè)計(jì)中一定要對(duì)此進(jìn)行一定的處理,比方可以參加超時(shí)退出等可靠性設(shè)計(jì)。3軟件設(shè)計(jì)在應(yīng)用系統(tǒng)中,系統(tǒng)軟件的設(shè)計(jì)是建立在具體硬件電路根底之上,根據(jù)系統(tǒng)功能要求可靠地實(shí)現(xiàn)系統(tǒng)的各種功能。好的軟件設(shè)計(jì)能夠充分發(fā)揮微控制器的運(yùn)算和邏輯控制功能,從而提高儀器的精度和使用的方便性。3.1系統(tǒng)編程語(yǔ)言和編程工具硬件電路焊接好后,就可以編寫(xiě)相關(guān)的程序調(diào)試電路了,由于電路復(fù)雜,不可能一步全部完成,一般方法是,一邊寫(xiě)軟件一邊調(diào)試,這樣可以及時(shí)發(fā)現(xiàn)是硬件問(wèn)題還是軟件問(wèn)題,也方便及時(shí)改正。單片機(jī)編程可以采用匯編語(yǔ)言,和高級(jí)語(yǔ)言,匯編語(yǔ)言編程代碼長(zhǎng)度短,效率高,但可讀性很差,就是自己寫(xiě)的程序,過(guò)幾天自己再看可能也不能立刻讀懂,適用于編寫(xiě)小的程序?,F(xiàn)在編寫(xiě)單片機(jī)程序一般使用高級(jí)語(yǔ)言,C語(yǔ)言用的比擬多,它比匯編語(yǔ)言可讀性強(qiáng),而且運(yùn)算方便,可以直接調(diào)用標(biāo)準(zhǔn)函數(shù)庫(kù)??紤]到開(kāi)發(fā)速度、軟件質(zhì)量、結(jié)構(gòu)嚴(yán)謹(jǐn)、程序鞏固等方面,那么C語(yǔ)言是一個(gè)很好的選擇。下面結(jié)合8051介紹單片機(jī)C語(yǔ)言的優(yōu)越性:1〕不懂得單片機(jī)的指令集,也能夠編寫(xiě)完美的單片機(jī)程序;2〕無(wú)須懂得單片機(jī)的具體硬件,也能夠編出符合硬件實(shí)際的專(zhuān)業(yè)水平的程序;3〕不同函數(shù)的數(shù)據(jù)實(shí)行覆蓋,有效利用片上有限的RAM空間;4〕程序具有鞏固性:數(shù)據(jù)被破壞是導(dǎo)致程序運(yùn)行異常的重要因素。C語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行了許多專(zhuān)業(yè)性的處理,防止了運(yùn)行中間非異步的破壞;5〕C語(yǔ)言提供復(fù)雜的數(shù)據(jù)類(lèi)型〔數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉、指針等〕,極大地增強(qiáng)了程序處理能力和靈活性;6〕提供auto、static、const等存儲(chǔ)類(lèi)型和專(zhuān)門(mén)針對(duì)8051單片機(jī)的data、idata、pdata、xdata、code等存儲(chǔ)類(lèi)型,自動(dòng)為變量合理地分配地址;7〕提供small、compact、large等編譯模式,以適應(yīng)片上存儲(chǔ)器的大??;8〕中斷效勞程序的現(xiàn)場(chǎng)保護(hù)和恢復(fù),中斷向量表的填寫(xiě),是直接與單片機(jī)相關(guān)的,都由C編譯器代辦;9〕提供常用的標(biāo)準(zhǔn)函數(shù)庫(kù),以供用戶(hù)直接使用;10〕頭文件中定義宏、說(shuō)明復(fù)雜數(shù)據(jù)類(lèi)型和函數(shù)原型,有利于程序的移植和支持單片機(jī)的系列化產(chǎn)品的開(kāi)發(fā);11〕有嚴(yán)格的句法檢查,錯(cuò)誤很少,可容易地在高級(jí)語(yǔ)言的水平上迅速地被排掉;12〕可方便地接受多種實(shí)用程序的效勞:如片上資源的初始化有專(zhuān)門(mén)的實(shí)用程序自動(dòng)生成;再如,有實(shí)時(shí)多任務(wù)操作系統(tǒng)可調(diào)度多道任務(wù),簡(jiǎn)化用戶(hù)編程,提高運(yùn)行的平安性等等。本電路編程使用C語(yǔ)言,用KeiluVision3軟件編程。在軟件系統(tǒng)的設(shè)計(jì)中,考慮到程序的可讀性,系統(tǒng)的可擴(kuò)展性,以及升級(jí)的需要,程序設(shè)計(jì)過(guò)程采用模塊化的設(shè)計(jì)方法,每個(gè)模塊實(shí)現(xiàn)一定的功能,模塊與模塊間功能相對(duì)獨(dú)立,這樣就使得程序結(jié)構(gòu)清晰。另外,模塊的功能相對(duì)獨(dú)立,同一模塊可以應(yīng)用在不同的地方,這增加了代碼的使用效率。本系統(tǒng)軟件設(shè)計(jì)可以分成幾個(gè)模塊來(lái)設(shè)計(jì),這幾個(gè)模塊分別是:主程序模塊,數(shù)碼管顯示模塊,DS18B20操作模塊,按鍵模塊等,3.2主程序設(shè)計(jì)系統(tǒng)的主程序設(shè)計(jì)主要完成系統(tǒng)初始化、中斷優(yōu)先級(jí)設(shè)定以及判斷調(diào)用各模塊程序,即主要實(shí)現(xiàn)各模塊程序的鏈接。系統(tǒng)上電復(fù)位初始化后,首先啟動(dòng)DS18B20,監(jiān)測(cè)周?chē)h(huán)境溫度,主機(jī)控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:初始化、ROM操作指令、存儲(chǔ)器操作指令。通過(guò)鍵盤(pán)設(shè)定報(bào)警的上限值,讀出溫度數(shù)據(jù)后,假設(shè)溫度超過(guò)報(bào)警上限值,那么將低電平信號(hào)送至P1.2口,使三極管導(dǎo)通,蜂鳴器發(fā)出報(bào)警聲,并在LED上顯示系統(tǒng)當(dāng)前檢測(cè)到的環(huán)境溫度,另外可以設(shè)定報(bào)警的上限值。主程序流程圖如圖3所示。主程序如下:voidmain(){TESTLED0=0;Delayms(200);read_temp();TESTLED0=1;initialize();while(1){ display(); if(readbit){read_temp();readbit=0;}// read_temp();if(!flash)work_temp();}}溫度顯示溫度顯示是否超溫溫度報(bào)警及溫度控制系統(tǒng)初始化開(kāi)始傳感器檢測(cè)?故障提示測(cè)量溫度YNN圖3主程序流程圖數(shù)碼管顯示模塊為了使操作人員及時(shí)掌握生產(chǎn)情況,在一般的微型計(jì)算機(jī)控制系統(tǒng)或智能化儀器中,都配有顯示程序。常用的顯示器件有:a、顯示和記錄儀表,b、顯示終端,c、LED或LCD顯示器,d、大屏幕顯示器。在這些顯示方法中,顯示和記錄儀能連續(xù)進(jìn)行顯示和記錄,但它的價(jià)格比擬貴,且為模擬顯示,讀數(shù)不方便,有一定的誤差,所以它只適用于企業(yè)的技術(shù)改造,在新設(shè)計(jì)的單片微型計(jì)算機(jī)系統(tǒng)中不采用,顯示終端是目前微型控制系統(tǒng)中常用的顯示設(shè)備,它直觀、靈活,不但可以顯示數(shù)字,而且可以顯示畫(huà)面及報(bào)告,如生產(chǎn)流程圖、報(bào)警畫(huà)面、動(dòng)態(tài)趨勢(shì)圖、條形圖。在單片機(jī)應(yīng)用系統(tǒng)中,常用的顯示器件有LED〔發(fā)光二極管顯示器〕〕和LCD,〔液晶顯示器〕。這兩種器件都具有本錢(qián)低廉、配置靈活、與單片機(jī)接口方便的特點(diǎn)。在本系統(tǒng)的設(shè)計(jì)中作為人機(jī)對(duì)話的一個(gè)重要局部就是顯示器,硬件電路中使用四位共陽(yáng)極數(shù)碼管作為系統(tǒng)的顯示器,在軟件中是顯示存放器。數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要看到的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類(lèi)。靜態(tài)顯示驅(qū)動(dòng):靜態(tài)驅(qū)動(dòng)也稱(chēng)直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制翻開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在動(dòng)態(tài)顯示方式中,系統(tǒng)定期的掃描每個(gè)數(shù)碼管,借助于人的視覺(jué)殘留效應(yīng),使的數(shù)字得以正確顯示,顯示電路采用數(shù)碼管動(dòng)態(tài)掃描電路,占用單片機(jī)資源少,顯示電路本錢(qián)比擬低,與靜態(tài)掃描電路相比擬,電路簡(jiǎn)單,本錢(qián)低,測(cè)溫電路采用專(zhuān)門(mén)的溫度傳感器DS18B20,硬件電路相對(duì)簡(jiǎn)單,只需要一根線就可以讀取溫度,它在本程序中對(duì)應(yīng)的函數(shù)有display()。display(){if((key_sign==1)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[0]];LED0=0;Delayms(2);LED0=1; //左第一位 溫度最高位局部if((key_sign==2)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[1]];LED1=0;Delayms(2);LED1=1; //左第二位 溫度十位局部 if((key_sign==3)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[2]]&0xf7;LED2=0;Delayms(2);LED2=1; //左第三位 溫度個(gè)位局部 if((key_sign==4)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[3]];LED3=0;Delayms(2);LED3=1; //左第四位溫度小數(shù)局部在控制系統(tǒng)中,有些參數(shù)的計(jì)算是非常復(fù)雜的,用公式計(jì)算不僅程序長(zhǎng),難于計(jì)算,而且需要消耗大量時(shí)間。還有一些非線形參數(shù),它們不是用一般算術(shù)運(yùn)算就可以計(jì)算出來(lái)的,所有這些運(yùn)算用編程的方法比擬復(fù)雜,有些參數(shù)甚至無(wú)法建立相應(yīng)的數(shù)學(xué)模型,為了解決這些問(wèn)題,可以采用查表法。溫度的小數(shù)局部采用的查表法。所謂的查表法,就是把事先計(jì)算或測(cè)得的數(shù)據(jù)按一定順序編制成表格,查表程序的任務(wù)就是根據(jù)被測(cè)參數(shù)的值或者中間結(jié)果,查出最終所需要的結(jié)果。查表法只需把轉(zhuǎn)換結(jié)果按序編成表,連續(xù)存放在ROM中,用查表指令即可實(shí)現(xiàn)轉(zhuǎn)換,查表法編程方便且程序量小,執(zhí)行速度快,修正起來(lái)方便。溫度檢測(cè)子程序溫度檢測(cè)子程序流程圖如圖4所示。本系統(tǒng)的溫度采集選用DS18B20溫度傳感器。在程序設(shè)計(jì)中S18B20溫度傳感器一般有四個(gè)步驟:初始化命令;傳送ROM命令;傳送RAM命令;數(shù)據(jù)交換命令。由于DS18B20有著嚴(yán)格的時(shí)序控制,因此在進(jìn)行溫度采集時(shí)必須關(guān)閉所有的中斷,保證DS18B20平安的工作。初始化的時(shí)序是單片機(jī)先發(fā)出480~960us的復(fù)位脈沖,在15~60us后,DS18B20發(fā)出60~240us的應(yīng)答脈沖,完成對(duì)DS18B20的初始化。DS18B20的傳送命令有:讀ROM命令〔33H〕,匹配ROM命令〔55H〕,跳過(guò)ROM命令〔CCH〕,搜索ROM命令〔F0H〕,報(bào)警搜索命令〔ECH〕。傳送RAM命令有:溫度轉(zhuǎn)換命令〔44H〕,讀存儲(chǔ)器命令〔EBH〕,寫(xiě)存儲(chǔ)器命令〔4EH〕,復(fù)制存儲(chǔ)器命令〔48H〕,讀EEPROM命令〔B8H〕,讀供電方式命令〔B4H〕。數(shù)據(jù)交換命令是用具體的讀/寫(xiě)時(shí)序脈沖讀出或?qū)懭霐?shù)據(jù)。對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。對(duì)于DS18B20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。兩種寫(xiě)時(shí)隙均起始于主機(jī)拉低總線,DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0〞電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。寫(xiě)時(shí)隙起始后15-60μs期間,單總線器件采樣總線電平狀態(tài)。如果在此期間采樣為高電平,那么邏輯1被寫(xiě)入該器件,如果為0,那么寫(xiě)入邏輯0。當(dāng)DS18B20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.0625℃/LSB低字節(jié)格式:232221202-12-22-32-4高字節(jié)格式:SSSSS262524溫度存儲(chǔ)器高位的前5位為符號(hào)位,當(dāng)溫度大于零時(shí),這5位為0,當(dāng)溫度小于零時(shí),這5位為1,高位剩下的三位和低位的前四位是溫度的整數(shù)位,低位的后四位是小數(shù)位,當(dāng)溫度大于零時(shí)它們以原碼的形式存儲(chǔ),而當(dāng)溫度小于零時(shí)都以二進(jìn)制補(bǔ)碼的形式存儲(chǔ),當(dāng)轉(zhuǎn)換位數(shù)為12位時(shí),溫度的精度為0.0625在使用DS18B20時(shí)應(yīng)注意:主機(jī)控制DS18B20完成溫度轉(zhuǎn)換時(shí),在每一次讀寫(xiě)之前,都要對(duì)DS18B20進(jìn)行復(fù)位,而且該復(fù)位要求主CPU要將數(shù)據(jù)線下拉500μs,然后釋放。DS18B20收到信號(hào)后將等待16~60μs左右,之后再發(fā)出60~240μs的低脈沖。主CPU收到此信號(hào)即表示復(fù)位成功。實(shí)際上,較小的硬件開(kāi)銷(xiāo)需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償。由于DS18B20與微處理器間采用串行數(shù)據(jù)傳送方式,因此,在對(duì)DS18B20進(jìn)行讀寫(xiě)編程時(shí),必須嚴(yán)格地保證讀寫(xiě)時(shí)序,否那么,將無(wú)法正確讀取測(cè)溫結(jié)果。本設(shè)計(jì)中與DS18B20通訊步驟如下:1、初始化;2、ROM命令:跳越ROM命令[CCh]〔由于在本設(shè)計(jì)中只有DS18B20一個(gè)單總線協(xié)議芯片〕;3、功能命令:溫度轉(zhuǎn)換命令[44h];4、延時(shí);5、初始化;6、ROM命令:跳越ROM命令[CCh];7、功能命令:讀暫存器命令[BEh]。溫度檢測(cè)的主程序如下:read_temp(){ow_reset();//總線復(fù)位write_byte(0xcc);//發(fā)命令SkipROMwrite_byte(0x44);//發(fā)讀命令 ow_reset(); //總線復(fù)位write_byte(0xcc);//發(fā)命令SkipROMwrite_byte(0xbe);//Read發(fā)轉(zhuǎn)換命令 tplsb=read_byte();//溫度低8位tpmsb=read_byte();//溫度高8位}3.5按鍵模塊按鍵電路的作用是設(shè)置時(shí)間及溫度,一般按鍵電路有按鍵查詢(xún)式,CPU不斷的檢測(cè)是否有按鍵按下,這樣將會(huì)消耗大量的CPU時(shí)間,且反響速度慢,實(shí)時(shí)性不強(qiáng);還有一種是中斷式按鍵,只有當(dāng)有按鍵按下時(shí),單片機(jī)產(chǎn)生中斷,開(kāi)始處理按鍵的輸入功能,沒(méi)有鍵按下時(shí)單片機(jī)處理其他,不需要不停地查詢(xún)按鍵是否按下。這樣采用中斷使按鍵反響速度快,同時(shí)減少單片機(jī)處理時(shí)間,本設(shè)計(jì)采用中斷擴(kuò)展式電路。鍵盤(pán)掃描流程圖如圖5。在51系統(tǒng)中,中斷的允許或禁止是由片內(nèi)的中斷允許存放器IE控制的,IE存放器的地址是A8H,位地址為AFH-A8H。存放器的內(nèi)容及位地址如下:位地址AFAEADACABAA99A8位符號(hào)EA//ESET1EX1ET0EX0EA—中斷允許總控制位。EA=0時(shí),表示CPU禁止所有中斷,即所有的中斷請(qǐng)求被屏蔽;EA=1時(shí),表示CPU開(kāi)放中斷,但每個(gè)中斷源的中斷請(qǐng)求時(shí)允許還是禁止,要看各自的允許控制。EX0〔EX1〕--外部中斷允許控制位。EX0〔EX1〕=0,禁止外中斷;EX0〔EX1〕=1,允許外中斷。ET0〔ET1〕--定時(shí)/計(jì)數(shù)器的中斷允許控制位。ET0〔ET1〕=0,禁止定時(shí)/計(jì)數(shù)器中斷;ET0〔ET1〕=1,允許定時(shí)/計(jì)數(shù)器中斷。ES--串行中斷允許控制位。ES=0,禁止串行中斷,ES=1,允許串行中斷。在本系統(tǒng)的設(shè)計(jì)中采用的是中斷0,定時(shí)時(shí)間的計(jì)算方式為〔M-X〕T=定時(shí)值,即〔216-X〕*1=50所以X=3CB0定時(shí)/計(jì)數(shù)器T0由TH0和TH0構(gòu)成,T1由TH1和TL1構(gòu)成。TMOD用于控制和確定各定時(shí)/計(jì)數(shù)器的功能和工作模式。TCON用于控制定時(shí)/計(jì)數(shù)器T0、T1啟動(dòng)和停止計(jì)數(shù),同時(shí)包含定時(shí)/計(jì)數(shù)器的狀態(tài)。它們屬于特殊功能存放器,這些存放器的內(nèi)容靠軟件設(shè)置。系統(tǒng)復(fù)位時(shí),存放器的所有位都被清零。根據(jù)計(jì)算結(jié)果,在本系統(tǒng)中,TH0=0X3C,Tl0=0XB0根據(jù)硬件的設(shè)計(jì)方法,編寫(xiě)程序根本結(jié)構(gòu)如下:/*****************************功能:按鍵輸入說(shuō)明:用到中斷0,P2.0~P2.3/****************************/voidinkey_int0()interrupt0 {ucharinput;P2=P2|0x0finput=P2; switch(input&0x0f {case0x0e: //1110最右邊//按鍵1功能 break; case0x0d://1101//按鍵2功能case0xb://1011//按鍵3功能 case0x07://0111//按鍵4功能 break; default:break; } }NNNN鍵盤(pán)掃描有鍵閉合?延時(shí)去鍵抖動(dòng)掃描鍵盤(pán)Y找到閉合鍵?計(jì)算鍵值執(zhí)行相應(yīng)功能返回YNN開(kāi)始關(guān)中斷初始化DS18B20設(shè)置溫度轉(zhuǎn)換命令調(diào)用寫(xiě)命令子程序設(shè)置跳過(guò)ROM命令調(diào)用寫(xiě)命令子程序調(diào)延時(shí)子程序設(shè)置跳過(guò)ROM命令調(diào)用寫(xiě)命令子程序初始化DS18B20返回讀DS18B20得到溫度數(shù)據(jù)設(shè)置讀溫度命令調(diào)用寫(xiě)命令子程序圖4溫度檢測(cè)流程圖圖5鍵盤(pán)掃描流程圖4系統(tǒng)調(diào)試4.1仿真器和調(diào)試軟件的使用本系統(tǒng)的調(diào)試是利用的TKS系列的仿真器,調(diào)試軟件是Keil編譯軟件。TKS系列仿真器可以實(shí)時(shí)在線仿真PHILIPS半導(dǎo)體公司的80C51系列單片機(jī)的同時(shí),還能夠?qū)崟r(shí)在線仿真ATMEL、HY、Winbond等公司兼容MCS-51內(nèi)核的標(biāo)準(zhǔn)80C51單片機(jī),徹底解決80C51開(kāi)發(fā)中的仿真工具的瓶頸問(wèn)題。TKS仿真器可以選用外部晶振作為系統(tǒng)時(shí)鐘,同時(shí)還提供6MHz、12MHz、24MHz三個(gè)內(nèi)部晶振。利用微機(jī)把源程序匯編為目標(biāo)程序并通過(guò)串行口把目標(biāo)程序送入仿真機(jī)。Keil是基于80C51內(nèi)核的微處理器軟件開(kāi)發(fā)平臺(tái),內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開(kāi)發(fā)工具,可以完成工程建立和管理,編譯,連接,目標(biāo)代碼的生成,軟件仿真,硬件仿真等完整的開(kāi)發(fā)流程。尤其C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面到達(dá)了較高的水平。整個(gè)調(diào)式軟件的使用流程為:建立工程→為工程選擇目標(biāo)器件→設(shè)置工程的配置參數(shù)→翻開(kāi)/建立程序文件→編譯和連接工程→使用TKS仿真器對(duì)應(yīng)用程序進(jìn)行仿真→將生成的Hex文件燒寫(xiě)到ROM中運(yùn)行測(cè)試。4.2模塊程序的調(diào)式在系統(tǒng)聯(lián)調(diào)前必須保證各個(gè)模塊調(diào)試正確,在每個(gè)模塊單獨(dú)通過(guò)調(diào)試后才能把它們串聯(lián)起來(lái),進(jìn)行整個(gè)系統(tǒng)的聯(lián)調(diào)。顯示模塊的調(diào)試:顯示模塊主要是顯示溫度的數(shù)據(jù),用三極管驅(qū)動(dòng)數(shù)碼管。先調(diào)試數(shù)碼管能被正確點(diǎn)亮,接著對(duì)數(shù)碼管的每個(gè)段逐個(gè)單獨(dú)點(diǎn)亮,列出每個(gè)數(shù)字的正確段碼。最后能做到正確顯示0~9每個(gè)數(shù)字,至此本模塊調(diào)試才算通過(guò)。采集模塊的調(diào)試:溫度采集是選用的DS18B20溫度傳感器,該傳感器有著嚴(yán)格的時(shí)序要求,在調(diào)試時(shí)必須嚴(yán)格按照它的時(shí)序要求。先調(diào)試初始化程序,在保證初始化程序正確后,才能進(jìn)行寫(xiě)操作和讀操作的調(diào)試。由于在DS18B20工作時(shí)不能有中斷,因此,在調(diào)試時(shí)不能使用斷點(diǎn)操作,調(diào)試結(jié)果主要看溫度存放器里的溫度數(shù)據(jù)是否正確。在調(diào)試時(shí)必須注意調(diào)用該模塊時(shí)C語(yǔ)言與匯編語(yǔ)言之間的參數(shù)傳遞情況。在Keil編譯器中參數(shù)的出口和入口都是R6,R7,高字節(jié)是存在R6,底字節(jié)是存在R7。定時(shí)器/計(jì)數(shù)器中斷效勞模塊的調(diào)試:定時(shí)/計(jì)數(shù)器中斷效勞模塊完成的功能是進(jìn)行系統(tǒng)時(shí)鐘的計(jì)算,系統(tǒng)控制周期的計(jì)算,對(duì)系統(tǒng)控制量進(jìn)行輸出。調(diào)試此子程序時(shí)在每個(gè)功能程序前設(shè)置斷點(diǎn),在程序運(yùn)行到每處時(shí),都必須查看每個(gè)相關(guān)參數(shù)是否正確,完成的功能是否與程序設(shè)計(jì)的目的相一致,延時(shí)時(shí)間要做到精確。4.3系統(tǒng)的聯(lián)調(diào)系統(tǒng)聯(lián)調(diào)是把每個(gè)模塊按照系統(tǒng)功能組合在一起,主要是完成各個(gè)模塊間的連接。在整個(gè)系統(tǒng)的開(kāi)始階段,完成一些存放器和重要參數(shù)的設(shè)置,然后翻開(kāi)通信端口,整個(gè)系統(tǒng)的啟動(dòng)命令通過(guò)鍵盤(pán)或上位機(jī)送出,啟動(dòng)之后進(jìn)入系統(tǒng)主要功能工作階段。在系統(tǒng)聯(lián)調(diào)中出現(xiàn)的一個(gè)重要問(wèn)題是DS18B20的使用,由于DS18B20在工作時(shí)必需關(guān)閉所有中斷,但系統(tǒng)的時(shí)鐘是在T0中斷中計(jì)算的,因此每進(jìn)行一次溫度轉(zhuǎn)換就必需對(duì)時(shí)間做出修正,以保證系統(tǒng)時(shí)鐘的正確。在本系統(tǒng)中,許多模塊的工作都是通過(guò)判斷一些標(biāo)志位來(lái)決定本模塊是否可以運(yùn)行的,參加這樣的方法有利于協(xié)調(diào)各個(gè)模塊的工作,使系統(tǒng)穩(wěn)定的工作。結(jié)論本課題是基于單片機(jī)的超溫報(bào)警顯示電路的系統(tǒng)設(shè)計(jì),以溫度檢測(cè)智能化和實(shí)時(shí)化為宗旨,集報(bào)警與顯示于一體,完成了一個(gè)根本的測(cè)控系統(tǒng)的設(shè)計(jì)本課題以AT89S51單片機(jī)系統(tǒng)為核心,由單片機(jī)、溫度傳感器、蜂鳴器組成。該溫度測(cè)控系統(tǒng)利用了DS18B2O“一線總線〞式數(shù)字溫度傳感器,能夠?qū)Νh(huán)境溫度進(jìn)行實(shí)時(shí)巡檢。各檢測(cè)單元能夠根據(jù)主控機(jī)的指令對(duì)溫度進(jìn)行定時(shí)采集,測(cè)量結(jié)果在本地顯示、處理。主控機(jī)負(fù)責(zé)控制指令的發(fā)送,控制溫度傳感器進(jìn)行溫度采集,收集測(cè)量數(shù)據(jù),并對(duì)測(cè)量結(jié)果進(jìn)行整理、顯示。主控機(jī)與各從機(jī)之間能夠相互聯(lián)系、相互協(xié)調(diào),從而到達(dá)系統(tǒng)整體統(tǒng)一、和諧的效果。系統(tǒng)采用C語(yǔ)言編程,軟件調(diào)試和維護(hù)方便,生成代碼質(zhì)量高,程序執(zhí)行效率高,當(dāng)然,由于時(shí)間比擬短暫,條件不夠成熟,本課題完成的還不夠完善,其中還有一些不盡如人意的地方,例如系統(tǒng)的加熱和降溫,控制算法的參加等,因此本系統(tǒng)還具有很大的完善空間。致謝本論文是在張?jiān)录t老師的精心指導(dǎo)下完成的,從論文選題到課題難點(diǎn)的解決,張老師都給予了我悉心地指導(dǎo)。張老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、很深的專(zhuān)業(yè)造詣和頑強(qiáng)的敬業(yè)精神都使我受益匪淺,終身難忘。在課題完成過(guò)程中張老師給我提供了很多思路與經(jīng)驗(yàn),對(duì)我深入理解課題的有關(guān)知識(shí)與方法起到了重要作用,在此,我首先向張老師致以深深的敬意和衷心的感謝!其次,我要感謝我的母?;搓幑W(xué)院,它提供應(yīng)我很好的學(xué)習(xí)氣氛,使我能向更高知識(shí)的殿堂邁進(jìn),學(xué)會(huì)了獨(dú)立思考的精神和一絲不茍的學(xué)習(xí)態(tài)度,更讓我把自己青春與美好回憶留在了這里。最后,借此時(shí)機(jī)向幾年來(lái)所有幫助過(guò)我的老師、朝夕相處的同學(xué)和朋友表示最誠(chéng)摯的謝意!參考文獻(xiàn)1李錫雄,陳婉兒.微型計(jì)算機(jī)控制技術(shù).第1版.北京:科學(xué)出版社,19992潘新民,王燕芳.微型計(jì)算機(jī)控制技術(shù).第1版.北京:電子工業(yè)出版社,20033胡漢才.單片機(jī)原理及接口技術(shù).北京:北京航空航天大學(xué)出版社,19934孫育才.MCS-51系列單片微型計(jì)算機(jī)及其應(yīng)用.第3版.東南大學(xué)出版社,19975黃勝軍等.微機(jī)控制應(yīng)用實(shí)驗(yàn)與實(shí)例6章兼源.微機(jī)控制技術(shù)7王福瑞.單片微機(jī)測(cè)控系統(tǒng)設(shè)計(jì)大全.北京:北京航空航天出版社8丁鎮(zhèn)生.傳感器及傳感技術(shù)應(yīng)用.電子工業(yè)出版社9梅麗鳳等.單片機(jī)原理及接口技術(shù).清華大學(xué)出版社,200610陳明熒.8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材北京:清華大學(xué)出版社,200411賴(lài)麒文.8051單片機(jī)C語(yǔ)言徹底應(yīng)用.科學(xué)出版社,200212王慶利,袁建敏單片機(jī)設(shè)計(jì)案例實(shí)踐教程.北京郵電大學(xué)出版社,2023附錄:軟件代碼#include<REG51F.H>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^0; //溫度傳感器DS18B20讀寫(xiě)sbitLED0=P2^7;//控制顯示數(shù)碼管的位sbitLED1=P2^5;sbitLED2=P2^6;sbitLED3=P2^4;sbitTESTLED0=P1^1;//報(bào)警小燈指示sbitalarm=P1^2;//報(bào)警器控制輸出bitreadbit=0; //溫度讀取標(biāo)志位bitflash=0; //設(shè)置溫度時(shí)數(shù)碼管閃爍標(biāo)志bitled_flash=0; //設(shè)置溫度時(shí)數(shù)碼管閃爍標(biāo)志uchardataled_cont=0;//閃爍時(shí)間定時(shí)計(jì)數(shù)uchardatakey_sign=0;//用于按鍵中判別uchardatacont1s=0;//定時(shí)器溫度讀取計(jì)數(shù)uchardatacudisplay=0;//溫度整數(shù)局部計(jì)算緩存uchardatadotdisplay=0;//溫度小數(shù)局部計(jì)算緩存uchardatasettemp=31; //設(shè)置溫度uchardatatem_dot=0;//設(shè)置溫度的小數(shù)局部uchardatatplsb=0x00;//溫度低8位uchardatatpmsb=0x00;//溫度高8位uchardataH_freq=0X3C; //報(bào)警聲音頻率設(shè)定uchardataL_freq=0XB0; //報(bào)警聲音頻率設(shè)定ucharcodedis_8[]={0x28,0x6f,0x58,0x4a,0x0f,0x8a,0x88,0x6e,0x08,0x0a,0xff,0xdf};//0,1,2,3,4,5,6,7,8,9,熄滅-a,b,c,d,e,f,g,dp,對(duì)應(yīng)由底位到高位//溫度小數(shù)局部用查表法***********//Ucharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};uchardataLEDnumber[4]={7,8,9,10};//存放要顯示的數(shù)據(jù),溫度顯示要送到這里顯示/*****************************功能:延時(shí)程序 /****************************/voidDelayms(intt)//1ms延時(shí)函數(shù){uinti,j; for(i=0;i<t;i++) for(j=0;j<120;j++) ;}/*****************11us延時(shí)函數(shù)*************************/voiddelay(uinti)//delay延時(shí)子程序{while(i--);}voidinitialize(void){IT0=1;EX0=1;//EA=1;//中斷0 IT1=1;EX1=1;//EA=1;//中斷1 SCON=0x00;//串行口初始化 TH0=0X3C;TL0=0XB0;//50ms定時(shí) TH1=0x3c;TL1=0xb0; //報(bào)警定時(shí) TMOD=0x11;ET0=1;TR0=1;//按鍵中設(shè)置運(yùn)行 TMOD=0x01;ET0=1;TR0=0; ET1=1;TR1=0; EA=1;}/****************DS18B20復(fù)位函數(shù)************************/voidow_reset(void){unsignedcharx=1;while(x){DQ=1;//DQ復(fù)位_nop_();//稍做延時(shí) DQ=0;//單片機(jī)將DQ拉低 delay(55);//精確延時(shí)大于480us delay(50);DQ=1;//拉高總線 delay(8); //延時(shí)x=DQ;//稍做延時(shí)后如果x=0那么初始化成功x=1那么初始化失敗 }delay(8); // 延時(shí)}/****************DS18B20寫(xiě)命令函數(shù)************************///向1-WIRE總線上寫(xiě)1個(gè)字節(jié) voidwrite_byte(ucharval){uchari;for(i=8;i>0;i--){DQ=1;_nop_();//從高拉倒低DQ=0;_nop_();_nop_();_nop_();nop_();_nop_();//延時(shí)5usDQ=val&0x01;//最低位移出delay(8);//66us val=val>>1;//右移1位}DQ=1;delay(1); //延時(shí)}///****************DS18B20讀1字節(jié)函數(shù)************************///從總線上取1個(gè)字節(jié) ucharread_byte(void){uchari;ucharvalue=0;for(i=8;i>0;i--){DQ=1;_nop_();value>>=1;DQ=0;_nop_();_nop_();_nop_();_nop_();//4usDQ=1;_nop_();_nop_();_nop_();_nop_();//4usif(DQ)value|=0x80;delay(8);//66us }DQ=1;return(value);}///****************讀出溫度函數(shù)************************/read_temp(){ow_reset();//總線復(fù)位write_byte(0xcc);//發(fā)命令SkipROMwrite_byte(0x44);//發(fā)讀命令 ow_reset(); //總線復(fù)位write_byte(0xcc);//發(fā)命令SkipROMwrite_byte(0xbe);//Read發(fā)轉(zhuǎn)換命令 tplsb=read_byte();//溫度低8位tpmsb=read_byte();//溫度高8位}/****************溫度數(shù)據(jù)處理函數(shù)************************///二進(jìn)制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個(gè) //字節(jié)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制后,就是溫度值的百、十、個(gè)位值,而剩//下的低字節(jié)的低半字節(jié)轉(zhuǎn)化成十進(jìn)制后,就是溫度值的小數(shù)局部/********************************************************/voidwork_temp(){ucharn=0;if(tpmsb>127)//正、負(fù)數(shù)判斷{tpmsb=(256-tpmsb);tplsb=(256-tplsb);n=1;//負(fù)溫度求補(bǔ)碼} dotdisplay=tplsb&0x0f;//取低字節(jié)的低4位--小數(shù)局部 LEDnumber[3]=ditab[dotdisplay]; cudisplay=((tplsb>>4)|(tpmsb<<4));//取整數(shù)局部 if((cudisplay<settemp)||((cudisplay==settemp)&&(LEDnumber[3]<tem_dot))) TESTLED0=0;//如果當(dāng)前溫度比設(shè)置的低加熱 else TESTLED0=1;//如果當(dāng)前溫度比設(shè)置的低加熱 if(cudisplay>=100){LEDnumber[0]=cudisplay/100;LEDnumber[1]=cudisplay/10-10;} else{LEDnumber[0]=10;LEDnumber[1]=cudisplay/10;}//如果不大于100最高位不顯示 LEDnumber[2]=cudisplay%10; if(n)LEDnumber[0]=11;//如果為負(fù)溫度最高位顯示-}/*******************************功能:數(shù)碼管顯示 說(shuō)明:/******************************/display(){if((key_sign==1)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[0]];LED0=0;Delayms(2);LED0=1; //左第一位 溫度最高位局部if((key_sign==2)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[1]];LED1=0;Delayms(2);LED1=1; //左第二位 溫度十位局部 if((key_sign==3)&&led_flash)P0=0xff;elseP0=dis_8[LEDnumber[2]]&0xf7;LED2=0;Delayms(2);LED2=1; //左第三位 溫度個(gè)位局部 if((key_sign==4)&&led_flash)P0=0xff; elseP0=dis_8[LEDnumber[3]];LED3=0;Delayms(2);LED3=1; //左第四位溫度小數(shù)局部}/***********
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版頂名物業(yè)買(mǎi)賣(mài)服務(wù)合同2篇
- 2025礦權(quán)交易居間服務(wù)及資源儲(chǔ)量報(bào)告合同3篇
- 2025版墳?zāi)惯w移與墓園文化展示館建設(shè)合同
- 二零二五年度個(gè)體戶(hù)教育培訓(xùn)機(jī)構(gòu)加盟合作協(xié)議3篇
- 猜謎語(yǔ)課程設(shè)計(jì)
- 二零二五年合伙人股權(quán)并購(gòu)與整合合作協(xié)議3篇
- 簡(jiǎn)易的Java課程設(shè)計(jì)
- 2025版酒店會(huì)議場(chǎng)地租賃合同涵蓋視聽(tīng)設(shè)備租賃服務(wù)3篇
- 臀肌訓(xùn)練課程設(shè)計(jì)
- 二零二五年度代購(gòu)藝術(shù)品服務(wù)合同范本2篇
- 交易所商業(yè)計(jì)劃書(shū)
- 2024年華電江蘇能源有限公司招聘筆試參考題庫(kù)含答案解析
- 遠(yuǎn)程銀行行業(yè)背景分析
- 如何提高孩子的注意力和專(zhuān)注力
- 2022-2023學(xué)年海南省海口市重點(diǎn)中學(xué)八年級(jí)(上)期末物理試卷(含解析)
- 膽石癥教案完
- 護(hù)士個(gè)人優(yōu)點(diǎn)和缺點(diǎn)(六篇)
- 教師管理培訓(xùn)系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)
- 2021年新高考語(yǔ)文Ⅰ卷真題現(xiàn)代文閱讀《石門(mén)陣》解析
- 老化測(cè)試記錄表
- 金屬齒形墊片安全操作規(guī)定
評(píng)論
0/150
提交評(píng)論