51單片機(jī)課程設(shè)計(jì)——智能電風(fēng)扇_第1頁(yè)
51單片機(jī)課程設(shè)計(jì)——智能電風(fēng)扇_第2頁(yè)
51單片機(jī)課程設(shè)計(jì)——智能電風(fēng)扇_第3頁(yè)
51單片機(jī)課程設(shè)計(jì)——智能電風(fēng)扇_第4頁(yè)
51單片機(jī)課程設(shè)計(jì)——智能電風(fēng)扇_第5頁(yè)
已閱讀5頁(yè),還剩23頁(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、智能電風(fēng)扇的設(shè)計(jì)學(xué) 院 計(jì)算機(jī)與控制工程學(xué)院 專業(yè)班級(jí) 自動(dòng)化073班 學(xué)生姓名 馮文科 指導(dǎo)教師 白曉樂(lè) 夏康偉 2010年6 月25 日引 言隨著人們生活水平及科技水平的不斷提高,現(xiàn)在家用電器在款式、功能等方面日益求精,并朝著健康、安全、多功能、節(jié)能等方向發(fā)展。過(guò)去的電器不斷的顯露出其不足之處。電風(fēng)扇作為家用電器的一種,同樣存在類似的問(wèn)題?,F(xiàn)在電風(fēng)扇的現(xiàn)狀:大部分只有手動(dòng)調(diào)速,再加上一個(gè)定時(shí)器,功能單一。存在的隱患或不足:比如說(shuō)人們常常離開(kāi)后忘記關(guān)閉電風(fēng)扇,浪費(fèi)電且不說(shuō)還容易引發(fā)火災(zāi),長(zhǎng)時(shí)間工作還容易損壞電器。再比如說(shuō)前半夜溫度高電風(fēng)扇調(diào)的風(fēng)速較高,但到了后半夜氣溫下降,風(fēng)速不會(huì)隨著氣溫變

2、化,容易著涼。之所以會(huì)產(chǎn)生這些隱患的根本原因是:缺乏對(duì)環(huán)境的檢測(cè)。如果能使電風(fēng)扇具有對(duì)環(huán)境進(jìn)行檢測(cè)的功能,當(dāng)房間里面沒(méi)有人時(shí)能自動(dòng)的關(guān)閉電風(fēng)扇;當(dāng)溫度下降時(shí)能自動(dòng)的減小風(fēng)速甚至關(guān)閉風(fēng)扇,這樣一來(lái)就避免了上述的不足。本次設(shè)計(jì)就是圍繞這兩點(diǎn)對(duì)現(xiàn)有電風(fēng)扇進(jìn)行改進(jìn)。1.總體方案設(shè)計(jì)及功能描述本設(shè)計(jì)是以AT89C51單片機(jī)控制中心,主要通過(guò)提取熱釋電紅外傳感器感應(yīng)到的人體紅外線信息和溫度傳感器DS18B20得到的溫度以及內(nèi)部定時(shí)器設(shè)定時(shí)間長(zhǎng)短來(lái)控制電風(fēng)扇的開(kāi)關(guān)及轉(zhuǎn)速的變化。功能描述:電風(fēng)扇工作在四種狀態(tài):手動(dòng)調(diào)速狀態(tài)、自動(dòng)調(diào)速狀態(tài)、定時(shí)狀態(tài)、停止?fàn)顟B(tài)。手動(dòng)狀態(tài)時(shí)可以手動(dòng)調(diào)節(jié)速度;自動(dòng)狀態(tài)時(shí)通過(guò)溫度高低自

3、動(dòng)調(diào)節(jié)速度,如果出現(xiàn)手動(dòng)現(xiàn)象則變?yōu)槭謩?dòng)狀態(tài);定時(shí)狀態(tài)時(shí)可以調(diào)節(jié)定時(shí)時(shí)間,并設(shè)定是否啟動(dòng)定時(shí),之后可以手動(dòng)退出,也可以在不操作6秒后自動(dòng)退出進(jìn)入手動(dòng)狀態(tài);停止?fàn)顟B(tài)時(shí)可以被喚醒并進(jìn)入自動(dòng)狀態(tài)。當(dāng)沒(méi)有檢測(cè)到人體存在超過(guò)3分鐘或定時(shí)完畢時(shí)進(jìn)入停止?fàn)顟B(tài)。在數(shù)碼管顯示方面,當(dāng)沒(méi)有定時(shí)時(shí),只顯示氣溫,當(dāng)定時(shí)啟動(dòng)時(shí)氣溫和定時(shí)剩余時(shí)間以3秒的速度交替顯示。系統(tǒng)方框圖如下圖所示,主要包括:輸入、控制、輸出三大部分8個(gè)功能模塊。鍵盤輸入熱釋電紅外傳感器溫度傳感器(DS18B20)AT89C51數(shù)碼管發(fā)光二極管蜂鳴器繼電器圖1-1系統(tǒng)方框圖2.功能模塊硬件簡(jiǎn)介與實(shí)現(xiàn)2.1鍵盤輸入電路由于設(shè)計(jì)中用到的按鍵數(shù)目不多,所以

4、可以直接用AT89C51的通用IO端口且選用AT89C51的P1口(內(nèi)部有上拉電阻)作為鍵盤接口。對(duì)于按鍵只需一端接地另一端接P1口即可。見(jiàn)下圖(2-1):圖 2-12.2熱釋電紅外傳感器模塊熱釋電紅外線傳感器原理簡(jiǎn)介人體輻射的紅外線中心波長(zhǎng)為 910um,而探測(cè)元件的波長(zhǎng)靈敏度在 0.220um 范圍內(nèi)幾乎穩(wěn)定不變。在傳感器頂端開(kāi)設(shè)了一個(gè)裝有濾光鏡片的窗口,這個(gè)濾光片可通過(guò)光的波長(zhǎng)范圍為 710um,正好適合于人體紅外輻射的探測(cè),而對(duì)其它波長(zhǎng)的紅外線由濾光片予以吸收,這樣便形成了一種專門用作探測(cè)人體輻射的紅外線傳感器。 實(shí)質(zhì)上熱釋電傳感器是對(duì)溫度敏感的傳感器。它由陶瓷氧化物或壓電晶體元件組成

5、,在元件兩個(gè)表面做成電極,如圖2所示。在環(huán)境溫度有T的變化時(shí),由于有熱釋電效應(yīng),在兩個(gè)電極上會(huì)產(chǎn)生電荷Q,即在兩電極之間產(chǎn)生一微弱的電壓V。熱釋電紅外線傳感器應(yīng)用熱釋電紅外線傳感器有三個(gè)端口,如圖2-2所示:一個(gè)接電源、一個(gè)接地、一個(gè)信號(hào)端口,當(dāng)有人進(jìn)入其檢測(cè)區(qū)域時(shí),信號(hào)端口便產(chǎn)生一個(gè)電平跳變,并維持?jǐn)?shù)秒鐘,我們就是利用這個(gè)跳變來(lái)判斷是否有人在這個(gè)檢測(cè)區(qū)域。圖2-22.3溫度傳感器溫度傳感器DS18B20簡(jiǎn)介新型數(shù)字溫度傳感器DS18B20具有體積更小、精度更高、適用電壓更寬、采用一線總線,在實(shí)際應(yīng)用中取得了良好的測(cè)溫效果。DS18B20的主要特性:(1)獨(dú)特的單線接口方式,DS18B20在與

6、微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊。(2)測(cè)溫溫范圍55125(3)最高分辨率為0.0625。 DS18B20的一般操作過(guò)程(1)、初始化;(2)、跳過(guò)ROM(命令:CCH);(3)、溫度變換(命令:44H);(4)、讀暫存存儲(chǔ)器(命令:BEH);注:每次讀取溫度都要經(jīng)過(guò)上面四個(gè)過(guò)程。 DS18B20的溫度存儲(chǔ)方式即溫度計(jì)算 DS18B20是用12位存儲(chǔ)溫度,最高位為符號(hào)位,下圖為它的溫度存儲(chǔ)方式:232221202-12-22-32-4LSBYTEBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0SSSSS262524MSBYTEBit15B

7、it14Bit13Bit12Bit11Bit10Bit9Bit8表2-1 DS18B20溫度存儲(chǔ)地址分配這是12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在DS18B20的兩個(gè)8比特的RAM中,二進(jìn)制中的前面5位是符號(hào)位,如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625即可得到實(shí)際溫度。2.4數(shù)碼管顯示電路2.4 174ls164簡(jiǎn)介移位寄存器是一類應(yīng)用很廣的時(shí)序邏輯電路,在時(shí)鐘脈沖的作用下,低位寄存器的數(shù)碼送給高位寄存器,作為高位寄存器的次態(tài)輸出。 在時(shí)鐘脈沖的作用下,高位寄存器的數(shù)碼送給低位寄存器,

8、作為低位寄存器的次態(tài)輸出;移位寄存器:除具寄存器的功能外,所存儲(chǔ)的數(shù)碼在時(shí)鐘脈沖的作用下還可以移位。74ls164是八位串入并出移位寄存器,其工作電壓范圍4.755.25V,大于2V的高電平輸入、小于0.8V的低電平輸入,clock最高響應(yīng)頻率為25MHZ,八位并行輸出可以直接驅(qū)動(dòng)八段數(shù)碼管。74ls164的引腳圖及功能圖如下所示:1312111098OH123456 BA7GND14VccOHOGOFOAOBOCODCLOCKCLEAROESERIAL INPUTSOUTPUTSOUTPUTSInputsOutputsClearClockA BQAQBQHLHHHHXLXXHLXLQA0HL

9、LLQB0QAnQAnQAnLQH0QGnQGnQGn圖2-3 74ls164的引腳圖及功能圖共陰極八段數(shù)碼管簡(jiǎn)介共陰極八段數(shù)碼管是將八段發(fā)光二極管封裝在一起且二極管的陰極連在一起,原理圖如下圖所示,公共端接低電平,其它八個(gè)端口高電平點(diǎn)亮相應(yīng)的二極管,低電平相反。圖2-4顯示電路設(shè)計(jì)此顯示電路采用兩位靜態(tài)數(shù)碼管顯示,用八位串入并出移位寄存器74LS164作為驅(qū)動(dòng)電路,采用共陰極八段數(shù)碼管原理圖示意圖如下:數(shù)碼管74LS164數(shù)碼管74LS164dataclock圖 2-5從圖中可以看出控制線只有兩條:1、數(shù)據(jù)線;2、移位脈沖線。它只占用很少的IO口。2.5發(fā)光二極管電路發(fā)光二極管簡(jiǎn)稱為L(zhǎng)ED,

10、它是半導(dǎo)體二極管的一種。發(fā)光二極管的反向擊穿電壓約5伏。它的正向伏安特性曲線很陡,使用時(shí)必須串聯(lián)限流電阻以控制通過(guò)管子的電流。限流電阻R可用下式計(jì)算:R(EUf)If式中E為電源電壓,Uf為L(zhǎng)ED的正向壓降,If為L(zhǎng)ED的一般工作電流。發(fā)光二極管的兩根引線中較長(zhǎng)的一根為正極,應(yīng)按電源正極。與小白熾燈泡和氖燈相比,發(fā)光二極管的特點(diǎn)是:工作電壓很低(有的僅一點(diǎn)幾伏);工作電流很?。ㄓ械膬H零點(diǎn)幾毫安即可發(fā)光);抗沖擊和抗震性能好,可靠性高,壽命長(zhǎng);通過(guò)調(diào)制通過(guò)的電流強(qiáng)弱可以方便地調(diào)制發(fā)光的強(qiáng)弱。由于有這些特點(diǎn),發(fā)光二極管在一些光電控制設(shè)備中用作光源,在許多電子設(shè)備中用作信號(hào)顯示器。由于AT89C51

11、的P0口是開(kāi)漏輸出,所以此電路可以設(shè)計(jì)位如下簡(jiǎn)單形式:圖2-62.6蜂鳴器電路蜂鳴器工作原理簡(jiǎn)介:當(dāng)控制端口通以不同頻率及不同占空比的信號(hào)時(shí)蜂鳴器將發(fā)出不同強(qiáng)度及不同頻率的聲音。由于其具有比傳統(tǒng)的喇叭體積小,價(jià)格低等優(yōu)點(diǎn),所以此次提示音電路選用蜂鳴器。具體電路見(jiàn)下圖:圖2-72.7繼電器控制電路繼電器簡(jiǎn)介繼電器是一種電子控制器件,它具有控制系統(tǒng)(又稱輸入回路)和被控制系統(tǒng)(又稱輸出回路),通常應(yīng)用于自動(dòng)控制電路中,它實(shí)際上是用較小的電流去控制較大電流的一種“自動(dòng)開(kāi)關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。它有幾個(gè)重要指標(biāo):1、額定工作電壓:正常工作時(shí)線圈所需要的電壓。2、直流電阻

12、:繼電器中線圈的直流電阻。3、吸合電流:繼電器能夠產(chǎn)生吸合動(dòng)作的最小電流。4、釋放電流:繼電器產(chǎn)生釋放動(dòng)作的最大電流。5、觸點(diǎn)切換電壓和電流:繼電器允許加載的電壓和電流。繼電器驅(qū)動(dòng)電路設(shè)計(jì)及工作原理簡(jiǎn)介采用晶閘管也可以用于小電流控制大電流電路,但是其控制電路比較復(fù)雜,而采用繼電器其控制電路就比較簡(jiǎn)單,且具有電氣隔離作用。雖然其響應(yīng)速度沒(méi)有晶閘管快但在低頻情況下采用繼電器控制電路較為方便。其電路圖如下所示:圖2-8電路工作原理簡(jiǎn)介:當(dāng)控制端口為低電平時(shí),三極管導(dǎo)通繼電器吸合,常閉觸電斷開(kāi),常開(kāi)觸點(diǎn)閉合。當(dāng)控制端口為高電平時(shí)三極管關(guān)斷,繼電器線圈通過(guò)二極管放電并斷開(kāi),常閉、常開(kāi)觸電復(fù)位。3.軟件設(shè)

13、計(jì)與實(shí)現(xiàn)3.1整體設(shè)計(jì)思路介紹軟件設(shè)計(jì)整體思路:主程序部分進(jìn)行一些初始化以及溫度的讀??;外部中斷0進(jìn)行紅外線感應(yīng)延時(shí)時(shí)間的重新加載;定時(shí)器0進(jìn)行鍵盤的掃描及相關(guān)操作;定時(shí)器1進(jìn)行顯示、溫控速度、以及相關(guān)需要延時(shí)(如倒計(jì)時(shí)等等)的操作。在顯示方面,進(jìn)行了一些改善-要顯示的值有變化才進(jìn)行重新刷新,否則不刷新。這樣就大大提高了效率及最終的顯示效果(不會(huì)出現(xiàn)不該亮的部分還有亮的現(xiàn)象)。3.2主要部分流程圖如下:主程序流程圖主程序開(kāi)始初始化內(nèi)部資源讀取一個(gè)正確溫度并選擇速度啟動(dòng)時(shí)間和溫度顯示拉高五個(gè)按鍵啟動(dòng)定時(shí)器讀取溫度圖 3-1外部中斷流程圖外部中斷開(kāi)始退出外部中斷紅外線感應(yīng)延時(shí)重新初始化圖 3-2定

14、時(shí)器0中斷流程圖定時(shí)器0開(kāi)始退出定時(shí)器定時(shí)器重新初始化鍵盤消抖定時(shí)狀態(tài)N定時(shí)狀態(tài)鍵盤操作手動(dòng)狀態(tài)鍵盤操作自動(dòng)狀態(tài)鍵盤操作停止?fàn)顟B(tài)鍵盤操作YYYY手動(dòng)狀態(tài)N自動(dòng)狀態(tài)N停止?fàn)顟B(tài)圖 3-3定時(shí)器1中斷流程圖定時(shí)器1開(kāi)始退出定時(shí)器定時(shí)器1重新初始化鍵盤消抖定時(shí)狀態(tài)手動(dòng)狀態(tài)自動(dòng)狀態(tài)停止?fàn)顟B(tài)NNN顯示時(shí)間如果有定時(shí)則時(shí)間和溫度交替顯示,沒(méi)有則只顯示溫度YYYY如果有定時(shí)則定時(shí)倒計(jì)時(shí),計(jì)時(shí)結(jié)束關(guān)閉電風(fēng)扇進(jìn)入定時(shí)狀態(tài)不動(dòng)超過(guò)一定時(shí)間自動(dòng)退回手動(dòng)狀態(tài)如果有定時(shí)則時(shí)間和溫度交替顯示,沒(méi)有則只顯示溫度顯示時(shí)間圖 3-4結(jié)束語(yǔ)早在單片機(jī)原理及接口技術(shù)這門課還未結(jié)束的時(shí)候,陸仲達(dá)老師就給我們布置了基于51單片機(jī)的課程設(shè)

15、計(jì)。我從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對(duì)思路逐漸的清晰,整個(gè)寫(xiě)作過(guò)程難以用語(yǔ)言來(lái)表達(dá)。關(guān)于51的應(yīng)用設(shè)計(jì),從上課開(kāi)始我就不滿足于那些諸如電子鐘、交通燈控制等司空見(jiàn)慣的設(shè)計(jì),我希望能把主題定位得更新穎、更具挑戰(zhàn)性,正好夏天也到了,于是把題目定為:智能電風(fēng)扇的設(shè)計(jì)。題目確定下來(lái),我便立刻著手資料的收集工作中,當(dāng)時(shí)面對(duì)浩瀚的書(shū)海真是有些茫然,不知如何下手。在導(dǎo)老師的指導(dǎo)及同學(xué)的幫助下,我終于對(duì)自己的工作方向和方法有了初步掌握。資料已經(jīng)查找完畢,我開(kāi)始著手論文的寫(xiě)作。在寫(xiě)作過(guò)程中遇到困難我就及時(shí)和導(dǎo)師聯(lián)系,并和同學(xué)互相交流,請(qǐng)教專業(yè)課老師。在大家的幫助下,困難一個(gè)一個(gè)解決掉,論文也慢慢成型。當(dāng)我終

16、于完成了所有打字、繪圖、排版、校對(duì)的任務(wù)后整個(gè)人都很累,但同時(shí)看著電腦熒屏上的課程設(shè)計(jì)稿件我的心里是甜的,我覺(jué)得這一切都值了。這次課程設(shè)計(jì)論文的制作過(guò)程是我的一次再學(xué)習(xí),再提高的過(guò)程。在論文中我充分地運(yùn)用了大學(xué)期間所學(xué)到的知識(shí)。本設(shè)計(jì)最終實(shí)現(xiàn)了電風(fēng)扇的手動(dòng)調(diào)速、溫控自動(dòng)調(diào)速、定時(shí)、溫度顯示、人體檢測(cè)等預(yù)期功能,其中定時(shí)在1到99分鐘連續(xù)可調(diào),人體檢測(cè)范圍角度120度、距離6米,人體檢測(cè)延時(shí)時(shí)間3分鐘,定時(shí)器自動(dòng)退出時(shí)間6秒。存在不足之處就是人體檢測(cè)抗干擾方面不夠好,需要提高。我不會(huì)忘記這難忘的半個(gè)月的時(shí)間。課程設(shè)計(jì)論文的制作給了我難忘的回憶。在我徜徉書(shū)海查找資料的日子里,面對(duì)無(wú)數(shù)書(shū)本的羅列,最

17、難忘的是每次找到資料時(shí)的激動(dòng)和興奮;親手用protel 99 se設(shè)計(jì)電路圖的時(shí)間里,記憶最深的是每一步小小思路實(shí)現(xiàn)時(shí)那幸福的心情;為了論文我曾趕稿到深夜,但看著親手打出的一字一句,心里滿滿的只有喜悅毫無(wú)疲憊。這段旅程看似荊棘密布,實(shí)則蘊(yùn)藏著無(wú)盡的寶藏。在今后的日子里,我仍然要不斷地充實(shí)自己,爭(zhēng)取在所學(xué)領(lǐng)域有所作為。在這次課程設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽(tīng)聽(tīng)不同的看法對(duì)我們更好的理解知識(shí),所以在這里非常感謝幫助我的同學(xué)。在此更要感謝我的指導(dǎo)老師和專業(yè)老師,是你們的細(xì)心指導(dǎo)和關(guān)懷,使我能夠順利的完成課程設(shè)計(jì)。附錄:程序清單/*touwenji

18、an.h*/typedef unsigned char byte; typedef unsigned int word;/以下管腳配置/ds18b20部分sbit DQ =P34; /顯示部分sbit DB=P20;sbit CP=P21;/發(fā)光顯示部分sbit LED_dingshi=P00;sbit LED_shoudong =P01;sbit LED_zidong=P02;sbit LED_kuai =P03;sbit LED_zhong =P04;sbit LED_man =P05;/鍵盤定義部分#define wujian 0x3fsbit KEY1=P10 ; /狀態(tài)轉(zhuǎn)換 /啟動(dòng)s

19、bit KEY2=P11 ; /+10 / 1sbit KEY3=P12 ; /-10/ 2sbit KEY4=P13 ; / 3sbit KEY5=P14 ; / 0確定/繼電器控制部分sbit JDQ1=P24; /0表示開(kāi)通,1表示關(guān)斷sbit JDQ2=P25;sbit JDQ3=P26;/蜂鳴器部分sbit call=P27; /低電平鳴叫/* ds18b20.c*/#include #includetouwenjian.h/* 延時(shí)子程序*/extern void delay(word useconds) for(;useconds0;useconds-); /* 復(fù)位子程序 */

20、static byte ow_reset(void) byte presence;EA=0; DQ = 0; / pull DQ line low delay(45); / leave it low for 480us /551usDQ = 1; / allow line to return high delay(4);/ wait for presence /61uspresence = DQ; / get presence signal delay(40); / wait for end of timeslot /491usEA=1;return(presence); / presence

21、 signal returned / 0=presence, 1 = no part /* 從 1-wire 總線上讀取一個(gè)字節(jié)子程序*/ static byte read_byte(void) byte i; byte value = 0;EA=0; for (i=8;i0;i-) value=1; DQ = 0; / pull DQ low to start timeslot DQ = 1; / then return high unsigned char i; for(i=0;i0; i-) / writes byte, one bit at a time DQ = 0; / pull

22、DQ low to start timeslotDQ=0; DQ = val&0x01; /6USdelay(5);/ hold value for remainder of timeslot /74usDQ = 1; val=val1; EA=1; delay(5); /*讀取溫度 */ word Read_Temperature(void) union byte c2; word x; temp; ow_reset(); write_byte(0xCC); / Skip ROM write_byte(0xBE); / Read Scratch Pad temp.c1=read_byte()

23、; temp.c0=read_byte(); ow_reset(); write_byte(0xCC); /Skip ROM write_byte(0x44); / Start Conversion return temp.x; /*求解溫度*/extern byte Real_Tem(void) word wen; wen=Read_Temperature(); return(wen4)&0x00ff);/* Main.c*/#include #includetouwenjian.h/數(shù)據(jù)區(qū)#define time_default 41byte dingshi_time=time_defau

24、lt;/存放定時(shí)時(shí)間bit flag_dingshi=0; /0表示沒(méi)有定時(shí)word dingshi_jishu3=1000;/1000*60=1分鐘/bit flag_dingshi_delay=0;/1表示有byte dingshi_delay=100;/#define hwx_delay_const 3 /人體感應(yīng)延時(shí)時(shí)間byte hwx_delay=hwx_delay_const;/用于保存紅外線觸發(fā)延長(zhǎng)時(shí)間word hwx_jishu1=0;/byte wendu=0;/用于存放溫度值/#define low_wen 18#define mid_wen 20#define hig_w

25、en 24#define vhi_wen 28/byte time_stor=100; /存儲(chǔ)主觀時(shí)間/觸發(fā)顯示byte wendu_stor=low_wen;/存儲(chǔ)主觀溫度/觸發(fā)顯示/enum station0zidong,dingshi,shoudong,weakstate;/函數(shù)說(shuō)明區(qū)extern byte Real_Tem(void );extern void delay(word useconds);void mingjiao(void);void display(byte input,bit kkl);void auto_speed(void);void weak_default(

26、void);/*主程序*/void main()/定時(shí)器0用于鍵盤掃描TMOD=0x01|TMOD;/定時(shí)器0的1方式TH0=0xd8;TL0=0xf0; /定時(shí)器0初始化10ms掃描一次/定時(shí)器1用于顯示TMOD=0x10|TMOD;/定時(shí)器1的1方式TH1=0x15;TL1=0xA0; /定時(shí)器1初始化60ms中斷一次/外部中斷TCON=TCON|0x01;/外部中斷0都下降沿觸發(fā)/以下為開(kāi)啟部分IP=0X01; /兩個(gè)定時(shí)器同等優(yōu)先級(jí)IE=0x8b; /開(kāi)啟定時(shí)器0,1,外部中斷0中斷/while(Real_Tem()=85);auto_speed();LED_zidong=0; /剛開(kāi)

27、始為自動(dòng)方式 P1=P1|0X7C; /拉高五個(gè)鍵盤 wendu_stor=100; /兩個(gè)不可能值/用于啟動(dòng)顯示time_stor=100; /兩個(gè)不可能值/用于啟動(dòng)顯示/TR0=1; /開(kāi)啟定時(shí)器0TR1=1;while(1) wendu=Real_Tem(); /* 定時(shí)器0中斷服務(wù)子程序 功能:進(jìn)行鍵盤處理 說(shuō)明:鍵盤輸入為P1.0到P1.4*/ void time0(void) interrupt 1 byte jianpan; TH0=0xd8;TL0=0xf0; jianpan = P1 & wujian; if(jianpan != wujian) /如果還有鍵盤值提取鍵盤值

28、delay(500);/延時(shí)消抖 jianpan = P1 & wujian; if(jianpan=wujian)goto time_out; switch(state) case dingshi: if(KEY1=0)/狀態(tài)轉(zhuǎn)換時(shí)做些相應(yīng)的處理 state=shoudong;LED_shoudong=0;flag_dingshi_delay=0;dingshi_delay=100;time_stor=100;wendu_stor=100;/觸發(fā)mingjiao();while(KEY1=0); else if(KEY2=0)/加分 if(dingshi_time10)dingshi_tim

29、e-=10;dingshi_delay=100;/mingjiao();while(KEY3=0); else if(KEY4=0)/定時(shí)與否 flag_dingshi=flag_dingshi;if(flag_dingshi=1)LED_dingshi=0;else LED_dingshi=1;dingshi_jishu3=1000;dingshi_delay=100;/mingjiao();while(KEY4=0); else if(KEY5=0) weak_default();mingjiao();while(KEY5=0); break;case shoudong:if(KEY1=0

30、) /狀態(tài)轉(zhuǎn)換時(shí)做些相應(yīng)的處理 state=zidong;auto_speed();LED_shoudong=1;LED_zidong=0;mingjiao();while(KEY1=0); else if(KEY2=0)/快1 JDQ2=1;JDQ3=1;JDQ1=0;/關(guān)斷其它LED_zhong=LED_man=1;LED_kuai=0;mingjiao();while(KEY2=0); else if(KEY3=0)/中2 JDQ1=1;JDQ3=1;JDQ2=0;/關(guān)斷其它LED_kuai=LED_man=1;LED_zhong=0;mingjiao();while(KEY3=0);

31、else if(KEY4=0)/慢3 JDQ1=1;JDQ2=1;JDQ3=0;/關(guān)斷其它LED_zhong=LED_kuai=1;LED_man=0;mingjiao();while(KEY4=0); else if(KEY5=0)/停4 weak_default();mingjiao();while(KEY5=0); break;case zidong: if(KEY1=0) /狀態(tài)轉(zhuǎn)換時(shí)做些相應(yīng)的處理 state=dingshi;LED_zidong=1;flag_dingshi_delay=1;dingshi_delay=100;/開(kāi)始延時(shí)time_stor=100;/mingjiao

32、();while(KEY1=0); else if(KEY2=0)/快1 JDQ2=1;JDQ3=1;JDQ1=0;/關(guān)斷其它LED_zhong=LED_man=1;LED_kuai=0;state=shoudong;LED_zidong=1;LED_shoudong=0;mingjiao();while(KEY2=0); else if(KEY3=0)/中2 JDQ1=1;JDQ3=1;JDQ2=0;/關(guān)斷其它LED_kuai=LED_man=1;LED_zhong=0;state=shoudong;LED_zidong=1;LED_shoudong=0;mingjiao();while(K

33、EY3=0); else if(KEY4=0)/慢3 JDQ1=1;JDQ2=1;JDQ3=0;/關(guān)斷其它LED_zhong=LED_kuai=1;LED_man=0;state=shoudong;LED_zidong=1;LED_shoudong=0;mingjiao();while(KEY4=0); else if(KEY5=0)/停4 weak_default();mingjiao();while(KEY5=0); break; case weak: if(KEY1=0) state=zidong;LED_zidong=0;wendu_stor=100;/兩個(gè)不可能值time_stor=

34、100;/兩個(gè)不可能值auto_speed();mingjiao();while(KEY1=0); break; time_out: ;/*定時(shí)器1中斷服務(wù)子程序功能: 用于定時(shí) 0.060s*/void timer1(void) interrupt 3 TH1=0x15;TL1=0xa0;/紅外線到記時(shí)EX0=0;if(hwx_jishu10)dingshi_jishu3-; else dingshi_jishu3=1000; if(dingshi_time1)dingshi_time-; elseweak_default(); /5秒延時(shí)if(flag_dingshi_delay=1) i

35、f(dingshi_delay1)dingshi_delay-;else state=shoudong;flag_dingshi_delay=0;dingshi_delay=100; LED_shoudong=0; time_stor=100;wendu_stor=100; / mingjiao();/顯示和溫控switch(state)if(time_stor!=dingshi_time)display(dingshi_time,1);time_stor=dingshi_time;/break; case shoudong: case zidong:/是否有定時(shí),有則交替顯示溫度和時(shí)間,沒(méi)有

36、則只顯示溫度if(flag_dingshi!=0)/ static byte jiaoti_jishu2=0; static bit flag_jiaoti=0; if(jiaoti_jishu249)jiaoti_jishu2+; else flag_jiaoti=flag_jiaoti;jiaoti_jishu2=0; if(flag_jiaoti!=0) if(time_stor!=dingshi_time) display(dingshi_time,1);time_stor=dingshi_time;wendu_stor=100;/顯示時(shí)間 else if(wendu_stor!=we

37、ndu) display(wendu,0);wendu_stor=wendu;time_stor=100;/顯示溫度 else if(wendu_stor!=wendu)display(wendu,0);wendu_stor=wendu;/ 顯示溫度 /溫度控制速度if(state=zidong)switch(wendu) case low_wen:JDQ1=1;JDQ2=1;JDQ3=1; LED_zhong=LED_man=LED_kuai=1;/ting zhibreak; case mid_wen:JDQ1=1;JDQ2=1;JDQ3=0; LED_zhong=LED_kuai=1;LED_man=0;/manbreak; case hig_wen:JDQ1=1;JDQ3=1;JDQ2=0; LE

溫馨提示

  • 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)論