智能電風(fēng)扇控制器設(shè)計(jì)單片機(jī)課程設(shè)計(jì)_第1頁
智能電風(fēng)扇控制器設(shè)計(jì)單片機(jī)課程設(shè)計(jì)_第2頁
智能電風(fēng)扇控制器設(shè)計(jì)單片機(jī)課程設(shè)計(jì)_第3頁
智能電風(fēng)扇控制器設(shè)計(jì)單片機(jī)課程設(shè)計(jì)_第4頁
智能電風(fēng)扇控制器設(shè)計(jì)單片機(jī)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、單片機(jī)課程設(shè)計(jì)設(shè)計(jì)題目:智能電風(fēng)扇控制器設(shè)計(jì)neuq目 錄序言一、 設(shè)計(jì)實(shí)驗(yàn)條件及任務(wù).21.1、設(shè)計(jì)實(shí)驗(yàn)條件1.2、設(shè)計(jì)任務(wù)2二、 小直流電機(jī)調(diào)速控制系統(tǒng)的總體方案設(shè)計(jì).32.1、系統(tǒng)總體設(shè)計(jì).32.2、芯片選擇.32.3、dac0832芯片的主要性能指標(biāo).32.4、數(shù)字溫度傳感器ds18b20.3三、 系統(tǒng)硬件電路設(shè)計(jì).4 3.1、at89c52單片機(jī)最小系統(tǒng).5 3.2、dac0832與at89c52單片機(jī)接口電路設(shè)計(jì).6 3.3、顯示電路與at89c52單片機(jī)接口電路設(shè)計(jì).73.4、顯示電路與at89c52單片機(jī)電路設(shè)計(jì).8四、 系統(tǒng)軟件流程設(shè)計(jì).7五、 調(diào)試與測(cè)試結(jié)果分析.8 5.1

2、、實(shí)驗(yàn)系統(tǒng)連線圖.85.2、程序調(diào)試,.8 5.3、實(shí)驗(yàn)結(jié)果分析.8六、 程序設(shè)計(jì)總結(jié).10七、參考文獻(xiàn). 11附錄.12 1、源程序代碼.12 2、程序原理圖.23序 言傳統(tǒng)電風(fēng)扇不能根據(jù)溫度的變化適時(shí)調(diào)節(jié)風(fēng)力大小,對(duì)于夜間溫差大的地區(qū),人們?cè)谙囊故褂秒婏L(fēng)扇時(shí)可能遇到這樣的問題:當(dāng)凌晨降溫的時(shí)候電風(fēng)扇依然在工作,可是人們因?yàn)槭焖鵁o法察覺,既浪費(fèi)電資源又容易引起感冒,傳統(tǒng)的機(jī)械定時(shí)器雖然能夠控制電風(fēng)扇在工作一定后關(guān)閉,但定時(shí)范圍有限,且無法對(duì)溫度變化靈活處理。鑒于以上方面的考慮,我們需要設(shè)計(jì)一種智能電風(fēng)扇控制系統(tǒng)來解決這些問題,使家用電器產(chǎn)品趨向于自動(dòng)化、智能化、環(huán)?;腿诵曰沟糜晌C(jī)控

3、制的智能電風(fēng)扇得以出現(xiàn)。本文介紹了一種基于at89c52單片機(jī)的智能電風(fēng)扇調(diào)速器的設(shè)計(jì),該設(shè)計(jì)主要硬件部分包括at89c52單片機(jī),溫度傳感器ds18b20,數(shù)模轉(zhuǎn)換dac0809電路,電機(jī)驅(qū)動(dòng)和數(shù)碼管顯示電路,系統(tǒng)可以實(shí)現(xiàn)手動(dòng)調(diào)速和自動(dòng)調(diào)速兩種模式的切換,在自動(dòng)工作模式下,系統(tǒng)能夠能夠根據(jù)環(huán)境溫度實(shí)現(xiàn)自動(dòng)調(diào)速;可以通過定時(shí)切換鍵和定時(shí)設(shè)置鍵實(shí)現(xiàn)系統(tǒng)工作定時(shí),使得在用戶需求的定時(shí)時(shí)間到后系統(tǒng)自動(dòng)停止工作。在日常生活中,單片機(jī)得到了越來越廣泛的應(yīng)用,本系統(tǒng)采用的at89c52單片機(jī)體積小、重量輕、性價(jià)比高,尤其適合應(yīng)用于小型的自動(dòng)控制系統(tǒng)中。系統(tǒng)電風(fēng)扇起停的自動(dòng)控制,能夠解決夏天人們晚上熟睡時(shí),

4、由于夜里溫度下降而導(dǎo)致受涼,或者從睡夢(mèng)中醒來親自開關(guān)電風(fēng)扇的問題,具有重要的現(xiàn)實(shí)意義。一、 設(shè)計(jì)實(shí)驗(yàn)條件及任務(wù)1.1、 設(shè)計(jì)實(shí)驗(yàn)條件單片機(jī)實(shí)驗(yàn)室1.2、 設(shè)計(jì)任務(wù)利用dac0832芯片進(jìn)行數(shù)/??刂疲敵龅碾妷航?jīng)放大后驅(qū)動(dòng)小直流電機(jī)的速度進(jìn)行數(shù)字量調(diào)節(jié),并顯示運(yùn)行狀態(tài)dj-xx和d/ a輸出的數(shù)字量。鞏固所學(xué)單片知識(shí),熟悉試驗(yàn)箱的相關(guān)功能,熟練掌握proteus仿真軟件,培養(yǎng)系統(tǒng)設(shè)計(jì)的思路和科研的興趣。實(shí)現(xiàn)功能如下: 系統(tǒng)手動(dòng)模式及自動(dòng)模式工作狀態(tài)切換。 風(fēng)速設(shè)為從高到低9個(gè)檔位,可由用戶通過鍵盤手動(dòng)設(shè)定。 定時(shí)控制鍵實(shí)現(xiàn)定時(shí)時(shí)間設(shè)置,可以實(shí)現(xiàn)10小時(shí)的長(zhǎng)定時(shí)。 環(huán)境溫度檢測(cè),并通過數(shù)碼管顯示

5、,自動(dòng)模式下實(shí)現(xiàn)自動(dòng)轉(zhuǎn)速控制。 當(dāng)溫度每降低1則電風(fēng)扇風(fēng)速自動(dòng)下降一個(gè)檔位,環(huán)境低于21度時(shí),電風(fēng)扇停止工作。 當(dāng)溫度每升高1則電風(fēng)扇風(fēng)速自動(dòng)上升一個(gè)檔位。環(huán)境溫度到30度以上時(shí),系統(tǒng)以最大風(fēng)速工作。 實(shí)現(xiàn)數(shù)碼管友好顯示。二、小直流電機(jī)調(diào)速控制系統(tǒng)的總體設(shè)計(jì)方案2.1、系統(tǒng)硬件總體結(jié)構(gòu)數(shù)字溫度傳感器 電機(jī)驅(qū)動(dòng)及電機(jī)執(zhí)行電路dac0832at89c52調(diào)速調(diào)時(shí)s1鍵調(diào)速調(diào)時(shí)s2鍵led數(shù)碼管顯示模式切換鍵k1定時(shí)功能鍵k2圖2.1系統(tǒng)硬件總體框圖2.2、芯片選擇1、at89c52芯片:選用該單片機(jī)作為智能電風(fēng)扇控制部件,用來實(shí)現(xiàn)電風(fēng)扇調(diào)速核心功能。2、74ls245芯片:用來驅(qū)動(dòng)數(shù)碼管。3、74

6、ls373芯片:鎖存器,用來鎖存輸出的信號(hào)。4、74ls240芯片:八單線驅(qū)動(dòng)器,緩沖輸出的信號(hào)。5、dac0832芯片:片選地址是ff80h,aout1插孔作為模擬量的輸出。6、8255芯片:可編程并行i/o接口芯片,用以擴(kuò)展單片機(jī)的io口。7、led數(shù)碼顯示管:用來顯示電機(jī)旋轉(zhuǎn)的速度是加速還是減速。8、741:運(yùn)算放大器。9、9014:npn型三極管。2.3、dac0832的主要性能指標(biāo) d/a轉(zhuǎn)換的基本原理是應(yīng)用電阻解碼網(wǎng)絡(luò),將位數(shù)字量逐位轉(zhuǎn)換為模擬量并求和,從而實(shí)現(xiàn)將位數(shù)字量轉(zhuǎn)換為相應(yīng)的模擬量。其性能指標(biāo)為:()分辨率:相對(duì)分辨率,越大,分辨率越高()線性度()轉(zhuǎn)換精度()建立時(shí)間()

7、溫度系數(shù)。dac0832引腳功能圖如圖2.2圖2.2 數(shù)模轉(zhuǎn)換dac0832引腳功能 1、di0di7:8位數(shù)字信號(hào)輸入端; 2、!cs:片選端;ile: 數(shù)據(jù)鎖存允許控制端,高電平有效; 3、!wr1:輸入寄存器寫選通控制端。當(dāng)!cs=0、ile=1、!wr1=0時(shí),數(shù)據(jù)信號(hào)被鎖存在輸入寄存器中。4、!xfer:數(shù)據(jù)傳送控制 5、!wr2 :dac寄存器寫選通控制端。當(dāng)!xfer=0,!wr2 =0時(shí),輸入寄存器狀態(tài)傳入dac寄存器中 6、iout1:電流輸出1端,輸入數(shù)字量全“1”時(shí),iout1最大,輸入數(shù)字量全為“0”時(shí),iout1最小。 7、iout2:d/a轉(zhuǎn)換器電流輸出2端,iou

8、t2+iout1=常數(shù)。 8、 rfb:外部反饋信號(hào)輸入端, 內(nèi)部已有反饋電阻rfb,根據(jù)需要也可外接反饋電阻。 9、vcc:電源輸入端,可在+5v+15v范圍內(nèi)。 10、dgnd:數(shù)字信號(hào)地。 11、agnd:模擬信號(hào)地2.4. 數(shù)字溫度傳感器ds18b20ds18b20“一線總線”數(shù)字化溫度傳感器支持“一線總線”接口,測(cè)量溫度范圍為-55+125,在-10+85范圍內(nèi),精度為0.15?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性,適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。ds18b20可以程序設(shè)定912位的分辨率,精度為0.15

9、,溫度采集具有準(zhǔn)確性、實(shí)時(shí)性。ds18b20的管腳排列如下:dq為數(shù)字信號(hào)輸入/輸出端;gnd為電源地;vdd為外接供電電源輸入端(在寄生電源接線方式時(shí)接地)。如圖2.3所示。圖2.3數(shù)字溫度傳感器ds18b20引腳圖ds18b20檢測(cè)的溫度高于一定值時(shí),單片機(jī)引腳輸出高電平,打開電風(fēng)扇,當(dāng)溫度低于一定值時(shí),單片機(jī)引腳輸出低電平,控制電風(fēng)扇停止轉(zhuǎn)動(dòng)。在此區(qū)間,每升高一度,風(fēng)扇轉(zhuǎn)速檔位加一,風(fēng)扇轉(zhuǎn)速與檔位的關(guān)系如表2.1所示:表2.1 風(fēng)扇轉(zhuǎn)速與檔位的關(guān)系環(huán)境溫度低于21.021.0-21.922.0-22.923.0-23.924.0-24.9轉(zhuǎn)速檔位01234環(huán)境溫度25.0-25.926.

10、0-26.927.0-27.928.0-28.929.0以上轉(zhuǎn)速檔位56789三、系統(tǒng)硬件電路設(shè)計(jì)3.1、at89c52單片機(jī)最小系統(tǒng):at89c52已包含了定時(shí)器、程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器等硬件,其硬件能符合整個(gè)控制系統(tǒng)的要求,不需要外接其他存儲(chǔ)器芯片和定時(shí)器件,方便地構(gòu)成一個(gè)最小系統(tǒng)。整個(gè)系統(tǒng)結(jié)構(gòu)緊湊,抗干擾能力強(qiáng),性價(jià)比高。圖3.1為at89c52芯片最小系統(tǒng)。一方面,單片機(jī)要通過i/o口中接收輸入信號(hào),另一方面要通過i/o口控制數(shù)碼管的初始化、顯示方式以及要顯示的字符。因此,設(shè)計(jì)必須以單片機(jī)為核心,顯示器為外圍設(shè)備。硬件上,單片機(jī)通過電路板電路與液晶顯示電路相連;軟件上,單片機(jī)要下載完整

11、的程序?qū)Χ哌M(jìn)行適時(shí)的控制。圖3.1 at89c52芯片最小系統(tǒng)圖3.2.系統(tǒng)程序電路主程序cup電路圖:at89c52單片機(jī)p0、p2口擴(kuò)充電路圖如圖3.2:圖3.2 at89c52系統(tǒng)管腳擴(kuò)充圖3.3、dac0832與at89c52單片機(jī)接口電路設(shè)計(jì)實(shí)驗(yàn)電路使用邏輯器件實(shí)現(xiàn)地址譯碼,地址ff80h接入數(shù)模轉(zhuǎn)換器dac0832片選段,通過數(shù)模轉(zhuǎn)換后的模擬量通過運(yùn)放放大驅(qū)動(dòng)電機(jī)驅(qū)動(dòng),其電路圖如圖3.3所示:圖3.2 dac0832與at89c52單片機(jī)接口及電機(jī)控制電路3.4、顯示電路與at89c52單片機(jī)電路設(shè)計(jì)實(shí)驗(yàn)電路使用io擴(kuò)充芯片8255及鎖存芯片74ls245對(duì)六個(gè)數(shù)碼管選通控制顯示

12、。顯示部分電路圖如圖3.3所示:圖3.3 數(shù)碼管顯示部分電路圖四、系統(tǒng)程序流程設(shè)計(jì)4.1、系統(tǒng)程序流程框圖如圖4.1圖4.1 程序流程圖 五、調(diào)試與測(cè)試結(jié)果分析5.1、實(shí)驗(yàn)系統(tǒng)連線圖a、p3.0、p3.1、p3.2、p3.3分別連按鍵k1、k2、s1、s2b、ds18b20 數(shù)據(jù)線連 p3.4c、將dac0832驅(qū)動(dòng)電路aout接至直流電機(jī)d、將p0口接至dac0832數(shù)字輸入端e、將地址譯碼器電路(ff80h)接至dac0832片選端5.2、程序調(diào)試 程序上電時(shí),直流電機(jī)默認(rèn)以中檔5檔工作,系統(tǒng)默認(rèn)工作在手動(dòng)模式下。數(shù)碼管顯示當(dāng)前環(huán)境溫度和電機(jī)運(yùn)行檔位。當(dāng)按下按鍵s1(p3.2)時(shí),直流電機(jī)

13、以加速轉(zhuǎn)動(dòng),同時(shí)數(shù)碼管顯示檔位速度,當(dāng)速度達(dá)到最大時(shí),繼續(xù)按下鍵s1第5個(gè)數(shù)碼管會(huì)顯示“”表示系統(tǒng)已達(dá)到最大風(fēng)速當(dāng)按下按鍵s2(p3.2)時(shí),直流電機(jī)以減速轉(zhuǎn)動(dòng),同時(shí)數(shù)碼管顯示檔位速度,當(dāng)速度達(dá)到最小時(shí),繼續(xù)按下鍵s2第5個(gè)數(shù)碼管會(huì)顯示“”表示系統(tǒng)已達(dá)到最小風(fēng)速。當(dāng)按下系統(tǒng)模式控制切換鍵k1可以實(shí)現(xiàn)模式的切換,在自動(dòng)模式下,數(shù)碼管第一位顯示“a”字樣,表示工作于自動(dòng)模式下,此時(shí)電機(jī)的轉(zhuǎn)速由環(huán)境溫度決定。并且顯示環(huán)境溫度和當(dāng)前溫度下電機(jī)運(yùn)行檔位。當(dāng)按下定時(shí)鍵k2時(shí),數(shù)碼管閃爍的顯示“000”,當(dāng)按s1時(shí),定時(shí)時(shí)間增加,數(shù)碼管閃爍顯示定時(shí)時(shí)間。按s2鍵時(shí),定時(shí)時(shí)間減少,同時(shí)數(shù)碼管也閃爍顯示定時(shí)時(shí)間

14、。再次按下k2鍵后,閃爍停止,定時(shí)開始,數(shù)碼管顯示定時(shí)剩余時(shí)間。5.3、實(shí)驗(yàn)結(jié)果分析 電機(jī)運(yùn)行正常時(shí)即可實(shí)現(xiàn)調(diào)速現(xiàn)象,按鍵的消抖使得調(diào)速現(xiàn)象更加明顯。按鍵s1實(shí)現(xiàn)電風(fēng)扇加速運(yùn)行,按鍵s2實(shí)現(xiàn)電風(fēng)扇減速運(yùn)行。系統(tǒng)模式控制切換鍵k1可以實(shí)現(xiàn)模式的切換。定時(shí)鍵k2實(shí)現(xiàn)定時(shí)設(shè)定和定時(shí)確定。適當(dāng)?shù)目刂瓢存I,就可以實(shí)現(xiàn)所需要的效果。六、程序設(shè)計(jì)總結(jié)兩周的單片機(jī)課程設(shè)計(jì)讓我受益匪淺,無論從知識(shí)技能上還是團(tuán)隊(duì)合作方面。上課的時(shí)候的學(xué)習(xí)從來沒有見過真正的單片機(jī),只是從理論的角度去理解枯燥乏味。但在課程設(shè)計(jì)使用了單片機(jī)及其系統(tǒng),能夠理論聯(lián)系實(shí)際的學(xué)習(xí),開闊了眼界,提高了單片機(jī)知識(shí)的理解和水平。在這次課程設(shè)計(jì)中又讓

15、我體會(huì)到了合作與團(tuán)結(jié)的力量,當(dāng)遇到不會(huì)或是設(shè)計(jì)不出來的地方,我們就會(huì)在qq群里討論或者是同學(xué)之間相互幫助。團(tuán)結(jié)就是力量,無論在現(xiàn)在的學(xué)習(xí)中還是在以后的工作中,團(tuán)結(jié)都是至關(guān)重要的,有了團(tuán)結(jié)會(huì)有更多的理念、更多的思維、更多的情感。我們組的題目是智能電風(fēng)扇控制器設(shè)計(jì),基本要求是實(shí)現(xiàn)電機(jī)速度的控制,并且通過數(shù)碼管顯示出來。由于我在學(xué)院的創(chuàng)新實(shí)驗(yàn)室有過一年多的編程經(jīng)驗(yàn),因此在實(shí)驗(yàn)箱上實(shí)現(xiàn)基本功能并沒有很大難度,基本功能實(shí)現(xiàn)后,我們組想到了使設(shè)計(jì)更加智能化和多功能化,于是我們加入了數(shù)字溫度傳感器溫度采集和自動(dòng)控制,以及定時(shí)功能。并通過程序設(shè)計(jì),實(shí)現(xiàn)比較人性化的數(shù)碼管顯示。在整個(gè)程序設(shè)計(jì)和電路設(shè)計(jì)調(diào)試過程中

16、,遇到了不少問題,最終也和組員共同解決了。主要的問題有:l 仿真和實(shí)際的電路調(diào)試有一定的出入,在仿真上按鍵能夠很好的工作,但是在實(shí)際的電路調(diào)試過程中,按鍵往往不大靈敏,常出現(xiàn)按一下,系統(tǒng)反應(yīng)多次的問題,最后通過延時(shí)時(shí)間的調(diào)整,使得按鍵較好的工作。l 由于數(shù)碼管采用動(dòng)態(tài)顯示方式,延時(shí)掃描時(shí)間的不恰當(dāng)使得數(shù)碼管顯示出現(xiàn)跳動(dòng)或者不穩(wěn)定的問題,通過延時(shí)時(shí)間的正確設(shè)置和對(duì)整體程序的分析,使數(shù)碼管的顯示穩(wěn)定正常。l 隨著系統(tǒng)功能的增加,程序變的復(fù)雜,調(diào)試起來對(duì)程序的分析帶來了一定的難度,最后通過功能函數(shù)的模塊化使得程序更加清晰和易更改。將數(shù)字溫度傳感器的函數(shù)單獨(dú)設(shè)在一個(gè)c文件中,采用多文件編譯的方式,也增

17、加了程序的易移植性。l 程序的要完全運(yùn)行正確,不僅要弄清楚電路圖,尤其是各接口的接法,還要注重每個(gè)小的細(xì)節(jié),因?yàn)橥粋€(gè)很小的錯(cuò)誤,使得程序出現(xiàn)一些無法預(yù)料的結(jié)果,在程序的調(diào)試過程中,我們組出現(xiàn)了將=錯(cuò)寫為了=,結(jié)果當(dāng)然運(yùn)行不出來。單片機(jī)是很重要的一門課程,學(xué)好一門單片機(jī),就憑這個(gè)技術(shù)這門手藝找一個(gè)好工作也不成問題。盡管我們?cè)谡n堂學(xué)到的內(nèi)容很有限,但在以后的學(xué)習(xí)中單片機(jī)還需要好好的深入研究和學(xué)習(xí)。 七、參考文獻(xiàn)1陳海宴. 51單片機(jī)原理及應(yīng)用. 北京:北京航空航天大學(xué)出版社,2012.2郭天祥. 51單片機(jī)c語言教程. 北京:電子工業(yè)出版社,2005.3胡啟明,葛祥磊. proteus從入門到

18、精通. 北京:電子工業(yè)出版社,2012. 4 張兆明.基于at89s52單片機(jī)的自動(dòng)溫控電風(fēng)扇設(shè)計(jì).測(cè)控技術(shù), 2009, 03(210820). 附錄1:系統(tǒng)程序系統(tǒng)主函數(shù)/*設(shè)計(jì)題目:智能電風(fēng)扇控制器設(shè)計(jì)設(shè)計(jì)者: 設(shè)計(jì)功能:1. 系統(tǒng)分為自動(dòng)模式和手動(dòng)模式,通過自動(dòng)控制手動(dòng)控制切換鍵k1(p3.1)可以實(shí)現(xiàn)電機(jī)轉(zhuǎn)速控制,并用數(shù)碼管顯示其工作在何種狀態(tài)。2. 手動(dòng)狀態(tài)可以通過s1、s2(p3.2加,p3.3減)實(shí)現(xiàn)9級(jí)風(fēng)速增減調(diào)速,并通過數(shù)碼管顯示。3. 通過ds18b20可以實(shí)現(xiàn)風(fēng)扇附近環(huán)境溫度的檢測(cè),溫度精確到0.1攝氏度,并通過數(shù)碼管可以顯示實(shí)時(shí)溫度當(dāng)系統(tǒng)工作切換到自動(dòng)控制狀態(tài)時(shí),系統(tǒng)

19、根據(jù)環(huán)境溫度自動(dòng)控制轉(zhuǎn)速的快慢。4. 兩種工作狀態(tài)下,均可以通過定時(shí)設(shè)置功能鍵k1(p3.0)可以實(shí)現(xiàn)風(fēng)扇定時(shí)工作,通過時(shí)間增減鍵(p3.2加,p3.4減)實(shí)現(xiàn)定時(shí)時(shí)間設(shè)定時(shí)間到后風(fēng)扇停止工作系統(tǒng)連線 p3.0、p3.1、p3.2、p3.3分別連按鍵k1、k2、s1、s2 ds18b20 數(shù)據(jù)線連 p3.4 系統(tǒng)參數(shù): 1.轉(zhuǎn)速檔位 (本參數(shù)為仿真參數(shù))共分為9個(gè)檔位,從低到高為1-9檔,通過數(shù)碼管顯示,對(duì)應(yīng)電機(jī)兩端電壓分別為1.31v、2.62v、3.93v、5.24v、6.55v、7.86v、9.17v、10.5v、11.8v2.溫度參數(shù)系統(tǒng)使用的ds18b20可以實(shí)現(xiàn)0.0625攝氏度的

20、精度。通過四舍五入,數(shù)碼管顯示可以實(shí)現(xiàn)0.1攝氏度的精度。3.自動(dòng)模式下環(huán)境溫度與轉(zhuǎn)速關(guān)系環(huán)境溫度范圍與轉(zhuǎn)速關(guān)系為:21以下,停止;21-22 1檔;22-23 2檔;23-24 3檔;24-25 4檔;25-26 5檔; 26-27 6檔; 27-28 7檔;28-29 8檔;29以上,9檔 4.定時(shí)時(shí)間參數(shù)系統(tǒng)共設(shè)置7個(gè)定時(shí)時(shí)間,分別為1min,5min,10min,30min,1h,2h,5h*/#includereg51.h#include ds18b20.h#include /用于訪問絕對(duì)地址#include #define uchar unsigned char#define ui

21、nt unsigned int#define on 1#define off 0#define confirm 2#define timegrade1 1/定時(shí)等級(jí)分別設(shè)置為1分鐘,5分鐘,10分鐘,30分鐘,1小時(shí),2小時(shí),5小時(shí)#define timegrade2 5#define timegrade3 10#define timegrade4 30#define timegrade5 60#define timegrade6 120#define timegrade7 300#define add xbyte0xff23 /控制寄存器#define pa xbyte0xff20 /位選為

22、8255,a口#define pb xbyte0xff21 /段選為8255,b口#define da xbyte0xff80 /p0對(duì)應(yīng)的地址unsigned char tflag; /定時(shí)器時(shí)間標(biāo)志unsigned char timegrade;/風(fēng)扇定時(shí)等級(jí)unsigned int timego,time,t1flag; /風(fēng)扇定時(shí)時(shí)間標(biāo)志位int temp_t,temp_t_a; /采集溫度值以及采集的溫度絕對(duì)值uint volt_d=140,volt_a;bit secflag = 0;bit auto = off; /定義自動(dòng)控制允許位uchar tc = off; /定義定時(shí)功能

23、允許位bit ch_full = 0; /定義調(diào)檔以最大或者最小標(biāo)志位bit tbzf = 0; /定義溫度低于0時(shí)標(biāo)志位uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x88,0x8b,0xbf,0xff; /共陽數(shù)碼管編碼表uchar code wei=0x01,0x02,0x04,0x08,0x10,0x20;void delayms(uint z);void initial(void);void ti

24、me_set(void);void display(uchar aa,uchar bb);void handle_display(void);void key_check(void);void anto_control_speed(void);void temptrans(void);void delayms(uint z) /延時(shí)函數(shù)uchar x,y;for(x=z;x0;x-)for(y=110;y0;y-);void display(uchar aa,uchar bb) /顯示子程序pa=weiaa; /位選pb=tablebb; /段選delayms(2);void initial(

25、void)ex0 = 1; /開外部中斷0ex1 = 1; /開外部中斷1ea = 1; /開總中斷it0 = 1; /下降沿觸發(fā)中斷0it1 = 1; /下降沿觸發(fā)中斷1tmod = 0x11; th0 = (65536-20000)/256; tl0 = (65536-20000)%256;th1 = (65536-50000)/256; tl1 = (65536-50000)%256; et0 = 1; tr0 = 1; et1 = 1;void handle_display(void)/操作時(shí)數(shù)碼管顯示,包括溫度,檔位,定時(shí)時(shí)間和剩余時(shí)間uchar i,j; volt_a=volt_d

26、/28;display(0,volt_a); /數(shù)碼管輸出檔位 if(tc = off) /為設(shè)置時(shí)間時(shí)初始狀態(tài) if(tbzf=1)display(5,22);/在數(shù)碼管1顯示溫度為負(fù)display(4,temp_t_a/100); /數(shù)碼管輸出模擬量十位display(3,temp_t_a%100/10+10); /數(shù)碼管輸出模擬量個(gè)位display(2,temp_t_a%100%10); /數(shù)碼管輸出模擬量一位小數(shù) else time_set();for(j=80;j0;j-) display(4,(time-timego)/100); /數(shù)碼管輸出模擬量十位display(3,(tim

27、e-timego)%100/10); /數(shù)碼管輸出模擬量個(gè)位display(2,(time-timego)%100%10); /數(shù)碼管輸出模擬量一位小數(shù)display(0,volt_a); if(tc = on)for(i=100;i0;i-)display(4,23); /數(shù)碼管輸出模擬量十位display(3,23); /數(shù)碼管輸出模擬量個(gè)位display(2,23); /數(shù)碼管輸出模擬量一位小數(shù)display(0,volt_a); void key_check(void) /按鍵掃描函數(shù)unsigned char temp;temp=p3&0x03;if(temp != 0x03)del

28、ayms(30); if(temp != 0x03) /當(dāng)p3.4和p3.5按下時(shí) if(temp=0x01) /模式設(shè)置鍵被按下 auto=auto; else if(temp=0x02) /定時(shí)設(shè)置鍵被按下tc+;if(tc=3)tc=0; void temptrans(void)if(secflag = 1) secflag=0;temp_t=rd_temperature()/10;if(temp_t=300) volt_d=252;void time_set(void)if(tc = on) switch(timegrade)case 0:time=0;break;case 1:tim

29、e=timegrade1;break;case 2:time=timegrade2;break;case 3:time=timegrade3;break;case 4:time=timegrade4;break;case 5:time=timegrade5;break;case 6:time=timegrade6;break;case 7:time=timegrade7;break;else if(tc = confirm)tr1 = 1;display(5,22);elsetime=0;tr1 = 0;/關(guān)閉定時(shí)器2timego=0; if(timego=time)&(tc = confir

30、m)/定時(shí)時(shí)間到tc =off;/關(guān)閉時(shí)間顯示標(biāo)志tr1 = 0;/關(guān)閉定時(shí)器2timego=0;/定時(shí)后已運(yùn)行時(shí)間清零volt_d=0; /定時(shí)時(shí)間到后,風(fēng)扇停止轉(zhuǎn)動(dòng)void main() initial();while(1) temptrans();if(auto = off) /當(dāng)系統(tǒng)為手動(dòng)控制時(shí)子函數(shù)if(ch_full=1)display(1,22);/在數(shù)碼管1顯示一橫線,表示檔位已經(jīng)最大或者最小 da= volt_d; /把數(shù)字量賦給數(shù)模轉(zhuǎn)換器handle_display();if(auto = on)/系統(tǒng)為自動(dòng)控制時(shí)函數(shù)display(5,20);/顯示自動(dòng)控制允許標(biāo)志da=

31、 volt_d;anto_control_speed();handle_display();void ex0() interrupt 0 /外部中斷0子程序delayms(200); if(tc = off)|(tc = confirm) /如果不是時(shí)間設(shè)置時(shí),實(shí)現(xiàn)風(fēng)扇調(diào)速if(volt_d0)ch_full=0;volt_d-=28; else ch_full=1;else/如果時(shí)間設(shè)置標(biāo)志位打開,則定時(shí)設(shè)置 timegrade-;void isr_t1(void) interrupt 3th1 = (65536-50000)/256; tl1 = (65536-50000)%256; t1flag+; if(t1flag = 1200) t1flag = 0;timego+; 數(shù)字溫度傳感器ds18b20部分頭文件#ifndef _ds18b20_h#define _ds18b20_h#include reg51.h#include intrins.hsbit dq = p34;bit init_ds18b20(void);void dela

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論