电风扇模拟控制系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理与应用课

程设计

院(系):工业中心

班级:106001

:王永安100203120

路体力 100201114

指导老师:王党利

时间:2013.07.07

目录

一、设计题目 (4)

二、总体方案设计及分析 (4)

三、硬件原理图设计 (4)

四、软件流程图及程序设计 (6)

五、设计总结和心得体会 (13)

摘要

本次课程设计通过keilC软件和Proteus软件设计一个电风扇模拟控制系统设计。基于AT89C51芯片实现了用四位数码管实时显示电风扇的工作状态,最高位显示风类:“自然风”显示“1”、“常风”显示“2”、“睡眠风”显示“3”。后3位显示定时时间:动态倒计时显示剩余的定时时间,无定时显示“000”。设计一个“定时”键,用于定时时间长短设置;设置一个“摇头”键用于控制电机摇头。设计过热检测与保护电路,若风扇电机过热,则电机停止转动,电机冷却后电机又恢复转动。最终完成了设计任务。

关键词:AT89C51 keilC软件 Proteus软件

一、设计题目:电风扇模拟控制系统设计

1、用4个LED显示电风扇的工作状态(1,2,3,4四档风力),显示风类:“自然风”、“常风”和“睡眠风”。

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

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

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

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

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

6、其他功能。

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

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

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

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

初始状态时:风扇不转;数码管显示 POFF;

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

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

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

当风扇处于停止状态时不可进入定时状态,只有当风扇运转时才能进入定时状态,当

按下“定时”键进入定时状态后(定时指示灯亮),功能键/加键为定时时间加,当按下“摇头/减键时,为定时时间减,再次按下定时键时,定时功能启动,时间到停止,并显示“POFF”风扇运转时按下摇头,即电机开始摇头。

三、硬件原理图:

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

电风扇硬件控制系统

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

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

#include"reg52.h"

#include "intrins.h"

#define uchar unsigned char

#define uint unsigned int

sbit led=P1^0;

sbit duan=P2^6;

sbit wei=P2^7;

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

sbit k2=P3^4;//定时功能键(1)

sbit k3=P3^5;//摇头键/减键

sbit pwm=P2^1;

sbit zz=P2^1;

sbit fz=P2^2;

uint t=50000,g=1; //g用来表是选的风功能,tt定时的时间 uchar f,biao1=0,sudd ;

int tt=0;

uchar kk=1;

uint aa=5;

/************才初始化函数**************************************/ void init ()

{

EA=1;

ET0=1;

// TR0=1;

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

TH0=(65536-t)/256;

TL0=(65536-t)%256;

}

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

uchar code sz[]=

{

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// p 12

};

void delay(uint xms)

{

uint i,j;

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

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

}

/********pwm调速兼作延时**************************/ void pwmdelay(uchar qq)

{

pwm=1;

delay(1);

pwm=0;

delay(qq);

相关文档
最新文档