《電子設(shè)計(jì)報(bào)告-智能風(fēng)扇控制系統(tǒng).docx》由會員分享,可在線閱讀,更多相關(guān)《電子設(shè)計(jì)報(bào)告-智能風(fēng)扇控制系統(tǒng).docx(11頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
智能風(fēng)扇控制系統(tǒng)
設(shè)計(jì)報(bào)告
(電子大賽選拔賽)
小組成員:沈君豪/130144323 13電子中美
呂智超/130154338 13電子中美
黃寒雪/130154359 13電子中美
設(shè)計(jì)時間:2015.2—2015.3
一. 前期準(zhǔn)備:
經(jīng)過我們小組三人的討論,最終我們決定采用8051作為整個系統(tǒng)的控制部分,運(yùn)用8051系列單片機(jī)以及C51編程實(shí)現(xiàn)解決方案。故我們事先進(jìn)行了分工,并進(jìn)入了準(zhǔn)備階段。
二. 總體設(shè)計(jì):
作為控制部分,我們決定使用8051單片機(jī);電源部分我們采用了micro usb 母座進(jìn)行供電,工作時可以插入手機(jī)充電器(micro usb公頭)進(jìn)行供電;風(fēng)扇使用直流電機(jī)代替;直流電機(jī)驅(qū)動部分則使用L298N芯片。
1.首先是按鍵部分,3個按鍵(分別表示風(fēng)速、類型、停止)的狀態(tài)以啟動電扇或設(shè)置相應(yīng)的工作狀態(tài)。這樣就需要3個按鍵,要通過一個按鍵來控制2個以上的狀態(tài),可以通過按鍵的次數(shù)來控制第幾種狀態(tài),比如風(fēng)速有三種狀態(tài)(弱、中、強(qiáng)),可以用按鍵1次控制弱,按鍵2次控制中,按鍵3次控制強(qiáng),這樣就可以實(shí)現(xiàn)一鍵控制多鐘狀態(tài)了。其中停止按鍵與P3.2(外部中斷0)相接,按下時即可停止所有行為。
2.控制器的指示燈,我們想使用六個LED燈進(jìn)行顯示,分別顯示不同風(fēng)速、類型等6個指示信號。
3. 用直流電機(jī)作為電風(fēng)扇,其轉(zhuǎn)速和停止可通過改變L298N其使能輸入的頻率來改變電機(jī)的速度。利用L298N的2,3引腳來驅(qū)動直流電機(jī)。
4.風(fēng)速和風(fēng)種的實(shí)現(xiàn),采用8051的定時器中斷,每隔一定的時間停止L298N的使能輸入,使電機(jī)停止,改變不同的定時時間,來獲得電機(jī)的不同轉(zhuǎn)速與風(fēng)種。
三. 原理圖:
四.程序設(shè)計(jì)(C51)
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit A1=P1^0;//電機(jī)控制端口
sbit B1=P1^1;
sbit ENA=P1^2;
sbit key1=P3^0; //風(fēng)速設(shè)置按鍵
sbit key2=P3^1; //風(fēng)種設(shè)置按鍵
sbit key3=P3^2; //停止設(shè)置按鍵
sbit led1=P0^0;//強(qiáng)風(fēng)指示燈
sbit led2=P0^1;//中風(fēng)指示燈
sbit led3=P0^2;//慢風(fēng)指示燈
sbit led4=P0^3;//正常指示燈
sbit led5=P0^4;//自然指示燈
sbit led6=P0^5;//睡眠指示燈
bit Stop_Flag = 0;
uint count = 0;
uchar pwm_duty = 0;//最大為100
uchar wind_speed = 0;//分為三級 0高 1中 2慢
uchar wind_mode = 0; //分為三類 0正常 1自然 2睡眠
uint time = 0; //計(jì)時變量
void delay1ms(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void Motor_Forward()//電機(jī)正轉(zhuǎn)
{
A1=1;
B1=0;
ENA=1;
}
void Motor_Reversal()//電機(jī)反轉(zhuǎn)
{
A1=0;
B1=1;
ENA=1;
}
void Motor_Stop()//電機(jī)急停
{
A1=1;
B1=1;
ENA=0;
}
void InitTimer0(void)//T0初始化為1ms定時器
{
TMOD = 0x01;
TH0 = 0x0FC;
TL0 = 0x18;
EA = 1;
ET0 = 1;
//TR0 = 1;
}
//主函數(shù)
void main()
{
//端口配置
P0=0xff;
P1=0x00;
P2=0xff;
P3=0xff;
InitTimer0();
EX0=1; //外部中斷0開
IT0=1; //邊沿觸發(fā)
TR0 = 1;
while(1)
{
if(!key1) //設(shè)置風(fēng)速
{
delay1ms();
if(!key1)
{
wind_speed++;
if(wind_speed >= 3) wind_speed = 0;
TR0 = 1; //開啟定時器
Stop_Flag = 0; //標(biāo)志位清零
}
while(!key1); //等待按鍵釋放
}
if(!key2) //設(shè)置風(fēng)種
{
delay1ms();
if(!key2)
{
wind_mode++;
if(wind_mode >= 3) wind_mode = 0;
time = 0;
}
while(!key2); //等待按鍵釋放
}
if(!Stop_Flag)
{
switch(wind_speed)
{
case 0:
pwm_duty = 100;//100%轉(zhuǎn)速
A1=1;
B1=0;
led1 = 0;
led2 = 1;
led3 = 1;
break;
case 1:
pwm_duty = 70; //70%轉(zhuǎn)速
A1=1;
B1=0;
led1 = 1;
led2 = 0;
led3 = 1;
break;
case 2:
pwm_duty = 40; //40%轉(zhuǎn)速
A1=1;
B1=0;
led1 = 1;
led2 = 1;
led3 = 0;
break;
default:
A1=1;
B1=1;
break;
}
}
else
{
P0 = 0xff;//LED全滅
}
}
}
void Timer0Interrupt(void) interrupt 1 //定時器中斷T0
{
TH0 = 0x0FC;
TL0 = 0x18;
count++;
if(wind_mode == 0) //正常
{
if(count <= pwm_duty)
ENA = 1;
else
ENA = 0;
if(count >= 100)
count = 0;
led4 = 0;
led5 = 1;
led6 = 1;
}
else if(wind_mode == 1)//自然
{
time++;
if(time <= 4000)//4s
{
if(count <= pwm_duty)
ENA = 1;
else
ENA = 0;
if(count >= 100)
count = 0;
}
else
{
ENA = 0;
}
if(time >= 8000) time = 0;
led4 = 1;
led5 = 0;
led6 = 1;
}
else //睡眠
{
time++;
if(time <= 8000)//8s
{
if(count <= pwm_duty)
ENA = 1;
else
ENA = 0;
if(count >= 100)
count = 0;
}
else
{
ENA = 0;
}
if(time >= 16000) time = 0;
led4 = 1;
led5 = 1;
led6 = 0;
}
}
void ISR_Key(void) interrupt 0 using 1 //外部中斷0
{
Motor_Stop(); //關(guān)閉馬達(dá)
P0 = 0xff;//關(guān)閉所有LED
TR0 = 0;
Stop_Flag = 1;
}
四. 實(shí)物焊接圖
五.元件清單:
STC89C51 1個
L298N 1個
按鍵 4個
12M晶振 1個
22Pf電容 2個
10Uf電解電容 1個
直流電機(jī) 1個
330Ω電阻 6個
10kΩ電阻 6個
LED 6個
六.參考用書:
1.《工程電路分析》(美)WilliamH.Hayt(威廉H.海特) 著
電子工業(yè)出版社 出版時間 2012-9-1
2.《C Primer Plus》(美)Stephen Prata 著
人民郵電出版社 出版時間2005-2-1
3.《時間觸發(fā)嵌入式系統(tǒng)設(shè)計(jì)模式》(英)Michael J.Pont 著
中國電力出版社 出版時間 2004-7-1
鏈接地址:http://www.820124.com/p-9031589.html