【基于單片機的智能溫控風(fēng)扇的設(shè)計6800字(論文)】_第1頁
【基于單片機的智能溫控風(fēng)扇的設(shè)計6800字(論文)】_第2頁
【基于單片機的智能溫控風(fēng)扇的設(shè)計6800字(論文)】_第3頁
【基于單片機的智能溫控風(fēng)扇的設(shè)計6800字(論文)】_第4頁
【基于單片機的智能溫控風(fēng)扇的設(shè)計6800字(論文)】_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于單片機的智能溫控風(fēng)扇的設(shè)計摘要:現(xiàn)如今智能家居產(chǎn)業(yè)的發(fā)展一日千里,給使用者帶來非常舒適的體驗。為了使風(fēng)扇更加智能與實用,本設(shè)計對風(fēng)扇控制器部分進(jìn)行重新設(shè)計,實現(xiàn)風(fēng)扇轉(zhuǎn)速隨溫度變化自動調(diào)節(jié),從而提高用戶使用風(fēng)扇時的舒適性。目前在網(wǎng)上查閱相關(guān)設(shè)計,大多為使用單片機來自動控制風(fēng)扇轉(zhuǎn)速,而無法使用手機APP來控制,這就造成無法讓風(fēng)扇隨用戶主觀意愿來調(diào)節(jié)。本設(shè)計增加手機APP中的手動模式,使用此模式時風(fēng)扇不再受傳感器控制而是由用戶控制。本設(shè)計將先進(jìn)行框架思路設(shè)計,之后部署好開發(fā)環(huán)境,再選擇易用的元器件,逐個編寫模塊代碼,如溫度獲取模塊,液晶顯示模塊等,同時對不合適的元器件進(jìn)行優(yōu)缺點比較并確定是否更換,最后將各個分立模塊整合。預(yù)期效果為手機APP中可以看到兩種模式并進(jìn)行選擇:使用自動模式時,單片機根據(jù)溫度變化自動控制風(fēng)扇;當(dāng)使用手動模式時,則單片機受用戶手機APP控制再而控制風(fēng)扇轉(zhuǎn)速。關(guān)鍵詞:89C52單片機;自動調(diào)溫;風(fēng)扇;藍(lán)牙目錄TOC\o"1-3"\h\u1.引言 11.1.研究背景 11.2.方案流程圖 12.開發(fā)工具(軟件)簡介 22.1.KeilμVision5 22.2.AndroidStudio 23.硬件介紹 43.1.STC89C52RC單片機 43.1.1.STC89C52RCMCU介紹 43.1.2.使用方法 43.2.DS18B20溫度傳感器 43.2.1.DS18B20溫度傳感器介紹 43.2.2.使用方法 53.3.LCD1602液晶顯示模塊 73.3.1.LCD1602液晶顯示模塊介紹 73.3.2.使用方法 83.4.HC-06藍(lán)牙模塊 93.4.1.HC-06藍(lán)牙模塊介紹 93.4.2.使用方法 93.5.色環(huán)電阻 93.5.1.色環(huán)電阻介紹及分辨方法 94.電路設(shè)計原理 114.1.總體概括 114.2.單片機最小系統(tǒng) 134.3.風(fēng)扇電路 134.4.其他電路 145.APP與藍(lán)牙通訊 155.1.APP調(diào)試工具 155.2.權(quán)限 155.3.布局 155.3.1.主頁面 155.3.2.設(shè)備列表頁面 165.4.藍(lán)牙模塊使用方法 166.調(diào)試 197.總結(jié) 20參考文獻(xiàn) 21附錄單片機主程序 22引言研究背景隨著移動通信技術(shù)的發(fā)展,設(shè)備與設(shè)備之間的傳輸時延越來越低、丟包率越來越小。并且隨著國家對通信基站建設(shè)任務(wù)的進(jìn)一步加強,以及家用無線路由器的普及,通信設(shè)備變得更容易接入互聯(lián)網(wǎng)。這就使智能家居產(chǎn)品越來越普及、實惠,并且這些產(chǎn)品極大的提高了用戶的生活質(zhì)量。用戶可以在燈、空調(diào)、熱水器、窗簾等家電上加入傳感器以及自動控制芯片,使它們根據(jù)環(huán)境的變化完成不同的操作,解放雙手。作為家居產(chǎn)品,不可能使用PC或者手機那樣體積大且價格較高的CPU,本設(shè)計主控制器用的是MCS-51單片機,這種超小型化的單片機,具有體積小、價格低和RAM、ROM、I/O接口等資源齊全的顯著優(yōu)點[1];使用DS18B20芯片作為溫度獲取傳感器。當(dāng)用戶不想動手或者由于其他原因騰不出手去控制設(shè)備時,讓風(fēng)扇根據(jù)溫度自動調(diào)節(jié)轉(zhuǎn)速,這是手動模式;而當(dāng)用戶對當(dāng)前自動風(fēng)速不滿意時,可以通過APP來控制,這是手動模式。手機與單片機間通信有兩種常見的方式:藍(lán)牙(如HC-05芯片)和WIFI(如ESP8266芯片)。對于使用ESP8266,可以在局域網(wǎng)內(nèi)通訊或者非同一局域網(wǎng)通訊,但缺點是在與單片機連接時,會切斷正常使用的WIFI,影響正在使用的APP尤其是即時通訊類APP的信息接收與發(fā)送,藍(lán)牙芯片及藍(lán)牙功能存在于手機并且多數(shù)情況下處在閑置的狀態(tài),又因為藍(lán)牙芯片價格低廉,本設(shè)計使用了藍(lán)牙通信方式。方案流程圖整體設(shè)計流程如圖1.1所示:DDS18B20初始化手動模式DS18B20手動模式DS18B20初始化初始化APP控制APP控制自動模式傳感器控制 模式判斷自動模式傳感器控制圖1.1方案流程圖開發(fā)工具(軟件)簡介KeilμVision52013年,美國的KeilSoftware公司設(shè)計并且面向全球硬件開發(fā)者發(fā)布了KeilμVision5軟件,KeilμVision軟件是51型單片機開發(fā)工具,并且用戶在進(jìn)行硬件開發(fā)時可以使用C語言,非常方便,Keil被國內(nèi)80%以上電子工程師所使用,現(xiàn)如今在大學(xué)校內(nèi)仍是主流的硬件開發(fā)工具。官網(wǎng):/官網(wǎng)首頁如圖2.1所示:圖2.1Keil官網(wǎng)AndroidStudioAndroidStudio是美國Google公司推出的安卓集成開發(fā)工具,運行速度快,安裝簡單,可以自動下載程序開發(fā)時所要用到的環(huán)境依賴包,并且提供了強大的UI界面,能夠?qū)崟r展示頁面布局,對新手友好。官網(wǎng):/studio/AndroidStudio開發(fā)工具主頁面如圖2.2所示:圖2.2AndroidStudio主頁面圖

硬件介紹STC89C52RC單片機STC89C52RCMCU介紹STC89C52MCU價格低、功耗低,抗干擾性與抗靜電能力強,并且可靠性高,單片機具有40個管腳,且有32個I/O管腳,供單片機與外部設(shè)備連接、數(shù)據(jù)交換使用。MCS-51單片機由英特爾設(shè)計,著名半導(dǎo)體公司TI、Atmel、NXP以及國內(nèi)的宏晶公司仍在生產(chǎn)基于51內(nèi)核結(jié)構(gòu)多種類型的單片機[2]。MCS-51單片機中采用CHMOS工藝生產(chǎn)的單片機在命名編號中加C來區(qū)分,如80C51。單片機與DIP封裝示意圖如下:圖3.1單片機與DIP封裝示意圖使用方法正極VCC與負(fù)極VSS管腳分別是40、20,分布在單片機的兩個對角位置,將其接規(guī)定電源即可供電。為了防止程序跑飛無法恢復(fù)需要將復(fù)位按鍵接入到9號腳,還需有晶振提供時鐘,晶振兩端分別接到19、20號腳。單片機必須執(zhí)行特定的程序才能實現(xiàn)用戶的要求,因此HEX文件燒錄軟件也是必不可少的,通常廠商會提供燒錄軟件以及連接電腦用到的驅(qū)動程序。DS18B20溫度傳感器DS18B20溫度傳感器介紹硬件開發(fā)時常用的溫度傳感器是DS18B20晶片,此元件硬件接口極其簡單,并且精度很高,只有兩條電源線以及一條數(shù)據(jù)線,但是硬件的簡單帶來了使用復(fù)雜的問題。通過“1-Wire”協(xié)議可以只使用一條數(shù)據(jù)線實現(xiàn)單片機與溫度傳感器的半雙工雙向通信功能,可與此傳感器通信以讀取溫度。因為不管是讀還是寫操作都是在同一條線上傳遞信息,所以對時間要求非常嚴(yán)格。使用方法初始化,檢測傳感器是否存在單片機首先拉高數(shù)據(jù)線電平,做好準(zhǔn)備,稍微延時后就將電平拉低,將低電平狀態(tài)維持550微秒左右,然后拉高,此時就會產(chǎn)生一個上升沿脈沖,如果傳感器檢測到此脈沖,它將會在15至60微秒后產(chǎn)生低電平信號回應(yīng),此時需要將單片機IO口狀態(tài)調(diào)整為讀取,如果讀到了此回應(yīng),說明傳感器存在,也就是初始化成功,初始化時序圖如圖3.2所示。圖3.2初始化時序初始化模塊源碼[3]: unsignedintDS18B20_Init(void){ unsignedintstate=0; DS1=1;//做好準(zhǔn)備 DS18B20_Delay(10);//稍做延時 DS1=0;//拉低DS18B20數(shù)據(jù)線 DS18B20_Delay(80);//保持 DS1=1;//釋放 DS18B20_Delay(15);//稍做延時 state=DS1; //state值為"0"代表初始化成功,否則失敗DS18B20_Delay(20); return(~state);}DS18B20的寫數(shù)據(jù)操作寫數(shù)據(jù)也是通過一個特定的時序來完成的,當(dāng)傳感器感知到對應(yīng)時序,就會寫入1或0。首先單片機將數(shù)據(jù)線拉低并且持續(xù)1微秒以上,產(chǎn)生一個寫數(shù)據(jù)信號,寫一個字節(jié)的周期在60微秒到120微秒之間,如果需要寫入1,就在1微秒后拉高電平,如果是寫0就保持低電平不動,一直持續(xù)到本周期結(jié)束。寫入模塊源碼局部:for(i=8;i>0;i--) { DS1=0; DS1=dat2&0x01; DS18B20_Delay(5); DS1=1; dat2>>=1; }DS18B20的讀數(shù)據(jù)操作:讀數(shù)據(jù)與寫數(shù)據(jù)非常相似,只是收發(fā)數(shù)據(jù)的主體交換,仍然是主機將數(shù)據(jù)線拉低1微秒后釋放,傳感器感知到此讀取信號后就開始發(fā)送數(shù)據(jù),若要發(fā)送0就持續(xù)將數(shù)據(jù)線拉低,若要發(fā)送1就持續(xù)拉高數(shù)據(jù)線直到此周期結(jié)束。然后單片機在15微秒內(nèi)讀取數(shù)據(jù)。讀取模塊源碼局部:for(i=8;i>0;i--) { DS1=0;//信號 dat1>>=1; DS1=1;//信號 if(DS1)dat1|=0x80; DS18B20_Delay(5); } returndat1;LCD1602液晶顯示模塊LCD1602液晶顯示模塊介紹LCD1602是2x16字符型液晶顯示模塊,可以顯示兩行,每行16個字符,采用5x7點陣顯示[4],1602的控制器大部分為HD44780驅(qū)動芯片。此模塊分為不帶和帶字庫兩種,帶字庫的偏厚一些。使用時首先設(shè)置要顯示的坐標(biāo),再設(shè)置要顯示的內(nèi)容,即可顯示用戶想要的字符。1602液晶主要參數(shù)如下表:顯示容量16x2個字符芯片工作電壓4.5~5.5V字符尺寸2.0mA(5.0V)模塊最佳工作電壓5.0V字符尺寸2.95x4.35mm(寬乘高)表3.11602液晶主要參數(shù)LCD1602液晶顯示模塊引腳說明如下表:編號符號功能編號符號功能1VSS電源地6E使能2VDD電源正極7~14Di數(shù)據(jù)3VL液晶顯示偏壓15BLA背光正極4RS數(shù)據(jù)命令選擇16BLK背光負(fù)極5R/W讀寫選擇表3.2LCD1602液晶顯示模塊引腳說明如果在使用中,所有邏輯都正確但是不顯示字符,應(yīng)該檢查VL腳,這一腳控制背景光,應(yīng)該將所連電阻分別劃到最大值或者最小值檢查是否可以正常顯示,接線圖如下:圖3.3LCD接線圖使用方法開始LCD初始化延時設(shè)置第i行開始LCD初始化延時設(shè)置第i行顯示位置設(shè)置第i行顯示數(shù)據(jù)圖3.4LCD1602使用方法流程圖LCD1602液晶寫入字符程序:voidLCD_Write_Char(unsignedchara,unsignedcharb,unsignedcharData){ if(b==0) { LCD1602_Write_Com(0x80+a); } else { LCD1602_Write_Com(0xC0+a); } LCD1602_Write_Data(Data);}HC-06藍(lán)牙模塊HC-06藍(lán)牙模塊介紹常見且使用較為廣泛的藍(lán)牙模塊有HC-06與HC-05,它們都是藍(lán)牙串口模塊,HC-05更貴一些,功能也更多一些,它可以作為主機向從機發(fā)送指令,也可以作為從機接收主機的指令。對于HC-06僅僅有從機模式。此模塊板載PCB天線,空曠的環(huán)境下能達(dá)到10米通信距離甚至能超過10米。HC-06模塊的第24腳LED燈常量代表配對成功。使用方法給模塊供電但不對它進(jìn)行連接會自動進(jìn)去AT模式,可以通過專用數(shù)據(jù)線向它發(fā)送指令修改名字和密碼,AT模式常用指令與功能如下:指令返回功能ATOK確認(rèn)連接AT+VERSIONOKlinvorV1.8查看版本AT+NAMExxxxOKsetname設(shè)置藍(lán)牙名稱AT+PINxxxxOKsetPIN設(shè)定密碼AT+BAUD1OK1200波特率設(shè)為1200AT+BAUD2OK2400波特率設(shè)為2400AT+BAUD3OK4800波特率設(shè)為4800AT+BAUD4OK9600波特率設(shè)為9600AT+BAUD5OK19200波特率設(shè)為19200AT+BAUD6OK38400波特率設(shè)為38400AT+BAUD7OK57600波特率設(shè)為57600AT+BAUD8OK115200波特率設(shè)為115200表3.3藍(lán)牙模塊AT模式常用指令與功能APP實現(xiàn)通訊見本文5.3節(jié)藍(lán)牙模塊使用方法。色環(huán)電阻色環(huán)電阻介紹及分辨方法色環(huán)電阻是在封裝時涂上一層帶有顏色材料的電阻,用戶可以根據(jù)色環(huán)的顏色快速并且方便的讀出阻值,色環(huán)電阻阻值較大,在高度集成的電路中不適用,但是用在本設(shè)計中完全沒有問題。對于四環(huán)電阻:前兩個色環(huán)按照以下數(shù)值對應(yīng)關(guān)系讀數(shù):第3環(huán)表示10的冪數(shù),最后一環(huán)代表誤差。誤差環(huán)通常是金色、銀色、棕色之一,金色誤差為百分之五,銀色誤差為百分之十,棕色誤差為百分之一,無色的誤差為百分之二十,軍用精密電阻誤差環(huán)用綠色表示。色環(huán)顏色對應(yīng)的誤差如下:例:綠紅黃銀即:52*104=520KΩ誤差10%。對于五環(huán)電阻:前三環(huán)表示數(shù)字,按照1中的對照關(guān)系讀數(shù),第四第五環(huán)同上。三環(huán)電阻誤差是20%(無色)。

電路設(shè)計原理總體概括總體電路圖如圖3.7所示圖3.7總體電路圖本設(shè)計以單片機作為核心,并設(shè)計了interrupt1定時器中斷與interrupt4串口中斷,在選擇手動模式時,串口中斷服務(wù)函數(shù)實時檢測藍(lán)牙模塊傳遞過來的數(shù)據(jù),在本設(shè)計中,分別以APP通過藍(lán)牙串口向單片機發(fā)送a、b、c、d、e、f六個字母代表手動模式、自動模式、風(fēng)扇加速、減速、風(fēng)扇關(guān)、開六個狀態(tài),檢測函數(shù)源碼如下:/*串口服務(wù)函數(shù)*/voidtime()interrupt4{ if(RI) { RI=0; switch(SBUF) { case'a':Ctrl_Mode=0;set=0;break;//手動 case'b':Ctrl_Mode=1;set=0;break;//自動 case'c':set++;break; case'd':set--;break; case'e':set=0;break; case'f':set=10;break; } } } 風(fēng)扇轉(zhuǎn)速由定時器中斷服務(wù)函數(shù)來控制,沒有專門編寫PWM脈寬調(diào)制函數(shù),本設(shè)計共設(shè)定了6個檔位,0檔位停止即關(guān)閉檔,并且可以使用APP中的加速、減速按鈕來調(diào)節(jié)檔位。在自動模式中,若判斷為溫度小于10℃,則自動調(diào)為0檔位且風(fēng)扇停止,大于等于10攝氏度且小于15攝氏度時為1檔,以此每增加5攝氏度增加一個檔位。風(fēng)扇風(fēng)速調(diào)節(jié)的原理是:設(shè)定一個參考值比如10,定義一個初值為零的unsignedchar型變量count,在定時器中斷服務(wù)函數(shù)中,比較count與檔位(比如3檔)的大小,若相等則風(fēng)扇停止,之后count進(jìn)行一次自增再與10進(jìn)行比較,若count增到與10相等則打開風(fēng)扇同時對count賦0值,這樣使得變量count在0到檔位(比如3檔)之間是開啟狀態(tài),檔位到10之間是關(guān)閉狀態(tài),因此檔位越高風(fēng)速越快。代碼如下:voidtimer()interrupt1{ TH0=(65536-1000)/256; TL0=(65536-1000)%256; if(count==set) {Fan1=1; } count++; if(count==refer) { count=0; if(set!=0) Fan1=0; }}單片機最小系統(tǒng)[5]電源:為MCU提供能量。晶振電路:由晶振與電容組成,在程序運行中要有先后順序,還需要有計時程序,因此晶振電路來提供此服務(wù)。復(fù)位電路:當(dāng)單片機開機時,要進(jìn)行一個初始化過程,這屬于上電復(fù)位;當(dāng)單片機受不明因素跑飛時,需要一個按鍵,按一下此按鈕以使單片機重新運行,本設(shè)計將會使用一個四角按鍵作為復(fù)位按鈕;往往單片機還有自動復(fù)位機制。風(fēng)扇電路風(fēng)扇電路如下圖所示,為了方便連接,本設(shè)計使用了USB-A口插針式的風(fēng)扇,USB-A端口共四條電纜,分別是電源正、電源負(fù)、以及兩條數(shù)據(jù)線,本設(shè)計只使用兩條電源線即可。端口母座的負(fù)極已經(jīng)接好,對于正極,為了避免單片機IO口供電能力不足的問題,采用了一個由PNP三極管構(gòu)成的簡易電路來實現(xiàn),電路圖如下:圖3.8風(fēng)扇電路PNP晶體管是半導(dǎo)體基本元器件中比較重要的,有放大,飽和,截止三種工作情形,以下圖為例,晶體管經(jīng)過一個1K的限壓電阻接到單片機上(本設(shè)計接到了P2.0口上),發(fā)射極已經(jīng)接到電源,集電極接到了風(fēng)扇接口母座的電源正極接線端,如果單片機P2.0口給出高電平信號“1”時,此時發(fā)射極與基極之間沒有壓降,晶體管就不會導(dǎo)通,風(fēng)扇母座正極這條線路可以看做是開路的因此風(fēng)扇不會工作,如果單片機P2.0口給出低電平,那么將產(chǎn)生壓降,并且晶體管處于導(dǎo)通狀態(tài),風(fēng)扇可以正常工作。其他電路為了設(shè)計需要,還設(shè)計了一些其它的電路,比如用來指示工作狀態(tài)(手動模式與自動模式)的LED燈電路,它們連接到了MCU的P2.1口與P2.2口;還有為使用DS18B20傳感器而設(shè)計的電路,它的數(shù)據(jù)線引腳連接到了MCU的P1.3口;為了方便供電,還設(shè)計了電源電路等。

APP與藍(lán)牙通訊APP調(diào)試工具在進(jìn)行Android開發(fā)時,一定會遇到程序調(diào)試問題,本設(shè)計在安卓程序設(shè)計中使用逍遙模擬器進(jìn)行程序調(diào)試,在開發(fā)完成之后再將程序安裝在手機,這樣可以避免程序設(shè)計錯誤對手機帶來的不良影響,并且模擬器直接安裝在PC機上,更加方便。除此之外,AndroidStudio官方也提供了模擬器,但是運行比較緩慢,本設(shè)計沒有使用。權(quán)限隨著用戶對隱私越來越重視,應(yīng)用程序如果要使用一些硬件設(shè)備,必須要申請權(quán)限,防止信息泄露,使用藍(lán)牙要申請如下:BLUETOOTHBLUETOOTH_ADMINACCESS_COARSE_LOCATION在安卓6.0以前的版本中,只需要申請前兩者,在“Manifest”文件中申請即可;在6.0以后的版本中,需要在手機開啟位置服務(wù)的前提下動態(tài)申請,需要加如下權(quán)限:<uses-permission-sdk-23android:name="android.permission.ACCESS_COARSE_LOCATION"/>布局主頁面在進(jìn)行頁面布局開發(fā)時,可以將工程切換成Project視圖,找到.xml文件,并將工作區(qū)選為Spilt結(jié)構(gòu),同時顯示代碼與視圖元素,這樣非常方便。主頁面圖如圖4.1所示,可以看到在主頁面中分為五部分:實時溫度顯示部分,工作模式選擇部分,手動模式參數(shù)設(shè)置部分,以及l(fā)ogo、查找設(shè)備。用戶打開APP進(jìn)入此頁面,此時可以看到實時溫度,并根據(jù)需要選擇工作模式,并可以手動調(diào)節(jié)速度。圖4.1APP主頁面圖圖4.2APP搜索藍(lán)牙設(shè)備頁面設(shè)備列表頁面當(dāng)用戶點擊主頁面中的連接設(shè)備按鈕后,會跳出窗口形式的頁面,如上圖4.2所示,點擊搜索設(shè)備,后臺會搜索周圍藍(lán)牙設(shè)備,并把新搜索到的設(shè)備顯示在左列,已配對過的設(shè)備顯示在右列,共用戶選擇。藍(lán)牙模塊使用方法流程概括:首先判斷設(shè)備是否支持藍(lán)牙,若不支持,拋出提示信息并結(jié)束,若支持,則下一步檢查藍(lán)牙功能是否處于開啟狀態(tài),如果未開啟,提示用戶打開藍(lán)牙開關(guān),待藍(lán)牙打開后,需要搜索設(shè)備,搜索設(shè)備時分別可以搜索到已連接過、未連接過的設(shè)備,如果搜索到設(shè)備,系統(tǒng)會以廣播的方式將信息傳給APP,因此要注冊廣播接收器,到搜索結(jié)束時銷毀,在實際邏輯中,搜索到設(shè)備后需要用戶進(jìn)行選擇,因此在搜索前需要創(chuàng)建設(shè)備顯示頁面和取消搜索按鈕,用戶選擇設(shè)備后建立連接通信,發(fā)送數(shù)據(jù)。判斷開啟狀態(tài)并跳轉(zhuǎn)的方法:publicvoidonClick(Viewv){ if(wfu_bluetooth.isEnabled()==false){//未開啟,則提示 Toast.makeText(BTClient.this,"請打開藍(lán)牙開關(guān)...",Toast.LENGTH_LONG).show(); return; } /*跳轉(zhuǎn)到DeviceListActivity進(jìn)行搜索*/ if(wfu_socket==null){ IntentserverIntent=newIntent(BTClient.this,DeviceListActivity.class); startActivityForResult(serverIntent,REQUEST_CONNECT_DEVICE); } else{ /*關(guān)閉連接socket*/ try{ Data_in.close(); wfu_socket.close(); wfu_socket=null; Flag=false; }catch(IOExceptione){} } return; }查找與搜索設(shè)備方法局部:publicvoidonReceive(Contextcontext,Intentintent){

Stringaction=intent.getAction();

StringNoDevice="沒有找到";

if(BluetoothDevice.ACTION_FOUND.equals(action)){

BluetoothDevicedevice=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

if(device.getBondState()!=BluetoothDevice.BOND_BONDED){

WFUDeviceAdapter.add(device.getName()+"\n"+device.getAddress());

}else{

mPairedDevicesArrayAdapter.add(device.getName()+"\n"+device.getAddress());

}

}elseif(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){

setProgressBarIndeterminateVisibility(false);

setTitle("請選擇:");

if(WFUDeviceAdapter.getCount()==0){

WFUDeviceAdapter.add(NoDevice);

}

}

}

調(diào)試本設(shè)計調(diào)試使用的是普中科技試驗儀HC6800-EM3V2.2版本,在試驗儀中,LCD1602的RD、WR、LCDE引腳已經(jīng)接好到P26、P25、P27腳,數(shù)據(jù)線已經(jīng)接好到P0口,溫度數(shù)據(jù)線接好到P37口,因此在調(diào)試時要修改源代碼中的引腳對應(yīng)關(guān)系以匹配試驗儀中的真實電路。測試時,對P1.1口賦值為“1”產(chǎn)生高電平作為5V電源使用,以LED燈代表風(fēng)扇,接入到電路中可以看到在檔位變化時,LED燈有輕微閃爍,并且LCD數(shù)字有變化,符合實驗時房間溫度正常值,代表風(fēng)扇調(diào)速功能正常以及顯示功能正常,另一顆LED燈接入到自動模式指示電路,可以看到LED燈亮,指示電路沒有問題。藍(lán)牙模塊測試將在手機上調(diào)試。圖6.1單片機實驗箱調(diào)試圖

總結(jié)本次設(shè)計以51單片機為“大腦”,輔以所需的電路部分,在實現(xiàn)必要功能的基礎(chǔ)上做到了低成本,在價格上具有可行性,并且設(shè)計的功能合理,符合需求,在設(shè)計邏輯上也可行。單片機電流驅(qū)動能力較小,因此多數(shù)將元器件負(fù)極接到單片機。在設(shè)計程序時,需要仔細(xì)思考程序執(zhí)行流程邏輯,例如,隨著加速按鈕的點擊,set的值不斷增加,但它不可能會超過參考值,因此要想修改風(fēng)扇調(diào)節(jié)精度,就需要多方面思考,還有一些延遲程序,在數(shù)據(jù)交換時要求非常精確,需要嚴(yán)格控制,在Android程序設(shè)計方面,比如用戶點擊搜索時,可能系統(tǒng)并未打開藍(lán)牙開關(guān),此時需要有提示,否則用戶會認(rèn)為按鍵失靈。在硬件設(shè)計方面,需要注意元件的工作電壓,防止供電不足而無法工作的現(xiàn)象,也要兼顧電流太大會擊穿元器件的問題,作為一個長期通電的系統(tǒng),散熱是設(shè)計中非常重要的一項,如果散熱效果差,又長期運行,極有可能會燒毀電路引起火災(zāi)。這次設(shè)計過程中,所用到知識都可以在大學(xué)課程中找到,通過這次設(shè)計,更加深刻理解了單片機的工作原理,各種中斷的機制,也更加熟悉了模擬電路的部分內(nèi)容,對于Android程序設(shè)計,學(xué)到了更多環(huán)境配置的知識與糾錯的本領(lǐng)。

參考文獻(xiàn)[1]曹建樹.單片機原理與應(yīng)用實例[M].北京:機械工業(yè)出版社,2014年.[2]毋茂盛.單片機原理與開發(fā)[M].北京:高等教育出版社,2015.2.[3]王冬星,許有軍.單片機技術(shù)及51仿真與應(yīng)用[M].北京:北京理工大學(xué)出版社,2015.2.[4]謝維成,楊加國.單元機原理與應(yīng)用及C51程序設(shè)計[M].北京:清華大學(xué)出版社,2020年.[5]宋雪松,李冬明,崔長勝.手把手教你學(xué)51單片機[M].北京:清華大學(xué)出版社,2014年.

附錄單片機主程序#include<reg52.h>#include<intrins.h>//晶振:11.0592MhzsbitDS1=P1^3; //傳感器引腳sbitFan1=P2^2;//風(fēng)扇引腳sbitRS=P2^6;//LCD1602液晶控制腳sbitRW=P2^5;sbitLCDE=P2^7;bitCtrl_Mode=0; //控制模式sbitAutoModeLed=P2^0;//自動模式LED燈引腳sbitManualModeLed=P2^1;//手動模式LED燈引腳unsignedinta=0;uns

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論