版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 自動化系統(tǒng)創(chuàng)意設(shè)計(jì)大賽作品說明書作品名稱:溫控風(fēng)扇系統(tǒng)設(shè)計(jì) 隊(duì) 員 : 2015年 4月29目錄1、引言32、背景33、意義與應(yīng)用34、原理簡介45、方案設(shè)計(jì)46、STC12C5A60S2單片機(jī)56.1簡介56.2 PWM寄存器設(shè)置56.3 PWM占空比計(jì)算方法56.4 I/O工作方式設(shè)置67、LCD液晶顯示屏68、溫度傳感器DS18B2088.1初始化98.2寫操作108.3讀操作109、風(fēng)扇10拓展1:10拓展2:1110、硬件電路設(shè)計(jì)1210.1原理圖和部分電路PCB圖1210.2 電機(jī)驅(qū)動電路1311、軟件設(shè)計(jì)1411.1主函數(shù)流程圖1411.2 溫度控制風(fēng)扇程序流程圖1511.3
2、按鍵控制風(fēng)扇程序流程圖1611.4 按鍵設(shè)定溫度程序流程圖1712、結(jié)語18參考文獻(xiàn):18附錄:實(shí)物硬件圖18附錄:程序18摘要:本設(shè)計(jì)是基于STC12C5A60S2單片機(jī)技術(shù)與溫度傳感器測量外界溫度的設(shè)計(jì)原理,進(jìn)行了不同設(shè)計(jì)方案的比較,給出了設(shè)計(jì)的硬件電路,同時(shí)對各種關(guān)鍵硬件進(jìn)行較詳細(xì)的介紹,并且以流程圖的方式對系統(tǒng)設(shè)計(jì)作出介紹。系統(tǒng)主要通過溫度傳感器控制不同的PWM占空比輸出來控制風(fēng)扇的檔位。而出于方便、可選擇性的考慮,系統(tǒng)也添加了輔助功能,就是直接手動控制風(fēng)扇的檔位。 關(guān)鍵詞:STC12C5A60S2單片機(jī),DS18B20溫度傳感器,PWM1、引言溫控風(fēng)扇在節(jié)能環(huán)保方面具有一定的作用,其
3、工作原理除了普通的手動檔位調(diào)節(jié),主要是通過溫度傳感器感應(yīng)外界溫度,并自主地進(jìn)行檔位的調(diào)節(jié),這樣在風(fēng)扇開著的情況下,不需進(jìn)行手動就可以根據(jù)不同的外界溫度進(jìn)行自主調(diào)節(jié)風(fēng)力大小,達(dá)到節(jié)能目的。2、背景隨著空調(diào)機(jī)在日常生活中的普遍應(yīng)用,很容易想到電風(fēng)扇會成為空調(diào)的社會淘汰品,其實(shí)經(jīng)過市場的考驗(yàn)和證實(shí),真實(shí)的并不是這樣的,在空調(diào)產(chǎn)品的沖擊下,電風(fēng)扇產(chǎn)品仍然具有很強(qiáng)大的生命力,電風(fēng)扇在市場的考驗(yàn)中并沒有淡出市場,反而銷售在不停的復(fù)蘇中,具有強(qiáng)大的發(fā)展空間。據(jù)市場調(diào)查,電風(fēng)扇的不停復(fù)蘇主要在以下原因:一,是電風(fēng)扇雖然沒有空調(diào)機(jī)的強(qiáng)大的制冷功能,但電風(fēng)扇是直接取風(fēng),風(fēng)力更加溫和,比較適合老年人、兒童以及體質(zhì)虛
4、弱的人使用。二,是電風(fēng)扇經(jīng)過多年的市場使用,較符合人們的使用習(xí)慣,而且結(jié)構(gòu)簡單、操作方便、安裝簡易。三,是電風(fēng)扇比起空調(diào)產(chǎn)品而言,其價(jià)格低廉,相對省電,更易的進(jìn)入老百姓的家庭。在目前空調(diào)還沒有普及,并且并不是所有的情況下空調(diào)都適合使用的情況下,智能風(fēng)扇適合人體對溫度的要求,智能風(fēng)扇還有具有相當(dāng)作用的。3、意義與應(yīng)用1、普通電風(fēng)扇的現(xiàn)狀及存在的隱患:大部分只有手動調(diào)速,功能單一。長時(shí)間在高負(fù)荷工作容易損壞電器,并且造成電量的損失。2、作品可運(yùn)用在家庭中,風(fēng)扇的風(fēng)力隨溫度而調(diào)節(jié),即可以避免人因溫度低吹到冷風(fēng)而著涼,也可達(dá)到節(jié)能目的,可見溫控風(fēng)扇更具有優(yōu)越性。3、其次將此系統(tǒng)裝在產(chǎn)熱多,急需排熱的設(shè)
5、備上,可以幫助它及時(shí)散掉大量的熱。比如電腦散熱器等。4、原理簡介1、電源開關(guān),控制系統(tǒng)處于工作還是停止?fàn)顟B(tài)。2、當(dāng)系統(tǒng)上電之后,通過單片機(jī)讀取外界溫度,然后在液晶顯示屏上顯示出來。通過判斷溫度的范圍,控制風(fēng)扇的停止與轉(zhuǎn)不同的速度。同時(shí)LED給出檔位指示。溫度控制的范圍可以通過按鍵進(jìn)行設(shè)置。3、另外,當(dāng)不需要溫度控制時(shí),可以通過模式切換開關(guān),讓系統(tǒng)工作于手動控制模式。通過按鍵進(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通過定時(shí)器,產(chǎn)生占空比不同的PWM。兩單片機(jī)通過串口
6、進(jìn)行通信,這樣單片機(jī)1可以通過讀取外界的溫度,然后對單片機(jī)2進(jìn)行控制。這樣就能在不同的溫度區(qū)間內(nèi),單片機(jī)2控制直流5v小風(fēng)扇不同的轉(zhuǎn)速,從而實(shí)現(xiàn)溫度自動控制風(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單片,可以在很小的覆銅板上把硬件做出來,這樣可以節(jié)省一些硬件資源。但是,因?yàn)闇囟葌鞲衅鱠s18b20的讀取是通過單一I/O口讀取的,stm8s105的I/O操作需要設(shè)置,讓其是處于輸入或者輸出方式。操作非常麻煩。方案二需要的硬件資源相對較少,而且其I/O口兼容8051單片機(jī),可以實(shí)現(xiàn)I/O口準(zhǔn)雙向操作,這樣編程相對簡單。綜上所述,我們選擇方案二。6、STC12C5A60S2單片機(jī)6.1簡介我們采用的單片機(jī)為STC12C5A60S2,STC12C5A60S2/AD/PWM系列單片機(jī)是宏晶科技生產(chǎn)的單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),是高速/低功耗
8、/超強(qiáng)抗干擾的新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S)針對電機(jī)控制,強(qiáng)干擾場合。其引腳與普通8051單片機(jī)基本相同。6.2 PWM寄存器設(shè)置STC12C5A60S2單片機(jī)內(nèi)置兩路獨(dú)立PWM輸出,通過設(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 = 0; /重置PCA的16位計(jì)數(shù)器CH =
9、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模式并且沒有PCA中斷CR = 1; /開始計(jì)數(shù)當(dāng)寄存器CL值小于 EPCnL, CAPPnL 時(shí),輸出為低電平;當(dāng)寄存器CL值等于或大于 EPCnL, CAPPnL 時(shí),輸出為高電平;當(dāng)寄存器CL的值由FF變?yōu)?0溢出時(shí), EPCnH CAPPnH的內(nèi)容被裝載到 EPCn
10、L, CAPPnL 中。這樣,就可以實(shí)現(xiàn)無干擾地實(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)推挽輸出,高阻輸入(電流不能流入也不能流出),開漏輸出(若外加上拉也可以讀?。┑取H笔顟B(tài)下,I/O的工作方式為準(zhǔn)雙向/弱上拉。本設(shè)計(jì)中,對于溫度傳感器的讀寫操作,需要I/O工作在準(zhǔn)雙向的工作狀態(tài)。而PWM輸出端口,LED驅(qū)動輸出,端口我們將I/O口的工作方式設(shè)置分強(qiáng)推挽輸出,輸出的拉電流達(dá)到20mA,能更好的驅(qū)動負(fù)載。設(shè)置方式,通
11、過配置相應(yīng)的寄存器PxM1和PxM0,如下表1所示:PxM1 7:0PxM0 7:0I/O口模式00準(zhǔn)雙向口01強(qiáng)推挽輸出10高阻輸入11開漏表17、LCD液晶顯示屏 時(shí)鐘的顯示屏選用1602字符液晶。1602是指顯示的內(nèi)容為16*2,即能夠同時(shí)顯示兩行,每行16個(gè)字符。常見的1602字符液晶有兩種,一種顯示的是綠色背光黑色字體,另一種顯示藍(lán)色背光白色字體,目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的。本設(shè)計(jì)所用1602液晶模塊,顯示屏是藍(lán)色背光白色字體。圖1為1602字符液晶引腳圖圖1 1602字符液晶引腳圖 各引腳功能為: 第1腳:GND為地電源。 第2腳
12、:VCC接5V正電源。 第3腳:VO為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地電源時(shí)對比度最高,對比度過高時(shí)會產(chǎn)生重影,使用一個(gè)1K的電位器調(diào)整對比度。 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器,低電平時(shí)選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。 第714腳:DB0DB7為8位雙向數(shù)據(jù)線。第1516腳:背光燈電源?;静僮鲿r(shí)序:讀狀態(tài) 輸入RS=L,R/W=H,E=H 輸出D0D7=狀態(tài)字寫指令 輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖 輸出無讀數(shù)
13、據(jù) 輸入RS=H,R/W=H,E=H 輸出D0D7=數(shù)據(jù)寫數(shù)據(jù) 輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖 輸出無RAM地址映射圖:如圖2所示:圖2 RAM地址映射圖當(dāng)我們在00-0F、40-4F,的地址中任意地寫入顯示數(shù)據(jù)時(shí),液晶都可以顯示,當(dāng)寫入10-27或50-67地址處時(shí),必須通過移屏指令將它們移入可顯示的區(qū)域。讀、寫操作時(shí)序:如圖3所示:因?yàn)楸驹O(shè)計(jì)的程序中只涉及到液晶的寫操作,因此下面簡單介紹寫操作過程,如下:(1)通過RS確定是寫數(shù)據(jù)還是寫命令。(2)讀寫控制端設(shè)置為寫模式。(3)將數(shù)據(jù)或命令送達(dá)數(shù)據(jù)線上。(4)給E一個(gè)高脈沖將數(shù)據(jù)送到液晶控制器,完成寫操作。 圖3 讀寫
14、操作時(shí)序圖初始化設(shè)置:(1)顯示模式設(shè)置,如圖4:圖4 顯示模式設(shè)置圖(2)顯示開/關(guān)及光標(biāo)設(shè)置,如圖5:圖5顯示開/關(guān)及光標(biāo)設(shè)置圖8、溫度傳感器DS18B20用于檢測當(dāng)前的溫度,DS18B20測量溫度范圍為 -55C+125C,在-10+85C范圍內(nèi),精度為0.5C?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,如:環(huán)境控制、設(shè)備或過程控制、測溫類消費(fèi)電子產(chǎn)品等。產(chǎn)品支持3V5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。DS18B20的引腳圖如圖6所示。引腳1:地;引腳2:數(shù)字輸入輸出;引腳3:可選的5V電源;圖 6 DS18B20的引腳圖D
15、S18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20控制方法(DS18B20有六條控制命令):溫度轉(zhuǎn)換44H啟動DS18B20進(jìn)行溫度轉(zhuǎn)換讀暫存器BEH讀暫存器9位二進(jìn)制數(shù)字寫暫存器4EH將數(shù)據(jù)寫入暫存器的TH、TL字節(jié)復(fù)制暫存器48H把暫存器的TH、TL字節(jié)寫到E2RAM中重新調(diào)E2RAMB8H把E2RAM中的TH、TL字節(jié)寫到暫存器TH、TL字節(jié)讀電源供電方式B4H啟動DS18B20發(fā)送電源供電方式的信號給主CPU8.1初始化(1)先將數(shù)據(jù)線置高電平“1”。(2)延時(shí)(該時(shí)間要求的不是很嚴(yán)格,但是盡可能的短一點(diǎn))(
16、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)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會使程序進(jìn)入死循環(huán),所以要進(jìn)行超時(shí)控制)。(7)若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時(shí),其延時(shí)的時(shí)間從發(fā)出的高電平算起(第(5)步的時(shí)間算起)最少要480微秒。(8)將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。8.2寫操作(1)數(shù)據(jù)線先置低電平“0”。(2)延時(shí)確定的時(shí)間為15微秒。(3)按從低位到高位的
17、順序發(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”。(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í),可以看到速度有非常明顯的變化
18、,讓實(shí)驗(yàn)現(xiàn)象更加直觀。拓展1:在主要考慮實(shí)用性方面的因素,我們還可以將控制檔位細(xì)化,做成5個(gè)檔位,甚至10個(gè)檔位,等等。不同的速度是通過調(diào)節(jié)不同的占空比來實(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 (t
19、em_1 = (a*100+b*10+c)&(a*100+b*10+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ì)
20、方案,比如宿舍的風(fēng)扇: 用普通的單片機(jī),通過溫度傳感器,讀取外界的溫度,進(jìn)而控制繼電器的吸合與斷開。假設(shè)設(shè)置4個(gè)檔位,可以用單片機(jī)接三個(gè)繼電器來實(shí)現(xiàn):當(dāng)外界溫度較低時(shí),此時(shí)所有繼電器處于斷開狀態(tài),風(fēng)扇不轉(zhuǎn);當(dāng)溫度升高到一定程度時(shí),單片機(jī)使繼電器1吸合,繼電器2、3斷開,讓風(fēng)扇轉(zhuǎn)一檔,即較慢速度;當(dāng)溫度繼續(xù)升高,單片機(jī)使繼電器2吸合,繼電器1、3斷開,風(fēng)扇轉(zhuǎn)二檔,即較快的速度。當(dāng)溫度再升高時(shí),單片機(jī)使繼電器3吸合,繼電器1、2斷開,風(fēng)扇轉(zhuǎn)三檔,即最快的速度。10、硬件電路設(shè)計(jì)10.1原理圖和部分電路PCB圖圖7 原理圖工作原理:通過P3.7端口處所接的電路的SW2的閉合或斷開選擇溫控或鍵控。當(dāng)S
21、W2=1時(shí),選擇溫控,通過DS18B20溫度傳感器獲取外界溫度,通過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)動,LED1亮、LED2滅。當(dāng)溫度高于30攝氏度時(shí),處于二檔,風(fēng)扇高速轉(zhuǎn)動,LED1、2都亮。當(dāng)SW2=0;選擇鍵控,通過P2.0處所接的獨(dú)立鍵盤進(jìn)行檔位的選擇。缺省狀態(tài)下為空擋,液晶屏顯示DW=0,LED1、2不亮,風(fēng)扇不轉(zhuǎn)。按一次key1,檔位加一,此時(shí)為一檔,液晶屏上顯示DW=1,LED1亮、
22、LED2滅,風(fēng)扇轉(zhuǎn)動較慢。再按一次key1鍵,檔位加1,此時(shí)液晶屏上顯示DW=2,LED1、2 亮,風(fēng)扇高速轉(zhuǎn)動。再按一次key1,檔位歸零。圖8 PCB圖10.2 電機(jī)驅(qū)動電路L298N 的主要特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,持續(xù)工作電流為2A;額定功率25W。采用標(biāo)準(zhǔn)邏輯電平信號控制;具有兩個(gè)使能控制端,在不受輸入信號影響的情況下允許或禁止器件工作有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作;可以外接檢測電阻,將變化量反饋給控制電路。使用L298N 芯片驅(qū)動電機(jī),該芯片可以驅(qū)動一臺兩相步進(jìn)電機(jī)或四相步進(jìn)電機(jī),也可以驅(qū)動兩臺直流電機(jī)。用
23、L298 控制直流電機(jī)很容易。用單片機(jī)端口高低就可以控制開始、停止、正反轉(zhuǎn),利用EN1,EN2 控制使能就能控制轉(zhuǎn)速。其原理圖,如圖9:圖9 L298N原理圖11、軟件設(shè)計(jì)11.1主函數(shù)流程圖開始初始化溫度控制風(fēng)扇模式按鍵控制風(fēng)扇模式Key_sw=1?是否圖10 主函數(shù)流程圖11.2 溫度控制風(fēng)扇程序流程圖開始讀取環(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)扇程序流程圖開始液晶顯示檔位0LED1、2不亮num=0num=1?nu
24、m=2?液晶顯示檔位1LED1亮LED2滅液晶顯示檔位2LED1 、LED2亮是否是否圖12按鍵控制風(fēng)扇程序流程圖11.4 按鍵設(shè)定溫度程序流程圖開始讀取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é)語本設(shè)計(jì)結(jié)合生活中的實(shí)際情況,利用單片機(jī)技術(shù)設(shè)計(jì)并制作了溫控風(fēng)扇系統(tǒng),完全達(dá)到了設(shè)計(jì)要求,其次通過獨(dú)
25、立鍵盤和溫度傳感器可以實(shí)現(xiàn)對應(yīng)的操作,使操作更加方便靈活,所選取的單片機(jī)具有較高的抗干擾能力,也符合這個(gè)設(shè)計(jì)的穩(wěn)定性要求。我們隊(duì)伍的各成員在整個(gè)設(shè)計(jì)制作過程中,相互配合,相互檢查,但又進(jìn)行了分工,大大提高了工作效率。參考文獻(xiàn):1郭天祥 新概念51單片機(jī)C語言教程入門、提高、開發(fā)、拓展全攻略 電子工業(yè)大學(xué)出版社 20102李廣弟, 朱月秀, 等. 單片機(jī)基礎(chǔ)M. 北京航空航天大學(xué)出版社, 2001.3模擬電子技術(shù)基礎(chǔ)M. 高等教育出版社, 2001.4數(shù)字電子技術(shù)基礎(chǔ)M. 高等教育出版社, 2006.附錄:實(shí)物硬件圖圖14實(shí)物硬件圖附錄:程序#include#include #define uc
26、har 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的寫操作端sbit LCD1602_RS=P10;/定義lcd1602的發(fā)送命令端sbit DSPORT=P27; /溫度傳感器讀寫端sbit LED0 = P23;sbit LED1 = P24;sb
27、it jia_key=P20;/加速按鈕sbit key1 = P21; /控制溫度調(diào)節(jié)按鍵1、2sbit key2 = P22;sbit key_sw = P37;/溫控與鍵控切換開關(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( ; y0; y-)for(x=440; x0; x-);void delay1ms(void) /誤差 0us u
28、nsigned char a,b; for(b=129;b0;b-) for(a=45;a0;a-);void delay1us(uint x) /誤差 0us unsigned char a,b; for(b=x;b0;b-) for(a=3;a0;a-);/* 函 數(shù) 名 : Ds18b20Init* 函數(shù)功能 : 初始化* 輸 入 : 無* 輸 出 : 初始化成功返回1,失敗返回0*/ void LcdWriteCom(uchar com) /寫入命令LCD1602_E = 0; /使能LCD1602_RS = 0; /選擇發(fā)送命令LCD1602_RW = 0; /選擇寫入LCD1602
29、_DATAPINS = com; /放入命令Delay1ms(1);/等待數(shù)據(jù)穩(wěn)定LCD1602_E = 1; /寫入時(shí)序Delay1ms(5); /保持時(shí)間LCD1602_E = 0;void LcdWriteData(uchar dat)/寫入數(shù)據(jù)LCD1602_E = 0;/使能清零LCD1602_RS = 1;/選擇輸入數(shù)據(jù)LCD1602_RW = 0;/選擇寫入LCD1602_DATAPINS = dat; /寫入數(shù)據(jù)Delay1ms(1);LCD1602_E = 1; /寫入時(shí)序Delay1ms(5); /保持時(shí)間LCD1602_E = 0;void LcdInit() /LCD初
30、始化子程序 LcdWriteCom(0x38); /開顯示LcdWriteCom(0x0c); /開顯示不顯示光標(biāo)LcdWriteCom(0x06); /寫一個(gè)指針加1LcdWriteCom(0x01); /清屏LcdWriteCom(0x80); /設(shè)置數(shù)據(jù)指針起點(diǎn)uchar Ds18b20Init()uchar i;DSPORT = 0; /將總線拉低480us960usdelay1us(642);/延時(shí)642usDSPORT = 1;/然后拉高總線,如果DS18B20做出反應(yīng)會將在15us60us后總線拉低i = 0;while(DSPORT)/等待DS18B20拉低總線i+;if(i5
31、)/等待5MSreturn 0;/初始化失敗delay1ms( );return 1;/初始化成功/* 函 數(shù) 名 : Ds18b20WriteByte* 函數(shù)功能 : 向18B20寫入一個(gè)字節(jié)*/void Ds18b20WriteByte(uchar dat)uint j;for(j=0; j= 1;/* 函 數(shù) 名 : Ds18b20ReadByte* 函數(shù)功能 : 讀取一個(gè)字節(jié)*/uchar Ds18b20ReadByte()uchar byte, bi;uint j;for(j=8; j0; j-)DSPORT = 0;/先將總線拉低1us delay1us(1); DSPORT =
32、1;/然后釋放總線delay1us(6); /延時(shí)6us等待數(shù)據(jù)穩(wěn)定bi = DSPORT; /讀取數(shù)據(jù),從最低位開始讀取/*將byte左移一位,然后與上右移7位后的bi,注意移動之后移掉那位補(bǔ)0。*/byte = (byte 1) | (bi 7); delay1us(45);return byte;/* 函 數(shù) 名 : Ds18b20ChangTemp* 函數(shù)功能 : 讓18b20開始轉(zhuǎn)換溫度*/void Ds18b20ChangTemp()Ds18b20Init();delay1ms( );Ds18b20WriteByte(0xcc);/跳過ROM操作命令 Ds18b20WriteByt
33、e(0x44); /溫度轉(zhuǎn)換命令 /* 函 數(shù) 名 : Ds18b20ReadTempCom* 函數(shù)功能 : 發(fā)送讀取溫度命令*/void Ds18b20ReadTempCom()Ds18b20Init();delay1ms( );Ds18b20WriteByte(0xcc); /跳過ROM操作命令Ds18b20WriteByte(0xbe); /發(fā)送讀取溫度命令/* 函 數(shù) 名 : Ds18b20ReadTemp* 函數(shù)功能 : 讀取溫度*/int Ds18b20ReadTemp()int temp = 0;uchar tmh, tml;Ds18b20ChangTemp(); /先寫入轉(zhuǎn)換命
34、令Ds18b20ReadTempCom();/然后等待轉(zhuǎn)換完后發(fā)送讀取溫度命令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ù)
35、 LcdWriteCom(0x80);/寫地址 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)镃語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)/后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進(jìn)1了,小于0.5的就/算加上0.5,還是在小數(shù)點(diǎn)后面。 else LcdWriteCom(0x80);/寫地址 80表示初始地址 LcdWriteData(+); /顯
36、示正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)镃語言浮點(diǎn)數(shù)轉(zhuǎn)換為整型的時(shí)候把小數(shù)點(diǎn)/后面的數(shù)自動去掉,不管是否大于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 =
37、 temp % 10; a = datas0;/a,b,c的作用是取溫度的整數(shù),進(jìn)行溫控b = datas1;c = datas2;LcdWriteCom(0x82); /寫地址 LcdWriteData(0+datas0); /百位 LcdWriteCom(0x83); /寫地址 LcdWriteData(0+datas1); /十位LcdWriteCom(0x84);/寫地址 LcdWriteData(0+datas2); /個(gè)位 LcdWriteCom(0x85);/寫地址 LcdWriteData(.); /顯示 .LcdWriteCom(0x86); /寫地址 LcdWriteDat
38、a(0+datas3); /顯示小數(shù)點(diǎn) LcdWriteCom(0x87); /寫地址 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*10+c)&(a*100+b*10+c)tem_2 ) CCAP0H = CCAP0L = 0xB3; /PWM0 口輸出30%占空比 LED0 = 1;
39、LED1 = 0; else if (tem_2 = (a*100+b*10+c) CCAP0H = CCAP0L = 0x1a; /PWM0 口輸出90%占空比 LED0 = 1; LED1 = 1; /* 函數(shù)名 : keyscan* 函數(shù)功能 : 鍵盤掃描*/void keyscan1 () if (0 = key1) /溫度下限調(diào)整按鍵 Delay1ms(20);if (0 = key1) tem_1+;if(31 = tem_1) tem_1 = 17;while(!key1); if (0 = key2) /溫度上限調(diào)整按鍵 Delay1ms(20);if (0 = key2) t
40、em_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; /PWM0 口輸出60%占空比 LED
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電商平臺會員積分兌換優(yōu)惠合同5篇
- 2025年旅游產(chǎn)品銷售居間服務(wù)合同
- 基于二零二五年度的物聯(lián)網(wǎng)項(xiàng)目合作與投資合同2篇
- 2025年度文化展覽館租賃合同匯編4篇
- 二零二五版花崗石石材行業(yè)投資融資合同3篇
- 2025年度新能源汽車駕駛員聘用合同標(biāo)準(zhǔn)版4篇
- 2025年度物流產(chǎn)業(yè)貸款合同范本4篇
- 學(xué)生活動與社交網(wǎng)絡(luò)
- 學(xué)校的升學(xué)資源
- 2024跨國文化娛樂內(nèi)容授權(quán)合同
- 2024年公司保密工作制度(四篇)
- 重慶市康德卷2025屆高一數(shù)學(xué)第一學(xué)期期末聯(lián)考試題含解析
- 建筑結(jié)構(gòu)課程設(shè)計(jì)成果
- 雙梁橋式起重機(jī)小車改造方案
- 基于AR的無人機(jī)操作訓(xùn)練系統(tǒng)
- XX農(nóng)貿(mào)市場物業(yè)公司管理方案
- 纖維增強(qiáng)復(fù)合材料 單向增強(qiáng)材料Ⅰ型-Ⅱ 型混合層間斷裂韌性的測定 編制說明
- 湖北省襄陽市數(shù)學(xué)中考2024年測試試題及解答
- YYT 0308-2015 醫(yī)用透明質(zhì)酸鈉凝膠
- GB/T 44189-2024政務(wù)服務(wù)便民熱線運(yùn)行指南
- YYT 0698.1-2011 最終滅菌醫(yī)療器械包裝材料 第1部分 吸塑包裝共擠塑料膜 要求和試驗(yàn)方法
評論
0/150
提交評論