版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
自動(dòng)化系統(tǒng)創(chuàng)意設(shè)計(jì)大賽作品說(shuō)明書(shū)作品名稱:溫控風(fēng)扇系統(tǒng)設(shè)計(jì)隊(duì)員:4月目錄1、引言 32、背景 33、意義和應(yīng)用 34、原理介紹 45、方案設(shè)計(jì) 46、STC12C5A60S2單片機(jī) 56.1介紹 56.2PWM寄存器設(shè)置 56.3PWM占空比計(jì)算方法 56.4I/O工作方法設(shè)置 67、LCD液晶顯示器 68、溫度傳感器DS18B20 88.1
初始化 98.2
寫操作 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溫度控制風(fēng)扇程序步驟圖 1511.3按鍵控制風(fēng)扇程序步驟圖 1611.4按鍵設(shè)定溫度程序步驟圖 1712、結(jié)語(yǔ) 18參考文件: 18附錄Ⅰ:實(shí)物硬件圖 18附錄Ⅱ:程序 18摘要:本設(shè)計(jì)是基于STC12C5A60S2單片機(jī)技術(shù)和溫度傳感器測(cè)量外界溫度設(shè)計(jì)原理,進(jìn)行了不一樣設(shè)計(jì)方案比較,給出了設(shè)計(jì)硬件電路,同時(shí)對(duì)多種關(guān)鍵硬件進(jìn)行較具體介紹,而且以步驟圖方法對(duì)系統(tǒng)設(shè)計(jì)作出介紹。系統(tǒng)關(guān)鍵經(jīng)過(guò)溫度傳感器控制不一樣PWM占空比輸出來(lái)控制風(fēng)扇檔位。而出于方便、可選擇性考慮,系統(tǒng)也添加了輔助功效,就是直接手動(dòng)控制風(fēng)扇檔位。關(guān)鍵詞:STC12C5A60S2單片機(jī),DS18B20溫度傳感器,PWM1、引言溫控風(fēng)扇在節(jié)能環(huán)境保護(hù)方面含有一定作用,其工作原理除了一般手動(dòng)檔位調(diào)整,關(guān)鍵是經(jīng)過(guò)溫度傳感器感應(yīng)外界溫度,并自主地進(jìn)行檔位調(diào)整,這么在風(fēng)扇開(kāi)著情況下,不需進(jìn)行手動(dòng)就能夠依據(jù)不一樣外界溫度進(jìn)行自主調(diào)整風(fēng)力大小,達(dá)成節(jié)能目標(biāo)。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),反而銷售在不停復(fù)蘇中,含有強(qiáng)大發(fā)展空間。據(jù)市場(chǎng)調(diào)查,電風(fēng)扇不停復(fù)蘇關(guān)鍵在以下原因:一,是電風(fēng)扇即使沒(méi)有空調(diào)機(jī)強(qiáng)大制冷功效,但電風(fēng)扇是直接取風(fēng),風(fēng)力愈加溫和,比較適合老年人、兒童和體質(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)入老百姓家庭。在現(xiàn)在空調(diào)還沒(méi)有普及,而且并不是全部情況下空調(diào)全部適合使用情況下,智能風(fēng)扇適合人體對(duì)溫度要求,智能風(fēng)扇還有含有相看成用。3、意義和應(yīng)用1、一般電風(fēng)扇現(xiàn)實(shí)狀況及存在隱患:大部分只有手動(dòng)調(diào)速,功效單一。長(zhǎng)時(shí)間在高負(fù)荷工作輕易損壞電器,而且造成電量損失。2、作品可利用在家庭中,風(fēng)扇風(fēng)力隨溫度而調(diào)整,即能夠避免人因溫度低吹到冷風(fēng)而著涼,也可達(dá)成節(jié)能目標(biāo),可見(jiàn)溫控風(fēng)扇更含有優(yōu)越性。3、其次將此系統(tǒng)裝在產(chǎn)熱多,急需排熱設(shè)備上,能夠幫助它立即散掉大量熱。比如電腦散熱器等。4、原理介紹1、電源開(kāi)關(guān),控制系統(tǒng)處于工作還是停止?fàn)顟B(tài)。2、當(dāng)系統(tǒng)上電以后,經(jīng)過(guò)單片機(jī)讀取外界溫度,然后在液晶顯示器上顯示出來(lái)。經(jīng)過(guò)判定溫度范圍,控制風(fēng)扇停止和轉(zhuǎn)不一樣速度。同時(shí)LED給出檔位指示。溫度控制范圍能夠經(jīng)過(guò)按鍵進(jìn)行設(shè)置。3、另外,當(dāng)不需要溫度控制時(shí),能夠經(jīng)過(guò)模式切換開(kāi)關(guān),讓系統(tǒng)工作于手動(dòng)控制模式。經(jīng)過(guò)按鍵進(jìn)行調(diào)整風(fēng)扇停止,和不一樣轉(zhuǎn)速。5、方案設(shè)計(jì)方案一:采取兩片STC89C516RD單片機(jī)、液晶1602和ds18b20,進(jìn)行設(shè)計(jì),讓單片機(jī)1進(jìn)行溫度讀取操作,另外單片機(jī)2經(jīng)過(guò)定時(shí)器,產(chǎn)生占空比不一樣PWM。兩單片機(jī)經(jīng)過(guò)串口進(jìn)行通信,這么單片機(jī)1能夠經(jīng)過(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ī),不過(guò)它性能比STC89C516RD單片機(jī)更強(qiáng)大,而且有獨(dú)立雙路PWM輸出。這么,采取一片STC12C5A60S2單片機(jī)就能實(shí)現(xiàn)溫度讀取和直流5v小風(fēng)扇轉(zhuǎn)速控制。方案三:采取stm8s105系列單片機(jī)、液晶1602和ds18b20,一樣能夠?qū)崿F(xiàn)溫度讀取和直流5v小風(fēng)扇轉(zhuǎn)速控制方案比較:方案一需要花費(fèi)更多硬件資源。所以我們直接排除方案一。方案三,假如采取44腳貼片封裝stm8s105單片,能夠在很小覆銅板上把硬件做出來(lái),這么能夠節(jié)省部分硬件資源。不過(guò),因?yàn)闇囟葌鞲衅鱠s18b20讀取是經(jīng)過(guò)單一I/O口讀取,stm8s105I/O操作需要設(shè)置,讓其是處于輸入或輸出方法。操作很麻煩。方案二需要硬件資源相對(duì)較少,而且其I/O口兼容8051單片機(jī),能夠?qū)崿F(xiàn)I/O口準(zhǔn)雙向操作,這么編程相對(duì)簡(jiǎn)單??偠灾?,我們選擇方案二。6、STC12C5A60S2單片機(jī)6.1介紹我們采取單片機(jī)為STC12C5A60S2,STC12C5A60S2/AD/PWM
系列單片機(jī)是宏晶科技生產(chǎn)單時(shí)鐘/機(jī)器周期(1T)單片機(jī),是高速/低功耗/超強(qiáng)抗干擾新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,2路PWM,8路高速10位A/D轉(zhuǎn)換(250K/S)針對(duì)電機(jī)控制,強(qiáng)干擾場(chǎng)所。其引腳和一般8051單片機(jī)基礎(chǔ)相同。6.2PWM寄存器設(shè)置STC12C5A60S2單片機(jī)內(nèi)置兩路獨(dú)立PWM輸出,經(jīng)過(guò)設(shè)置對(duì)應(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;//重置PCA16位計(jì)數(shù)器CH=0;CMOD=0x02;//設(shè)置PCA計(jì)數(shù)器時(shí)鐘源為Fosc/2//嚴(yán)禁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í),[EPCnHCAPPnH]內(nèi)容被裝載到[EPCnL,CAPPnL]中。這么,就能夠?qū)崿F(xiàn)無(wú)干擾地實(shí)現(xiàn)PWM更新。6.3PWM占空比計(jì)算方法輸出占空比乘以256后,轉(zhuǎn)換為十六進(jìn)制,然后進(jìn)行取反,再同時(shí)賦值給寄存器CCAPxH和CCAPxL。6.4I/O工作方法設(shè)置其I/O口工作方法有準(zhǔn)雙向/弱上拉輸出,強(qiáng)推挽輸出,高阻輸入(電流不能流入也不能流出),開(kāi)漏輸出(若外加上拉也能夠讀取)等。缺省狀態(tài)下,I/O工作方法為準(zhǔn)雙向/弱上拉。本設(shè)計(jì)中,對(duì)于溫度傳感器讀寫操作,需要I/O工作在準(zhǔn)雙向工作狀態(tài)。而PWM輸出端口,LED驅(qū)動(dòng)輸出,端口我們將I/O口工作方法設(shè)置分強(qiáng)推挽輸出,輸出拉電流達(dá)成20mA,能愈加好驅(qū)動(dòng)負(fù)載。設(shè)置方法,經(jīng)過(guò)配置對(duì)應(yīng)寄存器PxM1和PxM0,以下表1所表示:PxM1[7:0]PxM0[7:0]I/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字符液晶有兩種,一個(gè)顯示是綠色背光黑色字體,另一個(gè)顯示藍(lán)色背光白色字體,現(xiàn)在市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片,控制原理是完全相同。本設(shè)計(jì)所用1602液晶模塊,顯示器是藍(lán)色背光白色字體。圖1為1602字符液晶引腳圖圖11602字符液晶引腳圖各引腳功效為:第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為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊實(shí)施命令。第7~14腳:DB0~DB7為8位雙向數(shù)據(jù)線。第15~16腳:背光燈電源。①基礎(chǔ)操作時(shí)序:讀狀態(tài)
輸入
RS=L,R/W=H,E=H
輸出
D0—D7=狀態(tài)字寫指令
輸入
RS=L,R/W=L,D0—D7=指令碼,E=高脈沖
輸出
無(wú)
讀數(shù)據(jù)
輸入
RS=H,R/W=H,E=H
輸出
D0—D7=數(shù)據(jù)
寫數(shù)據(jù)
輸入
RS=H,R/W=L,D0—D7=數(shù)據(jù),E=高脈沖
輸出
無(wú)②RAM地址映射圖:圖2所表示:圖2RAM地址映射圖當(dāng)我們?cè)?0-0F、40-4F,地址中任意地寫入顯示數(shù)據(jù)時(shí),液晶全部能夠顯示,當(dāng)寫入10-27或50-67地址處時(shí),必需經(jīng)過(guò)移屏指令將它們移入可顯示區(qū)域。③讀、寫操作時(shí)序:圖3所表示:因?yàn)楸驹O(shè)計(jì)程序中只包含到液晶寫操作,所以下面簡(jiǎn)單介紹寫操作過(guò)程,以下:(1)經(jīng)過(guò)RS確定是寫數(shù)據(jù)還是寫命令。(2)讀寫控制端設(shè)置為寫模式。(3)將數(shù)據(jù)或命令送達(dá)數(shù)據(jù)線上。(4)給E一個(gè)高脈沖將數(shù)據(jù)送到液晶控制器,完成寫操作。圖3讀寫操作時(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è)目前溫度,DS18B20測(cè)量溫度范圍為-55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場(chǎng)溫度直接以“一線總線”數(shù)字方法傳輸,大大提升了系統(tǒng)抗干擾性。適合于惡劣環(huán)境現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類消費(fèi)電子產(chǎn)品等。產(chǎn)品支持3V~5.5V電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。
DS18B20引腳圖如
圖6所表示。引腳1:地;引腳2:數(shù)字輸入輸出;引腳3:可選5V電源;圖6DS18B20引腳圖DS18B20內(nèi)部結(jié)構(gòu)關(guān)鍵由四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20控制方法(DS18B20有六條控制命令):
溫度轉(zhuǎn)換
44H
開(kāi)啟DS18B20進(jìn)行溫度轉(zhuǎn)換
讀暫存器
BEH
讀暫存器9位二進(jìn)制數(shù)字
寫暫存器
4EH
將數(shù)據(jù)寫入暫存器TH、TL字節(jié)復(fù)制暫存器
48H
把暫存器TH、TL字節(jié)寫到E2RAM中
重新調(diào)E2RAM
B8H
把E2RAM中TH、TL字節(jié)寫到暫存器TH、TL字節(jié)
讀電源供電方法
B4H
開(kāi)啟DS18B20發(fā)送電源供電方法信號(hào)給主CPU
8.1
初始化
(1)
先將數(shù)據(jù)線置高電平“1”。
(2)
延時(shí)(該時(shí)間要求不是很嚴(yán)格,不過(guò)盡可能短一點(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)確定它存在,不過(guò)應(yīng)注意不能無(wú)限進(jìn)行等候,不然會(huì)使程序進(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)
按從低位到高位次序發(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ì)目標(biāo)關(guān)鍵是考慮到在檔位切換時(shí),能夠看到速度有很顯著改變,讓試驗(yàn)現(xiàn)象愈加直觀。拓展1:在關(guān)鍵考慮實(shí)用性方面原因,我們還能夠?qū)⒖刂茩n位細(xì)化,做成5個(gè)檔位,甚至10個(gè)檔位,等等。不一樣速度是經(jīng)過(guò)調(diào)整不一樣占空比來(lái)實(shí)現(xiàn)。下面我們給出溫度控制風(fēng)扇轉(zhuǎn)5個(gè)速度不一樣檔位部分關(guān)鍵程序示例:voidcontrol(void){ if((a*100+b*10+c)<tem_1) { CCAP0H=CCAP0L=0xFF;//PWM0口輸出0%占空比 } elseif(tem_1<=(a*100+b*10+c)&&(a*100+b*10+c)<tem_2) { CCAP0H=CCAP0L=0xB3;//PWM0口輸出30%占空比 } elseif(tem_1<=(a*100+b*10+c)&&(a*100+b*10+c)<tem_2) { CCAP0H=CCAP0L=0x08;//PWM0口輸出50%占空比 } elseif(tem_1<=(a*100+b*10+c)&&(a*100+b*10+c)<tem_2) { CCAP0H=CCAP0L=0x4D;//PWM0口輸出70%占空比 } elseif(tem_2<=(a*100+b*10+c)) { CCAP0H=CCAP0L=0x1A;//PWM0口輸出90%占空比 } }拓展2:在本設(shè)計(jì)驗(yàn)證成功而且可靠基礎(chǔ)上,我們能夠繼續(xù)延伸,給出溫度控制交流220V供電風(fēng)扇設(shè)計(jì)方案,比如宿舍風(fēng)扇:用一般單片機(jī),經(jīng)過(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原理圖工作原理:經(jīng)過(guò)P3.7端口處所接電路SW2閉合或斷開(kāi)選擇溫控或鍵控。當(dāng)SW2=1時(shí),選擇溫控,經(jīng)過(guò)DS18B20溫度傳感器獲取外界溫度,經(jīng)過(guò)LCD顯示目前溫度,而且顯示設(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;選擇鍵控,經(jīng)過(guò)P2.0處所接獨(dú)立鍵盤進(jìn)行檔位選擇。缺省狀態(tài)下為空擋,液晶屏顯示DW=0,LED1、2不亮,風(fēng)扇不轉(zhuǎn)。按一次key1,檔位加一,此時(shí)為一檔,液晶屏上顯示DW=1,LED1亮、LED2滅,風(fēng)扇轉(zhuǎn)動(dòng)較慢。再按一次key1鍵,檔位加1,此時(shí)液晶屏上顯示DW=2,LED1、2亮,風(fēng)扇高速轉(zhuǎn)動(dòng)。再按一次key1,檔位歸零。圖8PCB圖10.2電機(jī)驅(qū)動(dòng)電路L298N關(guān)鍵特點(diǎn)是:工作電壓高,最高工作電壓可達(dá)46V;輸出電流大,瞬間峰值電流可達(dá)3A,連續(xù)工作電流為2A;額定功率25W。采取標(biāo)準(zhǔn)邏輯電平信號(hào)控制;含有兩個(gè)使能控制端,在不受輸入信號(hào)影響情況下許可或嚴(yán)禁器件工作有一個(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控制直流電機(jī)很輕易。用單片機(jī)端口高低就能夠控制開(kāi)始、停止、正反轉(zhuǎn),利用EN1,EN2控制使能就能控制轉(zhuǎn)速。其原理圖,圖9:圖9L298N原理圖11、軟件設(shè)計(jì)11.1主函數(shù)步驟圖開(kāi)始開(kāi)始初始化溫度控制風(fēng)扇模式按鍵控制風(fēng)扇模式Key_sw==1?是否圖10主函數(shù)步驟圖11.2溫度控制風(fēng)扇程序步驟圖開(kāi)始開(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亮液晶顯示目前溫度顯示設(shè)定溫度Ⅰ、Ⅱ值是否是否圖11溫度控制風(fēng)扇程序步驟圖11.3按鍵控制風(fēng)扇程序步驟圖開(kāi)始開(kāi)始液晶顯示檔位0LED1、2不亮num=0num==1?num==2?液晶顯示檔位1LED1亮LED2滅液晶顯示檔位2LED1、LED2亮是否是否圖12按鍵控制風(fēng)扇程序步驟圖11.4按鍵設(shè)定溫度程序步驟圖開(kāi)始讀取I/O電平改變是否有按鍵被按下開(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é)束12、結(jié)語(yǔ)本設(shè)計(jì)結(jié)合生活中實(shí)際情況,利用單片機(jī)技術(shù)設(shè)計(jì)并制作了溫控風(fēng)扇系統(tǒng),完全達(dá)成了設(shè)計(jì)要求,其次經(jīng)過(guò)獨(dú)立鍵盤和溫度傳感器能夠?qū)崿F(xiàn)對(duì)應(yīng)操作,使操作愈加方便靈活,所選擇單片機(jī)含有較高抗干擾能力,也符合這個(gè)設(shè)計(jì)穩(wěn)定性要求。我們隊(duì)伍各組員在整個(gè)設(shè)計(jì)制作過(guò)程中,相互配合,相互檢驗(yàn),但又進(jìn)行了分工,大大提升了工作效率。參考文件:[1]郭天祥新概念51單片機(jī)C語(yǔ)言教程——入門、提升、開(kāi)發(fā)、拓展全攻略電子工業(yè)大學(xué)出版社[2]李廣弟,朱月秀,等.單片機(jī)基礎(chǔ)[M].北京航空航天大學(xué)出版社,.[3]模擬電子技術(shù)基礎(chǔ)[M].高等教育出版社,.[4]數(shù)字電子技術(shù)基礎(chǔ)[M].高等教育出版社,.附錄Ⅰ:實(shí)物硬件圖圖14實(shí)物硬件圖附錄Ⅱ:程序#include<stc12c5a60s2.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#defineLCD1602_DATAPINSP0sfrPCAPWM0=0xf2;//定義寄存器PCAPWM0sfrPCAPWM1=0xf3;//定義寄存器PCAPWM1sbitLCD1602_E=P1^2; //定義lcd1602使能端sbitLCD1602_RW=P1^1; //定義lcd1602寫操作端sbitLCD1602_RS=P1^0; //定義lcd1602發(fā)送命令端sbitDSPORT=P2^7;//溫度傳感器讀寫端sbitLED0=P2^3; sbitLED1=P2^4;sbitjia_key=P2^0;//加速按鈕sbitkey1=P2^1;//控制溫度調(diào)整按鍵1、2sbitkey2=P2^2;sbitkey_sw=P3^7;//溫控和鍵控切換開(kāi)關(guān)uinta=0;uintb=0;uintc=0;uinttem_1=27;uinttem_2=30;ucharnum=0; /*******************************************************************************函數(shù)名:Delay1ms*函數(shù)功效 :延時(shí)函數(shù)******************************************************************************/voidDelay1ms(uinty)//粗略延時(shí)1ms{ uintx; for(;y>0;y--) { for(x=440;x>0;x--); }}voiddelay1ms(void)//誤差0us{unsignedchara,b;for(b=129;b>0;b--)for(a=45;a>0;a--);}voiddelay1us(uintx)//誤差0us{unsignedchara,b;for(b=x;b>0;b--)for(a=3;a>0;a--);}/*******************************************************************************函數(shù)名:Ds18b20Init*函數(shù)功效 :初始化*輸入:無(wú)*輸出:初始化成功返回1,失敗返回0******************************************************************************/voidLcdWriteCom(ucharcom) //寫入命令{ LCD1602_E=0;//使能 LCD1602_RS=0; //選擇發(fā)送命令 LCD1602_RW=0; //選擇寫入 LCD1602_DATAPINS=com;//放入命令 Delay1ms(1); //等候數(shù)據(jù)穩(wěn)定 LCD1602_E=1; //寫入時(shí)序 Delay1ms(5); //保持時(shí)間 LCD1602_E=0;}voidLcdWriteData(uchardat) //寫入數(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;}voidLcdInit() //LCD初始化子程序{ LcdWriteCom(0x38);//開(kāi)顯示 LcdWriteCom(0x0c);//開(kāi)顯示不顯示光標(biāo) LcdWriteCom(0x06);//寫一個(gè)指針加1 LcdWriteCom(0x01);//清屏 LcdWriteCom(0x80);//設(shè)置數(shù)據(jù)指針起點(diǎn)}ucharDs18b20Init(){ uchari; DSPORT=0; //將總線拉低480us~960us delay1us(642); //延時(shí)642us DSPORT=1; //然后拉高總線,假如DS18B20做出反應(yīng)會(huì)將在15us~60us后總線拉低 i=0; while(DSPORT) //等候DS18B20拉低總線 { i++; if(i>5)//等候>5MS { return0;//初始化失敗 } delay1ms(); } return1;//初始化成功}/*******************************************************************************函數(shù)名:Ds18b20WriteByte*函數(shù)功效 :向18B20寫入一個(gè)字節(jié)******************************************************************************/voidDs18b20WriteByte(uchardat){ uintj; for(j=0;j<8;j++) { DSPORT=0; //每寫入一位數(shù)據(jù)之前先把總線拉低1us delay1us(1); DSPORT=dat&0x01;//然后寫入一個(gè)數(shù)據(jù),從最低位開(kāi)始 delay1us(68);//延時(shí)68us,連續(xù)時(shí)間最少60us DSPORT=1; //然后釋放總線,最少1us給總線恢復(fù)時(shí)間才能接著寫入第二個(gè)數(shù)值 dat>>=1; }}/********************************************************************************函數(shù)名:Ds18b20ReadByte*函數(shù)功效 :讀取一個(gè)字節(jié)******************************************************************************/ucharDs18b20ReadByte(){ ucharbyte,bi; uintj; for(j=8;j>0;j--) { DSPORT=0;//先將總線拉低1us delay1us(1); DSPORT=1;//然后釋放總線 delay1us(6); //延時(shí)6us等候數(shù)據(jù)穩(wěn)定 bi=DSPORT; //讀取數(shù)據(jù),從最低位開(kāi)始讀取 /*將byte左移一位,然后和上右移7位后bi,注意移動(dòng)以后移掉那位補(bǔ)0。*/ byte=(byte>>1)|(bi<<7); delay1us(45); } returnbyte;}/******************************************************************************函數(shù)名:Ds18b20ChangTemp*函數(shù)功效 :讓18b20開(kāi)始轉(zhuǎn)換溫度******************************************************************************/voidDs18b20ChangTemp(){ Ds18b20Init(); delay1ms(); Ds18b20WriteByte(0xcc); //跳過(guò)ROM操作命令 Ds18b20WriteByte(0x44); //溫度轉(zhuǎn)換命令}/****************************************************************************函數(shù)名:Ds18b20ReadTempCom*函數(shù)功效 :發(fā)送讀取溫度命令****************************************************************************/voidDs18b20ReadTempCom(){ Ds18b20Init(); delay1ms(); Ds18b20WriteByte(0xcc); //跳過(guò)ROM操作命令 Ds18b20WriteByte(0xbe); //發(fā)送讀取溫度命令}/****************************************************************************函數(shù)名:Ds18b20ReadTemp*函數(shù)功效 :讀取溫度****************************************************************************/intDs18b20ReadTemp(){ inttemp=0; uchartmh,tml; Ds18b20ChangTemp(); //先寫入轉(zhuǎn)換命令 Ds18b20ReadTempCom(); //然后等候轉(zhuǎn)換完后發(fā)送讀取溫度命令 tml=Ds18b20ReadByte(); //讀取溫度值共16位,先讀低字節(jié) tmh=Ds18b20ReadByte(); //再讀高字節(jié) temp=tmh; temp<<=8; temp|=tml; returntemp;}/******************************************************************************函數(shù)名:LcdDisplay()*函數(shù)功效 :LCD顯示讀取到溫度*****************************************************************************/voidLcdDisplay(inttemp) //lcd顯示 { unsignedchardatas[]={0,0,0,0,0};//定義數(shù)組 floattp; if(temp<0) //當(dāng)溫度值為負(fù)數(shù) { 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)镃語(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); //寫地址80表示初始地址 LcdWriteData('+'); //顯示正 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)后面。 } datas[0]=temp/10000; datas[1]=temp%10000/1000; datas[2]=temp%1000/100; datas[3]=temp%100/10; datas[4]=temp%10; a=datas[0]; //a,b,c作用是取溫度整數(shù),進(jìn)行溫控 b=datas[1]; c=datas[2]; LcdWriteCom(0x82); //寫地址 LcdWriteData('0'+datas[0]);//百位 LcdWriteCom(0x83); //寫地址 LcdWriteData('0'+datas[1]);//十位 LcdWriteCom(0x84); //寫地址 LcdWriteData('0'+datas[2]);//個(gè)位 LcdWriteCom(0x85); //寫地址 LcdWriteData('.'); //顯示'.' LcdWriteCom(0x86); //寫地址 LcdWriteData('0'+datas[3]);//顯示小數(shù)點(diǎn) LcdWriteCom(0x87); //寫地址 LcdWriteData('0'+datas[4]);//顯示小數(shù) }/*********************************************溫度控制電機(jī)輸出占空比函數(shù)***********************************************/voidcontrol(void){ if((a*100+b*10+c)<tem_1) { CCAP0H=CCAP0L=0xff;//PWM0口輸出0%占空比 LED0=0; LED1=0; } elseif(tem_1<=(a*100+b*10+c)&&(a*100+b*10+c)<tem_2) { CCAP0H=CCAP0L=0xB3;//PWM0口輸出30%占空比 LED0=1; LED1=0; } elseif(tem_2<=(a*100+b*10+c)) { CCAP0H=CCAP0L=0x1a;//PWM0口輸出90%占空比 LED0=1; LED1=1; } }/*******************************************************************************函數(shù)名:keyscan*函數(shù)功效 :鍵盤掃描******************************************************************************/voidkeyscan1(){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) { tem_2++; if(44==tem_2) tem_2=23; while(!key2); }}if(tem_1==tem_2)tem_2++;//預(yù)防兩個(gè)溫度范圍一樣if(tem_2<tem_1)//預(yù)防溫度上限比溫度下限低{tem_2=tem_1+1;} }voidkeyscan2(){if(jia_key==0)//加速按鍵 { Delay1ms(20);; if(jia_key==0) { num++; if(num==3) num=0; while(jia_key==0); } }}/*********************************************電機(jī)輸出檔位選擇函數(shù)***********************************************/voiddangwei(){ switch(num) { case0: CCAP0H=CCAP0L=0xff;//PWM0口輸出0%占空比 LED0=0; LED1=0; break; case1: CCAP0H=CCAP0L=0x67;//PWM0口輸出60%占空比 LED0=1; LED1=0; break; case2: CCAP0H=CCAP0L=0x1a;//PWM0口輸出90%占空比 LED0=1; LED1=1; break; }}/*****************************************************************************函數(shù)名:displayx()*函數(shù)功效 :LCD顯示讀取到鍵盤數(shù)值*****************************************************************************/voiddisplay1(intp){unsignedchardatas[]={0,0}; datas[0]=p/10;datas[1]=p%10; LcdWriteCom(0x8b); LcdWriteData('0'+datas[0]); LcdWriteCom(0x8c);
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《在細(xì)雨中呼喊》
- 施工防火安全控制措施
- 2024年湄洲灣職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 二零二五年度施工單位與監(jiān)理人員勞動(dòng)合同范本3篇
- 二零二五版二手汽車買賣合同附帶保險(xiǎn)及保養(yǎng)服務(wù)樣本3篇
- 《科幻小說(shuō)賞析與寫作》 課件 第5、6章 “反烏托邦”的警示與預(yù)言-《一九八四》;“外星文明”的善意與惡行-《安德的游戲》
- 二零二五年度船員勞動(dòng)合同與船舶航行安全應(yīng)急演練服務(wù)合同3篇
- 第一講-代數(shù)系統(tǒng)
- 經(jīng)濟(jì)數(shù)學(xué)基礎(chǔ)復(fù)習(xí)
- 2024年濟(jì)南工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 網(wǎng)吧企業(yè)章程范本
- 安徽省書(shū)法家協(xié)會(huì)會(huì)員登記表
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 五格數(shù)理解釋及吉兇對(duì)照
- 婚姻狀況聲明書(shū)
- 新課程理念下的班主任工作藝術(shù)
- (完整版)企業(yè)破產(chǎn)流程圖(四張)
- 領(lǐng)導(dǎo)激勵(lì)藝術(shù)教材
- 化肥對(duì)土壤的影響
- 水泥罐抗傾覆驗(yàn)算7頁(yè)
- 可行性研究報(bào)告 范文“母親水窖”建設(shè)項(xiàng)目可行性研究報(bào)告
評(píng)論
0/150
提交評(píng)論