單片機課程設計報告智能電風煽_第1頁
單片機課程設計報告智能電風煽_第2頁
單片機課程設計報告智能電風煽_第3頁
單片機課程設計報告智能電風煽_第4頁
單片機課程設計報告智能電風煽_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課題名稱 智能電風煽 專 業(yè) 電子信息工程 班 級 學生姓名 學 號 指導老師 _ _ 摘 要本設計以80c52單片機作為智能電風扇控制系統(tǒng)的測量和控制核心。采用霍爾集成芯片測量電風扇的轉(zhuǎn)速,pwm脈寬調(diào)制技術控制電機的轉(zhuǎn)速,用ds18b20溫度傳感器來完成溫度的采集,單片機通過串行通信來完成電風扇轉(zhuǎn)速數(shù)據(jù)處理及轉(zhuǎn)速控制,用液晶12864lcd顯示來實現(xiàn)人機交互,采用紅外遙控與接收裝置來完成遙控功能。該系統(tǒng)風速調(diào)節(jié)范圍寬、精度高且風的舒適度良好、使用起來非常方便。關鍵字:電風扇、單片機、lcd、無線遙控、ds18b20目 錄一、題目的意義及功能要求.二、系統(tǒng)框架設計.三、硬件電路設計及描述四

2、、軟件流程及描述.五、源代碼六、測試與分析.七、設計體會與總結(jié).一、 題目意義及功能要求作為一種老式家電,電風扇具有價格便宜、擺放方便、體積輕巧等特點。由于大部分家庭消費水平的限制,電風扇作為一個成熟的家電行業(yè)的一員,尤其在中小城市,以及鄉(xiāng)村將來一段時間內(nèi)仍然會占有市場的大部分份額。 面臨龐大的市場需要的同時,也要提高電風扇的市場競爭力。使之在技術含量上有所提高,應使風扇不僅功能多樣,操作簡便,而且更加安全可靠。 本設計主要目標是使普通的電風扇的功能更加強大,使操作簡單化、智能化,主要實現(xiàn)以下幾個部分的功能:1 溫度智控功能:風扇可以感知環(huán)境的溫度,以調(diào)節(jié)風扇的轉(zhuǎn)速,達到更好的工作效果。用戶可

3、以選擇這種智能調(diào)速方式,也可以選擇手動設定方式來控制轉(zhuǎn)速。當選擇手動設定方式時,該功能不發(fā)揮作用。2多級調(diào)速功能:提供更多的風力級別和風型,提高用戶的舒適度。3液晶顯示功能:使用液晶屏顯示當前室溫,風扇的轉(zhuǎn)速,風扇的工作模式,當前時間,風扇工作時間等參數(shù),美觀大方。4紅外遙控功能:提供遠距離非接觸式的風扇控制操作。二、 系統(tǒng)框架設計1、方案比較a、風速轉(zhuǎn)速測量方案一:采用脈沖調(diào)制的紅外發(fā)射接收器。通過在電風扇一邊用紅外管發(fā)射脈沖信號,另一邊接收信號,在脈沖被擋和通過的情況下,接收端分別對應低電平和脈沖串,可檢出此信號的包絡,其頻率的三分之一即相當于單位時間內(nèi)接收到信號的次數(shù),也即電風扇的轉(zhuǎn)速。

4、但此方法接收到的脈沖會產(chǎn)生抖動,容易引起誤判,從而導致處理接受信號次數(shù)出現(xiàn)較大誤差,是電風扇轉(zhuǎn)速計算不準確,故不采用此方案。方案二:采用霍爾集成傳感器?;魻柤蓚鞲衅魇菍⒒魻栐⒎糯笃?、施密特觸發(fā)器以及輸出電路集成在一塊芯片上,為用戶提供了一種簡化和較完善功能的磁敏傳感器。將磁片貼在電風扇葉上,將霍爾集成傳感器固定在扇葉前的保護架上,由于霍爾效應,每當磁片通過傳感器時,在輸出端就會產(chǎn)生一個脈沖,對該輸出脈沖計數(shù),即可測出電風扇轉(zhuǎn)速。此輸出信號明快,傳送過程中無抖動現(xiàn)象,且功耗低,對溫度的變化穩(wěn)定,靈敏度于磁場移動速度無關,用此方法測出的電風扇轉(zhuǎn)速較準確,故采用此方案。b、轉(zhuǎn)速控制轉(zhuǎn)速控制既是

5、通過控制功率來實現(xiàn)的。輸入功率大轉(zhuǎn)速快,輸入功率小轉(zhuǎn)速慢。通常調(diào)節(jié)功率的途徑有兩條:一是改變電壓波形的導通角,稱之為調(diào)相:另一個是波形不變改變其電壓波出現(xiàn)的次數(shù),常稱為脈沖調(diào)功。方案一:采用調(diào)相方式。此方法的優(yōu)點是輸出相對的連續(xù)、均勻而且調(diào)節(jié)精細。但有一個很大的缺點就是不規(guī)則的脈沖電流會引起輸出畸變及對負載產(chǎn)生干擾。方案二:采用脈沖調(diào)功方式。此方法的優(yōu)點是線性度好、抗噪性能強、輸出穩(wěn)定便于微控制器控制。通過比較分析以及綜合考慮系統(tǒng)的要求我們選擇第二種方案。c、顯示界面方案本系統(tǒng)要能夠切換顯示電風扇的轉(zhuǎn)速、當前溫度、當前擋位、工作模式等,要顯示的內(nèi)容較多。方案一:采用led顯示。led只能顯示非

6、常有限的符號和數(shù)字,對于本系統(tǒng)如此復雜的功能是難以實現(xiàn)的。方案二:采用液晶12864lcd顯示器??梢杂弥形娘@示較為清晰的內(nèi)容,界面良好、直觀。采用此方案來實現(xiàn)。d、無線控制方案一: 315無線模塊采用平衡傳輸方式,可以實現(xiàn)多點通信,遙控距離遠,但價格昂貴。方案二: rs-232是低速率串行單端標準,采取不平衡傳輸方式(即所謂單端通信),收、發(fā)端的數(shù)據(jù)信號是相對于信號地的電平而言,其共模抑制能力差,傳送距離短,其為點對點的通信方式。方案三: 紅外遙控體積小,靈敏度高,外接元件少,抗干擾能力強,使用十分方便.且價格便宜,缺點是遙控距離短,經(jīng)綜合考慮用在本系統(tǒng)上完全能夠滿足要求,所以我們選擇此方案

7、。2、系統(tǒng)總體框圖設計 圖1、系統(tǒng)總體框圖三、硬件電路設計及描述:硬件電路主要分為主控電路及顯示電路、紅外接收電路、電機驅(qū)動電路、溫度檢測電路等四個部分。相關電路可以分為如下幾個部分:3.1主控電路及顯示電路 采用stc89s52單片機作為本系統(tǒng)的核心控制部分,既充分的利用了單片機的各引腳資源基礎,又控制了成本。外加振蕩電路采用12mhz高精度的晶振,以獲得較穩(wěn)定時鐘頻率,減小測量誤差。復位電路采用按鍵電平復位電路。p0口作為液晶顯示的數(shù)據(jù)口。具體電路如下圖所示: 圖2、主控電路及顯示電路3.2紅外接收電路 紅外接收電路采取紅外接收器件hs0038,一體化紅外接收頭hs0038價格便宜,外圍電

8、路簡單,只有三個引腳,分別為電源、地、數(shù)據(jù)腳,其中數(shù)據(jù)腳與p3.2口相接,通過外部中斷接收紅外遙控信號。電路圖如下: 3.3電機驅(qū)動電路 l298是sgs公司的產(chǎn)品,可驅(qū)動2個電動機,out1,out2和out3,out4之間可分別接電動機,本實驗裝置我們選用驅(qū)動一臺電動機。5,7腳分別接單片機的p1.1和p1.2口,控制電機的正反轉(zhuǎn)。ena,enb接控制使能端,由于我們只用來驅(qū)動一個電風扇的停轉(zhuǎn)。所以用ena接單片機的p1.0口。電路圖如下所示: 圖4、電機驅(qū)動電路3.4溫度檢測電路 單線數(shù)字溫度傳感器ds18b20 采用一線總線接口,大大節(jié)省了系統(tǒng)的i/o 資源。 圖5、溫度檢測電路四、

9、軟件流程及描述智能電風煽支持手動和自動兩種工作模式,開機時默認的工作模式為自動但總開關為關,我們可以通過紅外遙控進行控制,當按下遙控器開關鍵把總開關打開時,電風扇進入自動工作模式,通過感知環(huán)境的溫度,以調(diào)節(jié)風扇的轉(zhuǎn)速,達到更好的工作效果。用戶可以選擇這種智能調(diào)速方式,也可以選擇手動設定方式來控制轉(zhuǎn)速。當選擇手動設定方式時,該功能不發(fā)揮作用。系統(tǒng)在開機的同時lcd能顯示出當前溫度、工作模式、當前擋位等,讓使用者及時了解系統(tǒng)運行前況。4.1系統(tǒng)軟件框圖 圖6、系統(tǒng)軟件框圖4.2、ds18b20測溫程序 ds18b20采用單線制數(shù)據(jù)傳輸,其內(nèi)部數(shù)據(jù)采用兩字節(jié)存儲,其中高字節(jié)的低三位和低字節(jié)為溫度數(shù)值

10、大小,高字節(jié)的高五位為符號位。單片機溫度采集程序流程圖如下圖。單片機不斷通過ds18b20獲取外界的溫度值。 ds18b20溫度采集程序流程圖五、 源代碼#include#include #define uchar unsigned char#define uint unsigned int#define lcd_data p0 / 液晶引腳定義sbit lcd_rs = p27; sbit lcd_rw = p26; sbit lcd_en = p25; sbit lcd_psb = p24; sbit dq=p16; / ds18b20引腳定義bittflag;sbit en=p10; /

11、 電機引腳定義sbit c=p11;sbit d=p12;sbit jia_key=p30;/加速鍵sbit jian_key=p31;/減速鍵sbit zongza=p34; /總控制開關sbit xuan=p36; /模式選擇按鈕uint aa=0;uchar ms=0,temp,num=0,show_num=0,gao_num=1,di_num=3;ucharcodetable=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39 ;uchar code hang1=歡迎您使用;uchar code hang2=智能電風扇;uchar cod

12、e hang3=當前溫度:;uchar code hang4=度;uchar code hang5=當前檔位:;uchar code hang6=檔;uchar code hang7=開關狀態(tài):;uchar code hang8=開;uchar code hang9=關;uchar code hang10=工作模式:;uchar code hang11=自動;uchar code hang12=手動;void delay_ms(unsigned int ms)/延時函數(shù) 1msunsigned int i,j;for(j=0;j=ms;j+)for(i=0;i=120;i+); void de

13、layus(uint t) while(t-);/*歡迎界面*void welcom(void) uchar i; lcd_wcmd(0x91);for(i=0;i10;i+) lcd_wdat(hang1i);delay_ms(100);delay_ms(100);lcd_wcmd(0x89);for(i=0;i10;i+) lcd_wdat(hang2i);delay_ms(100); delay_ms(100); delay_ms(1000); for(i=0;i2;i+)lcd_wcmd(0x08); /關顯示delay_ms(700);lcd_wcmd(0x0c); /開顯示dela

14、y_ms(700); /* ds18b20函數(shù)*void init_ds18b20(void) / 初始化ds18b20uchar n;dq=1;delayus(8);dq=0;delayus(80);dq=1;delayus(8);n=dq;delayus(4);void write_byte(uchar dat) /*寫入一個字節(jié) */uchar i;for(i=0;i=1;delayus(4); uchar read_byte(void) /讀一個字節(jié)uchar i,value;for(i=0;i=1;dq=1;if(dq) value|=0x80;delayus(4);return v

15、alue; uchar readtemperature(void)uchar a,b;uchar y1,y2,y3;init_ds18b20(); write_byte(0xcc);/跳過romwrite_byte(0x44);/啟動溫度測量delayus(300); init_ds18b20();write_byte(0xcc);/跳過romwrite_byte(0xbe); /讀溫度命令delayus(300);a=read_byte();/讀低8位b=read_byte();/讀高8位if(b&0x80)=0x80) /判斷溫度正負b=b; /負溫度處理(ds18b20的負溫度是正的a=

16、a+1;y1=a4;/降低精度(去掉小數(shù)點)y2=b4;/降低精度(去掉小數(shù)點)y2=b4; /減小測量范圍(-55c-99c)y3=y2|y1;tflag=1; return y3;/* 電機控制模塊*void su_du_zhuan_huan() /根據(jù)速度標志進行數(shù)據(jù)處理switch(num)case 0: show_num=1;/數(shù)碼管第一位顯示的數(shù)據(jù) gao_num=2;/pwm信號中高電平持續(xù)時間標志為1 di_num=6;/pwm信號中低電平持續(xù)時間標志為3, break;case 1: show_num=2;/數(shù)碼管第一位顯示的數(shù)據(jù) gao_num=4;/pwm信號中高電平持續(xù)

17、時間標志為2 di_num=4;/pwm信號中低電平持續(xù)時間標志為2 break;case 2: show_num=3;/數(shù)碼管第一位顯示的數(shù)據(jù) gao_num=6;/pwm信號中高電平持續(xù)時間標志為3 di_num=2;/pwm信號中低電平持續(xù)時間標志為1 break;case 3: show_num=4;/數(shù)碼管第一位顯示的數(shù)據(jù) gao_num=8;/pwm信號中高電平持續(xù)時間標志為4 di_num=0;/pwm信號中低電平持續(xù)時間標志為0 break;void qudong() /控制電機程序uchar i;if(di_num!=0)for(i=0;idi_num;i+)c=0; /實現(xiàn)

18、pwm信號低電平輸出display(); /利用顯示函數(shù)起延時作用,這樣也不影響數(shù)for(i=0;i38) num=3;else if(temp32) num=2;else if(temp26) num=1;else if(temp20) num=0;else en=0;/* 總開關控制*void sw(void)uchar i;if(zongza=0) delay_ms(5); /消抖if(zongza=0)aa+; while(zongza=0) ; /等待按鍵松開if(aa%2!=0) en=1;lcd_wcmd(0x8f); for(i=0;i2;i+) lcd_wdat(hang8i

19、);delay4us(); if(aa%2=0) en=0;lcd_wcmd(0x8f); for(i=0;i2;i+) lcd_wdat(hang9i);delay4us(); /* 模式選擇*void chose(void)if(xuan=0) delay_ms(5); /消抖if(xuan=0)ms+;if(ms=2) ms=0; while(zongza=0) ; /等待按鍵松開void main()/ 主函數(shù)uchar i;en=0;d=0; lcd_psb=1; / 選擇顯示模式為串行通信模式lcd_init(); /初始化液晶,清屏ddramwelcom();/歡迎界面lcd_w

20、cmd(0x01);/清屏while(1)lcd_wcmd(0x01);/清屏temp=readtemperature(); /讀取溫度delay_ms(5);sw();chose();if(ms=0)wendu();lcd_wcmd(0x9e); for(i=0;i4;i+) lcd_wdat(hang11i);delay4us(); if(ms=1)key();lcd_wcmd(0x9e); for(i=0;i4;i+) lcd_wdat(hang12i);delay4us(); su_du_zhuan_huan();qudong();display(); /送12864顯示delay_ms(5); clear_gdram();六、 測試與分析1、 測試儀器示波器:tektronix tds1002萬用表:fluke 17b2、 指標測試轉(zhuǎn)速測量轉(zhuǎn)速設定值 轉(zhuǎn)/分鐘實測轉(zhuǎn)速平均值轉(zhuǎn)速跳變值9008901017001678122500248317330032792141004064

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論