基于單片機(jī)智能電風(fēng)扇控制系統(tǒng)設(shè)計_第1頁
基于單片機(jī)智能電風(fēng)扇控制系統(tǒng)設(shè)計_第2頁
基于單片機(jī)智能電風(fēng)扇控制系統(tǒng)設(shè)計_第3頁
基于單片機(jī)智能電風(fēng)扇控制系統(tǒng)設(shè)計_第4頁
基于單片機(jī)智能電風(fēng)扇控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

頁第1章概述1.1STC89C52單片機(jī)簡介STC89C52是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS8位單片機(jī),片內(nèi)4bytes的可反復(fù)擦寫的只讀程序存儲器(PEROM)和128bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置用8位中央處理器(CPU)和Flash存儲單元,功能強(qiáng)大。STC89C52單片機(jī)可靈活應(yīng)用于各種控制領(lǐng)域。STC89C52單片機(jī)提供以下標(biāo)準(zhǔn)功能:4K字節(jié)Flash閃速存儲器,128字節(jié)內(nèi)部RAM,32個I/O口線,兩個16位定時、計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,STC89C52單片機(jī)可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時、計數(shù)器,串行通行口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復(fù)位。1.2本設(shè)計任務(wù)和主要內(nèi)容本文以STC89C52單片機(jī)為核心,通過數(shù)字溫度傳感器對外界環(huán)境溫度進(jìn)行數(shù)據(jù)采集,從而建立一個控制系統(tǒng),使電風(fēng)扇隨溫度的變化而自動調(diào)節(jié)檔位,實現(xiàn)“溫度高、風(fēng)力大、溫度低、風(fēng)力弱”的性能。另外,通過紅外發(fā)射和接收裝置及按鍵實現(xiàn)各種功能的啟動與關(guān)閉,并且可對各種功能實現(xiàn)遙控,用戶可以在一定范圍內(nèi)設(shè)置電風(fēng)扇的最低工作溫度,當(dāng)溫度低于所設(shè)置溫度時,電風(fēng)扇將自動關(guān)閉,當(dāng)高于此溫度時電風(fēng)扇又將重新啟動。本設(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)速全速運(yùn)轉(zhuǎn)。

第2章方案選擇本系統(tǒng)實現(xiàn)風(fēng)扇的溫度控制,需要有較高的溫度變化分辨率和穩(wěn)定可靠的換檔停機(jī)控制部件。2.1溫度傳感器的選用溫度傳感器可由以下幾種方案可供選擇:方案一:選用熱敏電阻作為感測溫度的核心元件,通過運(yùn)算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進(jìn)而導(dǎo)至的輸出電壓變化的微弱電壓變化信號,再用AD轉(zhuǎn)換芯片ADC0809將模擬信號轉(zhuǎn)化為數(shù)字信號輸入單片機(jī)處理。方案二:采用熱電偶作為感測溫度的核心元件,配合橋式電路,運(yùn)算放大電路和AD轉(zhuǎn)換電路,將溫度變化信號送入單片機(jī)處理。方案三:采用數(shù)字式集成溫度傳感器DS18B20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號供單片機(jī)處理。對于方案一,采用熱敏電阻有價格便宜、元件易購的優(yōu)點,但熱敏電阻對溫度的細(xì)微變化不敏感,在信號采集、放大、轉(zhuǎn)換過程中還會產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關(guān)系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復(fù)雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化。故該方案不適合本系統(tǒng)。對于方案二,采用熱電偶和橋式測量電路相對于熱敏電阻其對溫度的敏感性和器件的非線性誤差都有較大提高,其測溫范圍也非常寬,從-50攝氏度到1600攝氏度均可測量。但是依然存在電路復(fù)雜,對溫度敏感性達(dá)不到本系統(tǒng)要求的標(biāo)準(zhǔn),故不采用該方案。對于方案三,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉(zhuǎn)換等電路的誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述兩種方案的原理有著本質(zhì)的不同,使得其溫度分辨力極高。溫度值在器件內(nèi)部轉(zhuǎn)換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設(shè)計,又由于該傳感器采用先進(jìn)的單總線技術(shù)(1-WRIE),與單片機(jī)的接口變的非常簡潔,抗干擾能力強(qiáng)。關(guān)于DS18B20的詳細(xì)參數(shù)參看下面“硬件設(shè)計”中的器件介紹。2.2控制核心的選擇方案一:采用電壓比較電路作為控制部件。溫度傳感器采用熱敏電阻或熱電偶等,溫度信號轉(zhuǎn)為電信號并放大,由集成運(yùn)放組成的比較電路判決控制風(fēng)扇轉(zhuǎn)速,當(dāng)高于或低于某值時將風(fēng)扇切換到相應(yīng)檔位。方案二:采用單片機(jī)作為控制核心。以軟件編程的方法進(jìn)行溫度判斷,并在端口輸出控制信號。對于方案一,采用電壓比較電路具有電路簡單、易于實現(xiàn),以及無需編寫軟件程序的特點,但控制方式過于單一,不能自由設(shè)置上下限動作溫度,無法滿足不同用戶以及不同環(huán)境下的多種動作溫度要求,故不在本系統(tǒng)中采用。對于方案二,以單片機(jī)作為控制器,通過編寫程序不但能將傳感器感測到的溫度通過顯示電路顯示出來,而且用戶能通過鍵盤接口,自由設(shè)置上下限動作溫度值,滿足全方位的需求。并且通過程序判斷溫度具有極高的精準(zhǔn)度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。2.3顯示電路方案一:采用五位共陽數(shù)碼管顯示溫度,動態(tài)掃描顯示方式。方案二:采用液晶顯示屏LCD顯示溫度對于方案一,該方案成本低廉,顯示溫度明確醒目,在夜間也能看見,功耗極低,顯示驅(qū)動程序的編寫也相對簡單,這種顯示方式得到廣泛應(yīng)用。不足的地方是掃描顯示方式是使五個LED逐個點亮,因此會有閃爍,但是人眼的視覺暫留時間為20MS,當(dāng)數(shù)碼管掃描周期小于這個時間時人眼將感覺不到閃爍,因此可以通過增大掃描頻率來消除閃爍感。對于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點,這是LED數(shù)碼管無法比擬的。但是液晶顯示模塊價格昂貴,驅(qū)動程序復(fù)雜,從簡單實用的原則考慮,本系統(tǒng)采用方案一。2.4調(diào)速方式方案一:采用變壓器調(diào)節(jié)方式,運(yùn)用電磁感應(yīng)原理將220V電壓通過線圈降壓到不同的電壓,控制風(fēng)扇電機(jī)接到不同電壓值的線圈上可控制電機(jī)的轉(zhuǎn)速,從而控制風(fēng)扇風(fēng)力大小。方案二:采用晶閘管構(gòu)成無級調(diào)速電路。對于方案一,由于采用變壓器改變電壓調(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)采用方案二。2.5控制執(zhí)行部件方案一:采用數(shù)模轉(zhuǎn)換芯片AD0832控制,由單片機(jī)根據(jù)當(dāng)前溫度值送出相應(yīng)數(shù)字量到AD0832,由AD0832產(chǎn)生模擬信號控制晶閘管的導(dǎo)通角,從而配合無級調(diào)速電路實現(xiàn)溫控時的自動無級風(fēng)力調(diào)節(jié)。方案二:采用繼電器,繼電器的接有控制晶閘管導(dǎo)通角的電阻的接入電路與否由單片機(jī)控制,根據(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章硬件設(shè)計3.1系統(tǒng)總體設(shè)計鍵盤輸入鍵盤輸入溫度顯示單片機(jī)系統(tǒng)電機(jī)控制模塊數(shù)字溫度傳感模塊圖3-1系統(tǒng)總體結(jié)構(gòu)框圖3.2控制裝置原理傳統(tǒng)電風(fēng)扇供電采用的是220V交流電,電機(jī)轉(zhuǎn)速分為幾個檔位,通過人工手動調(diào)整電機(jī)轉(zhuǎn)速達(dá)到改變風(fēng)速的目的,亦即,每改變一次風(fēng)力,必然有人參與操作,這樣就會帶來諸多不便。本文介紹了一種基于STC89C52單片機(jī)的智能電風(fēng)扇調(diào)速器的設(shè)計,該設(shè)計巧妙利用單片機(jī)控制技術(shù)、無級調(diào)速技術(shù)和溫度傳感技術(shù),把智能控制技術(shù)應(yīng)用于家用電器的控制中,將電風(fēng)扇的電機(jī)轉(zhuǎn)速作為被控制量,由單片機(jī)分析采集到的數(shù)字溫度信號,再通過可控硅對風(fēng)扇電機(jī)進(jìn)行調(diào)速。從而達(dá)到無須人為控制便可自動調(diào)整風(fēng)速的效果。3.3溫度檢測和顯示電路可以選用LM324A運(yùn)算放大器作為溫度傳感器,將其設(shè)計成比例控制調(diào)節(jié)器,輸出電壓與熱敏電阻的阻值成正比,但這種方案需要多次檢測后方可使采樣精確,過于煩瑣。所以我采用更為優(yōu)秀的DS18B20數(shù)字溫度傳感器,它可以直接將模擬溫度信號轉(zhuǎn)化為數(shù)字信號,降低了電路的復(fù)雜程度,提高了電路的運(yùn)行質(zhì)量。3.3.1DS18B20的溫度處理方法DS18B20是美國DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)9~12位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源,因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨簡單可靠性更高。他在測溫精度、轉(zhuǎn)換時間、傳輸距離、分辨率等方面較DS1820有了很大的改進(jìn),給用戶帶來了更方便的使用和更令人滿意的效果。DS18B20簡介:(1)獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。(2)在使用中不需要任何外圍元件。(3)可用數(shù)據(jù)線供電,電壓范圍:+3.0~+5.5V。(4)測溫范圍:-55~+125℃。固有測溫分辨率為0.5℃。(5)通過編程可實現(xiàn)9~12位的數(shù)字讀數(shù)方式。(6)用戶可自設(shè)定非易失性的報警上下限值。(7)支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。(8)負(fù)壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。單線(1—wire)技術(shù):該技術(shù)采用單根信號線,既可傳輸時鐘,也能傳輸數(shù)據(jù),而且是雙向傳輸。適用于單主機(jī)系統(tǒng),主機(jī)能夠控制一個或多個從機(jī)設(shè)備,通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設(shè)備在不發(fā)送數(shù)據(jù)時能釋放該線,而讓其他設(shè)備使用。單線通常要求外接一個5K的上拉電阻,這樣當(dāng)該線空閑時,其狀態(tài)為高電平。主機(jī)和從機(jī)之間的通訊分成三個步驟:初始化單線器件、識別單線器件和單線數(shù)據(jù)傳輸。單線1—wire協(xié)議由復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1、讀0、讀1,這幾種信號類型實現(xiàn),這些信號中除了應(yīng)答脈沖其他都由主機(jī)發(fā)起,并且所有指令和數(shù)據(jù)字節(jié)都是低位在前。DS18B20直接將測量溫度值轉(zhuǎn)化為數(shù)字量提交給單片機(jī),工作時必須嚴(yán)格遵守單總線器件的工作時序。表3-1部分溫度值與DS18B20輸出的數(shù)字量對照表溫度值/℃數(shù)字輸出(二進(jìn)制)數(shù)字輸出(十六進(jìn)制)+125000001111101000007D0H+8500000101010100000550H+25.62500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101101110FF5EH-25.6251111111101101111FF6FH-551111110010010000FC90H3.3.2溫度傳感器和顯示電路組成本模塊用更為優(yōu)秀的DS18B20作為溫度傳感器,STC89C52單片機(jī)作為處理器,配以溫度顯示作為溫度控制輸出單元。整個系統(tǒng)力求結(jié)構(gòu)簡單,功能完善。電路圖如圖2所示。系統(tǒng)工作原理如下:DS18B20數(shù)字溫度傳感器采集現(xiàn)場溫度,將測量到的數(shù)據(jù)送入STC89C52單片機(jī)的P2.4口,經(jīng)過單片機(jī)處理后顯示當(dāng)前溫度值,并與設(shè)定溫度值的上下限值作比較,若高于設(shè)定上限值或低于設(shè)定下限值則控制電機(jī)轉(zhuǎn)速進(jìn)行自動調(diào)整。圖3-2DS18B20溫度計原理圖3.4電機(jī)調(diào)速電路電機(jī)調(diào)速是整個控制裝置中的一個相當(dāng)重要的方面。通過控制改變?nèi)龢O翻出的導(dǎo)通,使輸出端電壓發(fā)生改變,從而使施加在電風(fēng)扇的輸入電壓發(fā)生改變,以調(diào)節(jié)風(fēng)扇的轉(zhuǎn)速,實現(xiàn)各檔位風(fēng)速的無級調(diào)速。3.4.1電機(jī)調(diào)速原理雙向可控硅的導(dǎo)通條件如下:(1)陽-陰極間加正向電壓;(2)控制極-陰極間加正向觸發(fā)電壓;(3)陽極電流IA大于可控硅的最小維持電流IH。電風(fēng)扇的風(fēng)速從高到低設(shè)為5、4、3、2、1檔,每檔風(fēng)速都有一個限定值。在額定電壓、額定功率下,以最高轉(zhuǎn)速運(yù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ù)求得n5≤1555r/min,取n5=1250r/min.又因為:取n1=875r/min。則可得出五個檔位的轉(zhuǎn)速值:n1=875r/min,n2=980r/min,n3=1063r/min,n4=1150r/min,n5=1250r/min又由于負(fù)載上電壓的有效值u0=u1(2)公式(2)中,u1為輸入交流電壓的有效值,α為控制角。解得:當(dāng)α5=0°時,t=0ms;當(dāng)α4=23.5°時,t=1.70ms;當(dāng)α3=46.5°時,t=2.58ms;當(dāng)α2=61.5°時,t=3.43ms;當(dāng)α1=76.5°時,t=4.30ms。上述計算出的是控制角和觸發(fā)時間,當(dāng)檢測到過零點時,按照所求得的觸發(fā)時間延時發(fā)脈沖,便可實現(xiàn)預(yù)期轉(zhuǎn)速。3.4.2電機(jī)控制模塊設(shè)計本模塊電路中采用了過零雙向可控硅型光耦MOC3041M,集光電隔離、過零檢測、過零觸發(fā)等功能于一身,避免了輸入輸出通道同時控制雙向可控硅觸發(fā)的缺陷,簡化了輸出通道隔離2驅(qū)動電路的結(jié)構(gòu)。所設(shè)計的可控硅觸發(fā)電路原理圖見圖3。其中RL即為電機(jī)負(fù)載,其工作原理是:單片機(jī)響應(yīng)用戶的參數(shù)設(shè)置,在I/O口輸出一個高電平,經(jīng)反向器反向后,送出一個低電平,使光電耦合器導(dǎo)通,同時觸發(fā)雙向可控硅,使工作電路導(dǎo)通工作。給定時間內(nèi),負(fù)載得到的功率為:(3)公式中:P為負(fù)載得到的功率(kW);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值的大小即可控制功率的輸出,從而達(dá)到調(diào)節(jié)電機(jī)轉(zhuǎn)速的目的。圖3-3電機(jī)控制原理圖

第4章軟件設(shè)計本系統(tǒng)的運(yùn)行程序采用C語言編寫,采用模塊化設(shè)計,整體程序由主程序和顯示、鍵盤掃描、紅外線接收以及電機(jī)控制等子程序模塊組成。4.1主程序在主程序進(jìn)行初始化后,開始反復(fù)檢測各模塊相關(guān)部分的緩沖區(qū)的標(biāo)志,如果緩沖區(qū)置位,說明相應(yīng)的數(shù)據(jù)需要處理,然后主程序調(diào)用相應(yīng)的處理子模塊。如圖7所示。圖4-1主程序模塊流程圖4.2數(shù)字溫度傳感器模塊和顯示子模塊如圖8所示,主機(jī)控制DS18B20數(shù)字溫度傳感器完成溫度轉(zhuǎn)換工作必須經(jīng)過三個步驟:初始化、ROM操作指令、存儲器操作指令。單片機(jī)所用的系統(tǒng)頻率為12MHz。圖4-2數(shù)字溫度傳感器模塊程序流程圖根據(jù)DS18B20數(shù)字溫度傳感器進(jìn)行初始化時序、讀時序和寫時序分別可編寫3個子程序:初始化子程序、寫子程序、讀子程序。DS18B20芯片功能命令表如下:表4-1DS18B20功能命令表命令說明協(xié)議READROM讀取激光ROM64位33HMATCHROM匹配ROM55HSKIPROM跳過ROMCCHSEARCHROM搜索ROMF0HALARMSEARCH告警搜索ECHWRITESCRATCHPAD把字節(jié)寫入暫存器的地址2和34EHREADSCRATCHPAD讀取暫存器和CRC字節(jié)BEHCOPYSCRATCHPAD把暫存器內(nèi)容拷貝到非易失性存儲器中48HCONVERTT開始溫度轉(zhuǎn)換44HRECALLE2把非易失性存儲器中的值召回暫存器B8HREADPOWERSUPPLY讀電源供電方式:0為寄生電源,1為外電源B4H4.3電機(jī)調(diào)速與控制子模塊本模塊采用雙向可控硅過零觸發(fā)方式,由單片機(jī)控制雙向可控硅的通斷,通過改變每個控制周期內(nèi)可控硅導(dǎo)通和關(guān)斷交流完整全波信號的個數(shù)來調(diào)節(jié)負(fù)載功率,進(jìn)而達(dá)到調(diào)速的目的。因為INT0信號反映工頻電壓過零時刻,所以只要在外中斷0的中斷服務(wù)程序中完成控制門的開啟與關(guān)閉,并利用中斷服務(wù)次數(shù)對控制量n進(jìn)行計數(shù)和判斷,即每中斷一次,對n進(jìn)行減1計數(shù),如果n不等于0,保持控制電平為“1”,繼續(xù)打開控制門;如n=0,則使控制電平復(fù)位為“0”,關(guān)閉控制門,使可控硅過零觸發(fā)脈沖不再通過。這樣就可以按照控制處理得到的控制量的要求,實現(xiàn)可控硅的過零控制,從而達(dá)到按控制量控制的效果,實現(xiàn)速度可調(diào)。(1)中斷服務(wù)程序:執(zhí)行中斷服務(wù)程序時,首先保護(hù)現(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ù)存儲單元,確定電機(jī)工作參數(shù)nmin/nmax,并將其換算成“有效過零脈沖”的個數(shù);確定中斷優(yōu)先級、a圖4-3電機(jī)控制模塊中斷響應(yīng)流程圖a為了保證正弦波的完整,工頻過零同步中斷INT0確定為高一級的中斷源。

總結(jié)本系統(tǒng)以STC89C52單片機(jī)為核心,單片機(jī)主要完成對外界環(huán)境溫度信號的采集、處理、顯示等功能;用AltiumDesigner6軟件繪制電路原理圖和PCB電路印刷板圖,由Protues軟件進(jìn)行訪真測試,利用MCS-51C語言編制。運(yùn)行程序該系統(tǒng)的主要特點是:(1)適用性強(qiáng),用戶只需對界面參數(shù)進(jìn)行設(shè)置并啟動系統(tǒng)正常運(yùn)行便可滿足不同用戶對最適合溫度的要求,實現(xiàn)對最適溫度的實時監(jiān)控。(2)隨時可以根據(jù)軟件編寫新的功能加入產(chǎn)品。操作界面可擴(kuò)展性強(qiáng),只要稍加改變,即可增加其他按鍵的使用功能。本系統(tǒng)溫度控制采用DS18B20數(shù)字溫度傳感器作為感溫元件??煽毓璐釉陔娫磁c負(fù)載電風(fēng)扇,借改變定周期內(nèi)可控硅的導(dǎo)通與截止時間之比來實現(xiàn)調(diào)速功能,其設(shè)計完使用方便就,適應(yīng)人們睡辦公等不同場合的使用。基于STC89C52單片機(jī)所設(shè)計與研制的電風(fēng)扇智能調(diào)速系統(tǒng),造價低且具有穩(wěn)定性高、性能優(yōu)越、節(jié)約電能等優(yōu)點,在夜間無需定時,同樣能給人們帶來更多的方便。本設(shè)計在模擬檢測中運(yùn)行較好,但采樣據(jù)不太穩(wěn)定。功能上的缺憾是對于兩個檔之間的臨界溫度處理不好,并且檔位太少,還有待改進(jìn)。

參考文獻(xiàn)[1]曹巧媛.單片機(jī)原理及應(yīng)用.北京:電子工業(yè)出版社,2002.2[2]王倫.電風(fēng)扇原理與維修技術(shù)[M].北京:新時代出版社,1999[3]張毅剛.新編MCS-51單片機(jī)應(yīng)用設(shè)計.哈爾濱工業(yè)大學(xué)出版社,2006,10[4]梁廷貴、王裕琛.可控硅觸發(fā)電路語音電路分冊[M].北京:科學(xué)技術(shù)文獻(xiàn)出版社,2003

附錄1主要程序代碼主要程序代碼及說明(見注釋語句)如下:數(shù)字溫度傳感器模塊和顯示子模塊程序:#include<reg52.h>//調(diào)用單片機(jī)頭文件#defineucharunsignedchar//無符號字符型宏定義 變量范圍0~255#defineuintunsignedint//無符號整型宏定義 變量范圍0~65535#include"eeprom52.h"http://數(shù)碼管段選定義0123456789Ucharcodesmg_du[]={0x28,0xee,0x42,0x52,0xe5,0xa8,0x41,0xe7,0x20,0xa0,0x60,0x25,0x39,0x26,0x31,0x71,0xff}; //斷碼//數(shù)碼管位選定義ucharcodesmg_we[]={0xef,0xdf,0xbf,0x7f};uchardis_smg[8]={0x28,0xee,0x32,0xa2,0xe4,0x92,0x82,0xf8}; ucharsmg_i=3;//顯示數(shù)碼管的個位數(shù)sbitdq=P2^4; //18b20IO口的定義bitflag_lj_en; //按鍵連加使能bitflag_lj_3_en; //按鍵連3次連加后使能加的數(shù)就越大了ucharkey_time,key_value;//用做連加的中間變量bitkey_500ms;sbitpwm=P2^3;ucharf_pwm_l; //越小越暗uinttemperature;//bitflag_300ms;ucharmenu_1;//菜單設(shè)計的變量uintt_high=300,t_low=100; //溫度上下限報警值/********************1ms延時函數(shù)*************************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/***********************小延時函數(shù)*************************/voiddelay_uint(uintq){ while(q--);}/***********************數(shù)碼顯示函數(shù)**********************/voiddisplay(){ staticuchari; i++; if(i>=smg_i) i=0; P1=0xff; //消隱 P3=smg_we[i]; //位選 P1=dis_smg[i]; //段選 }/***************把數(shù)據(jù)保存到單片機(jī)內(nèi)部eepom中***************/voidwrite_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ù)從單片機(jī)內(nèi)部eeprom中讀出來**************/voidread_eeprom(){ t_high=byte_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);}/**************開機(jī)初始化保存的數(shù)據(jù)*****************/voidinit_eeprom(){ read_eeprom(); //先讀 if(a_a!=22) //新的單片機(jī)初始單片機(jī)內(nèi)問eeprom { t_high=320; t_low=280; a_a=22; write_eeprom(); //保存數(shù)據(jù) } }/*******************18b20初始化函數(shù)*************************/voidinit_18b20(){ bitq; dq=1; //把總線拿高 delay_uint(1); //15us dq=0; //給復(fù)位脈沖 delay_uint(80); //750us dq=1; //把總線拿高等待 delay_uint(10); //110us q=dq; //讀取18b20初始化信號 delay_uint(20); //200us dq=1; //把總線拿高釋放總線}/*************寫18b20內(nèi)的數(shù)據(jù)***************/voidwrite_18b20(uchardat){ uchari; for(i=0;i<8;i++) { //寫數(shù)據(jù)是低位開始 dq=0; //把總線拿低寫時間隙開始 dq=dat&0x01;//向18b20總線寫數(shù)據(jù)了 delay_uint(5); //60us dq=1; //釋放總線 dat>>=1; } }/*************讀取18b20內(nèi)的數(shù)據(jù)***************/ucharread_18b20(){ uchari,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的時間 } returnvalue; //返回數(shù)據(jù)}/*************讀取溫度的值讀出來的是小數(shù)***************/uintread_temp(){ uintvalue; ucharlow; //在讀取溫度的時候如果中斷的太頻繁了,就應(yīng)該把中斷給關(guān)了,否則會影響到18b20的時序 init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳過64位ROM write_18b20(0x44); //啟動一次溫度轉(zhuǎn)換命令 EA=1; delay_uint(50); //500us init_18b20(); //初始化18b20 EA=0; write_18b20(0xcc); //跳過64位ROM write_18b20(0xbe); //發(fā)出讀取暫存器命令 low=read_18b20(); //讀溫度低字節(jié) value=read_18b20();//讀溫度高字節(jié) EA=1; value<<=8; //把溫度的高位左移8位 value|=low; //把讀出的溫度低位放到value的低八位中 value*=0.625; //轉(zhuǎn)換到溫度值小數(shù) returnvalue; //返回讀出的溫度帶小數(shù)}/*************定時器0初始化程序***************/voidtime_init() { EA=1; //開總中斷 TMOD=0X11; //定時器0、定時器1工作方式1 ET0=1; //開定時器0中斷 TR0=1; //允許定時器0定時 ET1=1; //開定時器0中斷 TR1=0; //允許定時器0定時}/********************獨立按鍵程序*****************/ucharkey_can; //按鍵值voidkey() //獨立按鍵程序{ staticucharkey_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&0x07) { case0x06:key_can=3;break; //得到k2鍵值 case0x05:key_can=2;break; //得到k3鍵值 case0x03: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ù)***************/voidkey_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; //按鍵按下未松開自動加三次之后每次自動加10 if(t_high>990) t_high=990; } if(key_can==3) { if(flag_lj_3_en==0) t_high--; //按鍵按下未松開自動減三次 else t_high-=10; //按鍵按下未松開自動減三次之后每次自動減10 if(t_high<=t_low) t_high=t_low+1; } dis_smg[0]=smg_du[t_high%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_high/10%10]&0xdf;//取個位顯示 dis_smg[2]=smg_du[t_high/100%10]; //取十位顯示 dis_smg[3]=0x64; //H } if(menu_1==2) //設(shè)置低溫報警 { smg_i=4; //數(shù)碼管顯示4位 if(key_can==2) { if(flag_lj_3_en==0) t_low++; //按鍵按下未松開自動加三次 else t_low+=10; //按鍵按下未松開自動加三次之后每次自動加10 if(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; //按鍵按下未松開自動加三次之后每次自動加10 if(t_low<=10) t_low=10; } dis_smg[0]=smg_du[t_low%10]; //取小數(shù)顯示 dis_smg[1]=smg_du[t_low/10%10]&0xdf;//取個位顯示 dis_smg[2]=smg_du[t_low/100%10]; //取十位顯示 dis_smg[3]=0x3D; //L } }/****************風(fēng)扇控制函數(shù)***************/voidfengshan_kz(){// staticucharvalue; if(temperature>=t_high) //風(fēng)扇全開 { TR1=1; pwm=0; } elseif((temperature<t_high) &&(temperature>=t_low)) //風(fēng)扇緩慢 { f_pwm_l=60; TR1=1; } elseif(temperature<t_low) //關(guān)閉風(fēng)扇 { TR1=0; pwm=1; } }/****************主函數(shù)***************/voidmain(){ time_init();//初始化定時器 temperature=read_temp(); //先讀出溫度的值 init_eeprom();//開始初始化保存的數(shù)據(jù) delay_1ms(650); temperature=read_temp(); //先讀出溫度的值 dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0xdf;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 f_pwm_l=50; while(1) { key(); //按鍵程序 if(key_can<10) { key_with(); //設(shè)置報警溫度 } if(flag_300ms==1) //300ms處理一次溫度程序 { flag_300ms=0; temperature=read_temp(); //先讀出溫度的值 if(menu_1==0) { smg_i=3; dis_smg[0]=smg_du[temperature%10]; //取溫度的小數(shù)顯示 dis_smg[1]=smg_du[temperature/10%10]&0xdf;//取溫度的個位顯示 dis_smg[2]=smg_du[temperature/100%10]; //取溫度的十位顯示 } } fengshan_kz();//風(fēng)扇控制函數(shù) }}/*************定時器0中斷服務(wù)程序***************/voidtime0_int()interrupt1{ staticucharvalue; //定時2ms中斷一次 TH0=0xf8; TL0=0x30;//2ms display(); //數(shù)碼管顯示函數(shù) value++; if(value>=150) { value=0; flag_300ms=1; } if(flag_lj_en==1) //按下按鍵使能 { key_time++; if(key_time>=250)//500ms { key_time=0; key_500ms=1;//500ms key_value++; if(key_value>3) { key_value=10; flag_lj_3_en=1;//3次后1.5秒連加大些 } } }}/************定時器1用做單片機(jī)模擬PWM調(diào)節(jié)***********************/voidTimer1()interrupt3//調(diào)用定時器1{ staticucharvalue_l; TH1=0xfe;//定時10ms中斷一次 TL1=0x0c; //500us if(pwm==1) { value_l+=3; if(value_l>f_pwm_l)//高電平 { value_l=0; if(f_pwm_l!=0) pwm=0; } } else { value_l+=3; if(value_l>100-f_pwm_l) //低電平 { value_l=0; pwm=1; }}}附錄2仿真圖附錄3實物圖附錄4元件清單序號名稱規(guī)格編號數(shù)量1電阻10KR1412電容10uFC113晶振12MY114數(shù)碼管DS04DS115電源接口Header2P216電源開關(guān)sw-灰色SW117單片機(jī)U1U118三極管8550Q519電容20C2,C3210獨立按鍵SW-PBS1,S2,S3,S4411三極管8550Q1,Q2,Q3,Q4412電阻2KR4,R5,R6,R7,R13,R15613電阻1KR1,R2,R3,R8,R9,R10,R11,R12814溫度傳感器18B20U21四川信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計評語學(xué)生姓名彭濤學(xué)號1219042班級電信12-1專業(yè)電子信息工程技術(shù)設(shè)計題目基于MAX1898的手機(jī)充電器的設(shè)計指導(dǎo)教師張萬良指導(dǎo)老師考核意見等級:指導(dǎo)教師:答辯評語等級:答辯老師:總評成績等級:考核小組組長:備注以上兩項成績綜合后,指導(dǎo)老師考核成績占總分的60%,答辯成績占總分的40%,按五級記分(優(yōu)、良、中、及格、不及格)?;贑8051F單片機(jī)直流電動機(jī)反饋控制系統(tǒng)的設(shè)計與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實現(xiàn)基于單片機(jī)的蓄電池自動監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測試儀的研制基于單片機(jī)的自動找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動力系統(tǒng)狀態(tài)監(jiān)測儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗臺控制器的研制基于單片機(jī)的軟起動器的研究和設(shè)計基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實時內(nèi)核設(shè)計及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計與研究基于單片機(jī)的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點滴速度自動檢測儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號檢測儀基于單片機(jī)的電機(jī)運(yùn)動控制系統(tǒng)設(shè)計Pico專用單片機(jī)核的可測性設(shè)計研究基于MCS-51單片機(jī)的熱量計基于雙單片機(jī)的智能遙測微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實踐研究基于單片機(jī)的輪軌力檢測基于單片機(jī)的GPS定位儀的研究與實現(xiàn)基于單片機(jī)的電液伺服控制系統(tǒng)用于單片機(jī)系統(tǒng)的MMC卡文件系統(tǒng)研制基于單片機(jī)的時控和計數(shù)系統(tǒng)性能優(yōu)化的研究基于單片機(jī)和CPLD的粗光柵位移測量系統(tǒng)研究單片機(jī)控制的后備式方波UPS提升高職學(xué)生單片機(jī)應(yīng)用能力的探究基于單片機(jī)控制的自動低頻減載裝置研究基于單片機(jī)控制的水下焊接電源的研究基于單片機(jī)的多通道數(shù)據(jù)采集系統(tǒng)基于uPSD3234單片機(jī)的氚表面污染測量儀的研制基于單片機(jī)的紅外測油儀的研究96系列單片機(jī)仿真器研究與設(shè)計基于單片機(jī)的單晶金剛石刀具刃磨設(shè)備的數(shù)控改造基于單片機(jī)的溫度智能控制系統(tǒng)的設(shè)計與實現(xiàn)基于MSP430單片機(jī)的電梯門機(jī)控制器的研制基于單片機(jī)的氣體測漏儀的研究基于三菱M16C/6N系列單片機(jī)的CAN/USB協(xié)議轉(zhuǎn)換器基于單片機(jī)和DSP的變壓器油色譜在線監(jiān)測技術(shù)研究基于單片機(jī)的膛壁溫度報警系統(tǒng)設(shè)計基于AVR單片機(jī)的低壓無功補(bǔ)償控制器的設(shè)計基于單片機(jī)船舶電力推進(jìn)電機(jī)監(jiān)測系統(tǒng)基于單片機(jī)網(wǎng)絡(luò)的振動信號的采集系統(tǒng)基于單片機(jī)的大容量數(shù)據(jù)存儲技術(shù)的應(yīng)用研究基于單片機(jī)的疊圖機(jī)研究與教學(xué)方法實踐基于單片機(jī)嵌入式Web服務(wù)器技術(shù)的研究及實現(xiàn)基于AT89S52單片機(jī)的通用數(shù)據(jù)采集系統(tǒng)基于單片機(jī)的多道脈沖幅度分析儀研究機(jī)器人旋轉(zhuǎn)電弧傳感角焊縫跟蹤單片機(jī)控制系統(tǒng)基于單片機(jī)的控制系統(tǒng)在PLC虛擬教學(xué)實驗中的應(yīng)用研究基于單片機(jī)系統(tǒng)的網(wǎng)絡(luò)通信研究與應(yīng)用基于PIC16F877單片機(jī)的莫爾斯碼自動譯碼系統(tǒng)設(shè)計與研究基于單片機(jī)的模糊控制器在工業(yè)電阻爐上的應(yīng)用研究基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究與開發(fā)基于Cygnal單片機(jī)的μC/OS-Ⅱ的研究基于單片機(jī)的一體化智能差示掃描量熱儀系統(tǒng)研究HYPERLI

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論