基于STC89c52RC單片機的智能風扇設計_第1頁
基于STC89c52RC單片機的智能風扇設計_第2頁
基于STC89c52RC單片機的智能風扇設計_第3頁
基于STC89c52RC單片機的智能風扇設計_第4頁
基于STC89c52RC單片機的智能風扇設計_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、光電信息協(xié)會電子設計競賽鐘培文小組基于stc89c52rc單片機的智能風扇設計鐘培文小組重慶大學 光電信息協(xié)會電子設計競賽2014年6月10日目錄摘要3abstract4一.總體方案和功能設計51.1 功能詳細描述51.2設計思路6二.詳細電路設計72.1電機調(diào)速電路72.2按鍵檢測和led指示82.3蜂鳴器模塊92.4 lcd1602顯示部分92.5紅外接收模塊10第三節(jié).系統(tǒng)軟件設計113.1主程序流程圖113.2速度選擇程序框圖123.3模式選擇框圖123.4定時器0程序框圖133.5定時器1程序框圖133.6定時功能框圖143.7lcd顯示框圖14結束語15附錄1:源程序16附錄2:實

2、物照片35摘要本小組選擇的題目為d題“智能風扇設計”,實際完成了所有題設要求部分,以及具有實用的創(chuàng)意設計。本文介紹了一臺以stc89c52為控制核心,集調(diào)速,多模式,定時,液晶顯示,紅外遙控功能一體的智能風扇控制器設計過程。將傳統(tǒng)的風扇用單片機來控制后極大增加了其智能化和實用化,同時也增強了功能性。關鍵字: stc89c52單片機 , 智能風扇abstractour team chosethe subjectdcalled intelligentfan design, and we have achieved allthe requirementsin this subject. beside

3、s, we add our own ideas and creativity to make our design more functional.this report mainly introduces that we use thestc89c52as the central controller, to design a intelligent fun integrated with speed setting, multi-mode, timer, lcd display and infraredremote control. after usingthe mcuto control

4、 thetraditional fan, we have greatlyimproved itsintelligence ,practicability,and also, thefunctionality.keywords: stc89c52 single chip microcomputer intelligent fan一總體方案和功能設計1.1功能詳細描述本設計以stc89c52單片機為控制核心,通過pwm控制直流電機3檔調(diào)速,通過定時器實現(xiàn)對風扇3種模式的模擬,外部按鍵檢測輸入或者紅外遙控輸入指令,led指示風扇速度和模式,lcd1602同步顯示風扇速度(s),模式(m),提供定時功

5、能,蜂鳴器按鍵發(fā)聲。功能詳細描述:1、 控制器面板為:按鈕5個,分別為風速、類型、停止、定時選時、啟動定時,led指示燈六個,指示風速強、中、弱,類型為睡眠、自然和正常。2、 電扇處于停轉狀態(tài)時,所有指示燈不亮,只有按下“風速”鍵時,才會響應,進入起始工作狀態(tài);電扇在任何狀態(tài),只要按停止鍵,則進入停轉狀態(tài)。3、 處于工作狀態(tài)時,有:初始狀態(tài)為:風速-“弱”,類型-“正?!?;按“風速”鍵,其狀態(tài)由“弱” “中” “強” “弱” 往復循環(huán)改變,每按一下按鍵改變一次;按“類型”鍵,其狀態(tài)由“正?!?“睡眠” “自然” “正?!?往復循環(huán)改變;4、 風速的弱、中、強對應于電扇的轉動由慢到快。 類型的不

6、同選擇,分別為:正常 電扇連續(xù)運轉;自然 電扇模擬自然風,即轉4s,停8s;睡眠 電扇慢轉,產(chǎn)生輕柔的微風,運轉 8s,停轉8s;5、紅外遙控器按鍵1到5分別對應按鍵1到5。按鍵1為調(diào)速,按鍵2為調(diào)整模式,按鍵3為停止,按鍵4為定時選時,按鍵5為啟動定時(重復按鍵會取消定時)。6、當按鍵被按下或者接收到紅外指令時蜂鳴器發(fā)聲。7、lcd1602同步顯示。當系統(tǒng)關閉時顯示“welcome!”,系統(tǒng)啟動后顯示“system run!”8、定時功能,提供10s(測試),30分鐘,1小時,2小時,3小時定時功能1.2設計思路整體電路采用模塊化設計制作,整體框圖如下:按鍵輸入stc89c52led顯示pw

7、m電機uln2003驅動lcd1602外部中斷0蜂鳴器紅外輸入uln2003驅動usb to ttl外接5v 1a供電二詳細電路設計2.1電機調(diào)速電路電機調(diào)速是整個控制裝置中的一個相當重要的方面。對于電機的轉速調(diào)整,我們是采用脈寬調(diào)制(pwm)辦法,控制電機的時候,電源并非連續(xù)地向電機供電,而是在一個特定的頻率下以方波脈沖的形式提供電能。不同占空比的方波信號能對電機起到調(diào)速作用,這是因為電機實際上是一個大電感,它有阻礙輸入電流和電壓突變的能力,因此脈沖輸入信號被平均分配到作用時間上,這樣,改變輸入方波的占空比就能改變加在電機兩端的電壓大小,從而改變了轉速。通過控制pwm輸出占空比控制輸出,可以

8、實現(xiàn)對電機的無極調(diào)速。2.2按鍵檢測和led指示設計中用到的按鍵數(shù)目不多,所以可以直接用stc89c51的通用io端口且選用syc89c51的p1口(內(nèi)部有上拉電阻)作為按鍵掃描接口。對于按鍵只需一端接地另一接p1口即可。led選用共陽接法,對應于p2.0至p2.52.3蜂鳴器模塊蜂鳴器工作原理簡介:當控制端口通以不同頻率及不同占空比的信號時蜂鳴器將發(fā)出不同強度及不同頻率的聲音。由于其具有比傳統(tǒng)的喇叭體積小格低等優(yōu)點,所以此次提示音電路選用蜂鳴器。具體電路見下圖:2.4 lcd1602顯示部分通過1602同步顯示各參數(shù)。采用p0口8位并行數(shù)據(jù)傳輸,液晶屏對比度加入電位器可調(diào)。2.5紅外接收模塊

9、外接收電路通常被廠家集成在一個元件中,成為一體化紅外接收頭。 內(nèi)部電路包括紅外監(jiān)測二極管,放大器,限幅器,帶通濾波器,積分電路,比較器等。紅外監(jiān)測二極管監(jiān)測到紅外信號,然后把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平,而不論紅外發(fā)射器和接收器的距離遠近。交流 信號進入帶通濾波器,帶通濾波器可以通過30khz到60khz的負載波,通過解調(diào)電路和積分電路進入比較器,比較器輸出 高低電平,還原出發(fā)射端的信號波形。注意輸出的高低電平和發(fā)射端是反相的,這樣的目的是為了提高接收的靈敏度。三系統(tǒng)軟件設計3.1主程序流程圖3.2速度選擇程序框圖3.3模式選擇框圖3.4定時器0程序框圖3.5定時器

10、1程序框圖3.6定時功能框圖3.7lcd顯示框圖結束語首先,通過這次應用系統(tǒng)設計,在很大程度上提高了自己的獨立思考能力和團隊協(xié)作能力以及單片機的專業(yè)知識,也深刻了解制作電路的步驟和方法,有過這樣的一次訓練,相信在接下來的日子我們都會了,而且會做得更好。我所寫的系統(tǒng)主要根據(jù)競賽題目要求,采用了單片機控制自動化的結構形式,實現(xiàn)對電風扇轉速的自動控制。系統(tǒng)以單片機stc89c52為核心部件,單片機系統(tǒng)完成對外界輸入采集、處理、顯示等功能;由protues軟件繪制電路圖并進行仿真測試,利用c語言編制,運行程序該系統(tǒng)的主要特點是:l 適用性強,用戶只需對界面參數(shù)進行設置并啟動系統(tǒng)正常運行便可實現(xiàn)傳統(tǒng)風扇

11、各種功能。l 系統(tǒng)成本低廉,操作非常簡單方便,隨時可以根據(jù)軟件編寫新的功能加入產(chǎn)品。操作界面可擴展性強,只要稍加改變,即可增加其他按鍵的使用功能。l 具有非常強的使用價值。附錄1:源程序#include#define keyport p1/按鍵掃描#define cycle 10 #define uint unsigned int#define uchar unsigned charsbit pwm = p37; /定義pwm端口sbit led1=p20;/速度1sbit led2=p21;/速度2sbit led3=p22;/速度3sbit led4=p23;/正常sbit led5=p2

12、4;/自然sbit led6=p25;/睡眠sbit dsport=p36; sbitspk=p35;/蜂鳴器sbitlcden=p26;/1602sbitlcdrs=p27;sbit ir=p32; /紅外接口/* 變量聲明區(qū) */uchar pwm_on; /定義高電平時間uchar num,num2,key,beep_time,time3; /定時器1計時uint time1,time2; /tim是定時的時間,單位秒,為60的倍數(shù)uchartiming_flag=0;uinttim=0; /定時時間bit run_flag,r_flag,timing_run,timing_on,tim

13、ing_r=1;/啟動標志bit mode2_flag=0,mode3_flag=0,beep_on;bit p;/pwm開關uchari=0,j=0,a;/速度和模式切換標志unsigned char irtime; /紅外用全局變量bitirpro_ok,irok;unsigned char ircord4;unsigned char irdata33;uchar code table_1=welcome! ;uchar code table_21=s: ;uchar code table_22=m: ;/* 變量聲明區(qū) */* 函數(shù)聲明區(qū)*/unsigned char keyscan(v

14、oid); /鍵盤掃描voiddelayus(uint t);void delayms(uint t); /us延遲void init_timer(void);/定時器初始化voidinit_all(void);void run(void);void start(void);void stop(void);voidchange_speed(void);voidchange_mode(void);void led(uchari,uchar j);voidfan_normal(void);voidfan_natural(void);voidfan_sleep(void);voidwrite_com

15、(uchar com);voidwrite_data(uchar data);void init_1602(void);void timing(void);void display2(void);voidwrite_string(unsigned char x,unsigned char y,unsigned char *s) ;voidwrite_char(unsigned char x,unsigned char y,unsigned char data) ;void change_display2(void);voidir_work(void);voidircordpro(void);v

16、oid beep();/* 函數(shù)聲明區(qū) */void main (void) init_all();while(1)key=keyscan();if(irok) /如果接收好了進行紅外處理 ircordpro();irok=0;if(irpro_ok) /如果處理好后進行工作處理,如按對應的按/鍵后顯示對應的數(shù)字等ir_work(); switch(key)case 1: run_flag=1;beep();if(i=3)i=0;i+;start();break;case 2: beep();if(j=3)j=0;if(run_flag)+j;mode2_flag=0;mode3_flag=0

17、;break;case 3: beep();if(run_flag)stop();break;case 4: beep();if(run_flag)timing_flag+;break; case 5: beep();if(run_flag)timing_run=timing_run;timing_on=timing_on;if(timing_flag)timing();run();change_display2();if(time2=0 &timing_on)stop();void init_all(void)/全局初始化 pwm_on=0;init_timer();init_1602();

18、display2(); led(4,4);/關閉所有l(wèi)edvoid start(void)if(run_flag=1 &r_flag=0)pwm_on=2;fan_normal();j=1; i=1;led(0,1);r_flag=1;p=1;void run(void)change_speed();change_mode(); /停止系統(tǒng)void stop(void)p=0;pwm_on=0;run_flag=0;r_flag=0;init_all();i=0,j=0,a=0;mode2_flag=0;mode3_flag=0;timing_flag=0;tim=0; timing_run=

19、0;timing_on=0;write_string(11,1,off ); /速度切換voidchange_speed(void)switch(i) case 1: pwm_on=2;led(1,0);break;case 2: pwm_on=4;led(2,0);break;case 3: pwm_on=8;led(3,0);break; /模式切換voidchange_mode(void)switch(j) case 1: led(0,1);fan_normal();break;case 2: led(0,2);fan_natural();break;case 3: led(0,3);f

20、an_sleep();break; /.led控制函數(shù)void led(ucharo,uchar p)switch(o)case 0: break;case 1: led1=0;led2=1;led3=1;break;case 2: led1=1;led2=0;led3=1;break;case 3: led1=1;led2=1;led3=0;break;case 4: led1=1;led2=1;led3=1;break; switch(p)case 0: break;case 1: led4=0;led5=1;led6=1;break;case 2: led4=1;led5=0;led6=

21、1;break;case 3: led4=1;led5=1;led6=0;break;case 4: led4=1;led5=1;led6=1;break;/* 模式函數(shù)*/voidfan_normal(void) p=1;voidfan_natural(void)if(mode2_flag=0)time1=0; p=1;mode2_flag=1;if(time1=4)p=0;if(time1=12) p=1;time1=0;voidfan_sleep(void)if(mode3_flag=0)i=1;time1=0;p=1;mode3_flag=1; if(time1=8) p=0;if(t

22、ime1=16) p=1; time1=0; /* 模式函數(shù)*/voiddelayus(uint t) while(-t);voiddelayms(uint n)while(-n) delayus(245);delayus(245); /*.初始化定時器 . */voidinit_timer(void) tmod=0x11; th1=0x00; tl1=0x00; th0=(65536-50000)/256; tl0=(65536-50000)%256;irtime+; /外部中斷 ea=1; it0 = 1; /指定外部中斷0下降沿觸發(fā),int0 (p3.2) ex0 = 1; et0=1;

23、 et1=1; tr0=1; tr1=1;/*-外部中斷0初始化-*/ /定時器1pwmvoid timer1(void) interrupt 3 using 1 staticuchar count; th1=(65536-256)/256; tl1=(65536-256)%256;irtime+;time3+;if(time3=255 time3=0;if(beep_on=1)spk=!spk; if(beep_time=1)beep_on=0;if(p)if (count=pwm_on) pwm = 0; count+;if(count = cycle) count=0;if(pwm_on

24、!=0)pwm = 1; /定時器0void timer0(void) interrupt 1 th0=(65536-50000)/256; tl0=(65536-50000)%256;num+;if(num=1)beep_time=1;if(num=20) num=0;time1+;if(time2)time2-; /*. .按鍵掃描. . */unsigned char keyscan(void)unsigned char keyvalue;if(keyport!=0xff) delayms(3);if(keyport!=0xff)keyvalue=keyport;while(keypor

25、t!=0xff);switch(keyvalue)case 0xfe:return 1;break;case 0xfd:return 2;break;case 0xfb:return 3;break;case 0xf7:return 4;break;case 0xef:return 5;break;case 0xdf:return 6;break;case 0xbf:return 7;break;case 0x7f:return 8;break;default:return 0;break; return 0;/*.定時功能定時器2.*/void timing(void)switch(timi

26、ng_flag)case 1: tim=10; if(timing_on=0)write_string(11,1,00010);break;case 2: tim=1800; if(timing_on=0)write_string(11,1,01800);break;/30mincase 3: tim=3600; if(timing_on=0)write_string(11,1,03600);break;/60mincase 4: tim=7200;if(timing_on=0)write_string(11,1,07200);break;/120mincase 5: tim=10800;if

27、(timing_on=0)write_string(11,1,10800);break; /180mincase 6: tim=0;timing_flag=0; write_string(11,1, );/定時取消if(timing_on=0)timing_r=1;time2=0;if(timing_run&timing_r&timing_on)time2=tim;timing_r=0;timing_flag=0;/*.1602部分.*/voidwrite_com(uchar com)delayms(5);lcdrs=0;lcden=1;p0=com;lcden=0;voidwrite_dat

28、a(uchar data) delayms(5);lcdrs=1;lcden=1; p0=data; ;lcden=0; /寫入1602字符串voidwrite_string(ucharx,uchary,uchar *s) if (y = 0) write_com(0x80 + x); else write_com(0xc0 + x); while (*s) write_data( *s); s +; /1602寫字符voidwrite_char(ucharx,uchary,uchar data) if (y = 0) write_com(0x80 + x); else write_com(0

29、xc0 + x); write_data(data); void init_1602(void) /初始化1602參數(shù)lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);void display2(void)write_string(4,0,table_1);write_string(0,1,table_21);write_string(6,1,table_22);void change_display2(void)uchartime_asc5,a;time_asc0=time2/10000+0x30;

30、time_asc1=time2%10000/1000+0x30;time_asc2=time2%10000%1000/100+0x30;time_asc3=time2%10000%1000%100/10+0x30;time_asc4=time2%10000%1000%100%10+0x30;if(timing_on=1)for(a=0;a5;a+)write_char(11+a,1,time_asca);if(timing_flag=0 &timing_on=0)write_string(14,1, );write_string(11,1,off);if(run_flag)write_string(2,0,system run!);elsewrite_string(

溫馨提示

  • 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

提交評論