南京信息工程大學(xué)畢業(yè)論文基于單片機(jī)的智能風(fēng)扇控制_第1頁(yè)
南京信息工程大學(xué)畢業(yè)論文基于單片機(jī)的智能風(fēng)扇控制_第2頁(yè)
南京信息工程大學(xué)畢業(yè)論文基于單片機(jī)的智能風(fēng)扇控制_第3頁(yè)
南京信息工程大學(xué)畢業(yè)論文基于單片機(jī)的智能風(fēng)扇控制_第4頁(yè)
南京信息工程大學(xué)畢業(yè)論文基于單片機(jī)的智能風(fēng)扇控制_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目目 錄錄1 引言引言.42 方案設(shè)計(jì)方案設(shè)計(jì).52.1 系統(tǒng)整體設(shè)計(jì).52.2 方案論證.52.2.1 溫度傳感器的選擇.62.2.2 紅外探測(cè)的選擇.62.2.3 控制核心的選擇.62.2.4 顯示器件的選擇.72.2.5 調(diào)速方式的選擇.72.2.6 驅(qū)動(dòng)方式選擇.83 硬件設(shè)計(jì)硬件設(shè)計(jì).8系統(tǒng)各器件簡(jiǎn)介.83.1.1 單線程數(shù)字溫度傳感器DS18B20 .83.1.2 AT89S52單片機(jī)簡(jiǎn)介.93.1.3 橋式驅(qū)動(dòng)電路L298N簡(jiǎn)介.103.1.4 LCD1602簡(jiǎn)介.113.2 各局部電路設(shè)計(jì).123.2.1 開(kāi)關(guān)復(fù)位與晶振電路.123.2.2 獨(dú)立控制鍵盤(pán)電路.133.2.3 L

2、CD顯示電路.13.133.2.5 溫度采集電路.143.2.6 風(fēng)扇驅(qū)動(dòng)電路.144 軟件設(shè)計(jì)軟件設(shè)計(jì).15主程序流程圖.154.2 液晶顯示子程序.174.3 DS18B20 溫度傳感器子程序.19 溫度讀取程序.194.3.2 溫度處理程序.214.4 鍵盤(pán)掃描子程序.234.5 溫度比擬處理子程序.244.6 電機(jī)控制程序包含紅外探測(cè).264.7 軟件設(shè)計(jì)中的問(wèn)題與分析.284.7.1 LCD顯示程序的問(wèn)題.284.7.2 DS18B20的顯示程序問(wèn)題.285 硬件調(diào)試硬件調(diào)試.295.1 按鍵電路的調(diào)試.295.2 溫度傳感器電路的調(diào)試.295.3 電機(jī)電路的調(diào)試.295.4 紅外感

3、應(yīng)電路的調(diào)試.295.5 硬件調(diào)試遇到的問(wèn)題.296 結(jié)論結(jié)論.29參考文獻(xiàn)參考文獻(xiàn).30基 基于單片機(jī)的智能風(fēng)扇控制 南京 210044 摘要:摘要:風(fēng)扇是人們?nèi)粘I钪斜夭豢扇钡墓ぞ撸绕涫窃谙奶?,因其價(jià)格廉價(jià),用電量較之空調(diào)有很大優(yōu)勢(shì),故在中國(guó)還有較大市場(chǎng)。本文將以 AT89S52 為主控芯片,輔以 DS18B20 溫度傳感器,結(jié)合紅外探測(cè)裝置,來(lái)實(shí)現(xiàn)一種智能溫控電扇的設(shè)計(jì)。此風(fēng)扇通過(guò)液晶顯示器來(lái)顯示溫度和風(fēng)速,配備 2 個(gè)溫度設(shè)定按鍵,由 DS18B20 讀取外界溫度,紅外探頭探測(cè)是否有人,通過(guò)設(shè)定的溫度配合程序來(lái)調(diào)節(jié)風(fēng)速,最后通過(guò) L298N 來(lái)驅(qū)動(dòng)電機(jī)。經(jīng)過(guò)調(diào)試,風(fēng)扇可以按照溫度智

4、能變速,無(wú)人自動(dòng)關(guān)閉,實(shí)現(xiàn)了智能溫控的目標(biāo)。關(guān)鍵詞:關(guān)鍵詞:DS18B20;AT89S51;紅外探頭;液晶顯示器 1602;L298N Smart fan control based on MCUWang XueleiNUIST,Nanjing 210044,ChinaAbstract:The fans is an indispensable tools in peoples daily life , especially in the summer. because their price is cheap and their electricity consumption has a gr

5、eat advantage compared with air-conditioning, so they have a large market so far in China. This article will use AT89S52 as the main chip and combined with DS18B20 temperature sensor, infrared detection device, to achieve an intelligent temperature control fan design. This fan through the LCD displa

6、y to show the temperature and wind speed, we can set temperature by two buttons. At the same time,the DS18B20 read the outside temperature ,infrared sensor to detect whether someone and analyse the above datas by AT89S52 to adjust the wind speed by setting the temperature with the program, and final

7、ly through L298N to drive the motor. After debugging, the intelligent fan can be in accordance with the temperature intelligent control and automatic shut in the environment with nobody to achieve the goal of intelligent temperature control.KeyKey word:word: DS18B20; AT89S51; infrared probe; LCD Mon

8、itor 1602; L298N1 引言電扇是人們?nèi)粘I钪谐S玫慕禍毓ぞ撸瑥拈_(kāi)始的吊扇到現(xiàn)在的 USB 風(fēng)扇,無(wú)處不見(jiàn)電扇的蹤跡。雖然如今空調(diào)已經(jīng)走進(jìn)千家萬(wàn)戶,但是作為一種節(jié)能環(huán)保,并且廉價(jià)簡(jiǎn)單的降溫工具,電扇還在很多家庭生活中發(fā)揮著自己獨(dú)特的作用。但也隨著人們要求的多樣化和科學(xué)技術(shù)的進(jìn)步,各種多功能的智能風(fēng)扇在市場(chǎng)上暫露頭角并逐漸取代傳統(tǒng)風(fēng)扇。在產(chǎn)品智能化過(guò)程中單片機(jī)因?yàn)槠渲悄芑潭雀?,控制精度高,操作?jiǎn)單,廉價(jià)易得,抗干擾能力強(qiáng)等特點(diǎn),在產(chǎn)品中得到了很好的應(yīng)用。為提高風(fēng)扇的市場(chǎng)競(jìng)爭(zhēng)力,使之在技術(shù)含量和人性設(shè)計(jì)上有所提高,滿足現(xiàn)在人們對(duì)智能化的要求和人性化的要求。大學(xué)四年即將結(jié)束,為了檢驗(yàn)

9、自己的學(xué)習(xí)情況,我決定使用之前所學(xué)習(xí)到的硬件知識(shí)結(jié)合相關(guān)的軟件根底來(lái)制作一個(gè)基于 51 單片機(jī)的智能溫控風(fēng)扇,該風(fēng)扇具有隨溫度自動(dòng)調(diào)節(jié)風(fēng)速的功能,并且在無(wú)人時(shí)可以自動(dòng)關(guān)閉,并且可以讓使用者依據(jù)自身對(duì)溫度的敏感程度要求來(lái)設(shè)定基準(zhǔn)溫度,從而實(shí)現(xiàn)了人性化與智能化的雙重目標(biāo)。2 方案設(shè)計(jì)2.1 系統(tǒng)整體設(shè)計(jì)本設(shè)計(jì)的整體思路是:利用溫度傳感器 DS18B20 來(lái)檢測(cè)環(huán)境溫度,并依據(jù) DS18B20 的功能特性直接輸出數(shù)字溫度給 51 單片機(jī)進(jìn)行處理,并將實(shí)時(shí)溫度、設(shè)置溫度、風(fēng)速顯示在 LCD1602 上。用 2 個(gè)可調(diào)按鍵輔助設(shè)置溫度,一個(gè)用于提高設(shè)置溫度,一個(gè)那么用來(lái)降低設(shè)置溫度,設(shè)置溫度只能是整數(shù)型

10、式,檢測(cè)到的環(huán)境溫度可以精確到小數(shù)點(diǎn)后一位。本系統(tǒng)還配備一個(gè)紅外探頭,用于探測(cè)出風(fēng)范圍內(nèi)是否有人,假設(shè)在無(wú)人的情況下那么自動(dòng)關(guān)閉風(fēng)扇。否那么在開(kāi)啟電風(fēng)扇的情況下同時(shí)采用單片機(jī)模擬 PWM 脈寬調(diào)制方式來(lái)改變直流電扇電機(jī)的轉(zhuǎn)速。系統(tǒng)整體結(jié)構(gòu)框圖 1 所示:AT89S52獨(dú)立鍵盤(pán)LCD1602紅外探頭DS18B20復(fù)位L298N直流電機(jī)晶振圖圖1整體系統(tǒng)結(jié)構(gòu)圖整體系統(tǒng)結(jié)構(gòu)圖2.2 方案論證本設(shè)計(jì)要求實(shí)現(xiàn)在溫度變化的情況下直流電機(jī)風(fēng)扇的轉(zhuǎn)速隨之改變,并且能夠在無(wú)人的情況和溫度低于設(shè)定溫度的時(shí)候自行停止,因此需要較高的溫度分辨率和穩(wěn)定的探測(cè)工具以及可靠的電機(jī)控制部件。2.2.1 溫度傳感器的選擇在本設(shè)

11、計(jì)中,溫度傳感器的選擇方案有以下兩種:方案一:采用熱敏電阻。熱敏電阻的特性就是阻值可以隨溫度隨之變化,采用熱敏電阻作為檢測(cè)溫度的核心部件,然后通過(guò)放大電路進(jìn)行信號(hào)放大,再將放大后微弱電壓變化信號(hào)通過(guò) ADC0809 進(jìn)行模數(shù)轉(zhuǎn)換,將其轉(zhuǎn)化成數(shù)字信號(hào)并輸入單片機(jī)處理。方案二:?jiǎn)慰偩€數(shù)字溫度計(jì) DS18B20。DS18B20 數(shù)字溫度傳感器直接把溫度轉(zhuǎn)換為數(shù)字量,單片機(jī)可以直接讀取。對(duì)于方案一,如假設(shè)采用熱敏電阻作為溫度采集元件,那么價(jià)格方面比擬廉價(jià)且元件易得,但是熱敏電阻的缺點(diǎn)也是顯而易見(jiàn),對(duì)于溫度細(xì)微變化該元件反響不敏感,而且在后續(xù)的放大和轉(zhuǎn)換電路中還會(huì)造成采集數(shù)據(jù)的失真和誤差,并且熱敏電阻的

12、變化曲線為非線性,每個(gè)熱敏電阻都不同,還需要單獨(dú)測(cè)試描繪出每個(gè)熱敏電阻的曲線,雖然可以通過(guò)軟件方法來(lái)實(shí)現(xiàn)對(duì)該元件誤差的修正,但是這會(huì)使得電路的復(fù)雜性增加,并且在人體所在的實(shí)際環(huán)境中難以檢測(cè)到細(xì)微較小的溫度變化。所以這個(gè)方案在本設(shè)計(jì)中難以勝任。對(duì)于方案二,DS18B20 溫度傳感器的測(cè)量范圍從-55至+125,因此人體所處的環(huán)境溫度包括在其中,且該傳感器分辨率較高,對(duì)溫度變化反響靈敏,獲取的溫度誤差小。DS18B20 的一大優(yōu)勢(shì)是其能將收集到溫度值在自己的器件內(nèi)部就直接轉(zhuǎn)化成數(shù)字信號(hào)輸出,從而大大簡(jiǎn)化了系統(tǒng)設(shè)計(jì),同時(shí)由于該溫度傳感器采用了明了的單總線技術(shù),使得它的接口與相應(yīng)的單片機(jī)接口變得非常簡(jiǎn)

13、潔,同時(shí)使系統(tǒng)的抗干擾能力也得到了顯著的提高,所以本系統(tǒng)采用這個(gè)方案。2.2.2 紅外探測(cè)的選擇方案一:熱釋電紅外探測(cè)模塊。作為一款應(yīng)用廣泛的紅外探測(cè)模塊,具有高靈敏度,可靠性強(qiáng),工作電壓低等特點(diǎn),在各種場(chǎng)合被廣泛使用。但是該模塊的使用環(huán)境要求應(yīng)盡量防止流動(dòng)的風(fēng),具有流動(dòng)的風(fēng)的環(huán)境會(huì)對(duì)該感應(yīng)器造成干擾。因此該模塊與本設(shè)計(jì)所需環(huán)境有沖突,所以方案一不適用。方案二:對(duì)射式光電開(kāi)關(guān)。對(duì)射式光電開(kāi)關(guān)是由一紅外線發(fā)射管與一紅外線接收管配對(duì)組成使用的一款光電開(kāi)關(guān)。該開(kāi)關(guān)在電路中作用是通過(guò)光來(lái)傳播電路,當(dāng)紅外線發(fā)射管跟接受管間有物體阻擋時(shí),電路便會(huì)停止工作。利用這個(gè)特性,系統(tǒng)就能判斷所影響的環(huán)境中是否有人,

14、與本系統(tǒng)設(shè)計(jì)沒(méi)有任何沖突,所以就采用這種方案。2.2.3 控制核心的選擇本設(shè)計(jì)采用 AT89S52 單片機(jī)作為系統(tǒng)的控制核心,通過(guò)軟件編程的方法對(duì)溫度的進(jìn)行實(shí)時(shí)檢測(cè)與判斷,并在 I/O 口上輸出控制信號(hào),進(jìn)而控制電機(jī)工作。AT89S52 是一種低功耗,高性能 CMOS8 位微處理器,具有 8K 在系統(tǒng)可編程 AT89S523 引腳圖 DIP 封裝 Flash 存儲(chǔ)器。片內(nèi)含 8K 字節(jié)的只讀程序存儲(chǔ)器 ROM 和256 字節(jié)的隨即數(shù)據(jù)存儲(chǔ)器 RAM,兼容標(biāo)準(zhǔn) MCS-51 指令系統(tǒng)并使用 Atmel 公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè) 80C51 產(chǎn)品指令與引腳完全兼容。片上 Flash

15、 允許程序存儲(chǔ)器在系統(tǒng)可編程,也同樣適用于常規(guī)編程器,價(jià)格廉價(jià),與本系統(tǒng)的設(shè)計(jì)相符合。2.2.4 顯示器件的選擇方案一:LED 共陰極數(shù)碼顯示管。方案二:LCD 液晶顯示屏 1602。對(duì)于方案一,數(shù)碼管具有本錢(qián)低,功耗小,可視距離較遠(yuǎn)等特點(diǎn),同時(shí)顯示溫度的程序也相對(duì)簡(jiǎn)單,因此這種顯示方式在很多場(chǎng)合得到了廣泛應(yīng)用。但是它采用的顯示方式是通過(guò)動(dòng)態(tài)掃描,然后逐個(gè)點(diǎn)亮各個(gè) LED,因此會(huì)產(chǎn)生閃爍,在本設(shè)計(jì)這個(gè)溫度實(shí)時(shí)變化的環(huán)境中閃爍可能太快,數(shù)據(jù)可能不能很好的顯示出來(lái),故此方案不采用。對(duì)于方案二,液晶顯示屏顯示字符清晰,自帶背光,還能顯示符號(hào),并且不會(huì)不斷閃爍,顯示性能一流,并且考慮到此設(shè)計(jì)不只是要顯

16、示溫度,還要顯示電機(jī)和紅外的狀態(tài),所以從設(shè)計(jì)完善的角度來(lái)考慮,選擇此方案更有優(yōu)勢(shì)。2.2.5 調(diào)速方式的選擇方案一:采用數(shù)模轉(zhuǎn)化芯片 DAC0832 來(lái)控制,有單片機(jī)根據(jù)當(dāng)前環(huán)境溫度輸出數(shù)值到 DAC0832 中,再由 DAC0832 產(chǎn)生相應(yīng)的模擬信號(hào)控制晶閘管的導(dǎo)通角,從而采用無(wú)級(jí)調(diào)速電路實(shí)現(xiàn)電扇電機(jī)轉(zhuǎn)速的調(diào)節(jié)。方案二:采用單片機(jī)軟件模擬 PWM 調(diào)速的方法。PWM 是一種按照一定的規(guī)律改變脈沖序列的脈沖寬度,以調(diào)節(jié)輸出量和波形的一種調(diào)節(jié)方式,在 PWM 驅(qū)動(dòng)控制的調(diào)節(jié)系統(tǒng)中,最常用的是矩形波 PWM 信號(hào),在控制時(shí)調(diào)節(jié) PWM 波的占空比。占空比是指高電平在一個(gè)周期時(shí)間內(nèi)的百分比。在控制

17、電機(jī)的轉(zhuǎn)速時(shí),占空比越大,轉(zhuǎn)速就越快,假設(shè)全為高電平時(shí)占空比為 100%,此時(shí)轉(zhuǎn)速到達(dá)最大2。用單片機(jī)的 I/O 口輸出 PWM 信號(hào)時(shí),有如下三種方法:1利用軟件延時(shí)。當(dāng)高電平延時(shí)時(shí)間到時(shí),對(duì) I/O 口電平取反,使其變成低電平,再延時(shí)一定時(shí)間,反之在低電平延時(shí)到時(shí),對(duì) I/O 口電平取反,如此循環(huán)即可得到 PWM 信號(hào)。本設(shè)計(jì)就是采用了這種方法。2利用定時(shí)器??刂品椒ㄅc1相同,只是在該方法中利用單片機(jī)的定時(shí)器來(lái)進(jìn)行上下電平的轉(zhuǎn)變,而不是利用軟件的延時(shí)。應(yīng)用此方法時(shí)編程相對(duì)復(fù)雜,故不予以采用。3利用單片機(jī)自帶的 PWM 控制器。STC 系列單片機(jī)自帶 PWM 控制器,但本系統(tǒng)使用的 AT89

18、 系列單片機(jī)沒(méi)有此功能,所以不能使用。對(duì)于方案一,該方案能實(shí)現(xiàn)對(duì)直流電機(jī)的無(wú)級(jí)調(diào)速,速度變化靈敏,但是 D/A 轉(zhuǎn)換芯片價(jià)格較高,性價(jià)比不高,不采用。對(duì)于方案二,相對(duì)于其他方案來(lái)說(shuō),采用軟件模擬 PWM 實(shí)現(xiàn)調(diào)速的過(guò)程,具有個(gè)高的性價(jià)比與靈活性,充分的發(fā)揮了單片機(jī)自身的性能,對(duì)本系統(tǒng)的實(shí)現(xiàn)又提供了一條有效的途徑。所以綜合考慮還是選擇方案二的第一種。2.2.6 驅(qū)動(dòng)方式選擇方案一:達(dá)林頓反向驅(qū)動(dòng)器 ULN2803。2 藍(lán)厚榮.單片機(jī)的 PWM 控制技術(shù)J .工業(yè)控制計(jì)算機(jī),2021,233:9798方案二:電橋驅(qū)動(dòng)電路 L298N。對(duì)于方案一,作為一款反向驅(qū)動(dòng)器,ULN2803 應(yīng)用廣泛,驅(qū)動(dòng)效

19、果也很好,與 TTL 信號(hào)兼容性很好,但是在后續(xù)的硬件電路中表現(xiàn)不佳,風(fēng)扇轉(zhuǎn)速改變不明顯,而且在最高檔出現(xiàn)斷檔的情況,風(fēng)扇不轉(zhuǎn),在修改硬件電路,修改程序后依舊效果不佳,驅(qū)動(dòng)力明顯缺乏,故方案一中途停用。對(duì)于方案二,由于之前已經(jīng)有使用過(guò),對(duì) L298N 這個(gè)橋式驅(qū)動(dòng)模塊的應(yīng)用上手快速,驅(qū)動(dòng)能力也比ULN2803 好很多,驅(qū)動(dòng)風(fēng)扇 5 檔變速的實(shí)際效果明顯,故采用方案二。3 硬件設(shè)計(jì)系統(tǒng)主要器件包括溫度傳感器 DS18B20、AT89S51 單片機(jī)、液晶顯示屏 LCD1602、橋式驅(qū)動(dòng)模塊L298N、對(duì)射式光電開(kāi)關(guān)開(kāi)關(guān)和風(fēng)扇。輔助元件包括電容電阻、晶振、電源、按鍵、變壓器等。系統(tǒng)各器件簡(jiǎn)介3.1.

20、1 單線程數(shù)字溫度傳感器DS18B20 本系統(tǒng)的溫度采集使用 DS18B20 數(shù)字溫度傳感器。DS18B20 是一種具有單總線接口的數(shù)字溫度傳感器,具有體積小,功耗低,抗干擾能力強(qiáng)和單片機(jī)借口簡(jiǎn)單等優(yōu)點(diǎn)。DS18B20 的工作電壓范圍是 3.05.5V,測(cè)量溫度范圍55125其特性如下:1. 單總線接口。與單片機(jī)連接時(shí)只需要單片機(jī)的的一個(gè) I/O 口,該單總線能夠?qū)崿F(xiàn)單片機(jī)與 DS18B20 的雙向通信。同時(shí)該器件除上拉電阻外,不需要任何外圍器件支持。2. 可使用數(shù)據(jù)線供電。當(dāng)對(duì)系統(tǒng)空間要求嚴(yán)格時(shí),DS18B20 可以通過(guò)數(shù)據(jù)線供電。3. 。當(dāng)使用 9 位數(shù)據(jù)分辨率時(shí),DS18B20最快可在

21、93.75ms 內(nèi)完成溫度轉(zhuǎn)換,當(dāng)使用 12 位數(shù)據(jù)分辨率時(shí)。最快可在 750ms 內(nèi)完成溫度轉(zhuǎn)換。4. 多點(diǎn)組網(wǎng)測(cè)量功能。多個(gè) DS18B20 可以通過(guò)同一根數(shù)據(jù)線組成分布式測(cè)量網(wǎng)3。 圖圖2溫度傳感器溫度傳感器DS18B203 劉波文,劉向宇,黎勝容.51 單片機(jī) C 語(yǔ)言應(yīng)用開(kāi)發(fā)三位一體實(shí)戰(zhàn)精講M.1691703.1.2 AT89S52單片機(jī)簡(jiǎn)介 AT89S52是一種低功耗,高性能CMOS8位微處理器,具有8K在系統(tǒng)可編程AT89S523引腳圖DIP封裝Flash存儲(chǔ)器。使用Atmel公司高密度非易失性存儲(chǔ)器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令與引腳完全兼容。片上Flash允許程序存儲(chǔ)器在

22、系統(tǒng)可編程,也同樣適用于常規(guī)編程器。在單芯片上,擁有靈巧方便的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活,超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門(mén)狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM,定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中

23、斷或硬件復(fù)位為止。P0 口:P0口是一個(gè)8位漏極開(kāi)關(guān)的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫(xiě)“1時(shí),引腳用作高阻抗輸入。當(dāng)訪問(wèn)外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下, P0不具有內(nèi)部上拉電阻。在Flash編程時(shí),p0口也用來(lái)接受指令字節(jié);在程序效驗(yàn)時(shí),輸出指令字節(jié)。程序效驗(yàn)時(shí),需要外部上拉電阻。P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL邏輯電平。此外,P1.0和P1.1分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入P1.0/T2和定時(shí)器/計(jì)數(shù)器2 的觸發(fā)輸入P1.1/T2EX。 在fl

24、ash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。引腳號(hào)第二功能:P1.0 T2定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入,時(shí)鐘輸出P1.1 T2EX定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制P1.5 MOSI在系統(tǒng)編程用P1.6 MISO在系統(tǒng)編程用P1.7SCK(在系統(tǒng)編程用)P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)AT89S52引腳圖 PLCC封裝4 個(gè) TTL 邏輯電平。對(duì)P2 端口寫(xiě)“1時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流IIL。 在訪問(wèn)外部程序存儲(chǔ)器或用16位地址讀

25、取外部數(shù)據(jù)存儲(chǔ)器例如執(zhí)行MOVX DPTR 時(shí),P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用 8位地址如MOVX RI訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口輸出P2鎖存器的內(nèi)容。 在flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號(hào)。P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。 P3口亦作為AT89S52特殊功能第二功能使用,如下表所示。 在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。端口引腳第二功能:P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 INTO(外

26、中斷0)P3.3 INT1(外中斷1)P3.4 TO(定時(shí)/計(jì)數(shù)器0)P3.5 T1(定時(shí)/計(jì)數(shù)器1)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗(yàn)的控制信號(hào)。圖 3AT89S52 腳圖 DIP 封裝3.1.3 橋式驅(qū)動(dòng)電路L298N簡(jiǎn)介本系統(tǒng)要用單片機(jī)控制風(fēng)扇直流電機(jī),需要加驅(qū)動(dòng)電路,為直流電機(jī)提供足夠大的驅(qū)動(dòng)電流,并能在模擬 PWM 波的情況下實(shí)現(xiàn)風(fēng)扇轉(zhuǎn)速的改變。在本系統(tǒng)驅(qū)動(dòng)電路中,選用橋式驅(qū)動(dòng)電路 L298N 來(lái)驅(qū)動(dòng)風(fēng)扇直流電機(jī)。L298N 在使用時(shí)接口簡(jiǎn)單,操作方便,可為電機(jī)提供穩(wěn)定的驅(qū)動(dòng)電流,可以同時(shí)

27、驅(qū)動(dòng)兩臺(tái)直流電機(jī),可以在模擬 PWM 波的情況下很好的輸出信號(hào),實(shí)現(xiàn)風(fēng)扇轉(zhuǎn)速的平滑改變。L298N 是專用驅(qū)動(dòng)集成電路,屬于 H 橋集成電路,與 L293D 的差異是其輸出電流增大,功率增強(qiáng)。其輸出電流為 2A,最高電流 4A,最高工作電壓 50V,可以驅(qū)動(dòng)感性負(fù)載,如大功率直流電機(jī),(二相、三相、四相)步進(jìn)電機(jī),伺服電機(jī),電磁閥等,特別是其輸入端可以與單片機(jī)直接相聯(lián),從而很方便地受單片機(jī)控制。當(dāng)驅(qū)動(dòng)直流電機(jī)時(shí),可以直接控制兩路電機(jī),并可以實(shí)現(xiàn)電機(jī)正轉(zhuǎn)與反轉(zhuǎn),實(shí)現(xiàn)此功能只需改變輸入端的邏輯電平。模塊接口說(shuō)明:+5V:芯片電壓5V。VCC:電機(jī)電壓,最大可接 50V。GND:共地接法。EN1、E

28、N2:高電平有效,EN1、EN2 分別為 IN1 和 IN2、IN3 和 IN4 的使能端。IN1IN4:輸入端,輸入端電平和輸出端電平是對(duì)應(yīng)的。3.1.4 LCD1602簡(jiǎn)介字符型液晶顯示模塊是一種專門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式 LCD,目前常用16*1,16*2,20*2 和 40*2 行等的模塊。一般 1602 字符型液晶顯示器實(shí)物如圖:圖圖5LCD1602LCD1602 主要技術(shù)參數(shù):顯示容量:162 個(gè)字符工作電流:2.0mA(5.0V)4.35(WH)mm第 1 腳:VSS 為地電源。第 2 腳:VDD 接 5V 正電源。第 3 腳:VL 為液晶顯示器比照度調(diào)整端,接正電源時(shí)

29、比照度最弱,接地時(shí)比照度最高,比照度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影,使用時(shí)可以通過(guò)一個(gè) 10K 的電位器調(diào)整比照度。第 4 腳:RS 為存放器選擇,高電平時(shí)選擇數(shù)據(jù)存放器、低電平時(shí)選擇指令存放器。第 5 腳:R/W 為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。當(dāng) RS 和 R/W 共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng) RS 為低電平 R/W 為高電平時(shí)可以讀忙信號(hào),當(dāng) RS 為高電平 R/W 為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第 6 腳:E 端為使能端,當(dāng) E 端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第 714 腳:D0D7 為 8 位雙向數(shù)據(jù)線。第 15 腳:背光源正極。第 16 腳:背光源負(fù)

30、極。圖圖6對(duì)射式光電開(kāi)關(guān)對(duì)射式光電開(kāi)關(guān)光電開(kāi)關(guān) E18 的技術(shù)參數(shù):1、輸出電流 DC/SCR/繼電器 Control output:100mA/5V 供電2、消耗電流 DC25mA3、響應(yīng)時(shí)間 2ms4、指向角:15,有效距離 3-50CM 可調(diào)5、檢測(cè)物體:透明或不透明體6、工作環(huán)境溫度:-25+557、標(biāo)準(zhǔn)檢測(cè)物體:太陽(yáng)光 10000LX 以下 白熾燈 3000LX 以下8、外殼材料:塑料電氣特性: U:5VDC I:100mA Sn:3-50CM3.2 各局部電路設(shè)計(jì)各局部電路設(shè)計(jì)3.2.1 開(kāi)關(guān)復(fù)位與晶振電路單片機(jī)系統(tǒng)中,有兩個(gè)非常重要的電路,一個(gè)是開(kāi)關(guān)復(fù)位電路,用來(lái)對(duì)單片機(jī)本身和其

31、外部擴(kuò)展 I/O接口電路進(jìn)行復(fù)位,還有一個(gè)是晶振電路,用于產(chǎn)生諧振,使單片機(jī)得以工作。電路圖如圖 7 所示:ABPWM1XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P

32、2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52R110KC120pFC220pFC310uFX1CRYSTALVCC圖圖7晶振電路與復(fù)位電路晶振電路與復(fù)位電路單片機(jī)的 XTAL1 和 XTAL2 用來(lái)外界石英晶體和微調(diào)電容,連接單片機(jī)內(nèi) OSC 的定時(shí)反響電路。如下圖,當(dāng)按下按鍵開(kāi)關(guān)是,系統(tǒng)復(fù)位一次。其中電容 C1、C2 為 20pF,C3 為 10uF,電阻 R1 為 10k,晶振為12MHz。3.2.2 獨(dú)立控制鍵盤(pán)電路本設(shè)計(jì)還有兩個(gè)獨(dú)立按鍵,分別連接單片機(jī)的 P3

33、.2 口和 P3.3 口,如圖 8 所示:PWM1XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A10

34、23P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52R24.7K圖圖8按鍵電路按鍵電路獨(dú)立按鍵 S1 和 S2 一端與單片機(jī)相連,另一端接地,當(dāng)按下時(shí),P3 口讀取低電平有效。系統(tǒng)上電進(jìn)入工作后,掃描按鍵子程序,此時(shí)可以設(shè)定溫度。其中 S1 為加按鍵,S2 為減按鍵,每按下一次后,都會(huì)使對(duì)應(yīng)的預(yù)設(shè)值加一或者減一。3.2.3 LCD顯示電路本設(shè)計(jì)采用的是 LCD1602A 作為顯示模塊,它與單片機(jī)的連接如圖 9 所示。其中第一行顯示溫度與紅外探測(cè)結(jié)果,溫度顯示到小數(shù)點(diǎn)后 2 位。第二行顯示設(shè)定溫度與風(fēng)扇的風(fēng)力等級(jí)。VCC234567891RP1R

35、ESPACK-8D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCD1LM016LRV110圖圖9LCD連接電路連接電路3.2.4 紅外探測(cè)電路紅外光電開(kāi)關(guān)一共有三個(gè)接口,一個(gè)接+5V,一個(gè)接地,還有一端與單片機(jī)相連,輸出高電平或者低電平信號(hào),在電路中直接用按鍵開(kāi)關(guān)代替了,就是按鍵電路中的開(kāi)關(guān) S3。3.2.5 溫度采集電路DS18B20 數(shù)字溫度傳感器通過(guò)其內(nèi)部計(jì)數(shù)時(shí)鐘周期來(lái)的作用,實(shí)現(xiàn)了特有的溫度測(cè)量功能。低溫系數(shù)振蕩器輸出的時(shí)鐘信號(hào)通過(guò)由高溫度系數(shù)振蕩器產(chǎn)生的門(mén)周期而被計(jì)數(shù),計(jì)數(shù)器預(yù)先置有與-55相對(duì)應(yīng)的一個(gè)基權(quán)值。如果計(jì)數(shù)器計(jì)數(shù)到 0

36、 時(shí),高溫度系數(shù)振蕩周期還未結(jié)束,那么表示測(cè)量的溫度值高于-55,被預(yù)置在-55的溫度存放器中的值就增加 1,然后這個(gè)過(guò)程不斷重復(fù),直到高溫度系數(shù)振蕩周期結(jié)束為止。此時(shí)溫度存放器中的值即為被測(cè)溫度值,這個(gè)值以 16 位二進(jìn)制形式存放在存儲(chǔ)器中,通過(guò)主機(jī)發(fā)送存儲(chǔ)器讀命令可讀出此溫度值,讀取時(shí)低位在前,高位在后,依次進(jìn)行。由于溫度振蕩器的拋物線特性的影響,其內(nèi)用斜率累加器進(jìn)行補(bǔ)償。DS18B20 由于直接可以輸出數(shù)字信號(hào),所以可以直接輸出給單片機(jī),但是需要在輸出口上接一個(gè)上拉電阻來(lái)確保工作,連接圖如圖 10 所示:VCC47.0DQ2VCC3GND1U2DS18B20R24.7K圖圖10DS18B

37、20連接電路連接電路3.2.6 風(fēng)扇驅(qū)動(dòng)電路本設(shè)計(jì)采用單片機(jī)模擬 PWM 波的方式通過(guò) I/O 口輸出 TTL 信號(hào),再通過(guò)一個(gè)電機(jī)驅(qū)動(dòng)模塊 L298N 來(lái)驅(qū)動(dòng) 12V 直流無(wú)刷電機(jī)工作,從而實(shí)現(xiàn)電扇轉(zhuǎn)速的調(diào)節(jié)。紅外探測(cè)控制電機(jī)開(kāi)關(guān),鍵盤(pán)改變?cè)O(shè)置的溫度,然后和預(yù)設(shè)的溫度進(jìn)行比擬,通過(guò)軟件判斷后由單片機(jī)的 P3.4 口輸出脈沖信號(hào),經(jīng)由 L298N 驅(qū)動(dòng)風(fēng)扇直流電機(jī)電路,實(shí)現(xiàn)電機(jī)的啟動(dòng)和轉(zhuǎn)速的改變。當(dāng)環(huán)境溫度改變時(shí),電機(jī)的轉(zhuǎn)速會(huì)按照設(shè)定的程序相對(duì)進(jìn)行改變,溫度升高轉(zhuǎn)速變快,溫度降低,轉(zhuǎn)速變慢,溫度過(guò)低時(shí)自動(dòng)停止,無(wú)人狀態(tài)下也會(huì)自動(dòng)停止。當(dāng)有人出現(xiàn)后,并且溫度高于預(yù)設(shè)溫度,電機(jī)重新開(kāi)始工作。如圖

38、12 所示:AB+12VPWM1IN15IN27ENA6OUT12OUT23ENB11OUT313OUT414IN310IN412SENSA1SENSB15GND8VS4VCC9U3L298D81N914+88.8kRPMC4100nFD11N914D21N914D31N914C5100nF圖圖11L298N驅(qū)動(dòng)電路驅(qū)動(dòng)電路4 軟件設(shè)計(jì)軟件編寫(xiě)有 C 語(yǔ)言和匯編語(yǔ)言兩種,這兩種語(yǔ)言我都有所了解,兩種語(yǔ)言各有特點(diǎn)。C 語(yǔ)言具有編寫(xiě)簡(jiǎn)單,容易上手的特點(diǎn),而且看起來(lái)?xiàng)l理清晰,便于修改,能夠快速準(zhǔn)確的找到錯(cuò)誤并進(jìn)行改正。相對(duì)于匯編語(yǔ)言,作為一種低級(jí)的機(jī)器語(yǔ)言,讀程序相對(duì)繁瑣,但程序?qū)懞煤笠馑济髁耍?/p>

39、也要高于 C 語(yǔ)言編寫(xiě)的程序,具有很好的開(kāi)發(fā)功能。結(jié)合自身實(shí)際,我還是選擇了 C 語(yǔ)言,容易上手,可以更好的調(diào)試與編譯程序。主程序流程圖程序初始主程序開(kāi)始讀取 DS18B20 溫度顯示溫度讀取預(yù)設(shè)溫度調(diào)用鍵盤(pán)掃描函數(shù)顯示設(shè)定溫度判斷顯示有人/無(wú)人顯示風(fēng)速等級(jí)與預(yù)設(shè)溫度經(jīng)行比擬調(diào)用電機(jī)控制函數(shù)有人無(wú)人圖圖12 主程序流程圖主程序流程圖主程序如下:void main(void) /初始化uint ltemp; /初始化溫度dianji=0; /初始化電機(jī)int1=0;int2=0;initlcd(); /初始化液晶顯示屏read_temp(); /讀取測(cè)溫子程序,讀取溫度數(shù)值delay(1000)

40、; /延時(shí) while(1) /循環(huán)開(kāi)始 delay(2);ltemp=read_temp(); /溫度賦值write_com(0 x80+2); /將溫度顯示到液晶屏 write_data(0 x30+ltemp%10000/1000); write_data(0 x30+ltemp%1000/100); write_data(0 x2e);write_data(0 x30+ltemp%100/10);write_data(0 x30+ltemp%10);write_data(0 xdf);keyscan(); /讀取鍵盤(pán)子程序delay(2);write_com(0 x80+0 x40+4

41、); /將設(shè)定溫度顯示到液晶屏write_data(0 x30+set%100/10);write_data(0 x30+set%10);write_data(0 xdf);deal(ltemp/100); /運(yùn)行溫度判斷子程序dianjik(); /運(yùn)行電機(jī)控制子程序write_com(0 x80+0 x40+15); /將風(fēng)扇轉(zhuǎn)速顯示到液晶屏write_data(0 x30+h);write_com(0 x80+15); /將紅外探測(cè)結(jié)果顯示到液晶屏 write_data(0 x30+r); 4.2 液晶顯示子程序液晶 LCD1602 的子程序要按照說(shuō)明上的時(shí)序圖來(lái)完成。要想讓 LCD 顯

42、示的話,首先要對(duì) LCD 進(jìn)行初始化。在完成 LCD 的初始化后,還需要定義字符的位置,并且定義寫(xiě)數(shù)據(jù)的函數(shù)。其第一行的地址是40H4FH,第二行的地址是從 80H8FH,然后才能根據(jù)要顯示字符的 ASC碼對(duì)該字符進(jìn)行顯示。其流程圖 14 所示:寫(xiě)指令函數(shù)位置初始化函數(shù)寫(xiě)數(shù)據(jù)函數(shù)數(shù)字和字符圖圖13液晶顯示程序流程圖液晶顯示程序流程圖子程序如下:/*初始化函數(shù)*void initlcd(void) uint i; E=0;RW=0; RS=0;delay(10);/延時(shí) 10mswrite_com(0 x01);/清屏delay(5);write_com(0 x38);/設(shè)顯示模式delay(5

43、);write_com(0 x0c);/開(kāi)顯示不顯光標(biāo) 光標(biāo)不閃delay(5);write_com(0 x06);/地址自動(dòng)加一 光標(biāo)自動(dòng)加一delay(5);write_com(0 x80);for(i=0;i16;i+)write_data(table2i); write_com(0 x80+0 x40);for(i=0;i16;i+)write_data(table1i); /*寫(xiě)指令函數(shù)*void write_com(uchar command)RS=0;/指令RW=0;/寫(xiě)入P0=command;delay(5);E=1;/允許delay(10);E=0;/*寫(xiě)數(shù)據(jù)函數(shù)*void

44、write_data(uchar dat)RS=1;/數(shù)據(jù)P0=dat;delay(5);E=1;/允許delay(10);E=0;4.3 DS18B20 溫度傳感器子程序4.3.1 溫度讀取程序DS18B20 溫度讀取程序負(fù)責(zé)把 DS18B20 測(cè)得的外界數(shù)據(jù)經(jīng)過(guò) AD 轉(zhuǎn)化為數(shù)字,然后將數(shù)據(jù)存入存放器中,供溫度處理程序進(jìn)行下一步操作。其流程圖 15 所示:延遲至少 750ms傳感器初始化讀取應(yīng)答信號(hào)從 DS18B20 讀取一個(gè)字節(jié)從 DS18B20 寫(xiě)入一個(gè)字節(jié)輸出數(shù)據(jù) 圖圖14 DS18B20程序流程圖程序流程圖子程序如下:/*延時(shí)函數(shù)*void delayus(uint z)uchar

45、 i;for(i=0;iz;i+);/*將 DS18B20 傳感器初始化,讀取應(yīng)答信號(hào)*uchar clean_ds18b20()uchar k;/儲(chǔ)存 DS18B20 是否存在的標(biāo)志,k=0,表示存在;k=1,表示不存在dq=1;/先將數(shù)據(jù)線拉高delayus(5);/延時(shí)dq=0;/再將數(shù)據(jù)線從高拉低,要求保持 480960usdelayus(30);/略微延時(shí),以向 DS18B20 發(fā)出一持續(xù) 480960us 的低電平復(fù)位脈沖 dq=1;/釋放數(shù)據(jù)線將數(shù)據(jù)線拉高delayus(3);/延時(shí)釋放總線后需等待 1560us 讓 DS18B20 輸出存在脈沖k=dq;/讓單片機(jī)檢測(cè)是否輸出了

46、存在脈沖dq=0 表示存在delayus(25);/延時(shí)足夠長(zhǎng)時(shí)間,等待存在脈沖輸出完畢return k;/返回檢測(cè)成功標(biāo)志/*從 DS18B20 讀取一個(gè)字節(jié)數(shù)據(jù)*uchar read_ds18b20_date()uchar value,i;/儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù)for(i=0;i=1;dq=1;/將數(shù)據(jù)線人為拉高,為單片機(jī)檢測(cè) DS18B20 的輸出電平作準(zhǔn)備if(dq)/如果讀到的數(shù)據(jù)是 1,那么將 1 存入 valuevalue|=0 x80;delayus(6);if(!dq) /如果讀到的數(shù)據(jù)是 0,那么將 0 存入 valuevalue|=0 x00;delayus(6);re

47、turn value;/返回讀出的十進(jìn)制數(shù)據(jù)/*向 DS18B20 寫(xiě)入一個(gè)字節(jié)數(shù)據(jù)*void write_ds18b20_date(uchar date)uchar num;for(num=0;num=1;delayus(4); /4usdq=1;/釋放數(shù)據(jù)線delayus(4);/稍作延時(shí),給硬件一點(diǎn)反響時(shí)間4.3.2 溫度處理程序溫度處理程序?qū)⑸弦话巡僮髦凶x取的溫度值進(jìn)行轉(zhuǎn)換,將二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),然后輸出數(shù)字,直接交給顯示程序顯示。其流程圖如圖 16 所示:等待初始化完成初始化啟動(dòng)溫度測(cè)量讀取高八位和低八位輸出十進(jìn)制整數(shù)處理數(shù)據(jù)等待轉(zhuǎn)化完成圖圖15溫度處理子程序流程圖溫度處理子程序

48、流程圖其子程序如下:/*做好讀溫度的準(zhǔn)備*uint read_temp()uint g,d,m;uint c;m=1;m=clean_ds18b20();/初始化完成 m=0while(m); /等待初始化完成write_ds18b20_date(0 xcc);/跳過(guò) romwrite_ds18b20_date(0 x44);/啟動(dòng)溫度測(cè)量delayus(100);m=clean_ds18b20();while(m); /等待轉(zhuǎn)化完成write_ds18b20_date(0 xcc);/跳過(guò) romwrite_ds18b20_date(0 xbe);/讀數(shù)據(jù)命令d=read_ds18b20_d

49、ate();/讀低 8 位數(shù)據(jù)g=read_ds18b20_date(); /讀高 3 位數(shù)據(jù)g4); /整數(shù)局部g=g*100;d=(d&0 x0f)*0.0625*100; c=g+d;return c; 4.4 鍵盤(pán)掃描子程序本設(shè)計(jì)配備兩個(gè)輸入按鍵,分別可以對(duì)設(shè)定溫度進(jìn)行加減,此子程序用來(lái)檢測(cè)按鍵輸入。流程圖 17 所示:判斷是否按下掃描按鍵延時(shí)判斷是否按下設(shè)定溫度加一減一圖圖16鍵盤(pán)掃描流程圖鍵盤(pán)掃描流程圖子程序如下:/*鍵盤(pán)輸入*void keyscan(void)if(key1=0)/判斷 key1 是否按下 delay(10);/延時(shí)判斷 key1 是否按下if(key1

50、=0)set+;/設(shè)定溫度加 1if(key1=100)set=18;while(!key1);if(key2=0)/判斷 key2 是否按下 delay(10);/延時(shí)判斷 key2 是否按下if(key2=0)set-;/設(shè)定溫度減 1if(set=0)set=18;while(!key2);4.5 溫度比擬處理子程序溫控風(fēng)扇設(shè)定 5 個(gè)檔位,根據(jù)溫度的變化來(lái)變化風(fēng)扇的轉(zhuǎn)速。輸出的型式采用高地電平的交替變換,檔位越高,輸出高電平的次數(shù)越多,相應(yīng)的輸出低點(diǎn)平的次數(shù)變少,反之,檔位越低,輸出的高電平次數(shù)越少,相應(yīng)的輸出的高電平的次數(shù)變多。低于設(shè)定溫度時(shí),風(fēng)扇不轉(zhuǎn),大于最大擋位時(shí)滿負(fù)荷運(yùn)轉(zhuǎn)。流程

51、如圖 18 所示:讀取溫度溫度比擬風(fēng)扇不轉(zhuǎn)設(shè)置為 1 檔設(shè)置為 2 檔設(shè)置為 3 檔設(shè)置為 4 檔設(shè)置為 5 檔低于設(shè)定溫度低于設(shè)定溫度+1低于設(shè)定溫度+3高于設(shè)定溫度+7低于設(shè)定溫度+5低于設(shè)定溫度+7圖圖17溫度比擬處理流程圖溫度比擬處理流程圖子程序如下:/*溫度處理函數(shù)*void deal(uint temp) /溫度處理if(tempset)&(temp(set+1)&(temp(set+3)&(temp(set+5)&(temp(set+7)/溫度高于設(shè)定值+7 h=5; l=0;4.6 電機(jī)控制程序包含紅外探測(cè)本設(shè)計(jì)最終驅(qū)動(dòng)電機(jī)的子程序,包含了紅外檢

52、測(cè)。首先進(jìn)行紅外檢測(cè)判斷,假設(shè)沒(méi)有人,電機(jī)不轉(zhuǎn),假設(shè)有人,承接上函數(shù)設(shè)定的檔位,模擬 PWM 波輸出,一次輸出 5 個(gè)電平,1 檔就輸出一個(gè)高電平,四個(gè)低電平,2 檔輸出兩個(gè)高電平,三個(gè)低電平,依次類推。流程圖如圖 19 所示:電機(jī)輸出模擬 PWM 波開(kāi)始模擬 PWM 上下電平次數(shù)電機(jī)不轉(zhuǎn)紅外探測(cè)是否有人無(wú)人有人圖圖18紅外探測(cè)電機(jī)輸出流程圖紅外探測(cè)電機(jī)輸出流程圖子程序如下:/*電機(jī)模擬 PWM 控制程序*void dianjik() uchar q;for(q=0;ql&red=0;q+)/紅外感應(yīng)有人,輸出設(shè)定的低電平次數(shù)dianji=0;int1=0;int2=0;r=1; de

53、lay(100); for(q=0;qh&red=0;q+)/紅外感應(yīng)有人,輸出設(shè)定的高電平次數(shù)dianji=1;int1=1;int2=0;r=1;delay(100);for(q=0;ql&red=1;q+)/紅外感應(yīng)沒(méi)人,不輸出dianji=0;int1=0;int2=0;r=0; delay(10); for(q=0;qh&red=1;q+)/紅外感應(yīng)沒(méi)人,不輸出dianji=1;int1=0;int2=0;r=0;delay(10);4.7 軟件設(shè)計(jì)中的問(wèn)題與分析4.7.1 LCD 顯示程序的問(wèn)題由于 LCD 要顯示的數(shù)據(jù)有四個(gè),溫度、檔位、紅外探測(cè)、設(shè)定溫度

54、,所以如何合理的安排輸出順序很重要,合理的輸出順序才能對(duì)應(yīng)外部正確的表現(xiàn)。每個(gè)數(shù)據(jù)在輸出后都要有一定的延時(shí),這樣才能清楚的顯示在 LCD 屏幕上。由于本程序是基于溫度的,所以第一個(gè)輸出的就是溫度值;然后本程序要執(zhí)行的是溫度的比擬,所以第二個(gè)輸出的必然是設(shè)定溫度,設(shè)定溫度還要同時(shí)讀取鍵盤(pán)程序,實(shí)時(shí)跟隨鍵盤(pán)輸入的改變而改變;第三個(gè)輸出的就是比擬溫度后的設(shè)定風(fēng)速了,顯示的風(fēng)速就是檔位數(shù);最后輸出的就是紅外探測(cè)的結(jié)果,以 0 和 1 來(lái)表示,1 為有人,處于工作狀態(tài),0 為無(wú)人,處于待機(jī)狀態(tài)。剛開(kāi)始調(diào)試程序的時(shí)候,數(shù)值沒(méi)在 LCD 上顯示,后來(lái)發(fā)現(xiàn)是主函數(shù)忘記了調(diào)用子函數(shù),使得數(shù)據(jù)沒(méi)有輸入,后來(lái)經(jīng)過(guò)修

55、改和調(diào)整,終于在 LCD 上正常顯示出來(lái)了。合理的程序使得程序顯示狀態(tài)井然有序。4.7.2 DS18B20 的顯示程序問(wèn)題在本設(shè)計(jì)中,DS18B20 的顯示是最核心的數(shù)據(jù),所有其他數(shù)據(jù)都與之相對(duì)應(yīng)改變,電機(jī)的轉(zhuǎn)速也與之相關(guān),但是在程序調(diào)試過(guò)程中,發(fā)現(xiàn)了一個(gè)問(wèn)題,每次給單片機(jī)上電之后,總有那么不到一秒鐘的時(shí)間,溫度顯示的值是 85,不斷電的情況下復(fù)位沒(méi)有出現(xiàn)這種情況,只有每次啟動(dòng)的時(shí)候出現(xiàn)。當(dāng)顯示 85 后,其他的數(shù)據(jù)也隨之變?yōu)閷?duì)應(yīng)值,風(fēng)扇也有一個(gè)短暫的轉(zhuǎn)動(dòng),這對(duì)于這個(gè)設(shè)計(jì)來(lái)說(shuō)無(wú)疑是一個(gè)很致命的缺陷。開(kāi)始查找原因,從 DS18B20 的數(shù)據(jù)手冊(cè)中發(fā)現(xiàn),每次上電后,DS18B20 的暫存器中存儲(chǔ)的

56、數(shù)據(jù)就是85,在讀取數(shù)據(jù)后,內(nèi)部的 AD 要使用 750ms 的時(shí)間來(lái)進(jìn)行數(shù)據(jù)的轉(zhuǎn)換然后重新寫(xiě)入新的數(shù)據(jù),所以在這段時(shí)間中,顯示的數(shù)值就是 85 了,看來(lái)這是硬件上不可防止的過(guò)程,但是硬件上不能改變的話,我可以使用軟件的方法來(lái)進(jìn)行變動(dòng),我最后采取的方法是在循環(huán)程序開(kāi)始之前,先讀取一次 DS18B20 的數(shù)值,然后給與一個(gè) 1s 的延時(shí),使得 AD 轉(zhuǎn)換完成,然后在開(kāi)始循環(huán),這樣,這個(gè)問(wèn)題終于得以解決了。5 硬件調(diào)試硬件電路的調(diào)試相對(duì)來(lái)說(shuō)比擬簡(jiǎn)單。調(diào)試的功能包括按鍵電路,DS18B20,電機(jī)電路和紅外傳感電路。5.1 按鍵電路的調(diào)試按鍵電路實(shí)現(xiàn)的功能是在按鍵按下后能執(zhí)行設(shè)定溫度的改變,這項(xiàng)采用實(shí)

57、物調(diào)試,按鍵按下之后,溫度隨之改變。5.2 溫度傳感器電路的調(diào)試溫度傳感器 DS18B20 的調(diào)試在實(shí)物上進(jìn)行,當(dāng)用手指去加熱溫度傳感器 DS18B20 的時(shí)候,LCD 示數(shù)開(kāi)始隨溫度的上升而改變,變化明顯而且刷新頻率適中,可以清晰的看到所顯示的溫度。5.3 電機(jī)電路的調(diào)試電機(jī)電路進(jìn)行調(diào)試,不斷的將設(shè)定溫度降低,觀察電機(jī)轉(zhuǎn)速的變化。電機(jī)隨設(shè)定溫度與實(shí)際溫度差值的改變而改變,轉(zhuǎn)速變化較為平滑,到達(dá)了預(yù)期的效果。5.4 紅外感應(yīng)電路的調(diào)試紅外感應(yīng)電路直接測(cè)試,在前方無(wú)人時(shí),系統(tǒng)處于待機(jī)狀態(tài),電機(jī)不轉(zhuǎn)動(dòng)。當(dāng)前方有人時(shí),電機(jī)開(kāi)始轉(zhuǎn)動(dòng)在溫度高于預(yù)設(shè)溫度的時(shí)候 。5.5 硬件調(diào)試遇到的問(wèn)題本次設(shè)計(jì)中遇到的最困難的問(wèn)題就是出在了電機(jī)的驅(qū)動(dòng)上,剛開(kāi)始的設(shè)計(jì)使用的達(dá)林頓 ULN2803 反向驅(qū)動(dòng)器來(lái)驅(qū)動(dòng)電機(jī),可是在軟件無(wú)誤,硬件連接無(wú)誤的情況下,電機(jī)轉(zhuǎn)動(dòng)表現(xiàn)出來(lái)的是變速效果不明顯,最高檔時(shí)停轉(zhuǎn)現(xiàn)象的發(fā)生。再不斷的修改軟件和硬件電路無(wú)果的情況下,放棄了這個(gè)驅(qū)動(dòng),改用橋式驅(qū)動(dòng)電路 L298N,所有的問(wèn)題迎刃而解,反向驅(qū)動(dòng)的驅(qū)動(dòng)力不連續(xù),而且驅(qū)動(dòng)力在小電流的輸入輸出時(shí)缺乏,使得電機(jī)驅(qū)動(dòng)產(chǎn)生了非常不理想的效果。6 結(jié)論此次的設(shè)計(jì)遇到的每個(gè)問(wèn)題對(duì)我來(lái)說(shuō)都是一個(gè)很大的挑戰(zhàn),在老師的幫助和自己的探索中,我完成了“基于 5

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論