版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于單片機的溫控風(fēng)扇數(shù)碼管顯示xxxx(電子123 學(xué)號xxxxxx)摘 要:本課程設(shè)計為一種溫控風(fēng)扇系統(tǒng),具有靈敏的溫度感測和顯示功能,系統(tǒng)STC89C52單片機作為控制平臺對風(fēng)扇轉(zhuǎn)速進行控制??捎捎脩粼O(shè)置高、低溫度值,測得溫度值在高低溫度之間時打開風(fēng)扇弱風(fēng)檔,當(dāng)溫度升高超過所設(shè)定的溫度時自動切換到大風(fēng)檔,當(dāng)溫度小于所設(shè)定的溫度時自動關(guān)閉風(fēng)扇,控制狀態(tài)隨外界溫度而定。所設(shè)高低溫值保存在溫度傳感器DS18B20內(nèi)部E2ROM中,掉電后仍然能保存上次設(shè)定值,性能穩(wěn)定,控制準(zhǔn)確。關(guān)鍵詞:單片機;溫度傳感器;智能控制。緒 論近些年來,隨著空調(diào)行業(yè)的迅速發(fā)展,空調(diào)價格的大幅度“跳水”,電風(fēng)扇行業(yè)曾被普
2、遍認(rèn)為是“夕陽產(chǎn)業(yè)”。其實并非如此,市場人士稱,家用電風(fēng)扇并沒有隨著空調(diào)的普及而淡出市場,近兩年反而出現(xiàn)了市場銷售復(fù)蘇的態(tài)勢。其主要原因:一是風(fēng)扇和空調(diào)的降溫效果不同;(空調(diào)有強大的制冷功能,可以快速有效地降低環(huán)境溫度,但電風(fēng)扇的風(fēng)更溫和,更加適合老人兒童和體質(zhì)較弱的人使用。)二是電風(fēng)扇有價格優(yōu)勢,價格便宜而且相對省電,安裝和使用都非常簡單。傳統(tǒng)電風(fēng)扇多采用機械方式進行控制,功能少,噪音大,各檔的風(fēng)速變化大。隨著科技的發(fā)展和人們生活水平的提高,家用電器產(chǎn)品趨向于自動化、智能化、環(huán)?;腿诵曰?,使得由微機控制的智能電風(fēng)扇得以出現(xiàn)。生活中,我們經(jīng)常會使用一些與溫度有關(guān)的設(shè)備。比如,現(xiàn)在雖然不少城市
3、家庭用上了空調(diào),但在占中國大部分人口的農(nóng)村地區(qū)依舊使用電風(fēng)扇作為降溫防暑設(shè)備,春夏(夏秋)交替時節(jié),白天溫度依舊很高,電風(fēng)扇應(yīng)高轉(zhuǎn)速、大風(fēng)量,使人感到清涼;到了晚上,氣溫降低,當(dāng)人入睡后,應(yīng)該逐步減小轉(zhuǎn)速,以免使人感冒。雖然電風(fēng)扇都有調(diào)節(jié)不同檔位的功能,但必須要人手動換檔,睡著了就無能為力了,而普遍采用的定時器關(guān)閉的做法,一方面是定時時間長短有限制,一般是一兩個小時;另一方面可能在一兩個小時后氣溫依舊沒有降低很多,而風(fēng)扇就關(guān)閉了,使人在睡夢中熱醒而不得不起床重新打開風(fēng)扇,增加定時器時間,非常麻煩,而且可能多次定時后最后一次定時時間太長,在溫度降低以后風(fēng)扇依舊繼續(xù)吹風(fēng),使人感冒;第三方面是只有簡
4、單的到了定時時間就關(guān)閉風(fēng)扇電源的單一功能,不能滿足氣溫變化對風(fēng)扇風(fēng)速大小的不同要求。又比如在較大功率的電子產(chǎn)品散熱方面,現(xiàn)在絕大多數(shù)都采用了風(fēng)冷系統(tǒng),利用風(fēng)扇引起空氣流動,帶走熱量,使電子產(chǎn)品不至于發(fā)熱燒壞。要使電子產(chǎn)品保持較低的溫度,必須用大功率、高轉(zhuǎn)速、大風(fēng)量的風(fēng)扇,而風(fēng)扇的噪音與其功率成正比。如果要低噪音,則要減小風(fēng)扇轉(zhuǎn)速,又會引起電子設(shè)備溫度上升,不能兩全其美。為解決上述問題,我們設(shè)計了這套溫控自動風(fēng)扇系統(tǒng)。本系統(tǒng)采用高精度集成溫度傳感器,用單片機控制,能顯示實時溫度,并根據(jù)使用者設(shè)定的溫度自動在相應(yīng)溫度時作出小風(fēng)、大風(fēng)、停機動作,精確度高,動作準(zhǔn)確。1 系統(tǒng)概述1.1 STC89C5
5、2單片機簡介STC89C52是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機,片內(nèi)4bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置用8位中央處理器(CPU)和Flash存儲單元,功能強大。STC89C52單片機可靈活應(yīng)用于各種控制領(lǐng)域。STC89C52單片機提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個I/O口線,兩個16位定時、計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時
6、,STC89C52單片機可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時、計數(shù)器,串行通行口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。1. 2 本設(shè)計任務(wù)和主要內(nèi)容本文以STC89C52單片機為核心,通過數(shù)字溫度傳感器對外界環(huán)境溫度進行數(shù)據(jù)采集,從而建立一個控制系統(tǒng),使電風(fēng)扇隨溫度的變化而自動調(diào)節(jié)檔位,實現(xiàn)“溫度高、風(fēng)力大、溫度低、風(fēng)力弱”的性能。另外,用戶可以在一定范圍內(nèi)設(shè)置電風(fēng)扇的最低工作溫度,當(dāng)溫度低于所設(shè)置溫度時,電風(fēng)扇將自動關(guān)閉,當(dāng)高于此溫度時電風(fēng)扇又將重新啟動。
7、本設(shè)計主要內(nèi)容如下:(1)風(fēng)速設(shè)為從低到高共2個檔位,可由用戶通過鍵盤設(shè)定。(2)每當(dāng)溫度低于下限值時,則電風(fēng)扇風(fēng)速關(guān)閉。(3)每當(dāng)溫度在下限和上限之間時,則電風(fēng)扇轉(zhuǎn)速緩慢。(4)每當(dāng)溫度高于上限值時,則電風(fēng)扇風(fēng)速全速運轉(zhuǎn)。2 方案論證本系統(tǒng)實現(xiàn)風(fēng)扇的溫度控制,需要有較高的溫度變化分辨率和穩(wěn)定可靠的換檔停機控制部件。21 溫度傳感器的選用溫度傳感器可由以下幾種方案可供選擇:方案一:選用熱敏電阻作為感測溫度的核心元件,通過運算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進而導(dǎo)至的輸出電壓變化的微弱電壓變化信號,再用AD轉(zhuǎn)換芯片ADC0809將模擬信號轉(zhuǎn)化為數(shù)字信號輸入單片機處理。方案二:采用數(shù)
8、字式集成溫度傳感器DS18B20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號供單片機處理。對于方案一,采用熱敏電阻有價格便宜、元件易購的優(yōu)點,但熱敏電阻對溫度的細微變化不敏感,在信號采集、放大、轉(zhuǎn)換過程中還會產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關(guān)系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復(fù)雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化。故該方案不適合本系統(tǒng)。對于方案二,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述兩種方案的原理有
9、著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉(zhuǎn)換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設(shè)計,又由于該傳感器采用先進的單總線技術(shù)(1-WRIE),與單片機的接口變的非常簡潔,抗干擾能力強。關(guān)于DS18B20的詳細參數(shù)參看下面“硬件設(shè)計”中的器件介紹。22 控制核心的選擇方案一:采用電壓比較電路作為控制部件。溫度傳感器采用熱敏電阻或熱電偶等,溫度信號轉(zhuǎn)為電信號并放大,由集成運放組成的比較電路判決控制風(fēng)扇轉(zhuǎn)速,當(dāng)高于或低于某值時將風(fēng)扇切換到相應(yīng)檔位。方案二:采用單片機作為控制核心。以軟件編程的方法進行溫度判斷,并在端口輸出控制信號。對于方案一,采用電壓比較電路具有電路簡單、易于實現(xiàn),以及無需編寫軟
10、件程序的特點,但控制方式過于單一,不能自由設(shè)置上下限動作溫度,無法滿足不同用戶以及不同環(huán)境下的多種動作溫度要求,故不在本系統(tǒng)中采用。對于方案二,以單片機作為控制器,通過編寫程序不但能將傳感器感測到的溫度通過顯示電路顯示出來,而且用戶能通過鍵盤接口,自由設(shè)置上下限動作溫度值,滿足全方位的需求。并且通過程序判斷溫度具有極高的精準(zhǔn)度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。23顯示電路方案一:采用四位共陽數(shù)碼管顯示溫度,動態(tài)掃描顯示方式。方案二:采用液晶顯示屏LCD顯示溫度對于方案一,該方案成本低廉,顯示溫度明確醒目,在夜間也能看見,功耗極低,顯示驅(qū)動程序的編寫也相對簡單,這種顯示方式得到
11、廣泛應(yīng)用。不足的地方是掃描顯示方式是使四個LED逐個點亮,因此會有閃爍,但是人眼的視覺暫留時間為20MS,當(dāng)數(shù)碼管掃描周期小于這個時間時人眼將感覺不到閃爍,因此可以通過增大掃描頻率來消除閃爍感。對于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點,這是LED數(shù)碼管無法比擬的。但是液晶顯示模塊價格昂貴,驅(qū)動程序復(fù)雜,從簡單實用的原則考慮,本系統(tǒng)采用方案一。24調(diào)速方式方案一:采用變壓器調(diào)節(jié)方式,運用電磁感應(yīng)原理將220V電壓通過線圈降壓到不同的電壓,控制風(fēng)扇電機接到不同電壓值的線圈上可控制電機的轉(zhuǎn)速,從而控制風(fēng)扇風(fēng)力大小。方案二:采用晶閘管構(gòu)成無級調(diào)速電路。對于方案
12、一,由于采用變壓器改變電壓調(diào)節(jié),有風(fēng)速級別限制,不能適應(yīng)人性化要求。且在變壓過程中會有損耗發(fā)熱,效率不高,發(fā)熱有不安全因素。對于方案二,以電位器控制晶閘管的導(dǎo)通角大小,可實現(xiàn)由最大風(fēng)速到關(guān)閉的無級別調(diào)速,可將風(fēng)力調(diào)節(jié)在關(guān)閉無風(fēng)到最大風(fēng)之間的任意風(fēng)力,實現(xiàn)“自由風(fēng)”。且在調(diào)速環(huán)節(jié)中基本無電力損耗。故本系統(tǒng)采用方案二。25控制執(zhí)行部件方案一:采用數(shù)模轉(zhuǎn)換芯片AD0832控制,由單片機根據(jù)當(dāng)前溫度值送出相應(yīng)數(shù)字量到AD0832,由AD0832產(chǎn)生模擬信號控制晶閘管的導(dǎo)通角,從而配合無級調(diào)速電路實現(xiàn)溫控時的自動無級風(fēng)力調(diào)節(jié)。方案二:采用繼電器,繼電器的接有控制晶閘管導(dǎo)通角的電阻的接入電路與否由單片機控
13、制,根據(jù)當(dāng)前溫度值在相應(yīng)管腳送出高/低電平,決定某個繼電器的導(dǎo)通角控制電阻是否接入電路。(詳見4.2.4)對于方案一,該方案能夠?qū)崿F(xiàn)在風(fēng)扇處于溫控狀態(tài)時也能無級調(diào)速,但是D/A轉(zhuǎn)換芯片價格較高,與其溫控狀態(tài)下無級調(diào)速功能相比性價比不高。對于方案二,雖然在溫控狀態(tài)下只能實現(xiàn)弱/大風(fēng)兩級調(diào)速,但采用繼電器價格便宜,控制可靠,且出于在溫控狀態(tài)時無級調(diào)速并不是特別需要的功能,綜合考慮采用方案二。3 系統(tǒng)原理3.1 系統(tǒng)硬件設(shè)計89C51單片機DS18B20傳感器驅(qū)動風(fēng)扇溫度顯示 按鍵電路圖1 系統(tǒng)總體結(jié)構(gòu)框圖3.2 控制裝置原理傳統(tǒng)電風(fēng)扇供電采用的是220V交流電,電機轉(zhuǎn)速分為幾個檔位,通過人工手動調(diào)
14、整電機轉(zhuǎn)速達到改變風(fēng)速的目的,亦即,每改變一次風(fēng)力,必然有人參與操作,這樣就會帶來諸多不便。本文介紹了一種基于STC89C52單片機的智能電風(fēng)扇調(diào)速器的設(shè)計。該風(fēng)扇溫控儀采用DS18B20傳感器,直接將檢測到的溫度轉(zhuǎn)化為數(shù)字信號,單片機對輸入的數(shù)字信號進行分析處理,當(dāng)溫度高于上限值時,風(fēng)扇全速旋轉(zhuǎn);當(dāng)溫度低于下限時,風(fēng)扇停轉(zhuǎn);當(dāng)溫度處于上限值與下限之間時,風(fēng)扇轉(zhuǎn)速越慢,從而達到無須人為控制便可自動調(diào)整風(fēng)速的效果。33 溫度檢測和顯示電路3.3.1 DS18B20的溫度處理方法DS18B20是美國DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它
15、能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75 ms和750 ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源,因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單可靠性更高。他在測溫精度、轉(zhuǎn)換時間、傳輸距離、分辨率等方面較DS1820有了很大的改進,給用戶帶來了更方便的使用和更令人滿意的效果。 DS18B20簡介:(1)獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)
16、微處理器與DS18B20的雙向通訊。(2)在使用中不需要任何外圍元件。(3)可用數(shù)據(jù)線供電,電壓范圍:+3.0 +5.5 V。(4)測溫范圍:-55 +125 。固有測溫分辨率為0.5 。(5)通過編程可實現(xiàn)912位的數(shù)字讀數(shù)方式。(6)用戶可自設(shè)定非易失性的報警上下限值。(7)支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。(8)負壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。單線(1wire)技術(shù):該技術(shù)采用單根信號線,既可傳輸時鐘,也能傳輸數(shù)據(jù),而且是雙向傳輸。適用于單主機系統(tǒng),主機能夠控制一個或多個從機設(shè)備,通過一個漏極開路或三態(tài)端口連至該數(shù)
17、據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能釋放該線,而讓其他設(shè)備使用。單線通常要求外接一個5K的上拉電阻,這樣當(dāng)該線空閑時,其狀態(tài)為高電平。主機和從機之間的通訊分成三個步驟:初始化單線器件、識別單線器件和單線數(shù)據(jù)傳輸。單線1wire協(xié)議由復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1、讀0、讀1,這幾種信號類型實現(xiàn),這些信號中除了應(yīng)答脈沖其他都由主機發(fā)起,并且所有指令和數(shù)據(jù)字節(jié)都是低位在前。DS18B20直接將測量溫度值轉(zhuǎn)化為數(shù)字量提交給單片機,工作時必須嚴(yán)格遵守單總線器件的工作時序。溫度值/ 數(shù)字輸出(二進制) 數(shù)字輸出(十六進制) +125 0000 0111 1101 0000 07D0H+85 0000 010
18、1 0101 0000 0550H+25.625 0000 0001 1001 0001 0191H+10.125 0000 0000 1010 0010 00A2H+0.5 0000 0000 0000 1000 0008H0 0000 0000 0000 0000 0000H-0.5 1111 1111 1111 1000 FFF8H-10.125 1111 1111 0110 1110 FF5EH-25.625 1111 1111 0110 1111 FF6FH-55 1111 1100 1001 0000 FC90H表1 部分溫度值與DS18B20輸出的數(shù)字量對照表3.3.2 溫度傳感
19、器和顯示電路組成本模塊用更為優(yōu)秀的DS18B20作為溫度傳感器,STC89C52單片機作為處理器,配以溫度顯示作為溫度控制輸出單元。整個系統(tǒng)力求結(jié)構(gòu)簡單,功能完善。電路圖如圖2所示。圖2 DS18B20溫度計原理圖系統(tǒng)工作原理如下:DS18B20數(shù)字溫度傳感器采集現(xiàn)場溫度,將測量到的數(shù)據(jù)送入STC89C52單片機的P2.4口,經(jīng)過單片機處理后顯示當(dāng)前溫度值,并與設(shè)定溫度值的上下限值作比較,若高于設(shè)定上限值或低于設(shè)定下限值則控制電機轉(zhuǎn)速進行自動調(diào)整。3.4 電機調(diào)速電路電機調(diào)速是整個控制裝置中的一個相當(dāng)重要的方面。通過控制改變?nèi)龢O翻出的導(dǎo),使輸出端電壓發(fā)生改變,從而使施加在電風(fēng)扇的輸入電壓發(fā)生改
20、變,以調(diào)節(jié)風(fēng)扇的轉(zhuǎn)速,實現(xiàn)各檔位風(fēng)速的無級調(diào)速。3.4.1 電機調(diào)速原理雙向可控硅的導(dǎo)通條件如下:(1)陽-陰極間加正向電壓;(2)控制極-陰極間加正向觸發(fā)電壓;(3)陽極電流IA 大于可控硅的最小維持電流IH。電風(fēng)扇的風(fēng)速從高到低設(shè)為5、4、3、2、1檔,每檔風(fēng)速都有一個限定值。在額定電壓、額定功率下,以最高轉(zhuǎn)速運轉(zhuǎn)時,要求風(fēng)葉最大圓周上的線速度不大于2150m/min。且線速度可由下列公式求得V=Dn×103 (1)式(1)中,V為扇葉最大圓周上的線速度(m/min),D為扇中的最大頂端掃出圓的直徑(mm),n為電風(fēng)扇的最高轉(zhuǎn)速(r/min)。代入數(shù)據(jù)求得n51555r/min,
21、取n5=1250 r/min.又因為:取n1=875r/min。則可得出五個檔位的轉(zhuǎn)速值:n1=875r/min,n2=980r/min,n3=1063r/min,n4=1150 r/min,n5=1250r/min又由于負載上電壓的有效值u0=u1 (2)式(2)中,u1為輸入交流電壓的有效值,為控制角。解得:(1) 當(dāng)5=0°時,t=0ms;(2) 當(dāng)4=23.5°時,t=1.70ms;(3) 當(dāng)3=46.5°時,t=2.58ms;(4) 當(dāng)2=61.5°時,t=3.43ms;(5) 當(dāng)1=76.5°時,t=4.30ms。上述計算出的是控制
22、角和觸發(fā)時間,當(dāng)檢測到過零點時,按照所求得的觸發(fā)時間延時發(fā)脈沖,便可實現(xiàn)預(yù)期轉(zhuǎn)速。3.4.2 電機控制模塊設(shè)計本模塊電路中采用了過零雙向可控硅型光耦MOC3041M ,集光電隔離、過零檢測、過零觸發(fā)等功能于一身,避免了輸入輸出通道同時控制雙向可控硅觸發(fā)的缺陷, 簡化了輸出通道隔離2驅(qū)動電路的結(jié)構(gòu)。所設(shè)計的可控硅觸發(fā)電路原理圖見圖3。其中RL即為電機負載,其工作原理是:單片機響應(yīng)用戶的參數(shù)設(shè)置, 在I/ O 口輸出一個高電平, 經(jīng)反向器反向后, 送出一個低電平,使光電耦合器導(dǎo)通, 同時觸發(fā)雙向可控硅, 使工作電路導(dǎo)通工作。給定時間內(nèi),負載得到的功率為: (3)式中: P 為負載得到的功率( kW
23、); n 為給定時間內(nèi)可控硅導(dǎo)通的正弦波個數(shù); N 為給定時間內(nèi)交流正弦波的總個數(shù); U為可控硅在一個電源周期全導(dǎo)通時所對應(yīng)的電壓有效值(V); I 為可控硅在一個電源周期全導(dǎo)通時所對應(yīng)的電流有效值(A)。由式(3) 可知,當(dāng)U , I , N 為定值時, 只要改變n 值的大小即可控制功率的輸出,從而達到調(diào)節(jié)電機轉(zhuǎn)速的目的。圖3 電機控制原理圖4 控制器軟件設(shè)計本系統(tǒng)的運行程序采用C語言編寫,采用模塊化設(shè)計,整體程序由主程序和顯示、鍵盤掃描、紅外線接收以及電機控制等子程序模塊組成。4.1 主程序在主程序進行初始化后,開始反復(fù)檢測各模塊相關(guān)部分的緩沖區(qū)的標(biāo)志,如果緩沖區(qū)置位,說明相應(yīng)的數(shù)據(jù)需要處
24、理,然后主程序調(diào)用相應(yīng)的處理子模塊。如圖4所示。 開始 調(diào)用初始化程序 讀取溫度信息Y高于溫度上限、 N風(fēng)扇平均速轉(zhuǎn)較快在溫度下限與上限間 Y風(fēng)扇平均轉(zhuǎn)速較慢N風(fēng)扇停轉(zhuǎn) 返回圖4 主程序模塊流程圖4.2 數(shù)字溫度傳感器模塊和顯示子模塊如圖5所示,主機控制DS18B20數(shù)字溫度傳感器完成溫度轉(zhuǎn)換工作必須經(jīng)過三個步驟:初始化、ROM操作指令、存儲器操作指令。單片機所用的系統(tǒng)頻率為12MHz。開始DS18B20初始化啟動DS18B20測溫內(nèi)部判斷調(diào)用讀子程序顯示子程序結(jié)束調(diào)用相應(yīng)的控制程序調(diào)用相應(yīng)的鍵值處理程序調(diào)用寫子程序異常正常根據(jù)DS18B20數(shù)字溫度傳感器進行初始化時序、讀時序和寫時序分別可編
25、寫3個子程序:初始化子程序、寫子程序、讀子程序。圖5 數(shù)字溫度傳感器模塊程序流程圖DS18B20芯片功能命令表2如下:命令 說明 協(xié)議READ ROM 讀取激光ROM64位 33HMATCH ROM 匹配ROM 55H SKIP ROM 跳過ROM CCHSEARCH ROM 搜索ROM F0HALARM SEARCH 告警搜索 ECHWRITE SCRATCHPAD 把字節(jié)寫入暫存器的地址2和3 4EHREAD SCRATCHPAD 讀取暫存器和CRC字節(jié) BEHCOPY SCRATCHPAD 把暫存器內(nèi)容拷貝到非易失性存儲器中 48HCONVERT T 開始溫度轉(zhuǎn)換 44HRECALL E
26、2 把非易失性存儲器中的值召回暫存器 B8HREAD POWER SUPPLY 讀電源供電方式:0為寄生電源,1為外電源 B4H表2 DS18B20功能命令表4.3 電機調(diào)速與控制子模塊本模塊采用雙向可控硅過零觸發(fā)方式,由單片機控制雙向可控硅的通斷,通過改變每個控制周期內(nèi)可控硅導(dǎo)通和關(guān)斷交流完整全波信號的個數(shù)來調(diào)節(jié)負載功率,進而達到調(diào)速的目的。因為INT0信號反映工頻電壓過零時刻,所以只要在外中斷0的中斷服務(wù)程序中完成控制門的開啟與關(guān)閉,并利用中斷服務(wù)次數(shù)對控制量n進行計數(shù)和判斷,即每中斷一次,對n進行減1計數(shù),如果n不等于0,保持控制電平為“1”,繼續(xù)打開控制門;如n=0,則使控制電平復(fù)位為
27、“0”,關(guān)閉控制門,使可控硅過零觸發(fā)脈沖不再通過。這樣就可以按照控制處理得到的控制量的要求,實現(xiàn)可控硅的過零控制,從而達到按控制量控制的效果,實現(xiàn)速度可調(diào)。圖6 電機控制模塊中斷響應(yīng)流程圖。(1)中斷服務(wù)程序:執(zhí)行中斷服務(wù)程序時,首先保護現(xiàn)場,INT0中斷標(biāo)志置位,禁止主程序修改工作參數(shù),然后開始減1計數(shù),判斷是否關(guān)斷可控硅,最后INT0中斷標(biāo)志位清零,還原初始化數(shù)據(jù),恢復(fù)現(xiàn)場,中斷返回。(設(shè)1秒鐘通過波形數(shù)N=100)(2)回路控制執(zhí)行程序:主回路控制執(zhí)行程序的任務(wù)是初始化數(shù)據(jù)存儲單元,確定電機工作參數(shù)nmin/nmax,并將其換算成“有效過零脈沖”的個數(shù);確定中斷優(yōu)先級、開中斷,為了保證正
28、弦波的完整,工頻過零同步中斷INT0確定為高一級的中斷源。aEX0中斷溫度大于等于下限值并且小于上限值控制可控硅截止中斷返回設(shè)置T0參數(shù)啟動定時T0中斷控制可控硅導(dǎo)通停止T0定時中斷返回b圖6 電機控制模塊中斷響應(yīng)流程圖5 PROTUES仿真及驗證5.1 電路設(shè)計原理圖圖7 電路設(shè)計原理圖5.2 PROTUES軟件仿真圖8 PROTUES軟件仿真圖該設(shè)計通過protues軟件仿真,輸出結(jié)果與預(yù)期結(jié)果基本吻合,其可靠性和正確性得到驗證。6小結(jié)本系統(tǒng)以STC89C52單片機為核心,單片機主要完成對外界環(huán)境溫度信號的采集、處理、顯示等功能;用Altium Designer 6軟件繪制電路原理圖和PC
29、B電路印刷板圖,由Protues軟件進行訪真測試,利用MCS-51 C語言編制。運行程序該系統(tǒng)的主要特點是:(1)適用性強,用戶只需對界面參數(shù)進行設(shè)置并啟動系統(tǒng)正常運行便可滿足不同用戶對最適合溫度的要求,實現(xiàn)對最適溫度的實時監(jiān)控。(2)隨時可以根據(jù)軟件編寫新的功能加入產(chǎn)品。操作界面可擴展性強,只要稍加改變,即可增加其他按鍵的使用功能。本系統(tǒng)溫度控制采用DS18B20數(shù)字溫度傳感器作為感溫元件??煽毓璐釉陔娫磁c負載電風(fēng)扇,借改變定周期內(nèi)可控硅的導(dǎo)通與截止時間之比來實現(xiàn)調(diào)速功能,其設(shè)計完使用方便就,適應(yīng)人們睡辦公等不同場合的使用?;赟TC89C52單片機所設(shè)計與研制的電風(fēng)扇智能調(diào)速系統(tǒng),造價低
30、且具有穩(wěn)定性高、性能優(yōu)越、節(jié)約電能等優(yōu)點,在夜間無需定時,同樣能給人們帶來更多的方便。本設(shè)計在模擬檢測中運行較好,但采樣據(jù)不太穩(wěn)定。功能上的缺憾是對于兩個檔之間的臨界溫度處理不好,并且檔位太少,還有待改進。在本次課程設(shè)計過程中,由劉偉民完成了所有電路設(shè)計仿真及實物焊接和調(diào)試。參考文獻:1 曹巧媛.單片機原理及應(yīng)用.北京:電子工業(yè)出版社,2002.22 王倫.電風(fēng)扇原理與維修技術(shù)M.北京:新時代出版社,19993 張毅剛.新編MCS-51單片機應(yīng)用設(shè)計.哈爾濱工業(yè)大學(xué)出版社,2006,104 梁廷貴、王裕琛.可控硅觸發(fā)電路語音電路分冊M.北京:科學(xué)技術(shù)文獻出版社,2003附錄1 源程序清單#in
31、clude <reg52.h> /調(diào)用單片機頭文件#define uchar unsigned char /無符號字符型 宏定義變量范圍0255#define uint unsigned int /無符號整型 宏定義變量范圍065535#include "eeprom52.h"/數(shù)碼管段選定義 0 1 2 3 4 56 7 8 9uchar code smg_du=0x28,0xee,0x42,0x52,0xe5,0xa8,0x41,0xe7,0x20,0xa0, 0x60,0x25,0x39,0x26,0x31,0x71,0xff; /斷碼/數(shù)碼管位選定義uc
32、har code smg_we=0xef,0xdf,0xbf,0x7f;uchar dis_smg8 = 0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8;uchar smg_i = 3; /顯示數(shù)碼管的個位數(shù)sbit dq = P24;/18b20 IO口的定義bit flag_lj_en; /按鍵連加使能bit flag_lj_3_en; /按鍵連3次連加后使能 加的數(shù)就越大了 uchar key_time,key_value; /用做連加的中間變量bit key_500ms ;sbit pwm = P23; uchar f_pwm_l ; /越小越暗uint
33、 temperature ; /bit flag_300ms ;uchar menu_1; /菜單設(shè)計的變量uint t_high = 300,t_low = 100; /溫度上下限報警值 /*1ms延時函數(shù)*/void delay_1ms(uint q)uint i,j;for(i=0;i<q;i+)for(j=0;j<120;j+);/*小延時函數(shù)*/void delay_uint(uint q)while(q-);/*數(shù)碼顯示函數(shù)*/void display()static uchar i; i+;if(i >= smg_i)i = 0;P1 = 0xff; /消隱 P
34、3 = smg_wei; /位選P1 = dis_smgi; /段選 /*把數(shù)據(jù)保存到單片機內(nèi)部eepom中*/void write_eeprom()SectorErase(0x2000);byte_write(0x2000, t_high % 256);byte_write(0x2001, t_high / 256);byte_write(0x2002, t_low % 256);byte_write(0x2003, t_low / 256);byte_write(0x2055, a_a);/*把數(shù)據(jù)從單片機內(nèi)部eepom中讀出來*/void read_eeprom()t_high = by
35、te_read(0x2001);t_high <<= 8;t_high |= byte_read(0x2000);t_low = byte_read(0x2003);t_low <<= 8;t_low |= byte_read(0x2002);a_a = byte_read(0x2055);/*開機初始化保存的數(shù)據(jù)*/void init_eeprom()read_eeprom();/先讀if(a_a != 22)/新的單片機初始單片機內(nèi)問eepromt_high = 320;t_low = 280;a_a = 22;write_eeprom(); /保存數(shù)據(jù)/*18b2
36、0初始化函數(shù)*/void init_18b20()bit q;dq = 1;/把總線拿高delay_uint(1); /15usdq = 0;/給復(fù)位脈沖delay_uint(80);/750usdq = 1;/把總線拿高 等待delay_uint(10);/110usq = dq;/讀取18b20初始化信號delay_uint(20);/200usdq = 1;/把總線拿高 釋放總線/*寫18b20內(nèi)的數(shù)據(jù)*/void write_18b20(uchar dat)uchar i;for(i=0;i<8;i+) /寫數(shù)據(jù)是低位開始dq = 0; /把總線拿低寫時間隙開始 dq = dat
37、 & 0x01; /向18b20總線寫數(shù)據(jù)了delay_uint(5); / 60usdq = 1; /釋放總線dat >>= 1;/*讀取18b20內(nèi)的數(shù)據(jù)*/uchar read_18b20()uchar i,value;for(i=0;i<8;i+)dq = 0; /把總線拿低讀時間隙開始 value >>= 1; /讀數(shù)據(jù)是低位開始dq = 1; /釋放總線if(dq = 1) /開始讀寫數(shù)據(jù) value |= 0x80;delay_uint(5); /60us讀一個時間隙最少要保持60us的時間return value; /返回數(shù)據(jù)/*讀取溫度的
38、值 讀出來的是小數(shù)*/uint read_temp()uint value;uchar low; /在讀取溫度的時候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序init_18b20(); /初始化18b20EA = 0;write_18b20(0xcc); /跳過64位ROMwrite_18b20(0x44); /啟動一次溫度轉(zhuǎn)換命令EA = 1;delay_uint(50); /500usinit_18b20(); /初始化18b20EA = 0;write_18b20(0xcc); /跳過64位ROMwrite_18b20(0xbe); /發(fā)出讀取暫存器命令low
39、= read_18b20(); /讀溫度低字節(jié)value = read_18b20(); /讀溫度高字節(jié)EA = 1;value <<= 8; /把溫度的高位左移8位value |= low; /把讀出的溫度低位放到value的低八位中value *= 0.625; /轉(zhuǎn)換到溫度值 小數(shù)return value; /返回讀出的溫度 帶小數(shù)/*定時器0初始化程序*/void time_init() EA = 1; /開總中斷TMOD = 0X11; /定時器0、定時器1工作方式1ET0 = 1; /開定時器0中斷 TR0 = 1; /允許定時器0定時ET1 = 1; /開定時器0中斷
40、 TR1 = 0; /允許定時器0定時/*獨立按鍵程序*/uchar key_can; /按鍵值void key() /獨立按鍵程序static uchar key_new;key_can = 20; /按鍵值還原P2 |= 0x07;if(P2 & 0x07) != 0x07)/按鍵按下if(key_500ms = 1)/連加key_500ms = 0;key_new = 1;delay_1ms(1); /按鍵消抖動if(P2 & 0x07) != 0x07) && (key_new = 1)/確認(rèn)是按鍵按下key_new = 0;switch(P2 &
41、; 0x07)case 0x06: key_can = 3; break; /得到k2鍵值case 0x05: key_can = 2; break; /得到k3鍵值case 0x03: key_can = 1; break; /得到k4鍵值flag_lj_en = 1; /連加使能else if(key_new = 0)key_new = 1;write_eeprom();/保存數(shù)據(jù)flag_lj_en = 0;/關(guān)閉連加使能flag_lj_3_en = 0;/關(guān)閉3秒后使能key_value = 0;/清零key_time = 0;key_500ms = 0;/*按鍵處理數(shù)碼管顯示函數(shù)*/
42、void key_with()if(key_can = 1) /設(shè)置鍵f_pwm_l = 30; menu_1 +;if(menu_1 >= 3)menu_1 = 0;smg_i = 3; /數(shù)碼管顯示3位if(menu_1 = 1)/設(shè)置高溫報警smg_i = 4; /數(shù)碼管顯示4位if(key_can = 2)if(flag_lj_3_en = 0)t_high + ;/按鍵按下未松開自動加三次else t_high += 10;/按鍵按下未松開自動加三次之后每次自動加10if(t_high > 990)t_high = 990;if(key_can = 3)if(flag_l
43、j_3_en = 0)t_high - ;/按鍵按下未松開自動減三次else t_high -= 10;/按鍵按下未松開自動減三次之后每次自動減10if(t_high <= t_low)t_high = t_low + 1;dis_smg0 = smg_dut_high % 10; /取小數(shù)顯示dis_smg1 = smg_dut_high / 10 % 10 & 0xdf; /取個位顯示dis_smg2 = smg_dut_high / 100 % 10 ; /取十位顯示dis_smg3 = 0x64; /Hif(menu_1 = 2)/設(shè)置低溫報警smg_i = 4; /數(shù)碼
44、管顯示4位if(key_can = 2)if(flag_lj_3_en = 0)t_low + ;/按鍵按下未松開自動加三次else t_low += 10;/按鍵按下未松開自動加三次之后每次自動加10if(t_low >= t_high)t_low = t_high - 1;if(key_can = 3)if(flag_lj_3_en = 0)t_low - ;/按鍵按下未松開自動減三次else t_low -= 10;/按鍵按下未松開自動加三次之后每次自動加10if(t_low <= 10)t_low = 10;dis_smg0 = smg_dut_low % 10; /取小數(shù)顯示dis_smg1 = smg_dut_low / 10 % 10 & 0xdf; /取個位顯示dis_smg2 = smg_dut_low / 100 % 10 ; /取十位顯示dis_smg3 = 0x3D; /L /*風(fēng)扇控制函數(shù)*/void fengshan_kz()/static uchar value;if(temperature >= t_high)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投資飯店合同范例
- 花木供銷合同范例
- 農(nóng)村股建房合同范例
- 臨時職工勞務(wù)雇傭合同范例
- 造價結(jié)算兼職合同范例
- 簡易板房拆遷合同范例
- ps課程設(shè)計源文件
- 南京空調(diào)工程課程設(shè)計
- 投融資課程設(shè)計總結(jié)
- 幼兒園川劇主題課程設(shè)計
- 期末素養(yǎng)綜合測評卷(二)2024-2025學(xué)年魯教版(五四制)六年級數(shù)學(xué)上冊(解析版)
- 產(chǎn)品質(zhì)量整改措施
- 考核19(西餐)試題
- 2024年武漢大學(xué)下半年非事業(yè)編制人員招聘(59人)筆試核心備考題庫及答案解析
- 2024安全生產(chǎn)法解讀
- 鹽城工學(xué)院《C語言及數(shù)據(jù)分析》2023-2024學(xué)年期末試卷
- 吉林省長春市(2024年-2025年小學(xué)五年級語文)人教版期末考試(上學(xué)期)試卷及答案
- 《變電站用交流系統(tǒng)》課件
- 競聘醫(yī)療組長
- 研究生年終總結(jié)和展望
- 團員發(fā)展紀(jì)實簿
評論
0/150
提交評論