基于PWM的加熱溫度控制系統(tǒng)設(shè)計(jì)_第1頁
基于PWM的加熱溫度控制系統(tǒng)設(shè)計(jì)_第2頁
基于PWM的加熱溫度控制系統(tǒng)設(shè)計(jì)_第3頁
基于PWM的加熱溫度控制系統(tǒng)設(shè)計(jì)_第4頁
基于PWM的加熱溫度控制系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 桂林電子科技大學(xué)畢業(yè)設(shè)計(jì)(論文)用紙 第 53 頁 共52頁引言嵌入式在電子產(chǎn)品中的應(yīng)用已經(jīng)變得越來越廣泛,并且在很多電子產(chǎn)品中也將其運(yùn)用到溫度控制和溫度檢測、顯示。基于單片機(jī)的溫度監(jiān)控系統(tǒng)較傳統(tǒng)的溫度控制系統(tǒng)具有更好的智能性,并且系統(tǒng)的功能更加易于擴(kuò)展和升級,是一種低成本的溫度控制、檢測方案。采用單片機(jī)對溫度進(jìn)行控制,不僅具有控制方便、組態(tài)簡單和靈活性大等優(yōu)點(diǎn),而且還可以大幅度提高被控溫度的技術(shù)指標(biāo),從而能夠大大提高產(chǎn)品的質(zhì)量和數(shù)量。因此單片機(jī)對溫度的控制問題是一個(gè)工業(yè)生產(chǎn)中經(jīng)常會(huì)遇到的問題。本次設(shè)計(jì)采用at89s52單片機(jī)與各種外圍電路構(gòu)成單片機(jī)溫度自動(dòng)檢測和控制系統(tǒng),實(shí)現(xiàn)對溫度的實(shí)時(shí)檢

2、測、控制以及顯示。通過本次設(shè)計(jì)掌握對溫度檢測控制系統(tǒng)的硬件設(shè)計(jì)方法和軟件編寫方法。熟悉protel軟件的使用方法,熟悉pcb板的制作。通過課題的研究進(jìn)一步的鞏固所學(xué)知識,同時(shí)學(xué)習(xí)課程以外的相關(guān)知識,培養(yǎng)綜合應(yīng)用知識的能力。鍛煉動(dòng)手能力與實(shí)際工作能力,將所學(xué)的理論與實(shí)踐結(jié)合起來。目前國內(nèi)外的溫度控制方式越來越趨于智能化,溫度測量首先是由溫度傳感器來實(shí)現(xiàn)的。測溫儀器由溫度傳感器和信號處理兩部分組成。溫度測量的過程就是通過溫度傳感器將被控對象的溫度值轉(zhuǎn)換成電的或者其它形式的信號,傳遞給信號處理電路進(jìn)行信號處理,轉(zhuǎn)換成溫度值顯示出來。溫度傳感器隨著溫度變化而引起變化的物理參數(shù)有:膨脹、電阻、電容、熱電

3、動(dòng)勢、磁性能、頻率、光學(xué)特性及熱噪聲等。隨著生產(chǎn)的發(fā)展,新型的溫度傳感器還會(huì)不斷出現(xiàn)。目前,國內(nèi)外通用的溫度傳感器及測溫器大致有以下幾種:熱膨脹式溫度計(jì)、電阻溫度計(jì)、熱電偶、輻射式溫度儀表、石英溫度傳感器測溫儀。該設(shè)計(jì)是以單片機(jī)at89s52為控制核心,從ds18b20溫度傳感器的數(shù)據(jù)采集、設(shè)定值調(diào)整、lcd顯示電路、報(bào)警及輸出控制電加熱等幾個(gè)方面出發(fā),詳細(xì)研究和設(shè)計(jì)了基于pwm的單片機(jī)溫度控制的各個(gè)部分內(nèi)容,設(shè)計(jì)了單片機(jī)及其外圍電路,并結(jié)合pid的程序算法。在一些溫控系統(tǒng)電路中,廣泛采用的是通過熱電偶、熱電阻或pn結(jié)測溫電路經(jīng)過相應(yīng)的信號調(diào)整電路,轉(zhuǎn)換成a/d轉(zhuǎn)換器能接受的模擬量,再經(jīng)過采樣

4、/保持電路進(jìn)行a/d轉(zhuǎn)換,最終送入單片機(jī)及其相應(yīng)的外圍電路,來完成監(jiān)控。但是由于傳統(tǒng)的信號調(diào)整電路實(shí)現(xiàn)復(fù)雜、易受干擾、不易控制而且精度不高。本文介紹單片機(jī)結(jié)合ds18b20環(huán)境溫度控制器設(shè)計(jì),本系統(tǒng)用一種新型的可編程溫度傳感器(ds18b20),不需要復(fù)雜的信號調(diào)整電路和a/d轉(zhuǎn)換電路就能直接與單片機(jī)完成數(shù)據(jù)采集和處理,實(shí)現(xiàn)方便、精度高,可根據(jù)不同需要運(yùn)用于各種場合。1 設(shè)計(jì)要求和方案的選擇1.1 設(shè)計(jì)要求和目標(biāo)1.1.1具體要求在我們生活的環(huán)境中,最高溫度都在50以內(nèi),所以溫度控制的范圍設(shè)置在環(huán)境溫度到50。一般人體能夠感覺到的溫度變化都在1以外,所以選擇溫度控制誤差為1。采用ac220v作

5、為加熱部件的電源,是因?yàn)槲覀儑业碾妷憾际?20v,所以選它具有通用性,在任何地方都可以用。傳統(tǒng)的溫度控制器進(jìn)行溫度控制期間,當(dāng)被加熱器件溫度升高至設(shè)定的溫度時(shí),控制器發(fā)出信號停止加熱,被加熱器件的溫度還會(huì)繼續(xù)上升幾度,然后才開始下降,這樣會(huì)產(chǎn)生一個(gè)很大的偏差。想要解決這個(gè)問題,就要采用pid模糊控制技術(shù),并用軟件的方法來實(shí)現(xiàn)。比例(p)控制器的輸出與輸入誤差信號成比例關(guān)系,當(dāng)僅有比例控制時(shí)系統(tǒng)輸出存在穩(wěn)態(tài)誤差。積分(i)控制器的輸出與輸入誤差信號的積分成正比關(guān)系,它可以消除穩(wěn)態(tài)誤差。微分(d)控制器的輸出與輸入誤差信號的微分(即誤差的變化率)成正比關(guān)系,它能預(yù)測誤差變化的趨勢,從而避免了被控

6、量的嚴(yán)重超調(diào)。所以對有較大慣性或滯后的被控對象,應(yīng)該使用pid控制技術(shù)來改善系統(tǒng)在調(diào)節(jié)過程中的動(dòng)態(tài)特性。然后,要完成這個(gè)設(shè)計(jì),還要了解一些顯示芯片,溫度傳感器的用法,做一個(gè)鍵盤,實(shí)現(xiàn)輸入溫度設(shè)定值和復(fù)位之類的功能。接著,把電熱絲和溫度傳感器放在一起,通過單片機(jī)來控制電熱絲的通電和斷電。最后,就是調(diào)試,使溫度穩(wěn)定在設(shè)定值附近,誤差小于1;1.1.2設(shè)計(jì)目標(biāo) 單片機(jī)溫度傳感器lcd顯示pid算法鍵盤加熱模塊 圖1-1 系統(tǒng)結(jié)構(gòu)大致的系統(tǒng)結(jié)構(gòu),如圖1-1所示。首先,通過單片機(jī)讀取ds18b20的12位串行數(shù)據(jù),再加以分析和轉(zhuǎn)換,然后把要顯示的數(shù)據(jù)輸入到lcd1602上,使它顯示當(dāng)前溫度。其次,通過鍵

7、盤輸入一個(gè)設(shè)定值,經(jīng)過單片機(jī)的比較判斷輸出pwm加熱信號,然后加熱的溫度又反饋到單片機(jī)進(jìn)去比較分析,判斷是否繼續(xù)加熱。1.2 方案和器件的選擇方案一:選擇atmel公司的新型單片機(jī)avr單片機(jī)atmega16,其功能極為強(qiáng)大,內(nèi)部集成有8路的10位a/d,多種pwm產(chǎn)生模式,輸入比較等。用這個(gè)作為微控制器,因其內(nèi)部帶有pwm產(chǎn)生器,給設(shè)計(jì)帶來了極大的方便,每次通過模糊運(yùn)算后產(chǎn)生的控制量賦給內(nèi)部產(chǎn)生pwm的匹配寄存器,單片機(jī)自身就會(huì)根據(jù)這個(gè)值來自動(dòng)改變pwm的占空比,加熱功率便會(huì)得到控制。方案二:選擇傳統(tǒng)的mcs-51單片機(jī)做為控制的核心,用其中的一個(gè)定時(shí)器作為pwm波產(chǎn)生器,傳感器將每次的偏差

8、值帶回模糊控制器運(yùn)算,得出每次的控制量,然后送入定時(shí)器的賦值寄存器來改變定時(shí)器的值來改變占空比。溫度傳感器選用ds18b20,一總線的數(shù)字量輸出,避免了用模擬量輸出在信號處理時(shí)產(chǎn)生的誤差較大的因素。顯示器則用lcd1602,方便多文字、多字符顯示。通過以上兩個(gè)方案的分析,可知,方案一avr單片機(jī)atmega16操作比較復(fù)雜系統(tǒng)的學(xué)習(xí)起來比較困難,且功能利用情況不足10%。方案二解決了方案一難度大、成本高,不利于新手學(xué)習(xí)等問題。綜合評價(jià)為:控制容易,便于編程,硬件電路簡單,成本也不高,充分發(fā)揮了微控制器的性能,提高了性價(jià)比,符合大眾化的要求。這給設(shè)計(jì)帶來了很大的方便。因此最終決定采用方案一來完成

9、本次設(shè)計(jì)。2 硬件說明2.1 單片機(jī)的選擇本次設(shè)計(jì)主控部分選擇了at89s52單片機(jī)。at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器,俗稱單片機(jī)。該器件采用atmel高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲(chǔ)器組合在單個(gè)芯片中,atmel的at89c51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。2.1.1主要特性 與mcs-51兼容; 4k

10、字節(jié)可編程閃爍存儲(chǔ)器; 壽命:1000寫/擦循環(huán); 數(shù)據(jù)保留時(shí)間:10年; 全靜態(tài)工作:0hz-24hz; 三級程序存儲(chǔ)器鎖定; 128*8位內(nèi)部ram; 32可編程i/o線; 兩個(gè)16位定時(shí)器/計(jì)數(shù)器; 5個(gè)中斷源; 可編程串行通道; 低功耗的閑置和掉電模式; 片內(nèi)振蕩器和時(shí)鐘電路。 圖2-1 at89c系列引腳圖2.1.2管腳說明vcc:供電電壓。gnd:接地。p0口:p0口為一個(gè)8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)f

11、iash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門電流,當(dāng)p2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)

12、器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號和控制信號。p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為at89c51的一些特殊功能口,如下所示: p3.0:rxd(串行輸入口); p3.1:txd(串行輸出口); p3.2:/int0(外部中斷0); p3.

13、3:/int1(外部中斷1); p3.4:t0(記時(shí)器0外部輸入); p3.5:t1(記時(shí)器1外部輸入); p3.6:/wr(外部數(shù)據(jù)存儲(chǔ)器寫選通); p3.7:/rd(外部數(shù)據(jù)存儲(chǔ)器讀選通); p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ale/prog:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外

14、部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 psen:外部程序存儲(chǔ)器的選通信號。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號將不出現(xiàn)。 ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flas

15、h編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。xtal2:來自反向振蕩器的輸出。由以上資料可以看出,at89s52單片機(jī)具有32個(gè)可編程i/o口以及4k字節(jié)的可編程閃爍存儲(chǔ)器,對于本次的設(shè)計(jì)要求已經(jīng)完全可以任命,因此這款芯片是不錯(cuò)的選擇。2.1.3單片機(jī)編程語言介紹對于51系列單片機(jī),現(xiàn)有四種語言支持,即匯編、pl/m,c和basic。basic通常附在pc機(jī)上,是初學(xué)編程的第一種語言。一個(gè)新變量名定義之后可在程序中作變量使用,非常易學(xué),根據(jù)解釋的行可以找到錯(cuò)誤而不是當(dāng)程序執(zhí)行完才能顯現(xiàn)出來。basic由于逐行解釋自然很慢,每一

16、行必須在執(zhí)行時(shí)轉(zhuǎn)換成機(jī)器代碼,需要花費(fèi)許多時(shí)間不能做到實(shí)時(shí)性。basic為簡化使用變量,所有變量都用浮點(diǎn)值。basic是用于要求編程簡單而對編程效率和運(yùn)行速度要求不高的場合。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ù)運(yùn)算、浮點(diǎn)變量而無豐富的庫函數(shù)支持。學(xué)習(xí)pl/m無異于學(xué)習(xí)一種新語言。c語言是一種源于編寫unix操作系統(tǒng)的語言,它是一種結(jié)構(gòu)化語言,可產(chǎn)生壓縮代碼。

17、c語言結(jié)構(gòu)是以括號 而不是子和特殊符號的語言。c可以進(jìn)行許多機(jī)器級函數(shù)控制而不用匯編語言。與匯編相比,有如下優(yōu)點(diǎn):對單片機(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)試時(shí)間顯著縮短,從而提高效率提供的庫包含許多標(biāo)準(zhǔn)子程序,具有較強(qiáng)的數(shù)據(jù)處理能將已編好程序可容易的植入新程序,因?yàn)樗哂蟹奖愕哪K化編程技術(shù) c語言作為一種非常方便的語言而得到廣泛的支持,c語言程序本身并不依賴于機(jī)器硬件系統(tǒng),基本上不做修改

18、就可根據(jù)單片機(jī)不同較快地移植過來。51的匯編語言非常像其它匯編語言。指令系統(tǒng)比第一代微處理器要強(qiáng)一些。51的不同存儲(chǔ)區(qū)域使得其復(fù)雜一些。盡管懂得匯編語言不是你的目的,看懂一些可幫助你了解影響任何語言效率的51特殊規(guī)定。例如,懂得匯編語言指令就可以使用在片內(nèi)ram作變量的優(yōu)勢,因?yàn)槠庾兞啃枰獛讞l指令才能設(shè)置累加器和數(shù)據(jù)指針進(jìn)行存取。要求使用浮點(diǎn)和啟用函數(shù)時(shí)只有具備匯編編程經(jīng)驗(yàn)才能避免生成龐大的、效率低的程序,這需要考慮簡單的算術(shù)運(yùn)算或先算好的查表法。最好的單片機(jī)編程者應(yīng)是由匯編轉(zhuǎn)用c而不是原來用過標(biāo)準(zhǔn)c語言的人。由此來看,單片機(jī)有著微處理器所不具備的功能,它可單獨(dú)地完成現(xiàn)代工業(yè)控制所要求的智能

19、化控制功能,這是單片機(jī)最大的特征。2.2 ds18b202.2.1ds18b20概述1、一般說明ds18b20數(shù)字溫度計(jì)提供有9位溫度讀數(shù),指示器件的溫度。信息通過單線接口送入ds18b20或者從ds18b20送出。因此從中央處理器到ds18b20 僅需連接一條線(和地)。讀、寫和完成溫度變換所需要的電源可以直接由數(shù)據(jù)線本身提供,而不需要外部電源。因?yàn)槊恳粋€(gè)ds18b20都有唯一的系列號(silicon serial number),因此多個(gè)ds18b20 可以同時(shí)存在于同一條單線總線上。這允許在許多不同的地方放置溫度靈敏器件。此特性的應(yīng)用范圍包括hvac環(huán)境控制、建筑物、設(shè)備或機(jī)械內(nèi)的溫度檢

20、測,以及過程監(jiān)視和控制中的溫度檢測。(1)特性l 特獨(dú)特的單線接口,只需1個(gè)接口引腳即可通信;l 多點(diǎn)(multidrop)能力使分布式溫度檢測應(yīng)用得以簡化;l 不需要外部元件;l 可用數(shù)據(jù)線供電;l 不需備份電源;l 測量范圍從-55至+125增量值為0.5等效的華氏溫度范圍是-67至257, 增量值為0.9;l 以9位數(shù)字值方式讀出溫度;l 在1秒(典型值)內(nèi)把溫度變換為數(shù)字;l 用戶可定義的,非易失性的溫度告警設(shè)置;l 告警搜索命令識別和尋址溫度在編定的極限之外的器件(溫度告警情況);l 應(yīng)用范圍包括恒溫控制,工業(yè)系統(tǒng),消費(fèi)類產(chǎn)品,溫度計(jì)或任何熱敏系統(tǒng)。(2)引腳排列圖2-2 ds18b

21、20引腳圖2.2.2詳細(xì)說明(1)綜述圖2-3的方框圖表示ds18b20的主要部。ds18b20有三個(gè)主要的數(shù)據(jù)部件:64位激光(lasered)rom、溫度靈敏元件以及非易失性溫度告警觸發(fā)器th 和tl。器件從單線的通信線取得其電源,在信號線為高電平的時(shí)間周期內(nèi),把能量貯存在內(nèi)部電容器中;在單信號線為低電平的時(shí)間周期內(nèi)斷開此電源,直到信號線變?yōu)楦唠娖街匦陆由霞纳娙荩╇娫礊橹?。作為另一種可供選擇的方法,ds18b20也可用外部5v電源供電。64位rom與單線接口存儲(chǔ)器與控制邏輯高速暫存器8位crc發(fā)生器溫度傳感器高溫觸發(fā)器th低溫觸發(fā)器tl配置寄存器電源檢 測dqvdd內(nèi)部vdd 圖2-3

22、 ds18b20方框圖與ds18b20的通信經(jīng)過一個(gè)單線接口。在單線接口情況下,rom操作未定建立之前不能使用存貯器和控制操作,主機(jī)必須首先提供五種rom操作命令之一: read rom(讀rom); match rom(符合rom); search rom(搜索rom); skip rom(跳過rom)或者alarm search(告警搜索)。這些命令對每一器件的64位激光rom部分進(jìn)行操作。如果在單線上有許多器件,則可以挑選出一個(gè)特定的器件,并給總線上的主機(jī)指示存在多少器件及其類型。在成功地執(zhí)行了rom操作序列之后,可以使用存貯器和控制操作,然后主機(jī)就可以提供六種存貯器和控制操作命令之一。

23、一個(gè)控制操作命令指示ds18b20完成溫度測量。該測量的結(jié)果將放入ds18b20的高速暫存(便箋式)存貯器(scratchpad memory)。通過發(fā)出讀暫存存儲(chǔ)器內(nèi)容的存儲(chǔ)器操作命令可以讀出此結(jié)果。每一溫度告警觸發(fā)器th和tl構(gòu)成一個(gè)字節(jié)的eeprom。如果不對ds18b20施加告警搜索命令,這些寄存器可以用作通用用戶存儲(chǔ)器。使用存儲(chǔ)器操作命令可以寫th和tl。對這些寄存器的讀訪問通過便箋存儲(chǔ)器,所有數(shù)據(jù)均以最低有效位在前的方式被讀寫。(2)寄生電源(parasite power)方框圖(圖2-4)示出寄生電源電路。當(dāng)i/o或vdd引腳為高電平時(shí),這個(gè)電路便“取”得電源。只要符合指定的定時(shí)

24、和電壓的要求,i/o將提供足夠的功率。寄生電源的優(yōu)點(diǎn)是雙重的:首先利用此引腳遠(yuǎn)程溫度檢測無需本地電源,其次缺少正常電源條件下也可以讀rom。為了使ds18b20能完成準(zhǔn)確的溫度變換,當(dāng)溫度變換發(fā)生時(shí),i/o線上必須提供足夠的功率。因?yàn)閐s18b20的工作電流高達(dá)1ma,5k的上拉電阻將使i/o線沒有足夠的驅(qū)動(dòng)能力。如果幾個(gè)ds18b20在同一條i/o線上并且企圖同時(shí)變換,那么這一問題將變得特別尖銳。有兩種方法確保ds18b20在其有效變換期內(nèi)得到足夠的電源電流。第一種方法是在發(fā)生溫度變換時(shí),i/o線上提供一強(qiáng)的上拉。如圖2-4所示,通過使用一個(gè)mosfet把i/o線直接拉到電源可達(dá)到這一點(diǎn)。當(dāng)

25、使用寄生電源方式時(shí)vdd引腳必須連接到地。向ds18b20供電的另外一種方法是通過使用連接到vdd引腳的外部電源,如圖2-5所示。這種方法的優(yōu)點(diǎn)是在i/o 線上不要求強(qiáng)的上拉。總線上的主機(jī)不需向上連接便可以在溫度變換期間使線保持高電平。這就允許在變換時(shí)間內(nèi)其它數(shù)據(jù)在單線上傳送。另外,在單線總線上可以放置任何數(shù)目的ds18b20,而且如果它們都使用外部電源,那么通過發(fā)出跳過(skip)rom命令接著發(fā)出變換(convert)t命令,就可以同時(shí)完成溫度變換。注意只要外部電源處于工作狀態(tài),gnd引腳不可懸空。圖2-4 強(qiáng)上拉在溫度變換期內(nèi)向ds18b20供電在總線上主機(jī)不知道總線上的ds18b20是

26、寄生電源供電還是外部vdd供電的情況下,在ds18b20內(nèi)采取了措施來通知采用的供電方案??偩€上主機(jī)通過發(fā)出跳過(skip)rom的操作約定,然后發(fā)出讀電源命令,可以決定是否有需要強(qiáng)上拉的ds18b20在總線上。在此命令發(fā)出后,主機(jī)接著發(fā)出讀時(shí)間片。如果是寄生供電,ds18b20將在單線總線上送回“0”:如果由vdd引腳供電,它將送回“1”。如果主機(jī)接收到一個(gè)“0”它知道它必須在溫度變換期間在i/o 線上供一個(gè)強(qiáng)的上拉。(3)運(yùn)用-測量溫度ds18b20通過使用在(on-board)溫度測量專利技術(shù)來測量溫度。溫度測量電路的方框圖見圖2-6所示。ds18b20通過門開通期間內(nèi)低溫度系數(shù)振蕩器經(jīng)

27、歷的時(shí)鐘周期個(gè)數(shù)計(jì)數(shù)來測量溫度,而門開通期由高溫度系數(shù)振蕩器來決定。計(jì)數(shù)器予置對應(yīng)于-55的基數(shù),如果在門開通期結(jié)束前計(jì)數(shù)器達(dá)到零,那么溫度寄存器也被予置到-55的數(shù)值將增量,指示溫度高于-55。圖2-5 使用vdd提供溫度變換所需電流斜率累加器預(yù)置計(jì)數(shù)比較器低溫度系數(shù)振蕩器減法計(jì)數(shù)器1預(yù)置溫度寄存器減到0高溫度系數(shù)振蕩器減法計(jì)數(shù)器2減到0增加停止圖2-6 溫度測量電路同時(shí),計(jì)數(shù)器用鈄率累加器電路所決定的值來進(jìn)行予置。為了對遵循拋物線規(guī)律的振蕩器溫度特性進(jìn)行補(bǔ)償,這種電路是必需的。時(shí)鐘再次使計(jì)數(shù)器計(jì)值直至它達(dá)到零。如果門開通時(shí)間仍未結(jié)束,那么此過程再次重復(fù)。鈄率累加器用于補(bǔ)償振蕩器溫度特性的非

28、線性,用以產(chǎn)生高分辯率的溫度測量。通過改變溫度,每升高一度計(jì)數(shù)器必須經(jīng)歷的計(jì)數(shù)個(gè)數(shù)來進(jìn)行補(bǔ)償。因此,為了獲得所需的分辯率,計(jì)數(shù)器的數(shù)值以及在給定溫度處每一攝氏度的計(jì)數(shù)個(gè)數(shù)(鈄率累加器的值)二者都必須知道。此計(jì)算在ds18b20內(nèi)部完成用以提供0.5的分辯率。溫度讀數(shù)以16位、符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供。表2-1說明輸出數(shù)據(jù)對測量溫度的關(guān)系。數(shù)據(jù)在單線接口上串行發(fā)送。ds18b20可以以0.5的增量值,在0.5至+125的范圍內(nèi)測量溫度,對于應(yīng)用華氏溫度的場合必須使用查找表或變換系數(shù)。注意,在ds18b20 中,溫度是以1/2lsb(最低有效位)形式表示時(shí),產(chǎn)生以下9位格式,如圖2-7。圖

29、2-7 溫度是以1/2lsb形式表示圖最高有效(符號)位被復(fù)制到存儲(chǔ)器內(nèi)兩字節(jié)的溫度寄存器中較高msb的所有位,這種“符號擴(kuò)展”產(chǎn)生了如表2-1所示的16位溫度讀數(shù)。以下的過程可以獲得較高的分辯率,首先讀溫度并從讀得的值截去0.5位(最低有效位)。這個(gè)值便是temp_read。然后可以讀留在計(jì)數(shù)器內(nèi)的值,此值是門開通期停止之后計(jì)數(shù)剩余,公式2-1: (2-1)所需的最后一個(gè)數(shù)值是在該溫度處每一攝氏度的計(jì)數(shù)個(gè)數(shù)(count_per_c),于是用戶可以使用下式計(jì)算實(shí)際溫度,表2-1。(4)運(yùn)用告警信號在ds18b20完成溫度變換之后,溫度值與貯存在th和tl內(nèi)的觸發(fā)值相比較,因?yàn)檫@些寄存器僅僅是8

30、位,所以0.5位在比較時(shí)被忽略。th或tl的最高有效位直接對應(yīng)于16位溫度寄存器的符號位。如果溫度測量的結(jié)果高于th或低于tl,那么器件內(nèi)告警標(biāo)志將置位。每次溫度測量更新此標(biāo)志。只要告警標(biāo)志置位ds18b20將對告警搜索命令作出響應(yīng)。這允許并聯(lián)連接許多ds18b20同時(shí)進(jìn)行溫度測量。如果某處溫度超過極限,那么可以識別出正在告警的器件并且立即將其讀出而不必讀出非告警的器件。(5)64位激光rom每一ds18b20包括一個(gè)唯一的64 位長的rom 編碼。開始的8位是單線產(chǎn)品系列編碼(ds18b20編碼是10h)。接著的48位是唯一的系列號。最后的8位是開始56位crc (見圖2-8)。64位rom

31、和rom操作控制部分允許ds18b20作為一個(gè)單線器件工作并且遵循“單線總線系統(tǒng)”一節(jié)中所詳述的單線協(xié)議。直到rom操作協(xié)議被滿足,ds18b20控制部分的功能是不可訪問的。此協(xié)議在rom操作協(xié)議流程圖(圖2-9)中敘述。單線總線主機(jī)必須首先操作五種rom操作命令之一: read rom(讀rom); match rom(匹配rom); search rom(搜索rom); skip rom(跳過rom)或 alarm search(告警搜索)。在成功地執(zhí)行了rom操作序列之后,ds18b20特定的功能便可訪問,然后總線上主機(jī)可以提供六個(gè)存貯器和控制功能命令之一。表2-1 溫度/數(shù)據(jù)關(guān)系溫 度

32、數(shù)字輸出/(二進(jìn)制)安息字輸出(十六進(jìn)制)+12500000000 1111101000fah+2500000000 001100100032h+1/200000000 000000010001h+000000000 000000000000h-1/211111111 11111111ffffh-2511111111 11001110ffceh-5511111111 10010010ff92h8位crc編號48位序列號8位產(chǎn)品系列編碼msb lsb msb lse msb lsb(最高有效位)(最低有效位)圖2-8 64位激光rom上位機(jī)tx復(fù)位脈沖ds18b20 tx存在脈沖上位機(jī)tx ro

33、m操作命令33h55hf0hechcchds18b20 txfamily cooeds18b20 tx系列碼上位機(jī)txbit 0繼續(xù)警告ds18b20 tx bit 0ds18b20 tx 非bit 0上位機(jī)tx bit 0bit0上位機(jī)?ds18b20 txcrc 碼bit0上位機(jī)?上位機(jī)tx bit 1ds18b20 tx bit 1ds18b20 tx 非bit 1上位機(jī)tx bit 1bit1上位機(jī)?bit1上位機(jī)?上位機(jī)tx bit 63bit63上位機(jī)?bit63上位機(jī)?ds18b20 與上位機(jī)tx bit 63上位機(jī)tx memory or control 功能命令nnnnnyy

34、yyyynnnnnnnyyyy圖2-9 rom操作流程圖(6)crc 產(chǎn)生ds18b20有一存貯在64位rom的最高有效字節(jié)內(nèi)的8位crc??偩€上的主機(jī)可以根據(jù)64位rom的前56位計(jì)算機(jī)crc的值并且把它與存貯在ds18b20內(nèi)部的值進(jìn)行比較來決定rom的數(shù)據(jù)是否已被主機(jī)正確地接收。crc的等效多項(xiàng)式函數(shù)為(公式2-2): (2-2)ds18b20也利用與上述相同的多項(xiàng)式函數(shù)產(chǎn)生一個(gè)8位的crc值并把此值提供給總線的主機(jī)以確認(rèn)數(shù)據(jù)字節(jié)的傳送。在使用crc來確認(rèn)數(shù)據(jù)傳送的每一種情況中,總線主機(jī)必須使用上面給出的多項(xiàng)式函數(shù)來計(jì)算crc的值并把計(jì)算所得的值或者與存貯在ds18b20的64位rom部

35、分中的8位crc值(rom 讀數(shù))或者與ds18b20中計(jì)算得到的8位crc值(在讀暫存存貯器中時(shí),它作為第九個(gè)字節(jié)被讀出)進(jìn)行比較。crc值的比較和是否繼續(xù)操作都是由總線主機(jī)來決定的。當(dāng)存貯在ds18b20內(nèi)或由ds18b20計(jì)算得到的crc值與總線主機(jī)產(chǎn)生的值不符合時(shí),在ds18b20內(nèi)沒有電路來阻止命令序列的繼續(xù)執(zhí)行??偩€crc可以使用如圖2-10所示,由一個(gè)移位寄存器和“異或”(xor)門組成的多項(xiàng)式產(chǎn)生器來產(chǎn)生。其它有關(guān)dallas公司單線循環(huán)冗余校驗(yàn)的信息可參見標(biāo)題為“理解和使用dallas 半導(dǎo)體公司接觸式存貯器產(chǎn)品”的應(yīng)用注釋。移位寄存器的所有位被初始化為零。然后從產(chǎn)品系列編碼

36、的最低有效位開始,每次移入一位,當(dāng)產(chǎn)品系列編碼的8 位移入以后,接著移入序列號。在序列號的第48 位進(jìn)入后,移位寄存器便包含了crc值。移入crc的8位應(yīng)該使移位寄存器返回至全零。圖2-10 單線crc編碼(7)存貯器ds18b20的存貯器如圖2-11所示那樣被組織。存貯器由一個(gè)高速暫存(便箋式)ram 和一個(gè)非易失性電可擦除eeram 組成,后者存貯高溫度和低溫度以及觸發(fā)器th 和tl。暫存存貯器有助于在單線通信時(shí)確保數(shù)據(jù)的完整性。數(shù)據(jù)首先寫入暫存存貯器中,在那里它可以被讀回。當(dāng)數(shù)據(jù)被校驗(yàn)之后,復(fù)制暫存存貯器的命令并把數(shù)據(jù)傳送到非易失性eeram。這一過程確保了更改存貯器時(shí)數(shù)據(jù)的完整性。暫存

37、存貯器是按8 位字節(jié)存儲(chǔ)器來組織的。頭兩個(gè)字節(jié)包含測得溫度的信息,第三和第四個(gè)字節(jié)是th和tl的易失性拷貝,在每一次上電復(fù)位時(shí)被刷新。接著的兩個(gè)字節(jié)沒有使用,但是在讀回時(shí)它們呈現(xiàn)為邏輯全1。 scratchpad byte e2ramtemperature lsb012345678temperature msbth/userbyte1 th/userbyte1tl/userbvte2 tl/userbvte2reservedreservedcount remaincount percrc圖2-11 ds18b20存貯器映象圖2.2.3ds18b20的硬件連接ds18b20與單片機(jī)的接口極其簡單

38、,只需將ds18b20的信號線與單片機(jī)的一位雙向端口相連即可。如圖2-12(a)所示。此時(shí)應(yīng)注意將vdd、dq、gnd三線焊接牢固。另外也可用兩個(gè)端口,即接收口與發(fā)送口分開,這樣讀寫操作就分開了,不會(huì)出現(xiàn)信號競爭的問題。如圖2-12(b)所示。此圖是采用寄生電源方式,將ds18b20的vdd和gnd接在一起。如果vdd脫開未接好,傳感器將只送+85.0的溫度值。一般測溫電纜線采用屏蔽4芯雙絞線,其中一對接地線與信號線,另一對接vdd和地線,屏蔽層在源端單點(diǎn)接地。圖2-12 ds18b20與單片機(jī)的接口3 硬件設(shè)計(jì)基于單片機(jī)的溫度監(jiān)控主要有以下幾部分:溫度檢測數(shù)據(jù)采集部分,lcd液晶顯示部分、報(bào)

39、警及控制輸出部分、單片機(jī)及按鍵電路設(shè)計(jì)等幾個(gè)部分,下面分別加以介紹,硬件模塊如圖3-1所示。at89s52溫度采集模塊(ds18b20溫度計(jì))鍵盤調(diào)整模塊電源模塊加熱處理模塊報(bào)警電路模塊(蜂鳴器)溫度顯示模塊(采集到的實(shí)時(shí)溫度)圖3-1 硬件模塊圖3.1 溫度檢測部分溫度傳感器有很多種,如熱敏電阻、熱電偶、pn結(jié)、半導(dǎo)體溫度傳感器等。這里選用單總線數(shù)字輸出的集成半導(dǎo)體溫度傳感器ds18b20,其特點(diǎn)是:獨(dú)特的單線接口方式,ds18b20在與微處理器連接時(shí)只需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20的雙向通訊;測溫范圍55125,固有測溫分辨率0.5;支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20可以并

40、聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)測溫;工作電源:35v/dc。溫度檢測數(shù)據(jù)采集電路如圖3-2所示,由溫度傳感器ds18b20采集被控對象的實(shí)時(shí)溫度,提供給at89s52的i/o口作為數(shù)據(jù)輸入。在本次設(shè)計(jì)中我們所控的對象為環(huán)境監(jiān)測的溫度。圖3-2 溫度傳感器電路3.2 lcd液晶顯示部分用來顯示的模塊,一般有七段數(shù)碼管和字符型液晶兩種。其中l(wèi)ed的發(fā)光部分由發(fā)光二極管拼裝組成,其特點(diǎn)是亮度高、耗電少、工作電壓低、功耗小、驅(qū)動(dòng)簡單、壽命長、易與集成電路匹配、耐沖擊、性能穩(wěn)定。顯示屏面積可以根據(jù)需要由單元模塊任意拼裝,強(qiáng)大的視覺沖擊力將信息、文字、圖片、動(dòng)畫、視頻等多種方式顯示出來, 成為信息傳播的劃時(shí)代

41、產(chǎn)品,在鐵路民航、體育場館、會(huì)議廳等場所。其次,就是字幅型液晶顯示模塊。它是一種專門用于顯示字母,數(shù)字,符號等的點(diǎn)陣式液晶顯示模塊。在顯示器件上的電極圖型設(shè)計(jì),它是由若干個(gè)5*7或5*11等點(diǎn)陣符位組成。每一個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符,點(diǎn)陣字符位之間有一空點(diǎn)距的間隔起到了字符間距和行距的作用。由于液晶顯示可以顯示字母和各種符號,所以我選擇了lcd1602液晶顯示器。3.2.1lcd1602的管腳介紹lcd1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:vss為地電源;第2腳:vdd接5v正電源;第3腳:v0為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地電源時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生

42、“鬼影”,外接1個(gè)10k的電位器可調(diào)整對比度;第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器;第5腳:rw為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和rw共同為低電平時(shí)可以寫入指令或者顯示地址。rw為高電平時(shí)可以讀忙信號,當(dāng)rs 為高電平rw為低電平時(shí)可以寫入數(shù)據(jù);第6腳:e端為使能端,當(dāng)e端由低電平跳變成高電平時(shí),液晶模塊執(zhí)行命令;第714腳:d0d7為8位雙向數(shù)據(jù)線;第15腳:背光源正極;第16腳:背光源接地。3.2.2lcd1602的基本操作(1)lcd1602基本操作時(shí)序:讀狀態(tài):輸入:rs=l,rw=h,e=h;輸出:d0d7狀態(tài)字寫指令:

43、輸入:rs=l,rw=l,d0d7=指令碼,e=高脈沖;輸出:無讀數(shù)據(jù):輸入:rs=h,rw=h,e=h;輸出:d0d7數(shù)據(jù)寫數(shù)據(jù):輸入:rs=h,rw=l,d0d7數(shù)據(jù),e=高脈沖;輸出:無讀操作的時(shí)序如圖3-3所示:圖3-3 讀操作的時(shí)序?qū)懖僮鞯臅r(shí)序圖3-4所示:圖3-4 寫操作的時(shí)序時(shí)序時(shí)間參數(shù)如表3-1所示:表3-1 時(shí)序時(shí)間參數(shù)1602 lcd的控制器內(nèi)置有80個(gè)byte的顯存,而1602 lcd只有兩行16個(gè)字符的顯示區(qū)域,所以顯存中有些地址是無法對應(yīng)上lcd屏的,下圖3-5為顯存地址對應(yīng)圖lcd的地址。 圖3-5 顯存地址3.2.3lcd1602的控制指令lcd1602液晶模塊內(nèi)

44、部的控制器共有11條控制指令,如表3-2所示:表3-2 lcd的控制指令表它的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)。指令1:清顯示,指令碼01h,光標(biāo)復(fù)位到地址00h位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00h。指令3:光標(biāo)和顯示模式設(shè)置 i/d:光標(biāo)移動(dòng)方向,高電平右移,低電平左移s:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則表示無效。 指令4:顯示開關(guān)控制。d:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示;c:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo);b:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5

45、:光標(biāo)或顯示移位s/c:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)的光標(biāo)。指令6:功能設(shè)置命令:dl:高電平時(shí)為4位總線,低電平時(shí)為8位總線;n:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示;f: 低電平時(shí)顯示57的點(diǎn)陣字符,高電平時(shí)顯示510的點(diǎn)陣字符。指令7:字符發(fā)生器ram地址設(shè)置。 指令8:ddram地址設(shè)置。 指令9:讀忙信號和光標(biāo)地址:bf:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。 指令10:寫數(shù)據(jù)。 指令11:讀數(shù)據(jù)。 液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令前一定要確認(rèn)模塊的忙標(biāo)志為低電平(表示不忙),否則此指令失效。要顯示字符時(shí)要先輸入顯示字符

46、地址,也就是告訴模塊在哪里顯示字符。程序在開始時(shí)對液晶模塊功能進(jìn)行了初始化設(shè)置,約定了顯示格式。由于lcd1602是慢顯示器件,因此在兩次顯示之間需要一個(gè)小小的時(shí)間間隔,間隔太小會(huì)導(dǎo)致刷新率太高,從而導(dǎo)致顯示過于閃爍。因此在初始化這個(gè)過程中先延時(shí)25ms,然后再進(jìn)行初始化,其過程為先進(jìn)行模式設(shè)置,再關(guān)閉顯示,其次再顯示清屏、顯示光標(biāo)移動(dòng)設(shè)置、顯示開及光標(biāo)設(shè)置。表3-3 cgrom和cgram字符圖形代碼對應(yīng)表lcd1602液晶顯示電路如圖3-6所示:圖3-6 lcd液晶顯示電路3.3 單片機(jī)及按鍵電路設(shè)計(jì) 圖3-7為單片機(jī)及按鍵、復(fù)位電路的電路圖,單片機(jī)at89s52的時(shí)鐘引腳外接11.059

47、2m晶振,作為單片機(jī)工作的時(shí)鐘,ea端接高電平,表示使用片內(nèi)程序存儲(chǔ)器。rst引腳接了上電復(fù)位電路,當(dāng)系統(tǒng)上電時(shí),上電復(fù)位電路會(huì)產(chǎn)生一個(gè)高電平脈沖信號,使系統(tǒng)復(fù)位。圖3-7 按鍵、復(fù)位電路圖鍵盤是標(biāo)準(zhǔn)的輸入設(shè)備,實(shí)現(xiàn)鍵盤有兩種方案:一種是采用現(xiàn)有的一些芯片實(shí)現(xiàn)鍵盤掃描,如8279, ch451, lmc9768等;還有就是用軟件實(shí)現(xiàn)鍵盤掃描。使用現(xiàn)成的芯片可以節(jié)省cpu的開銷,但增加了成本,而用軟件實(shí)現(xiàn)具有較強(qiáng)的靈活性,也只需要較少的cpu開銷,可以節(jié)省開發(fā)成本。本文便使用軟件實(shí)現(xiàn)鍵盤的掃描。常見的鍵盤可以分為獨(dú)立按鍵式鍵盤和行列掃描式鍵盤。獨(dú)立按鍵式鍵盤應(yīng)用在需要少量按鍵的情況下,按鍵和單片

48、機(jī)的i/o口線直接連接。而行列掃描式鍵盤用在按鍵需求較多的情況下??紤]到本次設(shè)計(jì)只對溫度上限的增加和減少,因此使用獨(dú)立按鍵式鍵盤就已經(jīng)足夠了。理論上當(dāng)按鍵按下或彈起時(shí),可以相應(yīng)的產(chǎn)生低電平或者高電平,但實(shí)際并非如此。鍵盤按鍵一般都是采用觸點(diǎn)式按鍵開關(guān)。當(dāng)按鍵被按下或釋放時(shí),按鍵觸點(diǎn)的彈性會(huì)產(chǎn)生抖動(dòng)現(xiàn)象,即當(dāng)按鍵按下時(shí)觸點(diǎn)不會(huì)迅速可靠地接通,當(dāng)按鍵釋放時(shí),觸點(diǎn)也不會(huì)立即斷開,而是要經(jīng)過一段時(shí)間的抖動(dòng)才能穩(wěn)定下來,按鍵材料不同,抖動(dòng)時(shí)間也各不相同。圖3-8 按鍵抖動(dòng)示意圖一次完整的按鍵過程,包含以下幾個(gè)階段,如圖3-8所示。1) 等待階段:此時(shí)按鍵尚未按下,處于空閑階段;2) 閉合抖動(dòng)階段:此時(shí)按

49、鍵剛剛按下,但信號處于抖動(dòng)狀態(tài),系統(tǒng)在檢測時(shí)應(yīng)消抖延時(shí),約5ms到20ms;3) 有效閉合階段:此時(shí)抖動(dòng)己經(jīng)結(jié)束,一個(gè)有效按鍵動(dòng)作己經(jīng)產(chǎn)生,系統(tǒng)應(yīng)該在此時(shí)執(zhí)行按鍵功能,或者將按鍵編碼記錄下來,等待鍵彈起時(shí)再執(zhí)行其功能;4) 釋放抖動(dòng)階段:許多時(shí)候編程人員并不在此時(shí)消抖延時(shí),但最好也執(zhí)行一次消抖延時(shí),以防止誤操作;5) 有效釋放階段:若設(shè)計(jì)要求在按鍵抬起時(shí)才執(zhí)行功能,則應(yīng)當(dāng)在此時(shí)進(jìn)行按鍵功能的處理。軟件上對閉合階段的抖動(dòng)一般采用延時(shí)再次確認(rèn)按鍵是否按下的方式消除抖動(dòng)。如上圖3-4所示,完成系統(tǒng)的被測環(huán)境溫度和當(dāng)前環(huán)境溫度的高低調(diào)整的按鍵分別接到單片機(jī)的p2.5和p2.6口上,供單片機(jī)來回掃描查詢

50、,當(dāng)沒有按鍵按下時(shí),單片機(jī)i/o口p2.5和p2.6口輸入高電平,當(dāng)有按鍵按下時(shí),對應(yīng)的單片機(jī)端口變?yōu)榈碗娖?,單片機(jī)通過檢測這種電平的變化確定按鍵的狀態(tài)。3.4 報(bào)警電路模塊報(bào)警電路主要是由蜂鳴器組成。當(dāng)溫度超過或者低于警戒溫度時(shí),都會(huì)有聲響警報(bào)。報(bào)警電路如下圖3-9:蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。1壓電式蜂鳴器:壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管、多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.5v-15v直流工作電壓),多諧振蕩器起振,輸出1.5-2.5khz的音頻信號,阻抗匹配器推動(dòng)壓電

51、蜂鳴片發(fā)聲。壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。2電磁式蜂鳴器:電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動(dòng)膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動(dòng)膜片在電磁線圈和磁鐵的相互作用下,周期性地振動(dòng)發(fā)聲。從經(jīng)濟(jì)和易于控制的角度去考慮,我選著了電磁式蜂鳴器的有源蜂鳴器。在單片機(jī)的輸出口再加上一個(gè)pnp型的8550,起增大單片機(jī)的輸出電流,使蜂鳴器發(fā)出的聲音更響。圖3-9 報(bào)警電路圖3.5 加熱處理模塊加熱處理模塊主要是由8550和繼電器組成。當(dāng)溫度超過設(shè)定溫度時(shí)通

52、過電阻絲來加熱,電路如下圖3-10:j1口接單片機(jī)的輸出端j2口分別接+5v和gnd,當(dāng)單片機(jī)輸出高電平時(shí),經(jīng)過8550的放大后,能驅(qū)動(dòng)繼電器線圈通電,然后觸點(diǎn)接合,電阻絲加熱。繼電器:繼電器是一種電子控制器件,線圈中就會(huì)流過一定的電流,從而產(chǎn)生電磁效應(yīng),銜鐵便會(huì)在電磁力吸引的作用下克服返回彈簧的拉力吸向鐵芯,從而帶動(dòng)銜鐵的動(dòng)觸點(diǎn)與靜觸點(diǎn)(常開觸點(diǎn))吸合。它具有控制系統(tǒng)(又稱輸入回路)以及被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動(dòng)控制電路中,它實(shí)際上是用較小的電流去控制較大電流的一種“自動(dòng)開關(guān)”。所以在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。繼電器結(jié)構(gòu)圖如圖3-11:在繼電器的4腳和5腳

53、加上續(xù)流二極管,二極管的負(fù)極接在4管腳上,負(fù)極接在5管腳上,如圖3-10所示。當(dāng)線圈得電,這時(shí)繼電器開關(guān)閉合,電路就處于工作狀態(tài)。當(dāng)線圈失電,開關(guān)斷開電路不工作。但這時(shí)出現(xiàn)一個(gè)問題,線圈可以儲(chǔ)存能量的(線圈會(huì)阻止電流的突變,也就是電磁感應(yīng)作用,即電流只能慢慢增大和減少),如果這時(shí)一下使線圈斷電,它兩端就會(huì)產(chǎn)生很大的電壓,這樣就可能使線圈損壞、相連接的元器件擊穿。這時(shí),我們只要在線圈兩端接上二極管,便可以使它產(chǎn)生一個(gè)回路(斷電時(shí)相當(dāng)于在線圈兩端接根短路線),使線圈儲(chǔ)存的能量放完。這個(gè)二極管在這里起到續(xù)流的作用,我們通常稱之為續(xù)流二極管。圖3-10 加熱及制冷處理電路圖圖3-11 繼電器結(jié)構(gòu)圖4

54、軟件系統(tǒng)設(shè)計(jì) 加熱初始化開始設(shè)定溫度當(dāng)前溫度是否達(dá)到設(shè)定溫度pid算法顯示當(dāng)前溫度停止加熱 圖4-1 主程序流程圖該系統(tǒng)的軟件設(shè)計(jì)分為以下幾個(gè)模塊:主程序模塊、分頻模塊、溫度采集模塊、鍵盤模塊、液晶顯示模塊以及pid控制模塊。主程序主要完成初始化、檢查有無按鍵按下以及調(diào)用顯示、調(diào)用溫度等等。其基本思路是,首先對ds18b20和lcd1602進(jìn)行初始化,調(diào)用溫度模塊,獲取當(dāng)前環(huán)境溫度數(shù)據(jù),經(jīng)過處理后,調(diào)用lcd1602液晶顯示子程序來顯示數(shù)據(jù)。完成這些步驟后,繼續(xù)掃描鍵盤是否被按下,如果按下則進(jìn)行相應(yīng)的設(shè)定溫度增減。其流程圖如圖4-1所示。4.1 單片機(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)點(diǎn):(1)對單片機(jī)的指令系統(tǒng)不要求了解,僅要求對8051的存貯器結(jié)構(gòu)有初步了解;(2)寄存器分配、不同存貯器的尋址以及數(shù)據(jù)類型等細(xì)節(jié)可由編譯器管理;(3)

溫馨提示

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

評論

0/150

提交評論