电子设计报告 智能风扇控制系统.docx
《电子设计报告 智能风扇控制系统.docx》由会员分享,可在线阅读,更多相关《电子设计报告 智能风扇控制系统.docx(10页珍藏版)》请在冰豆网上搜索。
电子设计报告智能风扇控制系统
智能风扇控制系统
设计报告
(电子大赛选拔赛)
小组成员:
沈君豪/13014432313电子中美
吕智超/13015433813电子中美
黄寒雪/13015435913电子中美
设计时间:
2015.2—2015.3
一.前期准备:
经过我们小组三人的讨论,最终我们决定采用8051作为整个系统的控制部分,运用8051系列单片机以及C51编程实现解决方案。
故我们事先进行了分工,并进入了准备阶段。
二.总体设计:
作为控制部分,我们决定使用8051单片机;电源部分我们采用了microusb母座进行供电,工作时可以插入手机充电器(microusb公头)进行供电;风扇使用直流电机代替;直流电机驱动部分则使用L298N芯片。
1.首先是按键部分,3个按键(分别表示风速、类型、停止)的状态以启动电扇或设置相应的工作状态。
这样就需要3个按键,要通过一个按键来控制2个以上的状态,可以通过按键的次数来控制第几种状态,比如风速有三种状态(弱、中、强),可以用按键1次控制弱,按键2次控制中,按键3次控制强,这样就可以实现一键控制多钟状态了。
其中停止按键与P3.2(外部中断0)相接,按下时即可停止所有行为。
2.控制器的指示灯,我们想使用六个LED灯进行显示,分别显示不同风速、类型等6个指示信号。
3.用直流电机作为电风扇,其转速和停止可通过改变L298N其使能输入的频率来改变电机的速度。
利用L298N的2,3引脚来驱动直流电机。
4.风速和风种的实现,采用8051的定时器中断,每隔一定的时间停止L298N的使能输入,使电机停止,改变不同的定时时间,来获得电机的不同转速与风种。
三.原理图:
四.程序设计(C51)
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitA1=P1^0;//电机控制端口
sbitB1=P1^1;
sbitENA=P1^2;
sbitkey1=P3^0;//风速设置按键
sbitkey2=P3^1;//风种设置按键
sbitkey3=P3^2;//停止设置按键
sbitled1=P0^0;//强风指示灯
sbitled2=P0^1;//中风指示灯
sbitled3=P0^2;//慢风指示灯
sbitled4=P0^3;//正常指示灯
sbitled5=P0^4;//自然指示灯
sbitled6=P0^5;//睡眠指示灯
bitStop_Flag=0;
uintcount=0;
ucharpwm_duty=0;//最大为100
ucharwind_speed=0;//分为三级0高1中2慢
ucharwind_mode=0;//分为三类0正常1自然2睡眠
uinttime=0;//计时变量
voiddelay1ms(void)
{
unsignedchara,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
voidMotor_Forward()//电机正转
{
A1=1;
B1=0;
ENA=1;
}
voidMotor_Reversal()//电机反转
{
A1=0;
B1=1;
ENA=1;
}
voidMotor_Stop()//电机急停
{
A1=1;
B1=1;
ENA=0;
}
voidInitTimer0(void)//T0初始化为1ms定时器
{
TMOD=0x01;
TH0=0x0FC;
TL0=0x18;
EA=1;
ET0=1;
//TR0=1;
}
//主函数
voidmain()
{
//端口配置
P0=0xff;
P1=0x00;
P2=0xff;
P3=0xff;
InitTimer0();
EX0=1;//外部中断0开
IT0=1;//边沿触发
TR0=1;
while
(1)
{
if(!
key1)//设置风速
{
delay1ms();
if(!
key1)
{
wind_speed++;
if(wind_speed>=3)wind_speed=0;
TR0=1;//开启定时器
Stop_Flag=0;//标志位清零
}
while(!
key1);//等待按键释放
}
if(!
key2)//设置风种
{
delay1ms();
if(!
key2)
{
wind_mode++;
if(wind_mode>=3)wind_mode=0;
time=0;
}
while(!
key2);//等待按键释放
}
if(!
Stop_Flag)
{
switch(wind_speed)
{
case0:
pwm_duty=100;//100%转速
A1=1;
B1=0;
led1=0;
led2=1;
led3=1;
break;
case1:
pwm_duty=70;//70%转速
A1=1;
B1=0;
led1=1;
led2=0;
led3=1;
break;
case2:
pwm_duty=40;//40%转速
A1=1;
B1=0;
led1=1;
led2=1;
led3=0;
break;
default:
A1=1;
B1=1;
break;
}
}
else
{
P0=0xff;//LED全灭
}
}
}
voidTimer0Interrupt(void)interrupt1//定时器中断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;
}
elseif(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;
}
}
voidISR_Key(void)interrupt0using1//外部中断0
{
Motor_Stop();//关闭马达
P0=0xff;//关闭所有LED
TR0=0;
Stop_Flag=1;
}
四.实物焊接图
五.元件清单:
STC89C511个
L298N1个
按键4个
12M晶振1个
22Pf电容2个
10Uf电解电容1个
直流电机1个
330Ω电阻6个
10kΩ电阻6个
LED6个
六.参考用书:
1.《工程电路分析》(美)WilliamH.Hayt(威廉H.海特) 著
电子工业出版社出版时间2012-9-1
2.《CPrimerPlus》 (美)StephenPrata 著
人民邮电出版社出版时间 2005-2-1
3.《时间触发嵌入式系统设计模式》(英) MichaelJ.Pont 著
中国电力出版社出版时间2004-7-1