溫控風(fēng)扇系統(tǒng)設(shè)計(jì)_第1頁(yè)
溫控風(fēng)扇系統(tǒng)設(shè)計(jì)_第2頁(yè)
溫控風(fēng)扇系統(tǒng)設(shè)計(jì)_第3頁(yè)
溫控風(fēng)扇系統(tǒng)設(shè)計(jì)_第4頁(yè)
溫控風(fēng)扇系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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、 自動(dòng)化系統(tǒng)創(chuàng)意設(shè)計(jì)大賽作品說(shuō)明書(shū)作品名稱:溫控風(fēng)扇系統(tǒng)設(shè)計(jì) 隊(duì) 員 : 2015年 4月29目錄1、引言32、背景33、意義與應(yīng)用34、原理簡(jiǎn)介45、方案設(shè)計(jì)46、STC12C5A60S2單片機(jī)56.1簡(jiǎn)介56.2 PWM寄存器設(shè)置56.3 PWM占空比計(jì)算方法56.4 I/O工作方式設(shè)置67、LCD液晶顯示屏68、溫度傳感器DS18B2088.1 初始化98.2 寫(xiě)操作108.3 讀操作109、風(fēng)扇10拓展1:10拓展2:1110、硬件電路設(shè)計(jì)1210.1原理圖和部分電路PCB圖1210.2 電機(jī)驅(qū)動(dòng)電路1311、軟件設(shè)計(jì)1411.1主函數(shù)流程圖1411.2

2、溫度控制風(fēng)扇程序流程圖1511.3 按鍵控制風(fēng)扇程序流程圖1611.4 按鍵設(shè)定溫度程序流程圖1712、結(jié)語(yǔ)18參考文獻(xiàn):18附錄:實(shí)物硬件圖18附錄:程序18摘要:本設(shè)計(jì)是基于STC12C5A60S2單片機(jī)技術(shù)與溫度傳感器測(cè)量外界溫度的設(shè)計(jì)原理,進(jìn)行了不同設(shè)計(jì)方案的比較,給出了設(shè)計(jì)的硬件電路,同時(shí)對(duì)各種關(guān)鍵硬件進(jìn)行較詳細(xì)的介紹,并且以流程圖的方式對(duì)系統(tǒng)設(shè)計(jì)作出介紹。系統(tǒng)主要通過(guò)溫度傳感器控制不同的PWM占空比輸出來(lái)控制風(fēng)扇的檔位。而出于方便、可選擇性的考慮,系統(tǒng)也添加了輔助功能,就是直接手動(dòng)控制風(fēng)扇的檔位。 關(guān)鍵詞:STC12C5A60S2單片機(jī),DS18B20溫度傳感器,PWM1、引言溫控

3、風(fēng)扇在節(jié)能環(huán)保方面具有一定的作用,其工作原理除了普通的手動(dòng)檔位調(diào)節(jié),主要是通過(guò)溫度傳感器感應(yīng)外界溫度,并自主地進(jìn)行檔位的調(diào)節(jié),這樣在風(fēng)扇開(kāi)著的情況下,不需進(jìn)行手動(dòng)就可以根據(jù)不同的外界溫度進(jìn)行自主調(diào)節(jié)風(fēng)力大小,達(dá)到節(jié)能目的。2、背景隨著空調(diào)機(jī)在日常生活中的普遍應(yīng)用,很容易想到電風(fēng)扇會(huì)成為空調(diào)的社會(huì)淘汰品,其實(shí)經(jīng)過(guò)市場(chǎng)的考驗(yàn)和證實(shí),真實(shí)的并不是這樣的,在空調(diào)產(chǎn)品的沖擊下,電風(fēng)扇產(chǎn)品仍然具有很強(qiáng)大的生命力,電風(fēng)扇在市場(chǎng)的考驗(yàn)中并沒(méi)有淡出市場(chǎng),反而銷(xiāo)售在不停的復(fù)蘇中,具有強(qiáng)大的發(fā)展空間。據(jù)市場(chǎng)調(diào)查,電風(fēng)扇的不停復(fù)蘇主要在以下原因:一,是電風(fēng)扇雖然沒(méi)有空調(diào)機(jī)的強(qiáng)大的制冷功能,但電風(fēng)扇是直接取風(fēng),風(fēng)力更加

4、溫和,比較適合老年人、兒童以及體質(zhì)虛弱的人使用。二,是電風(fēng)扇經(jīng)過(guò)多年的市場(chǎng)使用,較符合人們的使用習(xí)慣,而且結(jié)構(gòu)簡(jiǎn)單、操作方便、安裝簡(jiǎn)易。三,是電風(fēng)扇比起空調(diào)產(chǎn)品而言,其價(jià)格低廉,相對(duì)省電,更易的進(jìn)入老百姓的家庭。在目前空調(diào)還沒(méi)有普及,并且并不是所有的情況下空調(diào)都適合使用的情況下,智能風(fēng)扇適合人體對(duì)溫度的要求,智能風(fēng)扇還有具有相當(dāng)作用的。3、意義與應(yīng)用1、普通電風(fēng)扇的現(xiàn)狀及存在的隱患:大部分只有手動(dòng)調(diào)速,功能單一。長(zhǎng)時(shí)間在高負(fù)荷工作容易損壞電器,并且造成電量的損失。2、作品可運(yùn)用在家庭中,風(fēng)扇的風(fēng)力隨溫度而調(diào)節(jié),即可以避免人因溫度低吹到冷風(fēng)而著涼,也可達(dá)到節(jié)能目的,可見(jiàn)溫控風(fēng)扇更具有優(yōu)越性。3、

5、其次將此系統(tǒng)裝在產(chǎn)熱多,急需排熱的設(shè)備上,可以幫助它及時(shí)散掉大量的熱。比如電腦散熱器等。4、原理簡(jiǎn)介1、電源開(kāi)關(guān),控制系統(tǒng)處于工作還是停止?fàn)顟B(tài)。2、當(dāng)系統(tǒng)上電之后,通過(guò)單片機(jī)讀取外界溫度,然后在液晶顯示屏上顯示出來(lái)。通過(guò)判斷溫度的范圍,控制風(fēng)扇的停止與轉(zhuǎn)不同的速度。同時(shí)LED給出檔位指示。溫度控制的范圍可以通過(guò)按鍵進(jìn)行設(shè)置。3、另外,當(dāng)不需要溫度控制時(shí),可以通過(guò)模式切換開(kāi)關(guān),讓系統(tǒng)工作于手動(dòng)控制模式。通過(guò)按鍵進(jìn)行調(diào)節(jié)風(fēng)扇的停止,與不同轉(zhuǎn)速。5、方案設(shè)計(jì)方案一:采用兩片STC89C516RD單片機(jī)、液晶1602和ds18b20,進(jìn)行設(shè)計(jì),讓單片機(jī)1進(jìn)行溫度讀取操作,另外的單片機(jī)2通過(guò)定時(shí)器,產(chǎn)生

6、占空比不同的PWM。兩單片機(jī)通過(guò)串口進(jìn)行通信,這樣單片機(jī)1可以通過(guò)讀取外界的溫度,然后對(duì)單片機(jī)2進(jìn)行控制。這樣就能在不同的溫度區(qū)間內(nèi),單片機(jī)2控制直流5v小風(fēng)扇不同的轉(zhuǎn)速,從而實(shí)現(xiàn)溫度自動(dòng)控制風(fēng)扇。方案二:采用STC12C5A60S2單片機(jī)、液晶1602和ds18b20。這也是一款51單片機(jī),但是它的性能比STC89C516RD單片機(jī)更強(qiáng)大,而且有獨(dú)立的雙路PWM輸出。這樣,采用一片STC12C5A60S2單片機(jī)就能實(shí)現(xiàn)溫度讀取和直流5v小風(fēng)扇的轉(zhuǎn)速控制。方案三:采用stm8s105系列單片機(jī)、液晶1602和ds18b20,同樣可以實(shí)現(xiàn)溫度讀取和直流5v小風(fēng)扇的轉(zhuǎn)速控制方案比較:方案一需要耗費(fèi)

7、更多的硬件資源。因此我們直接排除方案一。方案三,如果采用44腳貼片封裝的stm8s105單片,可以在很小的覆銅板上把硬件做出來(lái),這樣可以節(jié)省一些硬件資源。但是,因?yàn)闇囟葌鞲衅鱠s18b20的讀取是通過(guò)單一I/O口讀取的,stm8s105的I/O操作需要設(shè)置,讓其是處于輸入或者輸出方式。操作非常麻煩。方案二需要的硬件資源相對(duì)較少,而且其I/O口兼容8051單片機(jī),可以實(shí)現(xiàn)I/O口準(zhǔn)雙向操作,這樣編程相對(duì)簡(jiǎn)單。綜上所述,我們選擇方案二。6、STC12C5A60S2單片機(jī)6.1簡(jiǎn)介我們采用的單片機(jī)為STC12C5A60S2,STC12C5A60S2/AD/PWM 系列單片機(jī)是宏晶科技生產(chǎn)的

8、單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專(zhuān)用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S)針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)合。其引腳與普通8051單片機(jī)基本相同。6.2 PWM寄存器設(shè)置STC12C5A60S2單片機(jī)內(nèi)置兩路獨(dú)立PWM輸出,通過(guò)設(shè)置相應(yīng)寄存器,可以讓占空比改變。PWM0的輸出口在P1.3,而PWM1的輸出口在P1.4相關(guān)的設(shè)置例子如下面的程序所示:CCON = 0; /初始化 PCA控制寄存器 /PCA計(jì)數(shù)器停止運(yùn)行 /清除CF標(biāo)志位 /清除所有中斷標(biāo)志位CL

9、 = 0; /重置PCA的16位計(jì)數(shù)器CH = 0;CMOD = 0x02; /設(shè)置 PCA 計(jì)數(shù)器時(shí)鐘源為 Fosc/2 /禁止PCA 計(jì)數(shù)器溢出中斷 CCAP0H = CCAP0L = 0xff; /PWM0 口輸出 0%占空比CCAP1H = CCAP1L = 1x00; /PWM1 口輸出 100%占空比CCAPM0 = 0x42; /PCA模塊0工作在8位PWM模式并且沒(méi)有PCA中斷CR = 1; /開(kāi)始計(jì)數(shù)當(dāng)寄存器CL值小于 EPCnL, CAPPnL 時(shí),輸出為低電平;當(dāng)寄存器CL值等于或大于 EPCnL, CAPPnL 時(shí),輸出為高電平;當(dāng)寄存器CL的值由FF變?yōu)?0溢出時(shí),

10、EPCnH CAPPnH的內(nèi)容被裝載到 EPCnL, CAPPnL 中。這樣,就可以實(shí)現(xiàn)無(wú)干擾地實(shí)現(xiàn)PWM更新。6.3 PWM占空比計(jì)算方法輸出的占空比乘以256后,轉(zhuǎn)換為十六進(jìn)制,然后進(jìn)行取反,再同時(shí)賦值給寄存器CCAPxH 和CCAPxL。6.4 I/O工作方式設(shè)置其I/O口的工作方式有準(zhǔn)雙向/弱上拉輸出,強(qiáng)推挽輸出,高阻輸入(電流不能流入也不能流出),開(kāi)漏輸出(若外加上拉也可以讀?。┑?。缺省狀態(tài)下,I/O的工作方式為準(zhǔn)雙向/弱上拉。本設(shè)計(jì)中,對(duì)于溫度傳感器的讀寫(xiě)操作,需要I/O工作在準(zhǔn)雙向的工作狀態(tài)。而PWM輸出端口,LED驅(qū)動(dòng)輸出,端口我們將I/O口的工作方式設(shè)置分強(qiáng)推挽輸出,輸出的拉

11、電流達(dá)到20mA,能更好的驅(qū)動(dòng)負(fù)載。設(shè)置方式,通過(guò)配置相應(yīng)的寄存器PxM1和PxM0,如下表1所示:PxM1 7:0PxM0 7:0I/O口模式00準(zhǔn)雙向口01強(qiáng)推挽輸出10高阻輸入11開(kāi)漏表17、LCD液晶顯示屏 時(shí)鐘的顯示屏選用1602字符液晶。1602是指顯示的內(nèi)容為16*2,即能夠同時(shí)顯示兩行,每行16個(gè)字符。常見(jiàn)的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的。本設(shè)計(jì)所用1602液晶模塊,顯示屏是藍(lán)色背光白色字體。圖1為1602字符液晶引腳圖圖1 1602字符液晶引腳圖

12、各引腳功能為: 第1腳:GND為地電源。 第2腳:VCC接5V正電源。 第3腳:VO為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高,對(duì)比度過(guò)高時(shí)會(huì)產(chǎn)生重影,使用一個(gè)1K的電位器調(diào)整對(duì)比度。 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。 第5腳:R/W為讀寫(xiě)信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第714腳:DB0DB7為8位雙向數(shù)據(jù)線。第1516腳:背光燈電源。基本操作時(shí)序:讀狀態(tài)  輸入 RS=L,R/W=H,E=H  輸出

13、60;D0D7=狀態(tài)字寫(xiě)指令  輸入 RS=L,R/W=L,D0D7=指令碼,E=高脈沖  輸出 無(wú) 讀數(shù)據(jù)  輸入 RS=H,R/W=H,E=H  輸出 D0D7=數(shù)據(jù) 寫(xiě)數(shù)據(jù)  輸入 RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖  輸出 無(wú)RAM地址映射圖:如圖2所示:圖2 RAM地址映射圖當(dāng)我們?cè)?0-0F、40-4F,的地址中任意地寫(xiě)入顯示數(shù)據(jù)時(shí),液晶都可以顯示,當(dāng)寫(xiě)入10-27或50-67地址處時(shí),必須通過(guò)移屏指令將它們移入可顯示的區(qū)域。讀、

14、寫(xiě)操作時(shí)序:如圖3所示:因?yàn)楸驹O(shè)計(jì)的程序中只涉及到液晶的寫(xiě)操作,因此下面簡(jiǎn)單介紹寫(xiě)操作過(guò)程,如下:(1)通過(guò)RS確定是寫(xiě)數(shù)據(jù)還是寫(xiě)命令。(2)讀寫(xiě)控制端設(shè)置為寫(xiě)模式。(3)將數(shù)據(jù)或命令送達(dá)數(shù)據(jù)線上。(4)給E一個(gè)高脈沖將數(shù)據(jù)送到液晶控制器,完成寫(xiě)操作。 圖3 讀寫(xiě)操作時(shí)序圖初始化設(shè)置:(1)顯示模式設(shè)置,如圖4:圖4 顯示模式設(shè)置圖(2)顯示開(kāi)/關(guān)及光標(biāo)設(shè)置,如圖5:圖5顯示開(kāi)/關(guān)及光標(biāo)設(shè)置圖8、溫度傳感器DS18B20 用于檢測(cè)當(dāng)前的溫度,DS18B20測(cè)量溫度范圍為 -55°C+125°C,在-10+85°C范圍內(nèi),精度為±0.5°

15、;C?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類(lèi)消費(fèi)電子產(chǎn)品等。產(chǎn)品支持3V5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。 DS18B20的引腳圖如 圖6所示。引腳1:地;引腳2:數(shù)字輸入輸出;引腳3:可選的5V電源;圖 6 DS18B20的引腳圖DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20控制方法(DS18B20有六條控制命令): 溫度轉(zhuǎn)換 44H 啟動(dòng)DS18B20進(jìn)

16、行溫度轉(zhuǎn)換 讀暫存器 BEH 讀暫存器9位二進(jìn)制數(shù)字 寫(xiě)暫存器 4EH 將數(shù)據(jù)寫(xiě)入暫存器的TH、TL字節(jié)復(fù)制暫存器 48H 把暫存器的TH、TL字節(jié)寫(xiě)到E2RAM中 重新調(diào)E2RAM B8H 把E2RAM中的TH、TL字節(jié)寫(xiě)到暫存器TH、TL字節(jié) 讀電源供電方式 B4H 啟動(dòng)DS18B20發(fā)送電源供電方式的信號(hào)給主CPU 8.1 初始化 (1) 先將數(shù)據(jù)線置高電平“1”。 (2) 延時(shí)(該時(shí)間要求

17、的不是很?chē)?yán)格,但是盡可能的短一點(diǎn)) (3) 數(shù)據(jù)線拉到低電平“0”。 (4) 延時(shí)750微秒(該時(shí)間的時(shí)間范圍可以從480到960微秒)。 (5) 數(shù)據(jù)線拉到高電平“1”。 (6) 延時(shí)等待(如果初始化成功則在15到60微妙時(shí)間之內(nèi)產(chǎn)生一個(gè)由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來(lái)確定它的存在,但是應(yīng)注意不能無(wú)限的進(jìn)行等待,不然會(huì)使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制)。 (7) 若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最

18、少要480微秒。 (8) 將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。8.2 寫(xiě)操作 (1) 數(shù)據(jù)線先置低電平“0”。 (2) 延時(shí)確定的時(shí)間為15微秒。 (3) 按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。 (4) 延時(shí)時(shí)間為45微秒。 (5) 將數(shù)據(jù)線拉到高電平。 (6) 重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。 (7) 最后將數(shù)據(jù)線拉高。 8.3 讀操作 (1)將數(shù)據(jù)線拉高“1

19、”。(2)延時(shí)2微秒。 (3)將數(shù)據(jù)線拉低“0”。 (4)延時(shí)3微秒。 (5)將數(shù)據(jù)線拉高“1”。 (6)延時(shí)5微秒。 (7)讀數(shù)據(jù)線的狀態(tài)得到1個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。 (8)延時(shí)60微秒。9、風(fēng)扇本設(shè)計(jì)采用的是由5V直流供電的小型風(fēng)扇。在設(shè)計(jì)當(dāng)中,我們只預(yù)置了兩檔速度相差明顯的檔位,一檔的PWM占空比為30%,二檔的占空比為90%。這樣設(shè)計(jì)的目的主要是考慮到在檔位切換時(shí),可以看到速度有非常明顯的變化,讓實(shí)驗(yàn)現(xiàn)象更加直觀。拓展1:在主要考慮實(shí)用性方面的因素,我們還可以將控制檔位細(xì)化,做成5個(gè)檔位,甚至10個(gè)檔位,等等。不同的速度是

20、通過(guò)調(diào)節(jié)不同的占空比來(lái)實(shí)現(xiàn)的。下面我們給出溫度控制風(fēng)扇轉(zhuǎn)5個(gè)速度不同檔位的部分關(guān)鍵程序示例:void control (void) if(a*100+b*10+c)< tem_1) CCAP0H = CCAP0L = 0xFF; /PWM0 口輸出 0%占空比 else if (tem_1 <= (a*100+b*10+c)&&(a*100+b*10+c)<tem_2 ) CCAP0H = CCAP0L = 0xB3; /PWM0 口輸出30%占空比 else if (tem_1 <= (a*100+b*10+c)&&(a*100+b*1

21、0+c)<tem_2 ) CCAP0H = CCAP0L = 0x08; /PWM0 口輸出50%占空比 else if (tem_1 <= (a*100+b*10+c)&&(a*100+b*10+c)<tem_2 ) CCAP0H = CCAP0L = 0x4D; /PWM0 口輸出70%占空比 else if (tem_2 <= (a*100+b*10+c) CCAP0H = CCAP0L = 0x1A; /PWM0 口輸出90%占空比 拓展2:在本設(shè)計(jì)驗(yàn)證成功并且可靠的基礎(chǔ)上,我們可以繼續(xù)延伸,給出溫度控制交流220V供電的風(fēng)扇的設(shè)計(jì)方案,比如宿舍

22、的風(fēng)扇: 用普通的單片機(jī),通過(guò)溫度傳感器,讀取外界的溫度,進(jìn)而控制繼電器的吸合與斷開(kāi)。假設(shè)設(shè)置4個(gè)檔位,可以用單片機(jī)接三個(gè)繼電器來(lái)實(shí)現(xiàn):當(dāng)外界溫度較低時(shí),此時(shí)所有繼電器處于斷開(kāi)狀態(tài),風(fēng)扇不轉(zhuǎn);當(dāng)溫度升高到一定程度時(shí),單片機(jī)使繼電器1吸合,繼電器2、3斷開(kāi),讓風(fēng)扇轉(zhuǎn)一檔,即較慢速度;當(dāng)溫度繼續(xù)升高,單片機(jī)使繼電器2吸合,繼電器1、3斷開(kāi),風(fēng)扇轉(zhuǎn)二檔,即較快的速度。當(dāng)溫度再升高時(shí),單片機(jī)使繼電器3吸合,繼電器1、2斷開(kāi),風(fēng)扇轉(zhuǎn)三檔,即最快的速度。10、硬件電路設(shè)計(jì)10.1原理圖和部分電路PCB圖圖7 原理圖工作原理:通過(guò)P3.7端口處所接的電路的SW2的閉合或斷開(kāi)選擇溫控或鍵控。當(dāng)SW2=1時(shí),選

23、擇溫控,通過(guò)DS18B20溫度傳感器獲取外界溫度,通過(guò)LCD顯示當(dāng)前溫度,并且顯示設(shè)定的溫度控制一檔和二檔的值,比如設(shè)定25和30攝氏度作為控制值。外界溫度較低時(shí),比如小于25攝氏度,處于0檔時(shí),風(fēng)扇不轉(zhuǎn),LED1、2不亮。當(dāng)溫度較高,等于或大于25且小于30攝氏度時(shí),處于一檔,風(fēng)扇轉(zhuǎn)動(dòng),LED1亮、LED2滅。當(dāng)溫度高于30攝氏度時(shí),處于二檔,風(fēng)扇高速轉(zhuǎn)動(dòng),LED1、2都亮。當(dāng)SW2=0;選擇鍵控,通過(guò)P2.0處所接的獨(dú)立鍵盤(pán)進(jìn)行檔位的選擇。缺省狀態(tài)下為空擋,液晶屏顯示DW=0,LED1、2不亮,風(fēng)扇不轉(zhuǎn)。按一次key1,檔位加一,此時(shí)為一檔,液晶屏上顯示DW=1,LED1亮、LED2滅,風(fēng)

24、扇轉(zhuǎn)動(dòng)較慢。再按一次key1鍵,檔位加1,此時(shí)液晶屏上顯示DW=2,LED1、2 亮,風(fēng)扇高速轉(zhuǎn)動(dòng)。再按一次key1,檔位歸零。圖8 PCB圖10.2 電機(jī)驅(qū)動(dòng)電路L298N 的主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。采用標(biāo)準(zhǔn)邏輯電平信號(hào)控制;具有兩個(gè)使能控制端,在不受輸入信號(hào)影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測(cè)電阻,將變化量反饋給控制電路。使用L298N 芯片驅(qū)動(dòng)電機(jī),該芯片可以驅(qū)動(dòng)一臺(tái)兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī),也可以驅(qū)動(dòng)兩臺(tái)直流電機(jī)。用L298 控制

25、直流電機(jī)很容易。用單片機(jī)端口高低就可以控制開(kāi)始、停止、正反轉(zhuǎn),利用EN1,EN2 控制使能就能控制轉(zhuǎn)速。其原理圖,如圖9:圖9 L298N原理圖11、軟件設(shè)計(jì)11.1主函數(shù)流程圖開(kāi)始初始化溫度控制風(fēng)扇模式按鍵控制風(fēng)扇模式Key_sw=1?是否圖10 主函數(shù)流程圖11.2 溫度控制風(fēng)扇程序流程圖開(kāi)始讀取環(huán)境溫度達(dá)到設(shè)定溫度 ?風(fēng)扇不轉(zhuǎn)LED1、2不亮達(dá)到設(shè)定溫度風(fēng)扇轉(zhuǎn)一檔LED1亮LED2不亮風(fēng)扇轉(zhuǎn)二檔LED1、LED2亮液晶顯示當(dāng)前溫度顯示設(shè)定溫度、值是否是否圖11 溫度控制風(fēng)扇程序流程圖11.3 按鍵控制風(fēng)扇程序流程圖開(kāi)始液晶顯示檔位0LED1、2不亮num=0num=1?num=2?液晶顯

26、示檔位1LED1亮LED2滅液晶顯示檔位2LED1 、LED2亮是否是否圖12按鍵控制風(fēng)扇程序流程圖11.4 按鍵設(shè)定溫度程序流程圖開(kāi)始讀取I/O電平變化是否有按鍵被按下延時(shí)10ms否是檔位加1Key1=0?Key2=0?Key3=0?檔位=2?檔位歸0Tem1=31?Tem2=44?Tem1=17Tem1+Tem2=23Tem2+是是是是是是否否否備注:本設(shè)計(jì)只設(shè)置兩檔風(fēng)扇的不同轉(zhuǎn)速Tem1為溫控檔位的溫度下限Ten2 為溫控檔位的溫度上限結(jié)束圖13按鍵設(shè)定溫度程序流程圖12、結(jié)語(yǔ)本設(shè)計(jì)結(jié)合生活中的實(shí)際情況,利用單片機(jī)技術(shù)設(shè)計(jì)并制作了溫控風(fēng)扇系統(tǒng),完全達(dá)到了設(shè)計(jì)要求,其次通過(guò)獨(dú)立鍵盤(pán)和溫度傳

27、感器可以實(shí)現(xiàn)對(duì)應(yīng)的操作,使操作更加方便靈活,所選取的單片機(jī)具有較高的抗干擾能力,也符合這個(gè)設(shè)計(jì)的穩(wěn)定性要求。我們隊(duì)伍的各成員在整個(gè)設(shè)計(jì)制作過(guò)程中,相互配合,相互檢查,但又進(jìn)行了分工,大大提高了工作效率。參考文獻(xiàn):1郭天祥 新概念51單片機(jī)C語(yǔ)言教程入門(mén)、提高、開(kāi)發(fā)、拓展全攻略 電子工業(yè)大學(xué)出版社 20102李廣弟, 朱月秀, 等. 單片機(jī)基礎(chǔ)M. 北京航空航天大學(xué)出版社, 2001.3模擬電子技術(shù)基礎(chǔ)M. 高等教育出版社, 2001.4數(shù)字電子技術(shù)基礎(chǔ)M. 高等教育出版社, 2006.附錄:實(shí)物硬件圖圖14實(shí)物硬件圖附錄:程序#include<stc12c5a60s2.h>#inc

28、lude <intrins.h>#define uchar unsigned char#define uint unsigned int#define LCD1602_DATAPINS P0sfr PCAPWM0 = 0xf2; /定義寄存器PCAPWM0sfr PCAPWM1 = 0xf3; /定義寄存器PCAPWM1sbit LCD1602_E=P12; /定義lcd1602的使能端sbit LCD1602_RW=P11;/定義lcd1602的寫(xiě)操作端sbit LCD1602_RS=P10;/定義lcd1602的發(fā)送命令端sbit DSPORT=P27; /溫度傳感器讀寫(xiě)端sb

29、it LED0 = P23;sbit LED1 = P24;sbit jia_key=P20;/加速按鈕sbit key1 = P21; /控制溫度調(diào)節(jié)按鍵1、2sbit key2 = P22;sbit key_sw = P37;/溫控與鍵控切換開(kāi)關(guān) uint a=0; uint b=0; uint c=0; uint tem_1=27; uint tem_2=30; uchar num=0; /* 函 數(shù) 名 : Delay1ms* 函數(shù)功能 : 延時(shí)函數(shù)*/void Delay1ms(uint y) /粗略延時(shí)1msuint x;for( ; y>0; y-)for(x=440; x

30、>0; x-);void delay1ms(void) /誤差 0us unsigned char a,b; for(b=129;b>0;b-) for(a=45;a>0;a-);void delay1us(uint x) /誤差 0us unsigned char a,b; for(b=x;b>0;b-) for(a=3;a>0;a-);/* 函 數(shù) 名 : Ds18b20Init* 函數(shù)功能 : 初始化* 輸 入 : 無(wú)* 輸 出 : 初始化成功返回1,失敗返回0*/ void LcdWriteCom(uchar com) /寫(xiě)入命令LCD1602_E = 0

31、; /使能LCD1602_RS = 0; /選擇發(fā)送命令LCD1602_RW = 0; /選擇寫(xiě)入LCD1602_DATAPINS = com; /放入命令Delay1ms(1);/等待數(shù)據(jù)穩(wěn)定LCD1602_E = 1; /寫(xiě)入時(shí)序Delay1ms(5); /保持時(shí)間LCD1602_E = 0;void LcdWriteData(uchar dat)/寫(xiě)入數(shù)據(jù)LCD1602_E = 0;/使能清零LCD1602_RS = 1;/選擇輸入數(shù)據(jù)LCD1602_RW = 0;/選擇寫(xiě)入LCD1602_DATAPINS = dat; /寫(xiě)入數(shù)據(jù)Delay1ms(1);LCD1602_E = 1; /

32、寫(xiě)入時(shí)序Delay1ms(5); /保持時(shí)間LCD1602_E = 0;void LcdInit() /LCD初始化子程序 LcdWriteCom(0x38); /開(kāi)顯示LcdWriteCom(0x0c); /開(kāi)顯示不顯示光標(biāo)LcdWriteCom(0x06); /寫(xiě)一個(gè)指針加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設(shè)置數(shù)據(jù)指針起點(diǎn)uchar Ds18b20Init()uchar i;DSPORT = 0; /將總線拉低480us960usdelay1us(642);/延時(shí)642usDSPORT = 1;/然后拉高總線,如果DS18B20做出反應(yīng)會(huì)

33、將在15us60us后總線拉低i = 0;while(DSPORT)/等待DS18B20拉低總線i+;if(i>5)/等待>5MSreturn 0;/初始化失敗delay1ms( );return 1;/初始化成功/* 函 數(shù) 名 : Ds18b20WriteByte* 函數(shù)功能 : 向18B20寫(xiě)入一個(gè)字節(jié)*/void Ds18b20WriteByte(uchar dat)uint j;for(j=0; j<8; j+)DSPORT = 0; /每寫(xiě)入一位數(shù)據(jù)之前先把總線拉低1usdelay1us(1); DSPORT = dat & 0x01; /然后寫(xiě)入一個(gè)數(shù)據(jù)

34、,從最低位開(kāi)始delay1us(68); /延時(shí)68us,持續(xù)時(shí)間最少60usDSPORT = 1;/然后釋放總線,至少1us給總線恢復(fù)時(shí)間才能接著寫(xiě)入第二個(gè)數(shù)值dat >>= 1;/* 函 數(shù) 名 : Ds18b20ReadByte* 函數(shù)功能 : 讀取一個(gè)字節(jié)*/uchar Ds18b20ReadByte()uchar byte, bi;uint j;for(j=8; j>0; j-)DSPORT = 0;/先將總線拉低1us delay1us(1); DSPORT = 1;/然后釋放總線delay1us(6); /延時(shí)6us等待數(shù)據(jù)穩(wěn)定bi = DSPORT; /讀取數(shù)

35、據(jù),從最低位開(kāi)始讀取/*將byte左移一位,然后與上右移7位后的bi,注意移動(dòng)之后移掉那位補(bǔ)0。*/byte = (byte >> 1) | (bi << 7); delay1us(45);return byte;/* 函 數(shù) 名 : Ds18b20ChangTemp* 函數(shù)功能 : 讓18b20開(kāi)始轉(zhuǎn)換溫度*/void Ds18b20ChangTemp()Ds18b20Init();delay1ms( );Ds18b20WriteByte(0xcc);/跳過(guò)ROM操作命令 Ds18b20WriteByte(0x44); /溫度轉(zhuǎn)換命令 /* 函 數(shù) 名 : Ds18b

36、20ReadTempCom* 函數(shù)功能 : 發(fā)送讀取溫度命令*/void Ds18b20ReadTempCom()Ds18b20Init();delay1ms( );Ds18b20WriteByte(0xcc); /跳過(guò)ROM操作命令Ds18b20WriteByte(0xbe); /發(fā)送讀取溫度命令/* 函 數(shù) 名 : Ds18b20ReadTemp* 函數(shù)功能 : 讀取溫度*/int Ds18b20ReadTemp()int temp = 0;uchar tmh, tml;Ds18b20ChangTemp(); /先寫(xiě)入轉(zhuǎn)換命令Ds18b20ReadTempCom();/然后等待轉(zhuǎn)換完后發(fā)送

37、讀取溫度命令tml = Ds18b20ReadByte();/讀取溫度值共16位,先讀低字節(jié)tmh = Ds18b20ReadByte();/再讀高字節(jié)temp = tmh;temp <<= 8;temp |= tml;return temp;/* 函數(shù)名 : LcdDisplay()* 函數(shù)功能 : LCD顯示讀取到的溫度*/void LcdDisplay(int temp) /lcd顯示 unsigned char datas = 0, 0, 0, 0, 0; /定義數(shù)組 float tp; if(temp< 0)/當(dāng)溫度值為負(fù)數(shù) LcdWriteCom(0x80);/寫(xiě)

38、地址 80表示初始地址 LcdWriteData('-'); /顯示負(fù)/因?yàn)樽x取的溫度是實(shí)際溫度的補(bǔ)碼,所以減1,再取反求出原碼temp=temp-1; temp=temp;tp=temp;temp=tp*0.0625*100+0.5;/留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)/后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就/算加上0.5,還是在小數(shù)點(diǎn)后面。 else LcdWriteCom(0x80);/寫(xiě)地址 80表示初始地址 LcdWriteData('+'); /顯示

39、正tp=temp;/因?yàn)閿?shù)據(jù)處理有小數(shù)點(diǎn)所以將溫度賦給一個(gè)浮點(diǎn)型變量/如果溫度是正的那么,那么正數(shù)的原碼就是補(bǔ)碼它本身temp=tp*0.0625*100+0.5;/留兩個(gè)小數(shù)點(diǎn)就*100,+0.5是四舍五入,因?yàn)镃語(yǔ)言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)/后面的數(shù)自動(dòng)去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就/算加上0.5,還是在小數(shù)點(diǎn)后面。datas0 = temp / 10000;datas1 = temp % 10000 / 1000;datas2 = temp % 1000 / 100;datas3 = temp % 100 / 10;datas4 =

40、temp % 10; a = datas0;/a,b,c的作用是取溫度的整數(shù),進(jìn)行溫控b = datas1;c = datas2;LcdWriteCom(0x82); /寫(xiě)地址 LcdWriteData('0'+datas0); /百位 LcdWriteCom(0x83); /寫(xiě)地址 LcdWriteData('0'+datas1); /十位LcdWriteCom(0x84);/寫(xiě)地址 LcdWriteData('0'+datas2); /個(gè)位 LcdWriteCom(0x85);/寫(xiě)地址 LcdWriteData('.'); /

41、顯示 '.'LcdWriteCom(0x86); /寫(xiě)地址 LcdWriteData('0'+datas3); /顯示小數(shù)點(diǎn) LcdWriteCom(0x87); /寫(xiě)地址 LcdWriteData('0'+datas4); /顯示小數(shù) /* 溫度控制電機(jī)輸出占空比函數(shù)*/void control (void) if(a*100+b*10+c)< tem_1) CCAP0H = CCAP0L = 0xff; /PWM0 口輸出 0%占空比 LED0 = 0; LED1 = 0; else if (tem_1 <= (a*100+b*1

42、0+c)&&(a*100+b*10+c)<tem_2 ) CCAP0H = CCAP0L = 0xB3; /PWM0 口輸出30%占空比 LED0 = 1; LED1 = 0; else if (tem_2 <= (a*100+b*10+c) CCAP0H = CCAP0L = 0x1a; /PWM0 口輸出90%占空比 LED0 = 1; LED1 = 1; /* 函數(shù)名 : keyscan* 函數(shù)功能 : 鍵盤(pán)掃描*/void keyscan1 () if (0 = key1) /溫度下限調(diào)整按鍵 Delay1ms(20);if (0 = key1) tem_1

43、+;if(31 = tem_1) tem_1 = 17;while(!key1); if (0 = key2) /溫度上限調(diào)整按鍵 Delay1ms(20);if (0 = key2) tem_2+;if(44 = tem_2) tem_2 = 23;while(!key2 ); if(tem_1 = tem_2) tem_2+; /防止兩個(gè)溫度范圍一樣 if(tem_2 < tem_1) /防止溫度上限比溫度下限低 tem_2=tem_1+1; void keyscan2 () if(jia_key=0) /加速按鍵Delay1ms(20);if(jia_key=0)num+;if(num=3)num=0;while(jia_key=0); /* 電機(jī)輸出檔位選擇函數(shù)*/void dangwei()switch(num) case 0: CCAP0H = CCAP0L = 0xff; /PWM0 口輸出 0%占空比 LED0 = 0; LED1 = 0; break; case 1: CCAP0H = CCAP0L = 0x67;

溫馨提示

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