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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、CD顯示電路.13.133.2.5 溫度采集電路.143.2.6 風扇驅動電路.144 軟件設計軟件設計.15主程序流程圖.154.2 液晶顯示子程序.174.3 DS18B20 溫度傳感器子程序.19 溫度讀取程序.194.3.2 溫度處理程序.214.4 鍵盤掃描子程序.234.5 溫度比擬處理子程序.244.6 電機控制程序包含紅外探測.264.7 軟件設計中的問題與分析.284.7.1 LCD顯示程序的問題.284.7.2 DS18B20的顯示程序問題.285 硬件調試硬件調試.295.1 按鍵電路的調試.295.2 溫度傳感器電路的調試.295.3 電機電路的調試.295.4 紅外感

3、應電路的調試.295.5 硬件調試遇到的問題.296 結論結論.29參考文獻參考文獻.30基 基于單片機的智能風扇控制 南京 210044 摘要:摘要:風扇是人們日常生活中必不可缺的工具,尤其是在夏天,因其價格廉價,用電量較之空調有很大優(yōu)勢,故在中國還有較大市場。本文將以 AT89S52 為主控芯片,輔以 DS18B20 溫度傳感器,結合紅外探測裝置,來實現(xiàn)一種智能溫控電扇的設計。此風扇通過液晶顯示器來顯示溫度和風速,配備 2 個溫度設定按鍵,由 DS18B20 讀取外界溫度,紅外探頭探測是否有人,通過設定的溫度配合程序來調節(jié)風速,最后通過 L298N 來驅動電機。經(jīng)過調試,風扇可以按照溫度智

4、能變速,無人自動關閉,實現(xià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 引言電扇是人們日常生活中常用的降溫工具,從開始的吊扇到現(xiàn)在的 USB 風扇,無處不見電扇的蹤跡。雖然如今空調已經(jīng)走進千家萬戶,但是作為一種節(jié)能環(huán)保,并且廉價簡單的降溫工具,電扇還在很多家庭生活中發(fā)揮著自己獨特的作用。但也隨著人們要求的多樣化和科學技術的進步,各種多功能的智能風扇在市場上暫露頭角并逐漸取代傳統(tǒng)風扇。在產(chǎn)品智能化過程中單片機因為其智能化程度高,控制精度高,操作簡單,廉價易得,抗干擾能力強等特點,在產(chǎn)品中得到了很好的應用。為提高風扇的市場競爭力,使之在技術含量和人性設計上有所提高,滿足現(xiàn)在人們對智能化的要求和人性化的要求。大學四年即將結束,為了檢驗

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

31、外部擴展 I/O接口電路進行復位,還有一個是晶振電路,用于產(chǎn)生諧振,使單片機得以工作。電路圖如圖 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晶振電路與復位電路晶振電路與復位電路單片機的 XTAL1 和 XTAL2 用來外界石英晶體和微調電容,連接單片機內 OSC 的定時反響電路。如下圖,當按下按鍵開關是,系統(tǒng)復位一次。其中電容 C1、C2 為 20pF,C3 為 10uF,電阻 R1 為 10k,晶振為12MHz。3.2.2 獨立控制鍵盤電路本設計還有兩個獨立按鍵,分別連接單片機的 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按鍵電路按鍵電路獨立按鍵 S1 和 S2 一端與單片機相連,另一端接地,當按下時,P3 口讀取低電平有效。系統(tǒng)上電進入工作后,掃描按鍵子程序,此時可以設定溫度。其中 S1 為加按鍵,S2 為減按鍵,每按下一次后,都會使對應的預設值加一或者減一。3.2.3 LCD顯示電路本設計采用的是 LCD1602A 作為顯示模塊,它與單片機的連接如圖 9 所示。其中第一行顯示溫度與紅外探測結果,溫度顯示到小數(shù)點后 2 位。第二行顯示設定溫度與風扇的風力等級。VCC234567891RP1R

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

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

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

38、12 所示:AB+12VPWM1IN15IN27ENA6OUT12OUT23ENB11OUT313OUT414IN310IN412SENSA1SENSB15GND8VS4VCC9U3L298D81N914+88.8kRPMC4100nFD11N914D21N914D31N914C5100nF圖圖11L298N驅動電路驅動電路4 軟件設計軟件編寫有 C 語言和匯編語言兩種,這兩種語言我都有所了解,兩種語言各有特點。C 語言具有編寫簡單,容易上手的特點,而且看起來條理清晰,便于修改,能夠快速準確的找到錯誤并進行改正。相對于匯編語言,作為一種低級的機器語言,讀程序相對繁瑣,但程序寫好后意思明了,效率

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

40、; /延時 while(1) /循環(huán)開始 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(); /讀取鍵盤子程序delay(2);write_com(0 x80+0 x40+4

41、); /將設定溫度顯示到液晶屏write_data(0 x30+set%100/10);write_data(0 x30+set%10);write_data(0 xdf);deal(ltemp/100); /運行溫度判斷子程序dianjik(); /運行電機控制子程序write_com(0 x80+0 x40+15); /將風扇轉速顯示到液晶屏write_data(0 x30+h);write_com(0 x80+15); /將紅外探測結果顯示到液晶屏 write_data(0 x30+r); 4.2 液晶顯示子程序液晶 LCD1602 的子程序要按照說明上的時序圖來完成。要想讓 LCD 顯

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

43、);write_com(0 x0c);/開顯示不顯光標 光標不閃delay(5);write_com(0 x06);/地址自動加一 光標自動加一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); /*寫指令函數(shù)*void write_com(uchar command)RS=0;/指令RW=0;/寫入P0=command;delay(5);E=1;/允許delay(10);E=0;/*寫數(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 溫度讀取程序負責把 DS18B20 測得的外界數(shù)據(jù)經(jīng)過 AD 轉化為數(shù)字,然后將數(shù)據(jù)存入存放器中,供溫度處理程序進行下一步操作。其流程圖 15 所示:延遲至少 750ms傳感器初始化讀取應答信號從 DS18B20 讀取一個字節(jié)從 DS18B20 寫入一個字節(jié)輸出數(shù)據(jù) 圖圖14 DS18B20程序流程圖程序流程圖子程序如下:/*延時函數(shù)*void delayus(uint z)uchar

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

46、存在脈沖dq=0 表示存在delayus(25);/延時足夠長時間,等待存在脈沖輸出完畢return k;/返回檢測成功標志/*從 DS18B20 讀取一個字節(jié)數(shù)據(jù)*uchar read_ds18b20_date()uchar value,i;/儲存讀出的一個字節(jié)數(shù)據(jù)for(i=0;i=1;dq=1;/將數(shù)據(jù)線人為拉高,為單片機檢測 DS18B20 的輸出電平作準備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;/返回讀出的十進制數(shù)據(jù)/*向 DS18B20 寫入一個字節(jié)數(shù)據(jù)*void write_ds18b20_date(uchar date)uchar num;for(num=0;num=1;delayus(4); /4usdq=1;/釋放數(shù)據(jù)線delayus(4);/稍作延時,給硬件一點反響時間4.3.2 溫度處理程序溫度處理程序將上一把操作中讀取的溫度值進行轉換,將二進制數(shù)轉化為十進制數(shù),然后輸出數(shù)字,直接交給顯示程序顯示。其流程圖如圖 16 所示:等待初始化完成初始化啟動溫度測量讀取高八位和低八位輸出十進制整數(shù)處理數(shù)據(jù)等待轉化完成圖圖15溫度處理子程序流程圖溫度處理子程序

48、流程圖其子程序如下:/*做好讀溫度的準備*uint read_temp()uint g,d,m;uint c;m=1;m=clean_ds18b20();/初始化完成 m=0while(m); /等待初始化完成write_ds18b20_date(0 xcc);/跳過 romwrite_ds18b20_date(0 x44);/啟動溫度測量delayus(100);m=clean_ds18b20();while(m); /等待轉化完成write_ds18b20_date(0 xcc);/跳過 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 鍵盤掃描子程序本設計配備兩個輸入按鍵,分別可以對設定溫度進行加減,此子程序用來檢測按鍵輸入。流程圖 17 所示:判斷是否按下掃描按鍵延時判斷是否按下設定溫度加一減一圖圖16鍵盤掃描流程圖鍵盤掃描流程圖子程序如下:/*鍵盤輸入*void keyscan(void)if(key1=0)/判斷 key1 是否按下 delay(10);/延時判斷 key1 是否按下if(key1

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論