好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

电子设计报告___智能风扇控制系统

电子设计报告___智能风扇控制系统 本文关键词:控制系统,风扇,电子设计,智能,报告

电子设计报告___智能风扇控制系统 本文简介:智能风扇控制系统设计报告(电子大赛选拔赛)小组成员:沈君豪/13014432313电子中美吕智超/13015433813电子中美黄寒雪/13015435913电子中美设计时间:2015.2—2015.3一.前期准备:经过我们小组三人的讨论,最终我们决定采用8051作为整个系统的控制部分,运用8051

电子设计报告___智能风扇控制系统 本文内容:

智能风扇控制系统

设计报告

(电子大赛选拔赛)

小组成员:沈君豪/13014432313电子中美

吕智超/13015433813电子中美

黄寒雪/13015435913电子中美

设计时间:2015.2—2015.3

一.

前期准备:

经过我们小组三人的讨论,最终我们决定采用8051作为整个系统的控制部分,运用8051系列单片机以及C51编程实现解决方案。故我们事先进行了分工,并进入了准备阶段。

二.

总体设计:

作为控制部分,我们决定使用8051单片机;电源部分我们采用了micro

usb

母座进行供电,工作时可以插入手机充电器(micro

usb公头)进行供电;风扇使用直流电机代替;直流电机驱动部分则使用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

#define

uchar

unsigned

char

#define

uint

unsigned

int

sbit

A1=P1^0;//电机控制端口

sbit

B1=P1^1;

sbit

ENA=P1^2;

sbit

key1=P3^0;

//风速设置按键

sbit

key2=P3^1;

//风种设置按键

sbit

key3=P3^2;

//停止设置按键

sbit

led1=P0^0;//强风指示灯

sbit

led2=P0^1;//中风指示灯

sbit

led3=P0^2;//慢风指示灯

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;

//计时变量

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()//电机正转

{

A1=1;

B1=0;

ENA=1;

}

void

Motor_Reversal()//电机反转

{

A1=0;

B1=1;

ENA=1;

}

void

Motor_Stop()//电机急停

{

A1=1;

B1=1;

ENA=0;

}

void

InitTimer0(void)//T0初始化为1ms定时器

{

TMOD

=

0x01;

TH0

=

0x0FC;

TL0

=

0x18;

EA

=

1;

ET0

=

1;

//TR0

=

1;

}

//主函数

void

main()

{

//端口配置

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)

{

case

0:

pwm_duty

=

100;//100%转速

A1=1;

B1=0;

led1

=

0;

led2

=

1;

led3

=

1;

break;

case

1:

pwm_duty

=

70;

//70%转速

A1=1;

B1=0;

led1

=

1;

led2

=

0;

led3

=

1;

break;

case

2:

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全灭

}

}

}

void

Timer0Interrupt(void)

interrupt

1

//定时器中断T0

{

TH0

=

0x0FC;

TL0

=

0x18;

count++;

if(wind_mode

==

0)

//正常

{

if(count

=

100)

count

=

0;

led4

=

0;

led5

=

1;

led6

=

1;

}

else

if(wind_mode

==

1)//自然

{

time++;

if(time

=

100)

count

=

0;

}

else

{

ENA

=

0;

}

if(time

>=

8000)

time

=

0;

led4

=

1;

led5

=

0;

led6

=

1;

}

else

//睡眠

{

time++;

if(time

=

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();

//关闭马达

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.《C

Primer

Plus》

(美)Stephen

Prata

人民邮电出版社

出版时间

2005-2-1

3.《时间触发嵌入式系统设计模式》(英)

Michael

J.Pont

中国电力出版社

出版时间

2004-7-1

TAG标签: