基于51單片機(jī)的溫控風(fēng)扇設(shè)計(jì)
摘要
在炎熱的夏天人們用電風(fēng)扇來(lái)降溫;在工業(yè)生產(chǎn)中,大型機(jī)械用電風(fēng)扇來(lái)散熱等。隨著溫度控制的技術(shù)不斷發(fā)展,應(yīng)運(yùn)而生的溫控電風(fēng)扇也逐漸走進(jìn)了人們的生活中。溫控電風(fēng)扇可以根據(jù)環(huán)境溫度自動(dòng)調(diào)節(jié)電風(fēng)扇啟停與轉(zhuǎn)速,在實(shí)際生活的使用中,溫控風(fēng)扇不僅可節(jié)省寶貴的電資源,也大大方便了人們的生活和生產(chǎn)。
本設(shè)計(jì)為一種溫控風(fēng)扇系統(tǒng),具有靈敏的溫度感測(cè)和顯示功能,系統(tǒng)采用STC89C51 單片機(jī)作為控制平臺(tái)對(duì)風(fēng)扇轉(zhuǎn)速進(jìn)行控制。利用DS18B20數(shù)字溫度傳感器采集實(shí)時(shí)溫度,經(jīng)單片機(jī)處理后通過(guò)三極管驅(qū)動(dòng)直流風(fēng)扇的電機(jī)。根據(jù)采集的實(shí)時(shí)溫度,實(shí)現(xiàn)了風(fēng)扇的自起自停。可由用戶設(shè)置高、低溫度值,測(cè)得溫度值在高低溫度之間時(shí)打開(kāi)風(fēng)扇弱風(fēng)檔,當(dāng)溫度升高超過(guò)所設(shè)定的溫度時(shí)自動(dòng)切換到大風(fēng)檔,當(dāng)溫度小于所設(shè)定的溫度時(shí)自動(dòng)關(guān)閉風(fēng)扇,控制狀態(tài)隨外界溫度而定。
目錄
前 言
第1章 緒論
1.1 研究本課題的目的和意義
1.2 發(fā)展現(xiàn)狀
第2章 整體方案選擇
2.1 溫度傳感器的選用
2.2 主控機(jī)的選擇
2.3顯示電路
2.4調(diào)速方式
第3章 系統(tǒng)硬件組成
3.1 系統(tǒng)結(jié)構(gòu)
3.2 主控芯片介紹
3.2.1 STC89C51簡(jiǎn)介
3.2.2 STC89C51主要功能和性能參數(shù)
3.2.3 STC89C51單片機(jī)引腳說(shuō)明
3.2.4 STC89C51單片機(jī)最小系統(tǒng)
3.2.5 STC89C51中斷技術(shù)概述
3.3 DS18B20溫度采集電路
3.3.1 DS18B20 的特點(diǎn)及內(nèi)部構(gòu)造
3.3.3 DS18B20的工作原理
3.3.3 DS18B20的工作時(shí)序
3.4 數(shù)碼管驅(qū)動(dòng)顯示電路
3.4.1 數(shù)碼管驅(qū)動(dòng)電路
3.4.2 數(shù)碼管顯示電路
3.5 風(fēng)扇驅(qū)動(dòng)電路
3.6 按鍵模塊
第4章 系統(tǒng)軟件設(shè)計(jì)
4.1 軟件介紹
4.1.1 Keil C51
4.1.2 Protel99SE
4.1.3 Proteus
4.2 主程序流程圖
4.3 DS18B20子程序流程圖
4.4 數(shù)碼管顯示子程序流程圖
4.5 按鍵子程序流程圖
第5章 系統(tǒng)調(diào)試
5.1 軟硬件調(diào)試
5.1.1 按鍵顯示部分的調(diào)試
5.1.2 傳感器DS18B20溫度采集部分調(diào)試
5.1.3 風(fēng)扇調(diào)速電路部分調(diào)試
5.2 系統(tǒng)功能
5.2.1 系統(tǒng)實(shí)現(xiàn)的功能
5.2.2 系統(tǒng)功能分析
結(jié) 論
謝 辭
參考文獻(xiàn)
附 錄
附錄1:protel原理圖
附錄2:proteus仿真圖
附錄3:源程序
外文資料譯文
前 言
在現(xiàn)代社會(huì)中,風(fēng)扇被廣泛的應(yīng)用,發(fā)揮著舉足輕重的作用,如夏天人們用的散熱風(fēng)扇、工業(yè)生產(chǎn)中大型機(jī)械中的散熱風(fēng)扇以及現(xiàn)在筆記本電腦上廣泛使用的智能CPU風(fēng)扇等。而隨著溫度控制技術(shù)的發(fā)展,為了降低風(fēng)扇運(yùn)轉(zhuǎn)時(shí)的噪音以及節(jié)省能源等,溫控風(fēng)扇越來(lái)越受到重視并被廣泛的應(yīng)用。
隨著單片機(jī)在各個(gè)領(lǐng)域的廣泛應(yīng)用,許多用單片機(jī)作控制的溫度控制系統(tǒng)也應(yīng)運(yùn)而生,如基于單片機(jī)的溫控風(fēng)扇系統(tǒng)。它使風(fēng)扇根據(jù)環(huán)境溫度的變化實(shí)現(xiàn)自動(dòng)啟停,使風(fēng)扇轉(zhuǎn)速隨著環(huán)境溫度的變化而變化,實(shí)現(xiàn)了風(fēng)扇的智能控制。它的設(shè)計(jì)為現(xiàn)代社會(huì)人們的生活以及生產(chǎn)帶來(lái)了諸多便利,在提高人們的生活質(zhì)量、生產(chǎn)效率的同時(shí)還能節(jié)省風(fēng)扇運(yùn)轉(zhuǎn)所需的能量。
本文設(shè)計(jì)了基于單片機(jī)的溫控風(fēng)扇系統(tǒng),用單片機(jī)為控制器,利用溫度傳感器DS18B20作為溫度采集元件,并根據(jù)采集到的溫度,通過(guò)兩個(gè)三極管驅(qū)動(dòng)風(fēng)扇電機(jī)。根據(jù)檢測(cè)到的溫度與系統(tǒng)設(shè)定的溫度比較實(shí)現(xiàn)風(fēng)扇電機(jī)的自動(dòng)啟動(dòng)和停止,并能根據(jù)溫度的變化自動(dòng)改變風(fēng)扇電機(jī)的轉(zhuǎn)速檔位,同時(shí)用LED八段數(shù)碼管顯示檢測(cè)到的溫度與當(dāng)前檔位。系統(tǒng)的預(yù)設(shè)溫度的設(shè)置是通過(guò)三個(gè)獨(dú)立按鍵來(lái)實(shí)現(xiàn)的,一個(gè)是設(shè)置按鍵,一個(gè)是增大預(yù)設(shè)溫度,一個(gè)是減小預(yù)設(shè)溫度。
第1章 緒論
1.1 研究本課題的目的和意義
生活中,我們經(jīng)常會(huì)使用一些與溫度有關(guān)的設(shè)備。比如,現(xiàn)在雖然不少城市家庭用上了空調(diào),但在占中國(guó)大部分人口的農(nóng)村地區(qū)依舊使用電風(fēng)扇作為降溫防暑設(shè)備,春夏(夏秋)交替時(shí)節(jié),白天溫度依舊很高,電風(fēng)扇應(yīng)高轉(zhuǎn)速、大風(fēng)量,使人感到清涼;到了晚上,氣溫降低,當(dāng)人入睡后,應(yīng)該逐步減小轉(zhuǎn)速,以免使人感冒。雖然風(fēng)扇都有調(diào)節(jié)不同檔位的功能,但必須要人手動(dòng)換檔,睡著了就無(wú)能為力了,而普遍采用的定時(shí)器關(guān)閉的做法,一方面是定時(shí)時(shí)間長(zhǎng)短有限制,一般是一兩個(gè)小時(shí);另一方面可能在一兩個(gè)小時(shí)后氣溫依舊沒(méi)有降低很多,而風(fēng)扇就關(guān)閉了,使人在睡夢(mèng)中熱醒而不得不起床重新打開(kāi)風(fēng)扇,增加定時(shí)器時(shí)間,非常麻煩,而且可能多次定時(shí)后最后一次定時(shí)時(shí)間太長(zhǎng),在溫度降低以后風(fēng)扇依舊繼續(xù)吹風(fēng),使人感冒;第三方面是只有簡(jiǎn)單的到了定時(shí)時(shí)間就關(guān)閉風(fēng)扇電源的單一功能,不能滿足氣溫變化對(duì)風(fēng)扇風(fēng)速大小的不同要求。又比如在較大功率的電子產(chǎn)品散熱方面,現(xiàn)在絕大多數(shù)都采用了風(fēng)冷系統(tǒng),利用風(fēng)扇引起空氣流動(dòng),帶走熱量,使電子產(chǎn)品不至于發(fā)熱燒壞。要使電子產(chǎn)品保持較低的溫度,必須用大功率、高轉(zhuǎn)速、大風(fēng)量的風(fēng)扇,而風(fēng)扇的噪音與其功率成正比。如果要低噪音,則要減小風(fēng)扇轉(zhuǎn)速,又會(huì)引起電子設(shè)備溫度上升,不能兩全其美。為解決上述問(wèn)題,我們?cè)O(shè)計(jì)了這套溫控風(fēng)扇系統(tǒng)。本系統(tǒng)采用高精度集成溫度傳感器,用單片機(jī)控制,能顯示實(shí)時(shí)溫度,并根據(jù)使用者設(shè)定的溫度自動(dòng)在相應(yīng)溫度時(shí)作出小風(fēng)、大風(fēng)、停機(jī)動(dòng)作,精確度高,動(dòng)作準(zhǔn)確。
1.2 發(fā)展現(xiàn)狀
當(dāng)今社會(huì)已經(jīng)完全進(jìn)入了電子信息化,溫度控制器在各行各業(yè)中已經(jīng)得到了充分的利用。具有對(duì)溫度進(jìn)行實(shí)時(shí)監(jiān)控的功能,以保證工業(yè)儀器,測(cè)量工具,農(nóng)業(yè)種植的正常運(yùn)作,它的最大特點(diǎn)是能實(shí)時(shí)監(jiān)控周?chē)鷾囟鹊母叩停⒛芡瑫r(shí)控制電機(jī)運(yùn)作來(lái)改變溫度。它的廣泛應(yīng)用和普及給人們的日常生活帶來(lái)了方便。
溫控風(fēng)扇是用單片機(jī)系統(tǒng)來(lái)完成的一個(gè)小型的控制系統(tǒng)。現(xiàn)階段運(yùn)用與國(guó)內(nèi)大部分家庭,系統(tǒng)效率越來(lái)越高,成本也越來(lái)越低。其發(fā)展趨勢(shì)可以根據(jù)其性質(zhì)進(jìn)行相應(yīng)的改進(jìn)可以運(yùn)用與不同場(chǎng)合的溫度監(jiān)測(cè)控制,并帶來(lái)大量的經(jīng)濟(jì)效益。
第2章 整體方案選擇
2.1 溫度傳感器的選用 溫度傳感器可由以下幾種方案可供選擇: 方案一:選用熱敏電阻作為感測(cè)溫度的核心元件,通過(guò)運(yùn)算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進(jìn)而導(dǎo)至的輸出電壓變化的微弱電壓變化信號(hào),再用AD轉(zhuǎn)換芯片ADC0809將模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)輸入單片機(jī)處理。具體方案如果2-1 圖2-1 熱敏溫度采集電路 方案二:采用熱電偶作為感測(cè)溫度的核心元件,配合橋式電路,運(yùn)算放大電路和AD轉(zhuǎn)換電路,將溫度變化信號(hào)送入單片機(jī)處理。此方案原理和方案一的原理大同小異,AD轉(zhuǎn)換電路一樣,就是模擬量輸入的處理方式不一樣,熱電偶的還需要配合橋式電路,整體更加復(fù)雜點(diǎn),但是此方案的測(cè)溫范圍更廣。 方案三:采用數(shù)字式集成溫度傳感器DS18B20作為感測(cè)溫度的核心元件,直接輸出數(shù)字溫度信號(hào)供單片機(jī)處理。 圖2-2 DS18B20溫度采電路 對(duì)于方案一,采用熱敏電阻有價(jià)格便宜、元件易購(gòu)的優(yōu)點(diǎn),但熱敏電阻對(duì)溫度的細(xì)微變化不敏感,AD0809也只有8位,所以顯示溫度也只能顯示到度,不能顯示到小數(shù)。在信號(hào)采集、放大、轉(zhuǎn)換過(guò)程中還會(huì)產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關(guān)系的非線性,其本身電阻對(duì)溫度的變化存在較大誤差,雖然可以通過(guò)一定電路予以糾正,但不僅將使電路復(fù)雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測(cè)到小的溫度變化。故該方案不適合本系統(tǒng)。 對(duì)于方案二,采用熱電偶和橋式測(cè)量電路相對(duì)于熱敏電阻其對(duì)溫度的敏感性和器件的非線性誤差都有較大提高,其測(cè)溫范圍也非常寬,從-50攝氏度到1600攝氏度均可測(cè)量。但是依然存在電路復(fù)雜,對(duì)溫度敏感性達(dá)不到本系統(tǒng)要求的標(biāo)準(zhǔn),故不采用該方案。 對(duì)于方案三,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測(cè)溫度的原理與上述兩種方案的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉(zhuǎn)換成數(shù)字量直接輸出,簡(jiǎn)化了系統(tǒng)程序設(shè)計(jì),又由于該傳感器采用先進(jìn)的單總線技術(shù)(1-WRIE),與單片機(jī)的接口變的非常簡(jiǎn)潔,抗干擾能力強(qiáng)。關(guān)于DS18B20的詳細(xì)參數(shù)參看下面“硬件設(shè)計(jì)”中的器件介紹。
2.2 主控機(jī)的選擇 方案一:采用凌陽(yáng)系列單片機(jī)作為系統(tǒng)的控制器,凌陽(yáng)系列單片機(jī)可以實(shí)現(xiàn)各種復(fù)雜的邏輯功能,模塊大,密度高,它將所有器件集成在一塊芯片上,減少了體積,提高了穩(wěn)定性。凌陽(yáng)系列單片機(jī)提高了系統(tǒng)的處理速度,適合作為大規(guī)模實(shí)時(shí)系統(tǒng)的控制核心。 方案二:采用單片機(jī)作為控制核心。以軟件編程的方法進(jìn)行溫度判斷,并在端口輸出控制信號(hào)。 因51單片機(jī)價(jià)格比凌陽(yáng)系列低得多,且本設(shè)計(jì)不需要很高的處理速度,從經(jīng)濟(jì)和方便使用角度考慮,本設(shè)計(jì)選擇了方案二。對(duì)于方案二,以單片機(jī)作為控制器,通過(guò)編寫(xiě)程序不但能將傳感器感測(cè)到的溫度通過(guò)顯示電路顯示出來(lái),而且用戶能通過(guò)鍵盤(pán)接口,自由設(shè)置上下限動(dòng)作溫度值,滿足全方位的需求。并且通過(guò)程序判斷溫度具有極高的精準(zhǔn)度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。
2.3顯示電路 方案一:采用數(shù)碼管顯示溫度,動(dòng)態(tài)掃描顯示方式。采用LED數(shù)碼管這種方案。雖然顯示的內(nèi)容有限,但是也可以顯示數(shù)字和幾個(gè)英文字母,在這個(gè)設(shè)計(jì)中已經(jīng)足夠了,并且價(jià)格比液晶字符式要低的多,為了控制設(shè)計(jì)制作的成本,在此設(shè)計(jì)中選用LED數(shù)碼管顯示。 方案二:采用液晶顯示屏LCD顯示溫度。顯示用液晶字符式,可以用軟件達(dá)到很好的控制,硬件不復(fù)雜,液晶字符顯示器可以顯示很豐富的內(nèi)容,但是液晶字符式價(jià)格昂貴。 對(duì)于方案一,該方案成本低廉,顯示溫度明確醒目,在夜間也能看見(jiàn),功耗極低,顯示驅(qū)動(dòng)程序的編寫(xiě)也相對(duì)簡(jiǎn)單,這種顯示方式得到廣泛應(yīng)用。不足的地方是掃描顯示方式是使數(shù)碼管逐個(gè)點(diǎn)亮,因此會(huì)有閃爍,但是人眼的視覺(jué)暫留時(shí)間為20MS,當(dāng)數(shù)碼管掃描周期小于這個(gè)時(shí)間時(shí)人眼將感覺(jué)不到閃爍,因此可以通過(guò)增大掃描頻率來(lái)消除閃爍感。 對(duì)于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點(diǎn),這是LED數(shù)碼管無(wú)法比擬的。但是液晶顯示模塊價(jià)格昂貴,驅(qū)動(dòng)程序復(fù)雜,從簡(jiǎn)單實(shí)用的原則考慮,本系統(tǒng)采用方案一。
2.4調(diào)速方式 方案一:采用變壓器調(diào)節(jié)方式,運(yùn)用電磁感應(yīng)原理將220V電壓通過(guò)線圈降壓到不同的電壓,控制風(fēng)扇電機(jī)接到不同電壓值的線圈上可控制電機(jī)的轉(zhuǎn)速,從而控制風(fēng)扇風(fēng)力大小。 方案二:采用三極管驅(qū)動(dòng)PWM進(jìn)行控制。 對(duì)于方案一,由于采用變壓器改變電壓調(diào)節(jié),有風(fēng)速級(jí)別限制,不能適應(yīng)人性化要求。且在變壓過(guò)程中會(huì)有損耗發(fā)熱,效率不高,發(fā)熱有不安全因素。 對(duì)于方案二,PWM的一個(gè)優(yōu)點(diǎn)是從處理器到被控系統(tǒng)信號(hào)都是數(shù)字形式的,無(wú)需進(jìn)行數(shù)模轉(zhuǎn)換。讓信號(hào)保持為數(shù)字形式可將噪聲影響降到最小。噪聲只有在強(qiáng)到足以將邏輯1改變?yōu)檫壿?或?qū)⑦壿?改變?yōu)檫壿?時(shí),也才能對(duì)數(shù)字信號(hào)產(chǎn)生影響。對(duì)噪聲抵抗能力的增強(qiáng)是PWM相對(duì)于模擬控制的另外一個(gè)優(yōu)點(diǎn),而且這也是在某些時(shí)候?qū)WM用于通信的主要原因。從模擬信號(hào)轉(zhuǎn)向PWM可以極大地延長(zhǎng)通信距離。故本系統(tǒng)采用方案二。
第3章 系統(tǒng)硬件組成
3.1 系統(tǒng)結(jié)構(gòu)
本系統(tǒng)由集成溫度傳感器、單片機(jī)、LED數(shù)碼管、三極管驅(qū)動(dòng)電路及一些其他外圍器件組成。使用具有價(jià)廉易購(gòu)的STC89C51單片機(jī)編程控制,通過(guò)修改程序可方便實(shí)現(xiàn)系統(tǒng)升級(jí)。系統(tǒng)的框圖結(jié)構(gòu)如下:(見(jiàn)附件)
3.2.4 STC89C51單片機(jī)最小系統(tǒng) 最小系統(tǒng)包括單片機(jī)及其所需的必要的電源、時(shí)鐘、復(fù)位等部件,能使單片機(jī)始終處于正常的運(yùn)行狀態(tài)。電源、時(shí)鐘等電路是使單片機(jī)能運(yùn)行的必備條件,可以將最小系統(tǒng)作為應(yīng)用系統(tǒng)的核心部分,通過(guò)對(duì)其進(jìn)行存儲(chǔ)器擴(kuò)展、A/D擴(kuò)展等,使單片機(jī)完成較復(fù)雜的功能。 STC89C51是片內(nèi)有ROM/EPROM的單片機(jī),因此,這種芯片構(gòu)成的最小系統(tǒng)簡(jiǎn)單﹑可靠。用STC89C52單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時(shí),只要將單片機(jī)接上時(shí)鐘電路和復(fù)位電路即可,結(jié)構(gòu)如圖2-3所示,由于集成度的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。
圖3-3 單片機(jī)最小系統(tǒng)原理框圖 1. 時(shí)鐘電路 STC89C51單片機(jī)的時(shí)鐘信號(hào)通常有兩種方式產(chǎn)生:一是內(nèi)部時(shí)鐘方式,二是外部時(shí)鐘方式。內(nèi)部時(shí)鐘方式如圖2-4所示。在STC89C51單片機(jī)內(nèi)部有一振蕩電路,只要在單片機(jī)的XTAL1(18)和XTAL2(19)引腳外接石英晶體(簡(jiǎn)稱(chēng)晶振),就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時(shí)鐘脈沖信號(hào)。圖中電容C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在5~30pF,典型值為30pF。晶振CYS的振蕩頻率范圍在1.2~12MHz間選擇,典型值為12MHz和6MHz。 圖3-4 STC89C51內(nèi)部時(shí)鐘電路 2. 復(fù)位電路 當(dāng)在STC89C51單片機(jī)的RST引腳引入高電平并保持2個(gè)機(jī)器周期時(shí),單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作(若該引腳持續(xù)保持高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài))。 復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鈕復(fù)位兩種方式。 最簡(jiǎn)單的上電自動(dòng)復(fù)位電路中上電自動(dòng)復(fù)位是通過(guò)外部復(fù)位電路的電容充放電來(lái)實(shí)現(xiàn)的。只要Vcc的上升時(shí)間不超過(guò)1ms,就可以實(shí)現(xiàn)自動(dòng)上電復(fù)位。 除了上電復(fù)位外,有時(shí)還需要按鍵手動(dòng)復(fù)位。本設(shè)計(jì)就是用的按鍵手動(dòng)復(fù)位。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。其中電平復(fù)位是通過(guò)RST(9)端與電源Vcc接通而實(shí)現(xiàn)的。按鍵手動(dòng)復(fù)位電路見(jiàn)圖2-5。時(shí)鐘頻率用11.0592MHZ時(shí)C取10uF,R取10kΩ。 圖3-5 STC89C51復(fù)位電路
3.2.5 STC89C51中斷技術(shù)概述 中斷技術(shù)主要用于實(shí)時(shí)監(jiān)測(cè)與控制,要求單片機(jī)能及時(shí)地響應(yīng)中斷請(qǐng)求源提出的服務(wù)請(qǐng)求,并作出快速響應(yīng)、及時(shí)處理。這是由片內(nèi)的中斷系統(tǒng)來(lái)實(shí)現(xiàn)的。當(dāng)中斷請(qǐng)求源發(fā)出中斷請(qǐng)求時(shí),如果中斷請(qǐng)求被允許,單片機(jī)暫時(shí)中止當(dāng)前正在執(zhí)行的主程序,轉(zhuǎn)到中斷服務(wù)處理程序處理中斷服務(wù)請(qǐng)求。中斷服務(wù)處理程序處理完中斷服務(wù)請(qǐng)求后,再回到原來(lái)被中止的程序之處(斷點(diǎn)),繼續(xù)執(zhí)行被中斷的主程序。 圖3-6為整個(gè)中斷響應(yīng)和處理過(guò)程。
圖3-6 中斷響應(yīng)和處理過(guò)程 如果單片機(jī)沒(méi)有中斷系統(tǒng),單片機(jī)的大量時(shí)間可能會(huì)浪費(fèi)在查詢是否有服務(wù)請(qǐng)求發(fā)生的定時(shí)查詢操作上。采用中斷技術(shù)完全消除了單片機(jī)在查詢方式中的等待現(xiàn)象,大大地提高了單片機(jī)的工作效率和實(shí)時(shí)性。
3.3 DS18B20溫度采集電路 DS18B20是美國(guó)DALLAS半導(dǎo)體器件公司推出的單總線數(shù)字化智能集成溫度傳感器。單總線(1-Wire)是DALLAS公司的一項(xiàng)專(zhuān)有技術(shù),它采用單根信號(hào)線,既傳輸時(shí)鐘又傳輸數(shù)據(jù),而且數(shù)據(jù)傳輸是雙向的,具有節(jié)省I/O口線資源、結(jié)構(gòu)簡(jiǎn)單、成本低廉、便于總線擴(kuò)展和維護(hù)等諸多優(yōu)點(diǎn)。
3.3.1 DS18B20 的特點(diǎn)及內(nèi)部構(gòu)造 特點(diǎn)如下: (1)采用獨(dú)特的單總線接口方式,即只有一根信號(hào)線與控制器相連,實(shí)現(xiàn)數(shù)據(jù)的雙向通信,不需要外部元件; (2)測(cè)量結(jié)果直接輸出數(shù)字溫度信號(hào),以單總線串行傳送給控制器,同時(shí)可傳送CRC校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力; (3)支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三根線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)量; (4)適應(yīng)電壓范圍寬3.0-5.5V,不需要備份電源、可用數(shù)據(jù)線供電,溫度測(cè)量范圍為-55℃~125℃,-10℃~85℃時(shí)測(cè)量精度為±0.5℃; (5)通過(guò)編程可實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式,對(duì)應(yīng)的可分辨溫度分別為0.5℃,0.25℃,0.125℃,0.0625℃,實(shí)現(xiàn)高精度測(cè)溫; (6)負(fù)壓特性。電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。 封裝圖及內(nèi)部構(gòu)造,如下圖3-7和3-8所示
圖3-7 DS18B20外部結(jié)構(gòu)框圖
3.3.2引腳功能介紹 NC:空引腳,懸空不使用; VDD:可選電源腳,電源電壓范圍3~5.5V。工作于寄生電源時(shí),此引腳應(yīng)接地; I/O:數(shù)據(jù)輸入/輸出腳,漏極開(kāi)路,常態(tài)下高電平。 DS18B20采用3腳TO-92封裝或8腳SOIC及CSP封裝方式。圖2-8所示為DS18B20的內(nèi)部結(jié)構(gòu)框圖,它主要包括寄生電源、溫度傳感器、64位光刻ROM及單總線接口、存放中間數(shù)據(jù)的高速暫存器(內(nèi)含便箋式RAM)、存儲(chǔ)與控制邏輯、用于存儲(chǔ)用戶設(shè)定的溫度上下限值的TH和TL觸發(fā)器、結(jié)構(gòu)寄存器、8位循環(huán)冗余校驗(yàn)碼(CRC)發(fā)生器等八部分。 圖3-9 DS18B20的封裝
3.3.3 DS18B20的工作原理 64位ROM的結(jié)構(gòu)如圖3-10所示,開(kāi)始8位是產(chǎn)品類(lèi)型的編號(hào);接著是每個(gè)器件唯一的序號(hào),共48位;最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可采用單線進(jìn)行通信的原因。非易失性溫度報(bào)警觸發(fā)器TH、TL,可以通過(guò)編程寫(xiě)入用戶報(bào)警上下線數(shù)據(jù)。 DS18B20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EEPROM。 高速暫存RAM的結(jié)構(gòu)位9字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2-12所示。前兩個(gè)字節(jié)包括測(cè)得溫度的信息。3、4字節(jié)是TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5字節(jié)為配置寄存器,其內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換頻率,DS18B20工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值。該字節(jié)各位的定義如圖2-13,其低5位一直為1;TM是測(cè)試模式位,用于設(shè)置DS18B20在工作模式還是在檢測(cè)模式,在DS18B20出廠時(shí),該位被設(shè)置為0,用戶不要去改動(dòng);R1和R2決定溫度轉(zhuǎn)換的精度位數(shù),即用來(lái)設(shè)置分辨率, 單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù)。的數(shù)據(jù)時(shí)低位在前,高位在后,數(shù)據(jù)格式以0.0625℃/LSB形式表示。 表3-1是部分溫度值對(duì)應(yīng)的二進(jìn)制溫度表示數(shù)據(jù)。 表3-1 DS18B20溫度與表示值對(duì)應(yīng)表
DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容對(duì)照,若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可以用多個(gè)DS18B20同時(shí)測(cè)得溫度并進(jìn)行報(bào)警搜索。 在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來(lái)計(jì)算CRC值,并與存入DS18B20的CRC值作比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。 關(guān)于DS18B20的工作原理這里就不再多說(shuō),有感興趣的可以查閱相關(guān)手冊(cè)。 DS18B20的編程指令 DS18B20的指令有:讀ROM(33H),匹配ROM(55H),跳過(guò)ROM(CCH),搜索ROM(F0H),報(bào)警搜索(ECH),穩(wěn)定轉(zhuǎn)換(44H),度暫存器(BEH),寫(xiě)暫存器(4EH),復(fù)制暫存器(48H),重調(diào)E2PROM(B8H),讀供電方式(B4H)。關(guān)于這些指令,這里也不再一一介紹,只把本設(shè)計(jì)用到的用法說(shuō)一下。 CCH-跳過(guò)ROM指令。忽略64位ROM地址,直接向DS18B20發(fā)溫度變換命令,適用于一個(gè)從機(jī)工作。 44H-溫度轉(zhuǎn)換指令。啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長(zhǎng)為750ms(9位93.75ms)。結(jié)果存入內(nèi)部9字節(jié)的RAM中。 BEH-讀暫存器指令。讀內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)。 如圖2-14所示,是DS18B20在電路中的接發(fā),本設(shè)計(jì)采用的是單獨(dú)電源供電方式,下面將介紹其工作時(shí)序,有工作時(shí)序圖可以很清楚的知道該這樣控制DS18B20。 圖3-11 DS18B20的工作電路
3.3.3 DS18B20的工作時(shí)序 初始化時(shí)序,當(dāng)主機(jī)將單總線P30從邏輯高拉到邏輯低時(shí),即啟動(dòng)一個(gè)寫(xiě)時(shí)隙,所有的寫(xiě)時(shí)隙必須在60~120us完成,且在每個(gè)循環(huán)之間至少需要1us的恢復(fù)時(shí)間。寫(xiě)0和寫(xiě)1時(shí)隙如圖所示。在寫(xiě)0時(shí)隙期間,微控制器在整個(gè)時(shí)隙中將總線拉低;而寫(xiě)1時(shí)隙期間,微控制器將總線拉低,然后在時(shí)隙起始后15us之釋放總線。時(shí)序圖如圖3-15所示。 圖3-15 初始化時(shí)序圖 具體步驟如下: (1)將數(shù)據(jù)線置高電平1。 (2)延時(shí)(時(shí)間應(yīng)盡量短些)。 (3)數(shù)據(jù)線拉到低電平0。 (4)延時(shí)750 μs(該范圍可以在480~960μs)。 (5)數(shù)據(jù)線拉置高電平1。 (6)延時(shí)等待。如果初始化成功則在15~60ms內(nèi)產(chǎn)生一個(gè)由DS18B20返回的低電平0,據(jù)該狀態(tài)可以確定它的存在。但是應(yīng)注意,不能無(wú)限地等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)判斷。若CPU讀到數(shù)據(jù)線上的低電平0后,還要進(jìn)行延時(shí),其延時(shí)的時(shí)間從發(fā)出高電平算起(第5)步的時(shí)間算起)最少要480μs。 (7)將數(shù)據(jù)線再次拉置高電平1后結(jié)束。 1.數(shù)據(jù)時(shí)序 當(dāng)主機(jī)將單總線P30從邏輯高拉到邏輯低時(shí),即啟動(dòng)一個(gè)寫(xiě)時(shí)隙,所有的寫(xiě)時(shí)隙必須在60~120us完成,且在每個(gè)循環(huán)之間至少需要1us的恢復(fù)時(shí)間。寫(xiě)0和寫(xiě)1時(shí)隙如圖所示。在寫(xiě)0時(shí)隙期間,微控制器在整個(gè)時(shí)隙中將總線拉低;而寫(xiě)1時(shí)隙期間,微控制器將總線拉低,然后在時(shí)隙起始后15us之釋放總線。時(shí)序圖見(jiàn)圖3-16所示。
圖3-16 寫(xiě)數(shù)據(jù)時(shí)序圖 具體步驟如下: (1)數(shù)據(jù)線先置低電平0。 (2)延時(shí)確定時(shí)間為15μs。按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。 (3)延時(shí)時(shí)間為45μs。 (4)將數(shù)據(jù)線拉到高電平1。 (5)重復(fù)(1)~(5)步驟,直到發(fā)送完整個(gè)字節(jié)。 (6)最后將數(shù)據(jù)線拉高到1。 2.讀數(shù)據(jù)時(shí)序 DS18B20器件僅在主機(jī)發(fā)出讀時(shí)隙時(shí),才向主機(jī)傳輸數(shù)據(jù)。所以在主機(jī)發(fā)出讀數(shù)據(jù)命令后,必須馬上產(chǎn)生讀時(shí)隙,以便DS18B20能夠傳輸數(shù)據(jù)。所有的讀時(shí)隙至少需要60us,且在兩次獨(dú)立的讀時(shí)隙之間,至少需要1us的恢復(fù)時(shí)間。每個(gè)讀時(shí)隙都由主機(jī)發(fā)起,至少拉低總線1us。在主機(jī)發(fā)起讀時(shí)隙之后,DS18B20器件才開(kāi)始在總線上發(fā)送0或1,若DS18B20發(fā)送1,則保持總線為高電平。若發(fā)送為0,則拉低總線當(dāng)發(fā)送0時(shí),DS18B20在該時(shí)隙結(jié)束后,釋放總線,由上拉電阻將總線拉回至高電平狀態(tài)。DS18B20發(fā)出的數(shù)據(jù),在起始時(shí)隙之后保持有效時(shí)間為15us。因而主機(jī)在讀時(shí)隙期間,必須釋放總線。并且在時(shí)隙起始后的15us之內(nèi)采樣總線的狀態(tài)。時(shí)序圖見(jiàn)圖3-17所示。
圖3-17 讀數(shù)據(jù)時(shí)序圖 具體步驟如下: (1)將數(shù)據(jù)線拉高到1。 (2)延時(shí)2μs。 (3)將數(shù)據(jù)線拉低到0。 (4)延時(shí)6μs。 (5)將數(shù)據(jù)線拉高到1。 (6)延時(shí)4μs。 (7)讀數(shù)據(jù)線的狀態(tài)得到一個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。 (8)延時(shí)6μs。 (9)重復(fù)(1)~(7)步驟,直到讀取完一個(gè)數(shù)據(jù)。
3.4 數(shù)碼管驅(qū)動(dòng)顯示電路
3.4.1 數(shù)碼管驅(qū)動(dòng)電路 本電路的顯示驅(qū)動(dòng)模塊是由74HC573芯片來(lái)完成的,74HC573包含八路D 型透明鎖存器,每個(gè)鎖存器具有獨(dú)立的D 型輸入,以及適用于面向總線的應(yīng)用的三態(tài)輸出。所有鎖存器共用一個(gè)鎖存使能(LE)端和一個(gè)輸出使能(OE)端。
當(dāng)LE為高時(shí),數(shù)據(jù)從Dn輸入到鎖存器,在此條件下,鎖存器進(jìn)入透明模式,也就是說(shuō),鎖存器的輸出狀態(tài)將會(huì)隨著對(duì)應(yīng)的D輸入每次的變化而改變。當(dāng)LE為低時(shí),鎖存器將存儲(chǔ)D輸入上的信息一段就緒時(shí)間,直到LE的下降沿來(lái)臨。
當(dāng)OE為低時(shí),8個(gè)鎖存器的內(nèi)容可被正常輸出;當(dāng)OE為高時(shí),輸出進(jìn)入高阻態(tài)。OE端的操作不會(huì)影響鎖存器的狀態(tài)。
74HC573特性: (1)輸入輸出分布在芯片封裝的兩側(cè),為微處理器提供簡(jiǎn)便的接口 (2)用于微控制器和微型計(jì)算機(jī)的輸入輸出口 (3)三態(tài)正相輸出,用于面向總線的應(yīng)用 (4)共用三態(tài)輸出使能端 (5)邏輯功能與74HC563、74HC373相同 (6)遵循JEDEC標(biāo)準(zhǔn)no.7A (7)ESD保護(hù)
3.4.2 數(shù)碼管顯示電路 本電路的顯示模塊主要由一個(gè)4位一體的7段LED數(shù)碼管構(gòu)成,用于顯示測(cè)量到的溫度及當(dāng)前的檔位。它是一個(gè)共陰極的數(shù)碼管,每一位數(shù)碼管的a,b,c,d,e,f,g和dp端都各自連接在一起,用于接收單片機(jī)的P0口產(chǎn)生的顯示段碼。S1,S2,S3,S4引腳端為其位選端,用于接收單片機(jī)的P2口產(chǎn)生的位選碼。本系統(tǒng)采用動(dòng)態(tài)掃描方式。掃描方式是用其接口電路把所有數(shù)碼管的8個(gè)比劃段a~g和dp同名端連在一起,而每一個(gè)數(shù)碼管的公共極COM各自獨(dú)立地受I/O線控制。CUP從字段輸出口送出字型碼時(shí),所有數(shù)碼管接收到相同的字型碼,但究竟是哪個(gè)數(shù)碼管亮,則取決于COM端。COM端與單片機(jī)的I/O接口相連接,由單片機(jī)輸出位位選碼到I/O接口,控制何時(shí)哪一位數(shù)碼管被點(diǎn)亮。在輪流點(diǎn)亮數(shù)碼管的位掃描過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間極為短暫。但由于人的視覺(jué)暫留現(xiàn)象,給人的印象就是一組穩(wěn)定顯示的數(shù)碼。動(dòng)態(tài)方式的優(yōu)點(diǎn)是十分明顯的,即耗電省,在動(dòng)態(tài)掃描過(guò)程中,任何時(shí)刻只有一個(gè)數(shù)碼管是處于工作狀態(tài)的。具體原理圖如圖3-18所示 圖3-18 數(shù)碼管顯示電路
3.5 風(fēng)扇驅(qū)動(dòng)電路 風(fēng)扇的驅(qū)動(dòng)采用的是兩個(gè)三極管,三級(jí)管將信號(hào)放大,然后傳輸?shù)斤L(fēng)扇下圖是該模塊電路: 圖3-19 風(fēng)扇驅(qū)動(dòng)模塊 三極管是電流放大器件,有三個(gè)極,分別叫做集電極C,基極B,發(fā)射極E。分成NPN和PNP兩種。我們僅以NPN三極管的共發(fā)射極放大電路為例來(lái)說(shuō)明一下三極管放大電路的基本原理。 (1)電流放大 下面的分析僅對(duì)于NPN型硅三極管。如上圖所示,我們把從基極B流至發(fā)射極E的電流叫做基極電流Ib;把從集電極C流至發(fā)射極E的電流叫做集電極電流 Ic。這兩個(gè)電流的方向都是流出發(fā)射極的,所以發(fā)射極E上就用了一個(gè)箭頭來(lái)表示電流的方向。三極管的放大作用就是:集電極電流受基極電流的控制(假設(shè)電源 能夠提供給集電極足夠大的電流的話),并且基極電流很小的變化,會(huì)引起集電極電流很大的變化,且變化滿足一定的比例關(guān)系:集電極電流的變化量是基極電流變 化量的β倍,即電流變化被放大了β倍,所以我們把β叫做三極管的放大倍數(shù)(β一般遠(yuǎn)大于1,例如幾十,幾百)。如果我們將一個(gè)變化的小信號(hào)加到基極跟發(fā)射 極之間,這就會(huì)引起基極電流Ib的變化,Ib的變化被放大后,導(dǎo)致了Ic很大的變化。如果集電極電流Ic是流過(guò)一個(gè)電阻R的,那么根據(jù)電壓計(jì)算公式 U=R*I 可以算得,這電阻上電壓就會(huì)發(fā)生很大的變化。我們將這個(gè)電阻上的電壓取出來(lái),就得到了放大后的電壓信號(hào)了。 (2)偏置電路 三極管在實(shí)際的放大電路中使用時(shí),還需要加合適的偏置電路。這有幾個(gè)原因。首先是由于三極管BE結(jié)的非線性(相當(dāng)于一個(gè)二極管),基極電流必須在輸入電壓 大到一定程度后才能產(chǎn)生(對(duì)于硅管,常取0.7V)。當(dāng)基極與發(fā)射極之間的電壓小于0.7V時(shí),基極電流就可以認(rèn)為是0。但實(shí)際中要放大的信號(hào)往往遠(yuǎn)比 0.7V要小,如果不加偏置的話,這么小的信號(hào)就不足以引起基極電流的改變(因?yàn)樾∮?.7V時(shí),基極電流都是0)。如果我們事先在三極管的基極上加上一 個(gè)合適的電流(叫做偏置電流,上圖中那個(gè)電阻Rb就是用來(lái)提供這個(gè)電流的,所以它被叫做基極偏置電阻),那么當(dāng)一個(gè)小信號(hào)跟這個(gè)偏置電流疊加在一起時(shí),小 信號(hào)就會(huì)導(dǎo)致基極電流的變化,而基極電流的變化,就會(huì)被放大并在集電極上輸出。另一個(gè)原因就是輸出信號(hào)范圍的要求,如果沒(méi)有加偏置,那么只有對(duì)那些增加的 信號(hào)放大,而對(duì)減小的信號(hào)無(wú)效(因?yàn)闆](méi)有偏置時(shí)集電極電流為0,不能再減小了)。而加上偏置,事先讓集電極有一定的電流,當(dāng)輸入的基極電流變小時(shí),集電極 電流就可以減小;當(dāng)輸入的基極電流增大時(shí),集電極電流就增大。這樣減小的信號(hào)和增大的信號(hào)都可以被放大了。 (3)開(kāi)關(guān)作用 下面說(shuō)說(shuō)三極管的飽和情況。像上面那樣的圖,因?yàn)槭艿诫娮?Rc的限制(Rc是固定值,那么最大電流為U/Rc,其中U為電源電壓),集電極電流是不能無(wú)限增加下去的。當(dāng)基極電流的增大,不能使集電極電流繼續(xù)增大 時(shí),三極管就進(jìn)入了飽和狀態(tài)。一般判斷三極管是否飽和的準(zhǔn)則是:Ib*β〉Ic。進(jìn)入飽和狀態(tài)之后,三極管的集電極跟發(fā)射極之間的電壓將很小,可以理解為 一個(gè)開(kāi)關(guān)閉合了。這樣我們就可以拿三極管來(lái)當(dāng)作開(kāi)關(guān)使用:當(dāng)基極電流為0時(shí),三極管集電極電流為0(這叫做三極管截止),相當(dāng)于開(kāi)關(guān)斷開(kāi);當(dāng)基極電流很 大,以至于三極管飽和時(shí),相當(dāng)于開(kāi)關(guān)閉合。如果三極管主要工作在截止和飽和狀態(tài),那么這樣的三極管我們一般把它叫做開(kāi)關(guān)管。 圖3-20 三極管引腳介紹
3.6 按鍵模塊 單片機(jī)鍵盤(pán)有獨(dú)立鍵盤(pán)和矩陣式鍵盤(pán)兩種:獨(dú)立鍵盤(pán)每一個(gè)I/O 口上只接一個(gè)按鍵,按鍵的另一端接電源或接地(一般接地),這種接法程序比較簡(jiǎn)單且系統(tǒng)更加穩(wěn)定;而矩陣式鍵盤(pán)式接法程序比較復(fù)雜,但是占用的I/O少。根據(jù)本設(shè)計(jì)的需要這里選用了獨(dú)立式鍵盤(pán)接法。 獨(dú)立式鍵盤(pán)的實(shí)現(xiàn)方法是利用單片機(jī)I/O口讀取口的電平高低來(lái)判斷是否有鍵按下。將常開(kāi)按鍵的一端接地,另一端接一個(gè)I/O 口,程序開(kāi)始時(shí)將此I/O口置于高電平,平時(shí)無(wú)鍵按下時(shí)I/O口保護(hù)高電平。當(dāng)有鍵按下時(shí),此I/O 口與地短路迫使I/O 口為低電平。按鍵釋放后,單片機(jī)內(nèi)部的上拉電阻使I/O口仍然保持高電平。我們所要做的就是在程序中查尋此I/O口的電平狀態(tài)就可以了解我們是否有按鍵動(dòng)作了。 在用單片機(jī)對(duì)鍵盤(pán)處理的時(shí)候涉及到了一個(gè)重要的過(guò)程,那就是鍵盤(pán)的去抖動(dòng)。這里說(shuō)的抖動(dòng)是機(jī)械的抖動(dòng),是當(dāng)鍵盤(pán)在未按到按下的臨界區(qū)產(chǎn)生的電平不穩(wěn)定正常現(xiàn)象,并不是我們?cè)诎存I時(shí)通過(guò)注意可以避免的。這種抖動(dòng)一般10~200毫秒之間,這種不穩(wěn)定電平的抖動(dòng)時(shí)間對(duì)于人來(lái)說(shuō)太快了,而對(duì)于時(shí)鐘是微秒的單片機(jī)而言則是慢長(zhǎng)的。硬件去抖動(dòng)就是用部分電路對(duì)抖動(dòng)部分加之處理,軟件去抖動(dòng)不是去掉抖動(dòng),而是避抖動(dòng)部分的時(shí)間,等鍵盤(pán)穩(wěn)定了再對(duì)其處理。所以這里選擇了軟件去抖動(dòng),實(shí)現(xiàn)法是先查尋按鍵當(dāng)有低電平出現(xiàn)時(shí)立即延時(shí)10~200毫秒以避開(kāi)抖動(dòng)(經(jīng)典值為20毫秒),延時(shí)結(jié)束后再讀一次I/O 口的值,這一次的值如果為1 表示低電平的時(shí)間不到10~200 毫秒,視為干擾信號(hào)。當(dāng)讀出的值是0時(shí)則表示有按鍵按下,調(diào)用相應(yīng)的處理程序。硬件電路如圖3-21所示: 圖3-21 按鍵模塊電路圖
第4章 系統(tǒng)軟件設(shè)計(jì)
4.1 軟件介紹
4.1.1 Keil C51 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ì)。下面詳細(xì)介紹Keil C51開(kāi)發(fā)系統(tǒng)各部分功能和使用。 Keil_c軟件界面如圖4-1所示 圖4-1 Keil_c軟件界面
4.1.2 Protel99SE Protel99SE是PORTEL公司在80年代末推出的EDA軟件。Protel99SE是應(yīng)用于Windows9X/2000/NT操作系統(tǒng)下的EDA設(shè)計(jì)軟件,采用設(shè)計(jì)庫(kù)管理模式,可以網(wǎng)設(shè)計(jì),具有很強(qiáng)的數(shù)據(jù)交換能力和開(kāi)放性及3D模擬功能,是一個(gè)32位的設(shè)計(jì)軟件,可以完成電路原理圖設(shè)計(jì),印制電路板設(shè)計(jì)和可編程邏輯器件設(shè)計(jì)等工作,可以設(shè)計(jì)32個(gè)信號(hào)層,16個(gè)電源--地層和16個(gè)機(jī)加工層。 Protel99SE軟件的特點(diǎn): (1) 可生成30多種格式的電氣連接網(wǎng)絡(luò)表; (2) 強(qiáng)大的全局編輯功能; (3) 在原理圖中選擇一級(jí)器件,PCB中同樣的器件也將被選中; (4) 同時(shí)運(yùn)行原理圖和PCB,在打開(kāi)的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò) (5) 既可以進(jìn)行正向注釋元器件標(biāo)號(hào)(由原理圖到PCB),也可以進(jìn)行反向注釋?zhuān)ㄓ蒔CB到原理圖),以保持電氣原理圖和PCB在設(shè)計(jì)上的一致性; (6) 滿足國(guó)際化設(shè)計(jì)要求(包括國(guó)標(biāo)標(biāo)題欄輸出,GB4728國(guó)標(biāo)庫(kù)); * 方便易用的數(shù)模混合仿真(兼容SPICE 3f5); (7) 支持用CUPL語(yǔ)言和原理圖設(shè)計(jì)PLD,生成標(biāo)準(zhǔn)的JED下載文件; * PCB可設(shè)計(jì)32個(gè)信號(hào)層,16個(gè)電源-地層和16個(gè)機(jī)加工層; (8) 強(qiáng)大的“規(guī)則驅(qū)動(dòng)”設(shè)計(jì)環(huán)境,符合在線的和批處理的設(shè)計(jì)規(guī)則檢查; (9) 智能覆銅功能,覆鈾可以自動(dòng)重鋪; (10)提供大量的工業(yè)化標(biāo)準(zhǔn)電路板做為設(shè)計(jì)模版; Protel99SE的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖所示,包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對(duì)象選擇按鈕、預(yù)覽對(duì)象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對(duì)象選擇器窗口、圖形編輯窗口。 圖4-2 Prtel99SE軟件界面
4.1.3 Proteus Proteus是目前最好的模擬單片機(jī)外圍器件的工具,可以仿真51 系列、AVR,PIC 等常用的MCU 及其外圍電路(如LCD,RAM,ROM,鍵盤(pán),馬達(dá),LED,AD/DA,部分SPI 器件,部分IIC 器件) Proteus 與其它單片機(jī)仿真軟件不同的是,它不僅能仿真單片機(jī)CPU 的工作情況,也能仿真單片機(jī)外圍電路或沒(méi)有單片機(jī)參與的其它電路的工作情況。因此在仿真和程序調(diào)試時(shí),關(guān)心的不再是某些語(yǔ)句執(zhí)行時(shí)單片機(jī)寄存器和存儲(chǔ)器內(nèi)容的改變,而是從工程的角度直接看程序運(yùn)行和電路工作的過(guò)程和結(jié)果。對(duì)于這樣的仿真實(shí)驗(yàn),從某種意義上講,是彌補(bǔ)了實(shí)驗(yàn)和工程應(yīng)用間脫節(jié)的矛盾和現(xiàn)象。 運(yùn)行proteus 的ISIS 程序后,進(jìn)入該仿真軟件的主界面。在工作前,要設(shè)置view 菜單下的捕捉對(duì)齊和system下的顏色、圖形界面大小等項(xiàng)目。通過(guò)工具欄中的p(從庫(kù)中選擇元件命令)命令,在pick devices 窗口中選擇電路所需的元件,放置元件并調(diào)整其相對(duì)位置,元件參數(shù)設(shè)置,元器件間連線,編寫(xiě)程序;在source 菜單的Definecode generation tools 菜單命令下,選擇程序編譯的工具、路徑、擴(kuò)展名等項(xiàng)目;在source 菜單的Add/removesource files 命令下,加入單片機(jī)硬件電路的對(duì)應(yīng)程序;通過(guò)debug 菜單的相應(yīng)命令仿真程序和電路的運(yùn)行情況。 - Proteus 軟件所提供的元件資源Proteus 軟件所提供了30 多個(gè)元件庫(kù),數(shù)千種元件。元件涉及到數(shù)字和模擬、交流和直流等。
- Proteus 軟件所提供的儀表資源
對(duì)于一個(gè)仿真軟件或?qū)嶒?yàn)室,測(cè)試的儀器儀表的數(shù)量、類(lèi)型和質(zhì)量,是衡量實(shí)驗(yàn)室是否合格的一個(gè)關(guān)鍵因素。在Proteus 軟件包中,不存在同類(lèi)儀表使用數(shù)量的問(wèn)題。Proteus 還提供了一個(gè)圖形顯示功能,可以將線路上變化的信號(hào),以圖形的方式實(shí)時(shí)地顯示出來(lái),其作用與示波器相似但功能更多。 Proteus 提供了比較豐富的測(cè)試信號(hào)用于電路的測(cè)試。這些測(cè)試信號(hào)包括模擬信號(hào)和數(shù)字信號(hào)。對(duì)于單片機(jī)硬件電路和軟件的調(diào)試,Proteus 提供了兩種方法:一種是系統(tǒng)總體執(zhí)行效果,一種是對(duì)軟件的分步調(diào)試以看具體的執(zhí)行情況。 對(duì)于總體執(zhí)行效果的調(diào)試方法,只需要執(zhí)行debug 菜單下的execute 菜單項(xiàng)或F12 快捷鍵啟動(dòng)執(zhí)行,用debug菜單下的pause animation 菜單項(xiàng)或pause 鍵暫停系統(tǒng)的運(yùn)行;或用debug 菜單下的stop animation 菜單項(xiàng)或shift-break 組合鍵停止系統(tǒng)的運(yùn)行。其運(yùn)行方式也可以選擇工具欄中的相應(yīng)工具進(jìn)行。 對(duì)于軟件的分步調(diào)試,應(yīng)先執(zhí)行debug 菜單下的start/restart debugging 菜單項(xiàng)命令,此時(shí)可以選擇stepover 、step into 和 step out 命令執(zhí)行程序(可以用快捷鍵F10、F11 和ctrl+F11),執(zhí)行的效果是單句執(zhí)行、進(jìn)入子程序執(zhí)行和跳出子程序執(zhí)行。在執(zhí)行了start / restart debuging 命令后,在debug 菜單的下面要出現(xiàn)仿真中所涉及到的軟件列表和單片機(jī)的系統(tǒng)資源等,可供調(diào)試時(shí)分析和查看。 圖4-3 proteus軟件界面
4.2 主程序流程圖 要實(shí)現(xiàn)根據(jù)當(dāng)前溫度實(shí)時(shí)的控制風(fēng)扇的狀態(tài),需要在程序中不時(shí)的判斷當(dāng)前溫度值是否超過(guò)設(shè)定的動(dòng)作溫度值范圍。由于單片機(jī)的工作頻率高達(dá)12MHz,在執(zhí)行程序時(shí)不斷將當(dāng)前溫度和設(shè)定動(dòng)作溫度進(jìn)行比較判斷,當(dāng)超過(guò)設(shè)定溫度值范圍時(shí)及時(shí)的轉(zhuǎn)去執(zhí)行超溫處理和欠溫處理子程序,控制風(fēng)扇實(shí)時(shí)的切換到關(guān)閉、弱風(fēng)、大風(fēng)三個(gè)狀態(tài)。 顯示驅(qū)動(dòng)程序以查七段碼取得各數(shù)碼管應(yīng)顯數(shù)字,逐位掃描顯示。主程序流程圖如圖4-4所示。
圖4-4 主程序流程圖
4.3 DS18B20子程序流程圖 先對(duì)DS18B20初始化,再進(jìn)行ROM操作命令,最后才能對(duì)存儲(chǔ)器操作,數(shù)據(jù)操作。DS18B20每一步操作都要遵循嚴(yán)格的工作時(shí)序和通信協(xié)議。如主機(jī)控制DS18B20完成溫度轉(zhuǎn)換這一過(guò)程,根據(jù)DS18B20的通訊協(xié)議,須經(jīng)三個(gè)步驟:每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。 圖4-5 DS18B20程序流程圖
4.4 數(shù)碼管顯示子程序流程圖 程序?qū)崿F(xiàn)的功能是將從DS18B20讀取的二進(jìn)制溫度值轉(zhuǎn)換為七段碼在LED上顯示出來(lái)。顯示方式采用的是動(dòng)態(tài)掃描的方式,先給位選信號(hào),再給段選信號(hào),然后延時(shí)一下。具體流程圖如圖4-6
4.5 按鍵子程序流程圖 硬件設(shè)計(jì)上為通過(guò)3個(gè)按鍵,由按鍵掃描子程序KEYSCAN子程序提供軟件支持。按下一次設(shè)置鍵K1,進(jìn)入溫度上限設(shè)置,此時(shí)按下“加”鍵K2,加一,按下“減”鍵K3,減1。再按一次設(shè)置鍵K2,進(jìn)入溫度下限設(shè)置狀態(tài),此時(shí)按下“加”鍵K2,加一,按下“減”鍵K3,減1。下限動(dòng)作溫度值TL和上限動(dòng)作溫度值的設(shè)置范圍為10-100攝氏度,滿足一般使用要求。再按一次設(shè)置鍵K3退出上下限溫度設(shè)置狀態(tài)。
第5章 系統(tǒng)調(diào)試
5.1 軟硬件調(diào)試
5.1.1 按鍵顯示部分的調(diào)試 起初根據(jù)設(shè)計(jì)編寫(xiě)的系統(tǒng)程序:程序的鍵盤(pán)接口采用P3口,數(shù)碼管顯示采用P0口控制LED的斷碼,P2口控制LED的位碼,從而實(shí)現(xiàn)鍵盤(pán)功能及數(shù)碼管的顯示。經(jīng)過(guò)編譯沒(méi)有出錯(cuò),但在仿真調(diào)試時(shí),數(shù)碼管顯示的只是亂碼,沒(méi)有正確的顯示溫度,按鍵功能也不靈,當(dāng)按下鍵時(shí),顯示會(huì)變化很多次。 經(jīng)過(guò)查找分析,發(fā)現(xiàn)鍵盤(pán)掃描程序沒(méi)有沒(méi)有按鍵消抖部分,按鍵在按下與松手時(shí),都會(huì)有一定程度的抖動(dòng),從而可能使單片機(jī)做出錯(cuò)誤的判斷,導(dǎo)致按鍵條件預(yù)設(shè)溫度時(shí)失靈,甚至根本不能正常工作。因此必須在按鍵掃描程序中加入消抖部分,即在按鍵按下與松手時(shí)加入延時(shí)判斷,以檢測(cè)鍵盤(pán)是否真的按下或已完全松手。 數(shù)碼管不能正確的顯示,主要是因?yàn)樗詳?shù)碼管的段碼都由P0口傳送,而數(shù)碼管顯示又采用了動(dòng)態(tài)掃描的方式,但在程序中卻沒(méi)有設(shè)置顯示段碼的暫存器,導(dǎo)致當(dāng)P0口傳送段碼時(shí)發(fā)生混亂,不能正確識(shí)別段碼。應(yīng)在系統(tǒng)中加入鎖存器,或是在程序中設(shè)定存儲(chǔ)段碼的空間。 在鍵盤(pán)加入了消抖程序,數(shù)碼管顯示程序中加入了段碼的存儲(chǔ)空間后,數(shù)碼管能夠正常的顯示,按鍵也能夠工作,達(dá)到了較好的效果。
5.1.2 傳感器DS18B20溫度采集部分調(diào)試 由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,為軟件的設(shè)計(jì)和調(diào)試帶來(lái)了極大的簡(jiǎn)便,小體積、低功耗、高精度為控制電機(jī)的精度和穩(wěn)定提供了可能。軟件設(shè)計(jì)采用P1.6口為數(shù)字溫度輸入口,但是需要對(duì)輸入的數(shù)字信號(hào)進(jìn)行處理后才能顯示,從而多了溫度轉(zhuǎn)換程序。通過(guò)軟件設(shè)計(jì),實(shí)現(xiàn)了對(duì)環(huán)境溫度的連續(xù)檢測(cè),由于硬件LED個(gè)數(shù)的限制,只顯示了預(yù)設(shè)溫度的整數(shù)部分。 在溫度轉(zhuǎn)換程序中,為了能夠正確的檢測(cè)并顯示溫度的小數(shù)位,程序中把檢測(cè)的溫度與10相乘后,再按一個(gè)三位的整數(shù)來(lái)處理。如把24.5變?yōu)?45來(lái)處理,這樣為程序的編寫(xiě)帶來(lái)了方便。 系統(tǒng)調(diào)試中為驗(yàn)證DS18B20是否能在系統(tǒng)板上工作,將手心靠攏或者捏住芯片,即可發(fā)現(xiàn)LED顯示的前兩位溫度也迅速升高,驗(yàn)證了DS18B20能在系統(tǒng)板上工作。由于DS18B20為3個(gè)引腳,因此在調(diào)試過(guò)程中因注意其各個(gè)引腳的對(duì)應(yīng)位置,以免將其接反而是芯片不能工作甚至燒毀芯片。
5.1.3 風(fēng)扇調(diào)速電路部分調(diào)試 在本設(shè)計(jì)中,采用了三極管驅(qū)動(dòng)直流電機(jī),軟件設(shè)置了P1.0口輸出不同的PWM波形,通過(guò)三極管的放大作用驅(qū)動(dòng)直流電機(jī)轉(zhuǎn)動(dòng),通過(guò)軟件中程序設(shè)定,根據(jù)不同溫度輸出不同的PWM波,從而得到不同的占空比控制風(fēng)扇直流電機(jī)。程序?qū)崿F(xiàn)了P1.0口的PWM波形輸出,當(dāng)外界溫度低于設(shè)置溫度時(shí),電機(jī)不轉(zhuǎn)動(dòng)或自動(dòng)停止轉(zhuǎn)動(dòng);當(dāng)外界溫度高于設(shè)置溫度時(shí),電機(jī)的轉(zhuǎn)速升高或是自動(dòng)開(kāi)始轉(zhuǎn)動(dòng)。 在本系統(tǒng)中風(fēng)扇電機(jī)的轉(zhuǎn)速可實(shí)現(xiàn)兩級(jí)調(diào)速。通過(guò)溫度傳感器檢測(cè)的溫度與系統(tǒng)預(yù)設(shè)溫度值的比較,實(shí)現(xiàn)轉(zhuǎn)速變換。
5.2 系統(tǒng)功能
5.2.1 系統(tǒng)實(shí)現(xiàn)的功能 本系統(tǒng)能夠?qū)崿F(xiàn)單片機(jī)系統(tǒng)檢測(cè)環(huán)境溫度的變化,然后根據(jù)環(huán)境溫度和設(shè)置的閥值來(lái)控制風(fēng)扇直流電機(jī)輸入占空比的變化,從而產(chǎn)生不同的轉(zhuǎn)動(dòng)速度,亦可根據(jù)鍵盤(pán)調(diào)節(jié)不同的設(shè)置溫度,再由環(huán)境溫度與設(shè)置溫度的差值來(lái)控制電機(jī)。當(dāng)環(huán)境溫度低于設(shè)置溫度時(shí),電機(jī)停止轉(zhuǎn)動(dòng);當(dāng)環(huán)境溫度高于設(shè)置溫度時(shí),單片機(jī)對(duì)應(yīng)輸出口輸出不同占空比的PWM信號(hào),控制電機(jī)開(kāi)始轉(zhuǎn)動(dòng),系統(tǒng)還能動(dòng)態(tài)的顯示當(dāng)前溫度和當(dāng)前的檔位,并能通過(guò)鍵盤(pán)調(diào)節(jié)當(dāng)前的設(shè)置溫度。
5.2.2 系統(tǒng)功能分析 系統(tǒng)總體上由四部分來(lái)組成,既按鍵電路、數(shù)碼管驅(qū)動(dòng)顯示電路、溫度檢測(cè)電路、風(fēng)扇驅(qū)動(dòng)電路。首先考濾的是溫度檢測(cè)電路,該部分是整個(gè)系統(tǒng)的首要部分,首先要檢測(cè)到環(huán)境溫度,才能用單片機(jī)來(lái)判斷溫度的高低,然后通過(guò)單片機(jī)控制直流風(fēng)扇電機(jī)的轉(zhuǎn)速;其次是電機(jī)驅(qū)動(dòng)電路,該部分需要使用外圍電路將單片機(jī)輸出的PWM信號(hào)轉(zhuǎn)化為平均電壓輸出,根據(jù)不同的PWM波形得到不同的平均電壓,從而控制電機(jī)的轉(zhuǎn)速,電路的設(shè)計(jì)中采用了兩個(gè)三極管組成復(fù)合管驅(qū)動(dòng),實(shí)現(xiàn)較好的控制效果;再次是數(shù)碼管的動(dòng)態(tài)顯示電路,該部分的功能實(shí)現(xiàn)對(duì)環(huán)境溫度和檔位的顯示,其中DS18B20采集環(huán)境溫度,按鍵實(shí)現(xiàn)不同設(shè)置溫度的調(diào)整,實(shí)現(xiàn)了對(duì)環(huán)境溫度和檔位的及時(shí)連續(xù)顯示。
結(jié) 論
本次設(shè)計(jì)的系統(tǒng)以單片機(jī)為控制核心,以溫度傳感器DS18B20檢測(cè)環(huán)境溫度,實(shí)現(xiàn)了根據(jù)環(huán)境溫度變化調(diào)節(jié)不同的風(fēng)扇電機(jī)轉(zhuǎn)速,LED數(shù)碼管能連續(xù)穩(wěn)定的顯示環(huán)境溫度和檔位,并能通過(guò)三個(gè)獨(dú)立按鍵調(diào)節(jié)不同的設(shè)置溫度,從而改變環(huán)境溫度與設(shè)置溫度的差值,進(jìn)而改變電機(jī)轉(zhuǎn)速。實(shí)現(xiàn)了基于單片機(jī)的溫控風(fēng)扇的設(shè)計(jì)。
本系統(tǒng)設(shè)計(jì)可推廣到各種電動(dòng)機(jī)的控制系統(tǒng)中,實(shí)現(xiàn)電動(dòng)機(jī)的轉(zhuǎn)速調(diào)節(jié)。在生產(chǎn)生活中,本系統(tǒng)可用于簡(jiǎn)單的日常風(fēng)扇的智能控制,為生活帶來(lái)便利;在工業(yè)生產(chǎn)中,可以改變不同的輸入信號(hào),實(shí)現(xiàn)對(duì)不同信號(hào)輸入控制電機(jī)的轉(zhuǎn)速,進(jìn)而實(shí)現(xiàn)生產(chǎn)自動(dòng)化,如在電力系統(tǒng)中可以根據(jù)不同的負(fù)荷達(dá)到不同的電壓信號(hào),再由電壓信號(hào)調(diào)節(jié)不同的發(fā)電機(jī)轉(zhuǎn)速,進(jìn)而調(diào)節(jié)發(fā)電量,實(shí)現(xiàn)電力系統(tǒng)的自動(dòng)化調(diào)節(jié)。綜上所述,該系統(tǒng)的設(shè)計(jì)和研究在社會(huì)生產(chǎn)和生活中具有重要地位。
謝 辭
畢業(yè)設(shè)計(jì)結(jié)束了,在這里,首先要衷心地感謝李志先老師一直以來(lái)對(duì)我們的指導(dǎo)和幫助。正是在他淵博的專(zhuān)業(yè)知識(shí)、嚴(yán)謹(jǐn)?shù)目蒲凶黠L(fēng)的帶動(dòng)下,我們才能順利地完成這次畢業(yè)設(shè)計(jì)的任務(wù)。在論文階段,從選題到后來(lái)課件制作和論文撰寫(xiě)階段,老師幫我耐心分析及細(xì)心的指導(dǎo),時(shí)刻關(guān)心我畢業(yè)設(shè)計(jì)工作的進(jìn)展,幫助我把握研究方向和解決研究中遇到的許多問(wèn)題。使我能夠順利的完成論文工作,把自己的工作總結(jié)提煉出來(lái)。
在這次畢業(yè)設(shè)計(jì)中,這四年學(xué)得的大部分知識(shí)得到了充分的應(yīng)用,以前沒(méi)有完全掌握的難點(diǎn)得到了解決。同時(shí),將理論和實(shí)踐更好地結(jié)合起來(lái),培養(yǎng)了我們實(shí)事求是的科學(xué)態(tài)度和嚴(yán)謹(jǐn)?shù)淖黠L(fēng),進(jìn)一步提高了自己的自學(xué)能力。這對(duì)即將完全踏入社會(huì)的我們來(lái)說(shuō),是一個(gè)很大的收獲。
最后,我要感謝洛陽(yáng)理工學(xué)院,在這里,我們不但學(xué)到了豐富的專(zhuān)業(yè)知識(shí)和多方面的能力,更學(xué)到了如何做人處事。這將是我人生中一筆巨大的財(cái)富。在此,我向?qū)W校的每一位老師致以最真誠(chéng)的謝意!并祝愿洛陽(yáng)理工學(xué)院的明天更加的輝煌!
附 錄
附錄1:protel原理圖
附錄2:proteus仿真圖
完整的Word格式文檔51黑下載地址(含源碼):
|