家用自供暖系統(tǒng)溫控器的設(shè)計_第1頁
家用自供暖系統(tǒng)溫控器的設(shè)計_第2頁
家用自供暖系統(tǒng)溫控器的設(shè)計_第3頁
家用自供暖系統(tǒng)溫控器的設(shè)計_第4頁
家用自供暖系統(tǒng)溫控器的設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計(論文)題目:家用自供暖系統(tǒng)溫控器的設(shè)計論文完成時間:2008年05月26日摘要“節(jié)能”這一主題在如今的科技產(chǎn)品中占據(jù)著越來越突出的地位,然而隨著人們對生活質(zhì)量的要求的不斷提高,溫度設(shè)備的應(yīng)用逐漸廣泛,但是如今的大多溫度設(shè)備都具有耗能量大的特點,為了降低能耗,許多大型的公司都開始采用溫控器來控制各種溫度設(shè)備,它相對耗能低,但是就目前的發(fā)展?fàn)顩r來說,其研發(fā)技術(shù)還沒有完全成熟,尤其是在國內(nèi),許多廠家生產(chǎn)的溫控器性能都存在很大的缺陷,控制特性較差,對經(jīng)濟(jì)性、舒適性以及節(jié)能性考慮不周??紤]到國內(nèi)外普遍對節(jié)能這一點的重視程度,我們應(yīng)該在產(chǎn)品研發(fā)過程中始終把“節(jié)能”這一點放在首位,創(chuàng)新出“以節(jié)能為本質(zhì),兼顧舒適性”的中國特色產(chǎn)品。本文以單片機(jī)AT89C51為核心,從DS18B20溫度檢測的數(shù)據(jù)采集、設(shè)定值調(diào)整、LED數(shù)碼管顯示電路、報警及輸出控制電加熱器等幾個方面出發(fā),詳細(xì)研究和設(shè)計了基于單片機(jī)的溫度控制器的各個部分內(nèi)容,設(shè)計了單片機(jī)及其外圍電路,并結(jié)合一套經(jīng)典的程序算法,給出了一套合理的基于單片機(jī)的溫度控制器軟硬件解決方案。關(guān)鍵字溫度檢測DS18B20單片機(jī)溫度控制ABSTRACT目錄摘要 1緒論 2系統(tǒng)的總體設(shè)計 3系統(tǒng)的主要硬件介紹 3.1單片機(jī)介紹 3.1.1單片機(jī)概述 3.1.2單片機(jī)編程語言介紹 3.1.3系統(tǒng)選擇 3.1.4AT89C51引腳功能介紹 3.2溫度傳感器DS18B20 3.2.1DS18B20簡介 3.2.2DS18B20的硬件連接 4熱水控制器的系統(tǒng)設(shè)計 4.1硬件設(shè)計 4.1.1溫度檢測部分 4.1.2LED數(shù)碼管顯示電路 4.1.3報警及控制輸出部分 4.1.4單片機(jī)及按鍵電路設(shè)計 4.2軟件系統(tǒng)設(shè)計 4.2.1系統(tǒng)程序流程圖 4.2.2單片機(jī)軟件開發(fā)語言 4.2.3DS18B20驅(qū)動程序 4.2.4系統(tǒng)的程序源代碼 參考文獻(xiàn) 附:系統(tǒng)整體硬件電路圖 1緒論據(jù)統(tǒng)計,我國建筑能耗占全國總能耗30%左右,隨著人民生活水平的提高,建筑能耗將呈現(xiàn)持續(xù)迅速增長的趨勢。為了降低建筑能耗,許多大型的酒店、寫字樓以及高檔住宅小區(qū)都已采用溫控器控制風(fēng)機(jī)盤管以營造舒適的辦公居住環(huán)境,并實現(xiàn)節(jié)能的目的。20世紀(jì)90年代國內(nèi)出現(xiàn)大批溫控器生產(chǎn)廠家,溫控器開始廣泛地應(yīng)用于暖通空調(diào)工程中。通過對國內(nèi)外眾多品牌的溫控器性能的測試和調(diào)研發(fā)現(xiàn),目前很多國產(chǎn)的溫控器性能不盡人意,控制特性較差,對經(jīng)濟(jì)性、舒適性及節(jié)能性考慮不周。產(chǎn)生這些問題的主要原因是有關(guān)設(shè)計人員對溫控器設(shè)計過程中涉及的一些重要概念和控制原理理解不夠,現(xiàn)在先介紹國外溫控器設(shè)計過程中涉及的一些重要概念、控制原理和關(guān)鍵問題。1重要概念溫控器是一種能夠自動感應(yīng)室內(nèi)溫度并將其控制在設(shè)定范圍的裝置。當(dāng)溫度傳感器感應(yīng)到室內(nèi)溫度偏離設(shè)定值后,溫控器就會打開或關(guān)閉相應(yīng)的制冷或供暖設(shè)備,使室內(nèi)溫度基本穩(wěn)定在設(shè)定值附近。通常溫控器內(nèi)必須具備以下裝置:溫度傳感器,用來感應(yīng)室內(nèi)溫度的變化;溫度設(shè)定裝置,用來輸入溫度設(shè)定值;執(zhí)行器,通常是一個開關(guān),用來打開或關(guān)閉制冷、供暖設(shè)備。在夏季工況下,溫控器控制室內(nèi)溫度的過程見圖1。①設(shè)備啟動溫度設(shè)備啟動溫度(Cut-inPoint)指溫控器啟動制冷、供暖設(shè)備時的室內(nèi)溫度。②設(shè)備停止溫度設(shè)備停止溫度(Cut-outPoint)指溫控器關(guān)閉制冷、供暖設(shè)備時的室內(nèi)溫度。③周期率周期率(CycleRate)指制冷、供暖設(shè)備在某一時間段中啟停的頻率,周期率通常用每1h內(nèi)制冷、供暖設(shè)備啟動次數(shù)表示。④溫度容差溫度容差(TemperatureDifferential)是設(shè)備啟動溫度與設(shè)備停止溫度之差的絕對值。⑤過沖溫差以夏季工況為例,室內(nèi)溫度升至設(shè)備啟動溫度后,雖然制冷設(shè)備已經(jīng)啟動,但由于慣性作用室內(nèi)溫度還會上升一定范圍,最高室內(nèi)溫度與設(shè)備啟動溫度之差稱為過沖溫差(SystemOvershoot)。⑥滯后溫差以夏季工況為例,室內(nèi)溫度下降到設(shè)備停止溫度后,雖然制冷設(shè)備已經(jīng)停止運行,但由于慣性作用室內(nèi)溫度還會下降一定范圍,最低室內(nèi)溫度與設(shè)備停止溫度之差稱為滯后溫差(SystemLag)。⑦溫度波動溫度波動(TemperatureSwing)是由溫控器控制的最高室內(nèi)溫度與最低室內(nèi)溫度之差。溫度波動即溫度容差、滯后溫差與過沖溫差三者之和。⑧控制點偏移控制點偏移(Droop)指室內(nèi)負(fù)荷變化時,溫度控制點(室內(nèi)平均溫度)偏離設(shè)定值的情況。將20%負(fù)荷下的溫度控制點與80%負(fù)荷下的溫度控制點之間的溫度差定義為控制點偏移。2溫控器的輔助控制功能通斷控制是溫控器的最基本的控制形式。溫控器的通斷控制由設(shè)備啟動溫度和設(shè)備停止溫度決定,只有全開、全關(guān)兩種狀態(tài)。全開狀態(tài)是室內(nèi)溫度到達(dá)設(shè)備啟動溫度,全關(guān)狀態(tài)是室內(nèi)溫度達(dá)到設(shè)備停止溫度。除通斷控制外,還有一些輔助控制功能以提高溫控器的控制性能,包括周期率控制(CycleRateControl)、補償控制(AnticipatorControl)和容差控制(DifferentialControl)。①周期率控制周期率與舒適性、室內(nèi)溫度波動及設(shè)備使用壽命有著密切關(guān)系,因此許多溫控器都采用了周期率控制。②補償控制由于空氣具有較大的熱惰性,而且溫控器的傳感器通常封裝在溫控器的外殼內(nèi),因此傳感器感應(yīng)的室內(nèi)溫度會滯后于實際的室內(nèi)溫度,會產(chǎn)生滯后溫差和過沖溫差。補償控制使溫控器在室內(nèi)溫度還沒有達(dá)到設(shè)備啟動溫度(或設(shè)備停止溫度)之前就開啟(或關(guān)閉)制冷、供暖設(shè)備,以降低室內(nèi)溫度波動。③容差控制有些可編程式的溫控器可直接調(diào)整溫度容差,通常溫控器的溫度容差為2.2℃,用戶可以調(diào)整的步長一般為0.33設(shè)計中應(yīng)注意的問題①溫度波動的確定。由于不同用戶會有不同的生活習(xí)慣及各自的熱舒適要求,而且每個用戶所選用制冷、供暖設(shè)備的性能和使用要求也不盡相同,因此很難確定一個通用的溫度波動同時滿足舒適性、設(shè)備壽命和節(jié)能的要求。性能優(yōu)越的溫控器能夠?qū)ξ⑿〉牟蛔阋允褂脩舾械讲贿m的溫度變化(±0.5℃②過沖溫差和滯后溫差產(chǎn)生的原因以及消除方法。過沖溫差由室內(nèi)空氣和其他物體的熱惰性形成,滯后溫差反映一個房間在制冷設(shè)備關(guān)閉后,剩余冷量造成室內(nèi)溫度的溫降。設(shè)計中通常采用熱補償?shù)姆椒▉硐^沖溫差和滯后溫差,當(dāng)需要制冷設(shè)備啟動時,熱補償起作用使溫控器在還沒有達(dá)到設(shè)備啟動溫度時提前啟動制冷設(shè)備,從而減小或消除過沖溫差。熱補償也能夠在室內(nèi)溫度到達(dá)設(shè)備停止溫度以前就停止制冷設(shè)備的運行。因此,熱補償能夠減小或消除滯后溫差。對于供暖的情況也是同樣的道理。上面關(guān)于過沖溫差和滯后溫差的定義是在設(shè)定溫控器的傳感器沒有滯后的理想情況下做出的,實際上,由于溫控器的機(jī)械設(shè)計、軟件設(shè)計以及安裝位置的影響,溫控器的傳感器感應(yīng)到室內(nèi)溫度變化滯后于實際室內(nèi)溫度的變化,這也會造成過沖溫差和滯后溫差的產(chǎn)生。③溫度波動、設(shè)定溫度、設(shè)備啟動次數(shù)及舒適性之間的關(guān)系。在夏季,如果空調(diào)房間室內(nèi)溫度波動過大,即當(dāng)室內(nèi)最高溫度超過設(shè)定溫度達(dá)到某一溫度時,用戶會感受到溫度差異(假定設(shè)定溫度是用戶最滿意的舒適溫度)。很明顯,如果溫度差異過大,就會導(dǎo)致用戶通過降低設(shè)定溫度來消除這種不適。因此,溫度波動過大會導(dǎo)致用戶降低設(shè)定溫度,導(dǎo)致能耗增加。同樣,冬季溫度波動過大會導(dǎo)致設(shè)定溫度的升高。溫度波動會隨著設(shè)備啟動次數(shù)的增加而降低,隨著設(shè)備啟動次數(shù)的減小而升高。設(shè)備啟動次數(shù)的減小有利于制冷(或供暖)設(shè)備延長使用壽命,但過小的設(shè)備啟動次數(shù)會導(dǎo)致溫度波動的增大,從而影響到舒適度。因此,應(yīng)合理選擇適當(dāng)?shù)脑O(shè)備啟動次數(shù),使得在滿足室內(nèi)舒適性要求的同時,也保證制冷、供暖設(shè)備的啟停不過于頻繁。設(shè)備啟動次數(shù)影響室內(nèi)溫度波動、舒適性、設(shè)備的能耗和設(shè)備的壽命,這四個因素對于選擇一個合理的設(shè)備啟動次數(shù)進(jìn)行周期率控制很重要。僅從舒適性的角度來看,要確定合適的溫度波動并不容易,這是因為舒適性并不僅取決于室內(nèi)溫度,還與許多其他因素相關(guān),如衣著情況、人員活動量、空氣流速及空氣濕度等。④控制點偏移的補償。室外溫度決定了制冷、供暖設(shè)備在某一特定的負(fù)荷下工作。在高負(fù)荷情況下,空調(diào)系統(tǒng)運行時間更長,這會導(dǎo)致電流產(chǎn)生的熱量聚集在溫控器內(nèi)部,這部分額外的熱量會導(dǎo)致溫控器內(nèi)的溫度傳感器感應(yīng)到的溫度高于此時實際室內(nèi)溫度。在制冷模式下,溫控器會使制冷設(shè)備運行的時間更長一些,導(dǎo)致室內(nèi)溫度低于設(shè)定值。在供暖模式下,會導(dǎo)致溫控器在室內(nèi)溫度到達(dá)設(shè)定值前關(guān)閉供暖設(shè)備,因此控制點偏移的存在會導(dǎo)致用戶舒適性的降低和能耗的增加。降低控制點偏移的方法主要有兩種:一是合理安排溫控器內(nèi)繼電器和電源模塊等發(fā)熱元件及傳感器的安裝位置,以降低發(fā)熱元件對傳感器的影響;二是在軟件方面采用一定的算法來抵消溫控器內(nèi)部積累的這部分熱量的影響。4可編程溫控器可編程溫控器(ProgrammableThermostat)允許用戶通過控制面板進(jìn)行輸入,制定符合自身生活規(guī)律和舒適性要求的室內(nèi)溫度變化規(guī)律。較之不可編程溫控器,它更加節(jié)能、更加人性化,能夠滿足不同用戶的要求。可編程溫控器可使室內(nèi)溫度在一天內(nèi)維持在合適溫度上,在不必要的情況下不運行制冷、供暖設(shè)備,從而起到節(jié)能的作用。冬季工況下,某日可編程溫控器控制室內(nèi)溫度的過程見圖2。以夏季工況為例,如果用戶希望在18:00回到家中時室內(nèi)溫度為25℃,對于傳統(tǒng)空調(diào)系統(tǒng),用戶可以使用定時功能實現(xiàn),比如將定時器設(shè)為17:30啟動,設(shè)定室內(nèi)溫度為25℃。當(dāng)用戶18:00回到家中時室內(nèi)溫度未必能夠達(dá)到25℃可編程控制器的幾個相關(guān)概念如下。eq\o\ac(○,1)舒適的設(shè)定溫度舒適的設(shè)定溫度(ComfortSetpointTemperature)指居所或大廈中在有人使用的某一時間段中用戶希望的室內(nèi)溫度。②舒適時段舒適時段(ComfortTime)指空調(diào)房間被使用的時段,如圖2中的6:00—8:00、18:00—22:00。③激活點激活點(ConventionalRecovery)指啟動制冷、供暖設(shè)備的時刻。④節(jié)能模式下的設(shè)定溫度節(jié)能模式下的設(shè)定溫度(Energy-savingSetpointTemperature)通常是在晚上和沒人使用空調(diào)房間時段內(nèi)的設(shè)定溫度,分為冬季節(jié)能模式下的設(shè)定溫度(SetbackTemperature)、夏季節(jié)能模式下的設(shè)定溫度(SetupTemperature),前者低于舒適的設(shè)定溫度,后者高于舒適的設(shè)定溫度。隨著生活水平的提高,人們對室內(nèi)舒適性的要求也越來越高,同時能源價格的上漲使得用戶對產(chǎn)品的經(jīng)濟(jì)性和節(jié)能性越來越重視。面對這些需求,溫控器的設(shè)計理念和方法也應(yīng)隨之更新。我們在設(shè)計中應(yīng)采用先進(jìn)的材料、優(yōu)質(zhì)的元器件和更加合理有效的控制算法,輔之以人性化的設(shè)計理念和友好的人機(jī)交互界面,設(shè)計出適合我國國情性能優(yōu)越的溫控器。單片機(jī)在電子產(chǎn)品中的應(yīng)用已經(jīng)越來越廣泛,并且在很多電子產(chǎn)品中也將其用到溫度檢測和溫度控制。家用自供暖系統(tǒng)溫控器較傳統(tǒng)的溫度控制器具有更高的智能性,并且系統(tǒng)的功能更加易于擴(kuò)展和升級,是一種低成本的溫度檢測、控制方案。在一些溫控系統(tǒng)電路中,廣泛采用的是通過熱電偶、熱電阻或PN結(jié)測溫電路經(jīng)過相應(yīng)的信號調(diào)理電路,轉(zhuǎn)換成A/D轉(zhuǎn)換器能接收的模擬量,再經(jīng)過采樣/保持電路進(jìn)行A/D轉(zhuǎn)換,最終送入單片機(jī)及其相應(yīng)的外圍電路,完成監(jiān)控。但是由于傳統(tǒng)的信號調(diào)理電路實現(xiàn)復(fù)雜、易受干擾、不易控制且精度不高。本文介紹單片機(jī)結(jié)合DS18B20溫度傳感器設(shè)計,本系統(tǒng)用一種新型的可編程溫度傳感器(DS18B20),不需復(fù)雜的信號調(diào)理電路和A/D轉(zhuǎn)換電路能直接與單片機(jī)完成數(shù)據(jù)采集和處理,實現(xiàn)方便、精度高,可根據(jù)不同需要用于各種場合。2系統(tǒng)的總體設(shè)計單片機(jī)的溫度控制器需要完成溫度的檢測并可以通過按鍵設(shè)定調(diào)整最高溫度和最低溫度值、能夠顯示當(dāng)前溫度值、最高溫度和最低溫度值,同時要實現(xiàn)室溫超過最高溫度+3度時,停止電熱棒加熱并報警;當(dāng)室溫低于最低溫度-3度時,啟動電熱棒加熱等功能。需要系統(tǒng)包括單片機(jī)最小系統(tǒng)電路和按鍵電路、LED顯示電路、溫度檢測部分、報警和控制輸出等主要部分,系統(tǒng)地總體設(shè)計總圖如下圖所示: LED數(shù)碼管顯示LED數(shù)碼管顯示DS18B20溫度檢測部分單片機(jī)單片機(jī)報警和輸出控制部分報警和輸出控制部分按鍵電路圖2.1系統(tǒng)整體設(shè)計框圖3系統(tǒng)的主要硬件介紹3.1單片機(jī)介紹3.1.1單片機(jī)概述單片微機(jī)(Single-ChipMicrocomputer)簡稱單片機(jī),通常統(tǒng)稱微控制器(Micro-Controller簡寫μC)或微型處理部件(MicroControllerUnit簡寫MCU)。一般的說,單片機(jī)就是在一塊硅片上集成CPU、RAM、ROM、定時器/計數(shù)器、和多種I/O的完整的數(shù)字處理系統(tǒng)。二十世紀(jì),微電子、IC集成電路行業(yè)發(fā)展迅速,其中單片機(jī)行業(yè)的發(fā)展最引人注目。單片機(jī)功能強(qiáng)、價格便宜、使用靈活,在計算機(jī)應(yīng)用領(lǐng)域中發(fā)揮著極其重要的作用。從INTEL公司于1971年生產(chǎn)第一顆單片機(jī)Intel-4004開始,開創(chuàng)了電子應(yīng)用的“智能化”新時代。單片機(jī)以其高性價比和靈活性,牢固樹立了其在嵌入式微控制系統(tǒng)中的“霸主”地位,在PC機(jī)以286、386、Pentium、PⅢ高速更新?lián)Q代的同時,單片機(jī)卻“始終如一”保持旺盛的生命力。例如,MCS-51系列單片機(jī)已有十多年的生命期,如今仍保持著上升的態(tài)勢就充分證明了這一點。1.單片機(jī)的結(jié)構(gòu)與組成目前,單片機(jī)的系統(tǒng)結(jié)構(gòu)有兩種類型:一種是將程序和數(shù)據(jù)存儲器分開使用,即哈佛(Harvard)結(jié)構(gòu),當(dāng)前的單片機(jī)大都是這種結(jié)構(gòu)。另一種是采用和PC機(jī)的馮.諾依曼(VonNeumann)類似的原理,對程序和數(shù)據(jù)存儲器不作邏輯上的區(qū)分,用來存放用戶程序,可分為EPROM、OTP、ROM和FLASH等類。EPROM型內(nèi)存編程后其內(nèi)容可用紫外線擦除,用戶可反復(fù)使用,故特別適用于開發(fā)過程,但EPROM型單片機(jī)價格很高。具有ROM型(掩膜型)內(nèi)存的單片機(jī)價格最低,它適用于大批量生產(chǎn)。由于ROM型單片機(jī)的代碼只能由生產(chǎn)廠商在制造芯片時寫入,故用戶要更改程序代碼就十分不便,在產(chǎn)品未成熟時選用ROM型單片機(jī)風(fēng)險較高。OTP型(一次可編程)單片機(jī)介于EPROM和ROM型單片機(jī)之間,它允許用戶自己對其編程,但只能寫入一次。OTP型單片機(jī)生產(chǎn)多少完全可由用戶自己掌握,不存在ROM型有最小起訂量和掩膜費問題,另外,該類單片機(jī)價格已同掩膜型十分接近,故特別受中小批量客戶的歡迎。Flash型(閃速型)單片機(jī)允許用戶使用編程工具或在線快速修改程序代碼,且可反復(fù)使用,故一推出就受到廣大用戶的歡迎。Flash型單片機(jī),即可用于開發(fā)過程,也可用于批量生產(chǎn),隨著制造工藝的改進(jìn),F(xiàn)lash型單片機(jī)價格不斷下降,使用越來越普遍,它已是現(xiàn)代單片機(jī)的發(fā)展趨勢。隨機(jī)內(nèi)存(RAM):用來存放程序運行時的工作變量和數(shù)據(jù),由于RAM的制作工藝復(fù)雜,價格比ROM高得多,所以單片機(jī)的內(nèi)部RAM非常寶貴,通常僅有幾十到幾百個字節(jié)。RAM的內(nèi)容是易失性(也有的稱易揮發(fā)性)的,掉電后會丟失。最近出現(xiàn)了EEPROM或FLASH型的數(shù)據(jù)存儲器,方便用戶存放不經(jīng)常改變的數(shù)據(jù)及其它重要信息。單片機(jī)通常還有特殊寄存器和通用寄存器,它們是單片機(jī)中存取速度最快的內(nèi)存,但通常存儲空間很小。2.中央處理器(CPU)是單片機(jī)的核心單元,通常由算術(shù)邏輯運算部件ALU和控制部件構(gòu)成。CPU就象人的大腦一樣,決定了單片機(jī)的運算能力和處理速度。并行輸入/輸出(I/O)口:通常為獨立的雙向口,任何口既可以用作輸入方式,又可以作輸出方式,通過軟件編程來設(shè)定?,F(xiàn)代的單片機(jī)的I/O口也有不同的功能,有的內(nèi)部具有上拉或下拉電阻,有的是漏極開路輸出,有的能提供足夠的電流可以直接驅(qū)動外部設(shè)備。I/O是單片機(jī)的重要資源,也是衡量單片機(jī)功能的重要指針之一。串口輸入/輸出口:用于單片機(jī)和串行設(shè)備或其它單片機(jī)的通信。串行通信有同步和異步之分,這可以用硬件或通用串行收發(fā)器件來實現(xiàn)。不同的單片機(jī)可能提供不同標(biāo)準(zhǔn)的串行通信接口,如UART、SPI、、MicroWire等。3.定時器/計數(shù)器(T/C) 單片機(jī)內(nèi)部用于精確定時或?qū)ν獠渴录ㄝ斎胄盘柸缑}沖)進(jìn)行計數(shù),有的單片機(jī)內(nèi)部有多個定時/計數(shù)器。4.系統(tǒng)時鐘通常需要外接石英晶體或其它振蕩源來提供時鐘信號輸入,也有的使用內(nèi)部RC振蕩器。以上是單片機(jī)的基本構(gòu)成,現(xiàn)代的單片機(jī)又加入了許多新的功能部件,如模擬/數(shù)字轉(zhuǎn)換器(A/D)、數(shù)字/模擬轉(zhuǎn)換器(D/A)、溫度傳感器、液晶(LCD)驅(qū)動電路、電壓監(jiān)控、看門狗(WDT)電路、低壓檢測(LVD)電路等等。3.1.2單片機(jī)編程語言介紹對于51系列單片機(jī),現(xiàn)有四種語言支持,即匯編、PL/M,C和BASIC。BASIC通常附在PC機(jī)上,是初學(xué)編程的第一種語言。一個新變量名定義之后可在程序中作變量使用,非常易學(xué),根據(jù)解釋的行可以找到錯誤而不是當(dāng)程序執(zhí)行完才能顯現(xiàn)出來。BASIC由于逐行解釋自然很慢,每一行必須在執(zhí)行時轉(zhuǎn)換成機(jī)器代碼,需要花費許多時間不能做到實時性。BASIC為簡化使用變量,所有變量都用浮點值。BASIC是用于要求編程簡單而對編程效率和運行速度要求不高的場合。PL/M是Intel從8080微處理器開始為其系列產(chǎn)品開發(fā)的編程語言。它很像PASCAL,是一種結(jié)構(gòu)化語言,但它使用關(guān)鍵詞去定義結(jié)構(gòu)。PL/M編譯器好像匯編器一樣可產(chǎn)生緊湊代碼。PL/M總的來說是“高級匯編語言”,可詳細(xì)控制著代碼的生成。但對51系列,PL/M不支持復(fù)雜的算術(shù)運算、浮點變量而無豐富的庫函數(shù)支持。學(xué)習(xí)PL/M無異于學(xué)習(xí)一種新語言。C語言是一種源于編寫UNIX操作系統(tǒng)的語言,它是一種結(jié)構(gòu)化語言,可產(chǎn)生壓縮代碼。C語言結(jié)構(gòu)是以括號{}而不是子和特殊符號的語言。C可以進(jìn)行許多機(jī)器級函數(shù)控制而不用匯編語言。與匯編相比,有如下優(yōu)點:對單片機(jī)的指令系統(tǒng)不要求了解,僅要求對51的內(nèi)存結(jié)構(gòu)有初步了解寄存器分配、不同內(nèi)存的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù)。這種方式可使程序結(jié)構(gòu)化將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性編程及程序調(diào)試時間顯著縮短,從而提高效率提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能將已編好程序可容易的植入新程序,因為它具有方便的模塊化編程技術(shù)C語言作為一種非常方便的語言而得到廣泛的支持,C語言程序本身并不依賴于機(jī)器硬件系統(tǒng),基本上不做修改就可根據(jù)單片機(jī)不同較快地移植過來。51的匯編語言非常像其它匯編語言。指令系統(tǒng)比第一代微處理器要強(qiáng)一些。51的不同存儲區(qū)域使得其復(fù)雜一些。盡管懂得匯編語言不是你的目的,看懂一些可幫助你了解影響任何語言效率的51特殊規(guī)定。例如,懂得匯編語言指令就可以使用在片內(nèi)RAM作變量的優(yōu)勢,因為片外變量需要幾條指令才能設(shè)置累加器和數(shù)據(jù)指針進(jìn)行存取。要求使用浮點和啟用函數(shù)時只有具備匯編編程經(jīng)驗才能避免生成龐大的、效率低的程序,這需要考慮簡單的算術(shù)運算或先算好的查表法。最好的單片機(jī)編程者應(yīng)是由匯編轉(zhuǎn)用C而不是原來用過標(biāo)準(zhǔn)C語言的人。由此來看,單片機(jī)有著微處理器所不具備的功能,它可單獨地完成現(xiàn)代工業(yè)控制所要求的智能化控制功能,這是單片機(jī)最大的特征。3.1.3系統(tǒng)選擇本系統(tǒng)以MCS-51單片機(jī)成員中的AT89C51為控制核心。AT89C51是美國ATMEL公司生產(chǎn)的低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4kbytes的可系統(tǒng)編程的Flash只讀程序內(nèi)存,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)8051指令系統(tǒng)及引腳。它集Flash程序內(nèi)存既可在線編程(ISP)也可用傳統(tǒng)方法進(jìn)行編程及通用8位微處理器于單片芯片中,ATMEL公司的功能強(qiáng)大,低價位AT89C51單片機(jī)可為您提供許多高性價比的應(yīng)用場合,它靈活應(yīng)主要性能參數(shù):(1)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容(2)4K字節(jié)在系統(tǒng)編程(ISP)Flash閃速內(nèi)存(3)1000次擦寫周期(4)4.0-5.5V的工作電壓范圍(5)全靜態(tài)工作模式:0Hz—33MHz(6)三級程序加密鎖(7)2568字體內(nèi)部RAM(8)32個可編程I/O口線(9)3個16位定時/計數(shù)器(10)5個中斷源(11)全雙工串行UART通道(12)低功耗空閑和掉電模式(13)中斷可從空閑模喚醒系統(tǒng)(14)看門狗(WDT)及雙數(shù)據(jù)指針(15)掉電標(biāo)識和快速編程特性(16)靈活的在系統(tǒng)編程(ISP—字節(jié)或頁寫模式)其內(nèi)部結(jié)構(gòu)結(jié)構(gòu)如圖3.1所示:圖3.1單片機(jī)內(nèi)部結(jié)構(gòu)圖3.1.4AT89C51引腳功能介紹圖3.1單片機(jī)內(nèi)部結(jié)構(gòu)圖1.電源引腳Vcc和GNDVcc:電源電壓,GND(10腳):接地端。2.時鐘電路引腳XTALl和XTAL2XTAL2(18腳):接外部晶體和微調(diào)電容的一端。在內(nèi)它是振蕩電路反相放大器的輸出端,振蕩電路的頻率就是晶體的固有頻率。要檢查單片機(jī)的振蕩電路是否正確工作,可用示波器查看XTAL2端是否有脈沖信號輸出。XTAL1(19腳):接外部晶體的微調(diào)電容的另一端。在片內(nèi)它是振蕩電路反相放大器的輸入端。若需采用外部時鐘電路時,該引腳輸入外部時鐘脈沖如圖3.2,3.3所示。3.控制信號引腳RST圖圖3.2AT89S51單片機(jī)晶振接法圖3.3外部時鐘電路RES(8腳)“RST是復(fù)位信號輸入端,高電平有效。當(dāng)此輸入端保持兩個機(jī)器周期(24個時鐘振蕩周期)的高電平時,可以完成復(fù)位操作。4.I/O(輸入/輸出)P0、P1、P2和P3標(biāo)準(zhǔn)51單片機(jī),如8051、8031、AT89C51、AT89S51、P89C51等有4個I/O(輸入/輸出)口,分別為:P0口(39—32腳):P0口是一個漏極開路的8位雙向埠。作為漏極八路的輸出端口,每次能驅(qū)動8個Ls型TTL負(fù)載。當(dāng)P0口作為輸入口使用時,其先向鎖存器(地址80H)寫入全1,此時P0口的全部引腳懸空,叫作為高阻抗輸入。P1口(1—8腳):P1口是一個帶上拉電阻的8位準(zhǔn)雙向I/O端口每一位能驅(qū)動(吸收成輸出電流)4個LS型TTL負(fù)載。在P1口作為輸入口使用時,應(yīng)先向P1口鎖存器(地址90H)寫入全1,上拉電阻接成高電平。P2口(21—28腳):P2口是一個帶內(nèi)部上接電阻的8位準(zhǔn)雙向埠。P2口的每一位能驅(qū)動4個LS型TTL負(fù)載。P3口(21—28腳):P3口是一個帶內(nèi)部上接電阻的8位準(zhǔn)雙向埠。P3口的每一位能驅(qū)動(吸收或輸出電流)4個LS型TTL負(fù)載。P3口與其它的I/O埠有很大區(qū)別,它除作為—般準(zhǔn)雙向I/O口外,每個引腳還具有專門的功能,見表3-1。表3-1端口引腳功能P1口也是一個準(zhǔn)雙向口,作通用I/O口使用。其電路結(jié)構(gòu)見圖3.4。圖圖3.4P1口作通用I/O口使用輸出驅(qū)動部分內(nèi)部有上拉負(fù)載電阻與電源相連。實質(zhì)上拉電阻是兩個場效應(yīng)管(FET)并在一起,—個FET為負(fù)載管,其電阻固定;另一個FET可工作在導(dǎo)通或截止兩種狀態(tài),使其總電阻值變化近為0或阻值很大兩種情況。當(dāng)阻值近似為0時,可將引腳快速上拉至全高電平,當(dāng)阻值很大時,P1口為高阻輸入狀態(tài)。當(dāng)P1口輸出高電平時,能向外提供拉電流負(fù)載,所以不必再接上拉電阻。在埠用作輸入時,也必須先向?qū)?yīng)的鎖存器寫入“1”,使FET截止。由于片內(nèi)負(fù)載電阻較大,約20k—40k,所以不會對輸入的數(shù)據(jù)產(chǎn)生影響3.2溫度傳感器DS18B20集成式數(shù)字溫度傳感器DS1820的出現(xiàn)開辟了溫度傳感器技術(shù)的新領(lǐng)域,它利用單總線的特點可以方便的實現(xiàn)多點溫度的測量。而可組網(wǎng)數(shù)字溫度傳感器DS18B20則是DS1820的更新產(chǎn)品,它在電壓、特性及封裝方面都更具有優(yōu)勢,給了用戶更多的選擇,讓用戶可以更方便的構(gòu)建適合自己的測溫系統(tǒng)。DS18B20充分利用了單總線的獨特特點,可以輕松的組建傳感器網(wǎng)絡(luò),提供系統(tǒng)的抗干擾性,使系統(tǒng)設(shè)計更靈活、方便、而且適合于在惡劣的環(huán)境下進(jìn)行現(xiàn)場溫度測量。3.2.1DS18B20簡介圖3.5DS18B20的管腳排列圖DS18B20是美國DALLAS公司最新推出的一種可組網(wǎng)數(shù)字式溫度傳感器,與DS1820相同,DS18B20也能夠直接讀取被測物體的溫度值,但是與DS1820相比,DS18B20的功能更強(qiáng)大些。它體積小,電壓使用范圍寬(3V-5V),用戶還可以通過編程實現(xiàn)9-12位的溫度讀數(shù),即具有可調(diào)的溫度分辨率,因此它的實用性和可靠性比同類產(chǎn)品更高。另外,DS18B20有多種封裝可選,如TO-92、SOIC及CSP封裝。圖圖3.5DS18B20的管腳排列圖由圖3.5可見,DS18B20只是一個數(shù)據(jù)輸入/輸出口,屬于單總線專用芯片之一。DS18B20工作時被測溫度值直接以“單總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾能力。其內(nèi)部采用在板溫度測量專用技術(shù),測量范圍為-55℃~+125℃,在-10℃~+85℃圖3.6為DS18B20的內(nèi)部存儲結(jié)構(gòu)圖,它包括一個暫存RAM和一個非易失性可擦除。圖圖3.6DS18B20內(nèi)部存儲結(jié)構(gòu)圖其中暫存存儲器作用是在單線通信時確保數(shù)據(jù)的完整性,它包括8個字節(jié),頭兩個字節(jié)表示測得的溫度讀數(shù),數(shù)據(jù)格式如下:S=1時表示溫度為負(fù),S=0時表示溫度為正,其余低于以二進(jìn)制補碼形式表示,最低位為1時表示0.0625℃。溫度/數(shù)字對應(yīng)關(guān)系如上表DS18B20內(nèi)部暫存存儲器的第5個字節(jié)是結(jié)構(gòu)寄存器,它主要用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。字節(jié)結(jié)構(gòu)如下:其中、用于設(shè)置分辨率。3.2.2DS18B20的硬件連接DS18B20與單片機(jī)的接口極其簡單,只需將DS18B20的信號線與單片機(jī)的一位雙向端口相連即可。如圖3.7(a)所示。此時應(yīng)注意將VDD、DQ、GND三線焊接牢固。另外也可用兩個端口,即接收口與發(fā)送口分開,這樣讀寫操作就分開了,不會出現(xiàn)信號競爭的問題。如圖3.7(b)所示。此圖是采用寄生電源方式,將DS18B20的VDD和GND接在一起。如若VDD脫開未接好,傳感器將只送+85.0℃圖3.7DS18B20與單片機(jī)的接口圖3.7DS18B20與單片機(jī)的接口4溫度控制器的系統(tǒng)設(shè)計4.1硬件設(shè)計基于單片機(jī)的溫度控制器主要有以下幾部分:溫度檢測數(shù)據(jù)采集部分,LED數(shù)碼管顯示電路、報警及控制輸出部分、單片機(jī)及按鍵電路設(shè)計等幾個部分,下面分別加以介紹4.1.1溫度檢測部分溫度傳感器有很多種,如熱敏電阻,熱電偶,PN結(jié),半導(dǎo)體溫度傳感器等。這里選用單總線數(shù)字輸出的集成半導(dǎo)體溫度傳感器DS18B20,其特點:獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊;測溫范圍-55℃~+125℃,固有測溫分辨率0.5℃;支持多點組網(wǎng)功能,多個DS1820可以并聯(lián)在唯一的三線上,實現(xiàn)多點測溫;工作電源:3~5溫度檢測數(shù)據(jù)采集電路如圖4.1所示,由溫度傳感器DS18B20采集被控對象的實時溫度,提供給AT89C51的I/O口作為數(shù)據(jù)輸入。在本次設(shè)計中我們所控的對象為室內(nèi)空氣的溫度。圖4.1溫度傳感器電路4.1.2LED數(shù)碼管顯示電路顯示器分為數(shù)碼管和液晶顯示,我所采用是的數(shù)碼管顯示,其外形和引腳如下圖所示:圖4.2數(shù)碼管外形和引腳圖圖4.2數(shù)碼管外形和引腳圖LED數(shù)碼有共陽和共陰兩種,把這些LED發(fā)光二極管的正極接到一塊(一般是拼成一個8字加一個小數(shù)點)而作為一個引腳,就叫共陽機(jī)極數(shù)碼管;相反的,就叫共陰的(如下圖所示)那么應(yīng)用時這個腳就分別的接VCC和GND。再把多個這樣的8字裝在一起就成了多位的數(shù)碼管了。圖4.3共陰極和共陽極數(shù)碼管內(nèi)部電路圖4.3共陰極和共陽極數(shù)碼管內(nèi)部電路基于單片機(jī)的溫度控制器采用7段數(shù)LED碼管顯示,這里采用6個數(shù)碼管顯示溫度,兩位顯示設(shè)定的最高溫度、兩位顯示設(shè)定的最低溫度、兩位顯示室內(nèi)的當(dāng)前溫度。6位共陽極數(shù)碼管采用掃描形式工作,其8個數(shù)據(jù)為接在單片機(jī)灌電流驅(qū)動能力最大的PO口,AT89C51單片機(jī)的P0口的每一個I/O都能能吸收8個TTL邏輯器件的輸入漏電流,算下來能驅(qū)動約10mA。能驅(qū)動數(shù)碼管的8個數(shù)據(jù)陰極。6位共陽極數(shù)碼的6個陽極采用6個PNP三極管9012驅(qū)動。用單片機(jī)P2.0-P2.56個I/O口控制。LED數(shù)碼管顯示電路如圖4.4所示。圖4.4數(shù)碼管顯示電路4.1.3報警及控制輸出部分當(dāng)室溫超過最高溫度+3度時,溫度控制器需停止加熱并報警;當(dāng)室溫低于最低溫度-3度時,需開始加熱,這就需要報警電路及輸出模塊。聲音報警電路通過驅(qū)動蜂鳴器發(fā)聲實現(xiàn),當(dāng)其接通5V的電壓會發(fā)出蜂鳴叫聲。原理圖如圖4.5,NPN型三極管8050驅(qū)動蜂鳴器,當(dāng)單片機(jī)I/O口輸出高電平時蜂鳴器發(fā)聲此外,控制加熱棒的控制信號同樣由單片機(jī)輸出,經(jīng)過三極管Q3驅(qū)動繼電器J1,J1具有兩對常開和常閉接點,利用其常開接點串到加熱棒的控制回路中,可以實現(xiàn)加熱棒的控制。電路中二極管D1為續(xù)流二極管,繼電器線圈在通過電流時,會在其兩端產(chǎn)生感應(yīng)電動勢。當(dāng)電流消失時,其感應(yīng)電動勢會對電路中的三極管Q3產(chǎn)生反向電壓。當(dāng)反向電壓高于Q3的反向擊穿電壓時,會把三極管成損壞。續(xù)流二極管并聯(lián)在線圈兩端,當(dāng)流過線圈中的電流消失時,線圈產(chǎn)生的感應(yīng)電動勢通過二極管和線圈構(gòu)成的回路做功而消耗掉。從而保護(hù)了電路中的三極管的安全。圖4.5聲音報警電路4.1.4單片機(jī)及按鍵電路設(shè)計圖4.6為單片機(jī)及鍵盤電路的電路圖,單片機(jī)AT89S52的時鐘引腳外接12M晶振,作為單片機(jī)工作的時鐘,EA端接高電平,表示使用片內(nèi)程序存儲器。RST引腳接了上電復(fù)位電路,當(dāng)系統(tǒng)上電時,上電復(fù)位電路會產(chǎn)生一個高電平脈沖信號,使系統(tǒng)復(fù)位。圖4.6單片機(jī)及鍵盤電路電路圖鍵盤是標(biāo)準(zhǔn)的輸入設(shè)備,實現(xiàn)鍵盤有兩種方案:一是采用現(xiàn)有的一些芯片實現(xiàn)鍵盤掃描,如8279,CH451,LMC9768等,還有就是用軟件實現(xiàn)鍵盤掃描。使用現(xiàn)成的芯片可以節(jié)省CPU的開銷,但增加了成本,而用軟件實現(xiàn)具有較強(qiáng)的靈活性,也只需要很少的CPU開銷,可以節(jié)省開發(fā)成本。本文便使用軟件實現(xiàn)鍵盤的掃描。常見的鍵盤可分為獨立按鍵式鍵盤和行列掃描式鍵盤。獨立按鍵式鍵盤應(yīng)用在需要少量按鍵的情況,按鍵和單片機(jī)的I/O口線直接連接。而行列掃描式鍵盤用在按鍵需求較多的情形下??紤]到熱水控制器只需要高限加、高限減、低限加、低限減四個按鍵,所以采用獨立按鍵式鍵盤。理論上當(dāng)按鍵按下或彈起時,可以相應(yīng)的產(chǎn)生低電平或高電平,但實際并非如此。鍵盤按鍵一般都采用觸點式按鍵開關(guān)。當(dāng)按鍵被按下或釋放時,按鍵觸點的彈性會產(chǎn)生抖動現(xiàn)象。即當(dāng)按鍵按下時,觸點不會迅速可靠地接通,當(dāng)按鍵釋放時,觸點也不會立即斷開,而是要經(jīng)過一段時間的抖動才能穩(wěn)定下來,按鍵材料不同,抖動時間也各不相同。圖4-7按鍵抖動示意圖一次完整的按鍵過程,包含以下幾個階段:如圖4-7所示。1)等待階段:此時按鍵尚未按下,處于空閑階段;2)閉合抖動階段:此時鍵剛剛按下,但信號處于抖動狀態(tài),系統(tǒng)在檢測時應(yīng)消抖延時,約5ms到20ms;3)有效閉合階段:此時抖動己經(jīng)結(jié)束,一個有效按鍵動作己經(jīng)產(chǎn)生,系統(tǒng)應(yīng)該在此時執(zhí)行按鍵功能,或?qū)存I編碼記錄下來,待鍵彈起時再執(zhí)行其功能;4)釋放抖動階段:許多時候編程人員并不在此時消抖延時,但最好也執(zhí)行一次消抖延時,以防止誤操作;5)有效釋放階段:若設(shè)計要求在按鍵抬起時才執(zhí)行功能,則應(yīng)當(dāng)在此時進(jìn)行按鍵功能的處理。軟件上對閉合階段的抖動一般采取延時再次確認(rèn)按鍵是否按下的方式消除抖動。如上圖所示,完成系統(tǒng)的最高溫度和最低溫度的高低調(diào)整的四個按鍵分別加上拉電阻接到單片機(jī)的P1.1-P1.4口上,供單片機(jī)查詢,當(dāng)沒有按鍵按下時,單片機(jī)I/O口輸入高電平,當(dāng)有按鍵按下時,對應(yīng)的單片機(jī)端口變?yōu)榈碗娖?,單片機(jī)通過檢測這種電平的變化確定按鍵的狀態(tài)。4.2軟件系統(tǒng)設(shè)計4.2.1系統(tǒng)程序流程圖系統(tǒng)程序流程圖如圖4.8所示。開始開始初始化初始化N是否高低限調(diào)整N是否高低限調(diào)整YY高低限增減高低限增減啟動DS18B20啟動DS18B20讀取溫度值讀取溫度值N高于高限3度或N高于高限3度或低于低限3度YY控制加熱,報警控制加熱,報警顯示高低限和當(dāng)前值顯示高低限和當(dāng)前值圖4.8系統(tǒng)程序流程圖4.2.2單片機(jī)軟件開發(fā)語言對于8051單片機(jī),現(xiàn)有四種語言支持,即匯編、FI/M、C和BASIC。C是一種源于編寫UNIX操作系統(tǒng)的語言,它是一種結(jié)構(gòu)化語言,可產(chǎn)生緊湊代碼。C可以進(jìn)行許多機(jī)器級函數(shù)控制而不用匯編語言。與匯編相比,有如下優(yōu)點:(1)對單片機(jī)的指令系統(tǒng)不要求了解,僅要求對8051的存貯器結(jié)構(gòu)有初步了解;(2)寄存器分配、不同存貯器的尋址及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;(3)程序有規(guī)范的結(jié)構(gòu),可分為不同的函數(shù),這種方式可使程序結(jié)構(gòu)化;(4)具有將可變的選擇與特殊操作組合在一起的能力,改善了程序的可讀性;(5)關(guān)鍵字及運算函數(shù)可用近似人的思維過程方式使用;(6)編程及程序調(diào)試時間顯著縮短,從而提高效率;(7)提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能力;(8)已編好程序可容易地植入新程序,因為它具有方便的模塊化編程技術(shù)。4.2.3DS18B20驅(qū)動程序根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后釋放,當(dāng)DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補碼讀數(shù)形式提供,以0.0625℃/LSB形式表達(dá),其中S為符號位。表4.1DS18B20溫度值格式表這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18B20的兩個8比特的RAM中,二進(jìn)制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫度。DSl820工作過程包括;初始化、ROM操作命令、存儲器操作、命令處理數(shù)據(jù)。1、初始化單總線上的所有處理均從初始化開始2、ROM操作指令:總線主機(jī)檢測到DSl820的存在,便可以發(fā)出ROM操作命令之一,這些命令如:指令代碼ReadROM(讀ROM)[33H]MatchROM(匹配ROM)[55H]SkipROM(跳過ROM)[CCH]SearchROM(搜索ROM)[F0H]Alarmsearch(告警搜索)[ECH]3、存儲器操作命令:指令代碼WriteScratchpad(寫暫存存儲器)[4EH]ReadScratchpad(讀暫存存儲器)[BEH]CopyScratchpad(復(fù)制暫存存儲器)[48H]ConvertTemperature(溫度變換)[44H]RecallEPROM(重新調(diào)出)[B8H]ReadPowersupply(讀電源)[B4H]4、時序主機(jī)使用時間隙(timeslots)來讀寫DSl820的數(shù)據(jù)位和寫命令字的位(1)初始化時序見圖4.9主機(jī)總線to時刻發(fā)送一復(fù)位脈沖(最短為480us的低電平信號)接著在tl時刻釋放總線并進(jìn)入接收狀態(tài)DSl820在檢測到總線的上升沿之后等待15-60us,接著DS1820在t2時刻發(fā)出存在脈沖(低電平)如圖中虛線所示:圖4.9初始化時序(2)寫時間隙當(dāng)主機(jī)總線t0時刻從高拉至低電平時就產(chǎn)生寫時間隙,從to時刻開始15us之內(nèi)應(yīng)將所需寫的位送到總線上,DSl820在t0后15-60us間對總線采樣若低電平寫入的位是0,若高電平寫入的位是1,見圖4.10,連續(xù)寫2位間的間隙應(yīng)大于1us。圖4.10寫時序(3)讀時間隙見圖4.11,主機(jī)總線t0時刻從高拉至低電平時總線只須保持低電平l5us之后在t1時刻將總線拉高產(chǎn)生讀時間隙讀時間隙。在t1時刻后t2時刻前有效,t2距to為15us,也就是說t2時刻前主機(jī)必須完成讀位,并在t0后的60us一120us內(nèi)釋放總線.圖4.11讀時序根據(jù)數(shù)字溫度傳感器的工作時序及原理進(jìn)行軟件的設(shè)計,DS18B20的C51程序代碼如下:sbitDQ=P1^0;//DS18B20端口

typedefunsignedcharbyte;

typedefunsignedint

word;

voiddelay(worduseconds)//延時子函數(shù)

{

for(;useconds>0;useconds--);

}

byteow_reset(void)//復(fù)位DS18B20

{

bytepresence;

DQ=0;//送出低電平

delay(29);//延時480us

DQ=1;//送出高電平

delay(3);//等到DS18B20存在脈沖

presence=DQ;//讀存在脈沖(低電平有效)

delay(25);//延時

return(presence);}

byteread_byte(void)//從1-wire總線上讀取一個字節(jié)

{

bytei;

bytevalue=0;

for(i=8;i>0;i--)

{

value>>=1;

DQ=0;//輸出一脈沖

DQ=1;

delay(1);

if(DQ)value|=0x80;

delay(6);

}

return(value);

}

voidwrite_byte(charval)//向1-WIRE總線上寫一個字節(jié)

{

bytei;

for(i=8;i>0;i--)//寫一個字節(jié),每次寫一位

{

DQ=0;

DQ=val&0x01;

delay(5);

DQ=1;

val=val/2;//用除法實現(xiàn)移位

}

delay(5);

}

charRead_Temperature(void)//讀取溫度

{

bytetemp[2];

floatx;

ow_reset();//復(fù)位DS18B20

write_byte(0xCC);//跳過ROM

write_byte(0xBE);//寫入讀存儲器指令

temp[1]=read_byte();//讀入數(shù)據(jù)

temp[0]=read_byte();x=temp[1]*0x112+temp[0];x=x*0.0625;//將數(shù)值轉(zhuǎn)換為攝氏溫度

returnx;

}4.2.4系統(tǒng)的程序源代碼系統(tǒng)的C51源程序如下:#include<reg51.h>#include<intrins.h>sbitDQ=P1^0;//DS18B20端口sbitHUP=P1^1; //最高溫度增鍵sbitHDOWN=P1^2; //最高溫度減鍵sbitLUP=P1^3; //最低溫度增建sbitLDOWN=P1^4; //最低溫度減鍵sbitBAOJING=P1^5; //報警輸出sbitOUT=P1^6; //控制加熱棒sbitLED1=P2^5; //第一位數(shù)碼管位控制端sbitLED2=P2^4; //第二位數(shù)碼管位控制端sbitLED3=P2^3; //第三位數(shù)碼管位控制端sbitLED4=P2^2; //第四位數(shù)碼管位控制端sbitLED5=P2^1; //第五位數(shù)碼管位控制端sbitLED6=P2^0; //第六位數(shù)碼管位控制端unsignedcharcodetab_LED[10]={0x0C0,0x0F9,0x0A4,0x0B0,0x99,0x92,0x82,0xF8,0x80,0x90};//顯示的段碼,分別代表0-9typedefunsignedcharbyte;typedefunsignedintword;//****************************18b20驅(qū)動程序*********************************voiddelay(worduseconds)//延時子函數(shù){for(;useconds>0;useconds--);}byteow_reset(void)//復(fù)位DS18B20{bytepresence;DQ=0;//送出低電平delay(29);//延時480usDQ=1;//送出高電平delay(3);//等到DS18B20存在脈沖presence=DQ;//讀存在脈沖(低電平有效)delay(25);//延時return(presence);}byteread_byte(void)//從1-wire總線上讀取一個字節(jié){bytei;bytevalue=0;for(i=8;i>0;i--){value>>=1;DQ=0;//輸出一脈沖DQ=1;delay(1);if(DQ)value|=0x80;delay(6);}return(value);}voidwrite_byte(charval)//向1-WIRE總線上寫一個字節(jié){bytei;for(i=8;i>0;i--)//寫一個字節(jié),每次寫一位{DQ=0;DQ=val&0x01;delay(5);DQ=1;val=val/2;//用除法實現(xiàn)移位}delay(5);}//**************Read_Temperature完成一次采樣過程,返回溫度值*****************charRead_Temperature(void)//讀取溫度{bytetemp[2];floatx;ow_reset();//復(fù)位DS18B20write_byte(0xCC);//跳過ROMwrite_byte(0xBE);//寫入讀存儲器指令temp[1]=read_byte();//讀入數(shù)據(jù)temp[0]=read_byte();x=temp[1]*0x112+temp[0];x=x*0.0625;//將數(shù)值轉(zhuǎn)換為攝氏溫度returnx;}//****************************主函數(shù)******************************************main(){byten=20,h=50,l=30;//定義溫度值、高低限,并置初值 bytei;BAOJING=0; //初始化OUT=0; LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=1; while(1) {if(HUP==0)//如果溫度高限增加鍵按下 { delay(10000);//按鍵消抖 if(HUP==0) h++; } elseif(HDOWN==0)//如果溫度高限減小鍵按下 { delay(10000);//按鍵消抖 if(HDOWN==0) h--; }elseif(LUP==0)//如果溫度低限增加鍵按下 { delay(10000);//按鍵消抖 if(LUP==0) l++; } elseif(LDOWN==0)//如果溫度低限減小鍵按下 { delay(10000);//按鍵消抖 if(LDOWN==0) l--; } else//如果沒有按鍵按下 {n=Read_Temperature();//讀取溫度值 if(n>h+3) {BAOJING=1;//報警并停止加熱 OUT=0;} elseif(n<l-3) OUT=1;

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論