电风扇模拟控制系统设计2.docx

上传人:b****6 文档编号:8062653 上传时间:2023-01-28 格式:DOCX 页数:14 大小:48.23KB
下载 相关 举报
电风扇模拟控制系统设计2.docx_第1页
第1页 / 共14页
电风扇模拟控制系统设计2.docx_第2页
第2页 / 共14页
电风扇模拟控制系统设计2.docx_第3页
第3页 / 共14页
电风扇模拟控制系统设计2.docx_第4页
第4页 / 共14页
电风扇模拟控制系统设计2.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

电风扇模拟控制系统设计2.docx

《电风扇模拟控制系统设计2.docx》由会员分享,可在线阅读,更多相关《电风扇模拟控制系统设计2.docx(14页珍藏版)》请在冰豆网上搜索。

电风扇模拟控制系统设计2.docx

电风扇模拟控制系统设计2

 

单片机原理与应用课程设计

 

院(系):

工业中心

班级:

106001

姓名:

王永安100203120

路体力100201114

指导老师:

王党利

时间:

2013.07.07

 

1、设计题目............................................................4

2、总体方案设计及分析..................................................4

3、硬件原理图设计......................................................4

4、软件流程图及程序设计................................................6

5、设计总结和心得体会..................................................13

 

摘要

本次课程设计通过keilC软件和Proteus软件设计一个电风扇模拟控制系统设计。

基于AT89C51芯片实现了用四位数码管实时显示电风扇的工作状态,最高位显示风类:

“自然风”显示“1”、“常风”显示“2”、“睡眠风”显示“3”。

后3位显示定时时间:

动态倒计时显示剩余的定时时间,无定时显示“000”。

设计一个“定时”键,用于定时时间长短设置;设置一个“摇头”键用于控制电机摇头。

设计过热检测与保护电路,若风扇电机过热,则电机停止转动,电机冷却后电机又恢复转动。

最终完成了设计任务。

关键词:

AT89C51keilC软件Proteus软件

 

一、设计题目:

电风扇模拟控制系统设计

1、用4个LED显示电风扇的工作状态(1,2,3,4四档风力),显示风类:

“自然风”、“常风”和“睡眠风”。

2、设计“自然风”、“常风”和“睡眠风”三个风类键用于设置风类;

设计一个“摇头”键用于控制电机摇头。

3、设计一个“定时”键,用于定时时间长短设置;

4、设计过热检测与保护电路,若电风扇电机过热,则电机停止转动,蜂鸣器报警,电机冷却后电机又恢复转动。

5、用LCD作为用户界面显示风扇运行模式等信息。

6、其他功能。

二、总体方案设计分析、讨论

1、程序说明:

为了提高单片机的工作效率,不让单片机的工作消耗在延时上,所以在考虑单片几需要延时的时间里,单片机并不是做的无用功,仅仅是在执行消耗时间的“空指令”,而根据实际考虑出发,从本程序设计的思路来看,电机除了数码管显示和PWM调速部分需要一定延时外,其他指令都是uS级的,可以忽略不计,所以可以将数码管显示和PWM调速部分做在一起,即数码管每一位显示需延时的几个毫秒的时间可以用来做处理PWM调速功能使用,通过设定,改变脉宽从而调速!

经过实验,本方法能够十分有效的节约单片机的资源,并且各项功能能够很好的

工作!

2、程序功能说明:

功能总共有三个按键控制“功能键/加”、“定时”、“摇头/减”,其中“功能键”“摇头”为多功能键。

初始状态时:

风扇不转;数码管显示POFF;

当第一次按“功能/加”时风扇处于“自然风”电机转速最快;

当第二次按“功能/加”时风扇处于“常风”电机转速为中速;

当第三次按“功能/加”时风扇处于“睡眠风”电机转速为低速;

当风扇处于停止状态时不可进入定时状态,只有当风扇运转时才能进入定时状态,当按下“定时”键进入定时状态后(定时指示灯亮),功能键/加键为定时时间加,

当按下“摇头/减键时,为定时时间减,再次按下定时键时,定时功能启动,时间到停止,并显示“POFF”风扇运转时按下摇头,即电机开始摇头。

3、硬件原理图:

该图是通过proteus7.0仿真设计和模拟的结果

 

电风扇硬件控制系统

四、软件流程图及程序设计

 

*************************************************************************/

#include"reg52.h"

#include"intrins.h"

#defineucharunsignedchar

#defineuintunsignedint

sbitled=P1^0;

sbitduan=P2^6;

sbitwei=P2^7;

sbitk1=P3^6;//功能键/加键(3)

sbitk2=P3^4;//定时功能键

(1)

sbitk3=P3^5;//摇头键/减键

sbitpwm=P2^1;

sbitzz=P2^1;

sbitfz=P2^2;

uintt=50000,g=1;//g用来表是选的风功能,tt定时的时间

ucharf,biao1=0,sudd;

inttt=0;

ucharkk=1;

uintaa=5;

/************才初始化函数**************************************/

voidinit()

{

EA=1;

ET0=1;

//TR0=1;

TMOD=0X01;//定时器0工作方式116位

TH0=(65536-t)/256;

TL0=(65536-t)%256;

}

/***************************************************/

ucharcodesz[]=

{

0x3F,/*0*/

0x06,/*1*/

0x5B,/*2*/

0x4F,/*3*/

0x66,/*4*/

0x6D,/*5*/

0x7D,/*6*/

0x07,/*7*/

0x7F,/*8*/

0x6F,/*9*/

0x71,/*F*///10

0x5C,/*o*///11

0x73//p12

};

voiddelay(uintxms)

{

uinti,j;

for(i=xms;i>0;i--)

for(j=50;j>0;j--);

}

/********pwm调速兼作延时**************************/

voidpwmdelay(ucharqq)

{

pwm=1;

delay

(1);

pwm=0;

delay(qq);

pwm=1;

}

/************当风扇停止时显示的函数*******************************/

voiddisplay2()

{

P0=sz[12];

duan=1;

duan=0;

P0=0xfe;

wei=1;

wei=0;

delay(10);

//pwmdelay(sudu);

P0=sz[0];

duan=1;

duan=0;

P0=0xfd;

wei=1;

wei=0;

delay(10);

//pwmdelay(sudu);

 

P0=sz[10];

duan=1;

duan=0;

P0=0xfb;

wei=1;

wei=0;

delay(10);

//pwmdelay(sudu);

P0=sz[10];

duan=1;

duan=0;

P0=0xf7;

wei=1;

wei=0;

delay(10);

//pwmdelay(sudu);

P0=0xff;

wei=1;

wei=0;

P0=0x00;//关闭数码管显示防止闪烁

duan=1;

duan=0;

}

/**************显示函数*****************************/

voiddisplay(uintshu)

{

ucharqian,bai,shi,ge;

qian=biao1;

bai=shu/100;

shi=(shu%100)/10;

ge=(shu%10);

 

P0=sz[qian];

duan=1;

duan=0;

P0=0xfe;

wei=1;

wei=0;

//delay

(1);

pwmdelay(sudu);

P0=sz[bai];

duan=1;

duan=0;

P0=0xfd;

wei=1;

wei=0;

//delay

(1);

pwmdelay(sudu);

 

P0=sz[shi];

duan=1;

duan=0;

P0=0xfb;

wei=1;

wei=0;

//delay

(1);

pwmdelay(sudu);

P0=sz[ge];

duan=1;

duan=0;

P0=0xf7;

wei=1;

wei=0;

//delay

(1);

pwmdelay(sudu);

P0=0x00;//关闭数码管显示防止闪烁

duan=1;

duan=0;

P0=0xff;

wei=1;

wei=0;

}

/**************************************************/

/***************键盘程序***********************************/

voidkescan()

{

ucharbiao2;//一键多功能的标号

/**************************************/

if(k1==0)//功能键一键多功能键自然风常风睡眠风停止

{

delay(50);

if(k1==0)

{

pwm=0;//关闭电机

while(!

k1);//等待释放按键

biao1++;//功能选择

if(biao1==4)//只允许四种状态

biao1=0;

}

}

/***********************************************/

if(biao1!

=0)//功能0时不可以设置定时功能

{

if(k2==0)//定时功能键按一次设置第二次确认

{

delay(50);

if(k2==0)

{

tt=000;//如果进入定时功能则显示全部清零

TR0=0;//确认按键俺下后关闭定时器

while(!

k2);//等待释放按键

biao2=1;

while(biao2)//如果不再次按下K2则将一直保持设置状态

{

led=0;

if(k1==0)

{

delay(50);

if(k1==0)

{

while(!

k1);

tt=tt+10;

if(tt>990)//

tt=0;

}

}

 

if(k3==0)

{

delay(50);

if(k3==0)

{

while(!

k3);

tt=tt-10;

if(tt<0)//

tt=990;

}

}

display(tt);//刷新设置的时间

if(k2==0)//k2是否再次按下

{

delay(50);

if(k2==0)

{

while(!

k2);

if(tt>0)//如果进入定时设置后没有设置时间则不能退出定时功能

biao2=0;

}

}

}

TR0=1;//设置好定时功能后开启定时器

led=1;

}

TR0=1;//开启定时器

}

}

}

/************功能函数**********************/

voidgongnen()

{

while(biao1==0)

{

pwm=0;

tt=0;

kescan();

display2();

}

if(biao1==1)//功能1自然风

{sudu=0;}

if(biao1==2)//功能2常风

{sudu=4;}

if(biao1==3)//功能3睡眠风

{sudu=10;}

}

/*************************************/

voidmain()

{

init();

while

(1)

{

kescan();

display(tt);

gongnen();

}

}

/*****************************************/

/*****************定时器0中断函数************************/

voidt_0()interrupt1

{

TH0=(65536-t)/256;

TL0=(65536-t)%256;

f++;

if(f==20)

{f=0;tt--;}

if(tt==0)//如果定时到了显示为000,电机关闭

{

tt=000;

biao1=0;//使电机不转

TR0=0;

}

}

 

五、设计总结和心得体会

课程设计是培养学生综合所学知识,发现、提出、分析和解决实际问题,锻炼自身能力的重要培养,是对我们学生能力的具体陪练和考察过程。

短短一周的时间,我们做完了我们小组的单片机实验,感触很深,我们小组做的是“电风扇模拟控制系统设计”对我们很有挑战,虽然在别人眼中我们的实验很简单,不过我们还是遇到了很多困难。

随着科学发展的日新月异,单片机已成为当今计算机应用中活跃的领域,在我们的生活中可以说是无处不在,因此作为电力系统的学生不得不掌握它,这次的实验设计,对我们是一种挑战,更是一种考验,怎么才能找到课堂所学与实际应用的最佳结合点?

怎样才能使自己更专业化?

怎样才能使自己的设计更具有序性,而不会忙无一用,这都是我们所要考虑和努力的。

这次的课程设计我学到很多东西,学到了怎么去制定设计,怎么去实现设计,并掌握了在执行过程中怎样克服心理上的不良情绪,不仅巩固了所学的知识,而且学习到了许多书上所没有的东西,我从中掌握了系统的研究方法,可以进行一些简易的编程。

在这次设计任务中,通过我们三人的共同努力,老师的精心指导,还有和在网上找到的资料,我们主要掌握了动态发光显示数码管的编程,掌握了数据运算的编程方法,这也是编程必须掌握的知识,当然仿真与调试也是一个很重要的环节,也让我们收获良多,这其中就是硬件和软件两部分,虽然我们没有做硬件,但软件的制作与编程我们也做得很认真。

你必须对程序的每部分都很熟悉,掌握每句程序的作用,这样你出现问题时才能根据问题改编程序,我们出现问题最多的也是在这个地方,对编程的不全面理解,导致我们不能顺利的完成这个程序任务,当然也有很多细节问题,我们三人小组的第一次合作还不是配合得很好,这也浪费了我们许多时间,这也是我们没有把这方面学扎实的原因,所以我们要一次把设计完成好,不但要学习好课堂知识,而且要注意好各方面的细节。

通过这次课题设计使我懂得了理论与实践相结合是非常重要的,从理论中得出结论,才能真正为社会服务,从而提高自己思考的能力,同时在设计中发现自己的不足之处。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1