电子创新设计 实验报告

中国海洋大学课程设计报告设计制作一台微型程控搅拌器

专业年级:2014级通信工程

指导教师:谷健

设计人:张志诚14020023053

左修洋14020023055

设计日期:2017年8月23日

摘要

本设计是制作一台微型程控搅拌器,采用AT89S52单片机来控制电机的正转、反转、加速转、减速转,以及与红黄绿三种颜色的LED 灯的交替变亮、闪烁相互配合。采用PWM进行调速,全部通过单片机控制,达到智能操控的效果。

关键字:AT89S52;PWM;单片机控制

目录

1 设计题目 (5)

1.1任务 (5)

1.2设计要求 (6)

1.3说明 (7)

1.4设计提示 (7)

2系统方案选择 (7)

2.1单片机选择 (7)

2.2电机制动 (7)

2.3电机正反转 (8)

3系统原理框图 (8)

3.1 LED灯指示电路 (9)

3.2电机运转电路 (10)

3.3 AT89S52单片机 (10)

4软件流程 (10)

5总结 (14)

附录: (15)

1设计题目

1.1任务

设计和制作一个由程序控制的微型搅拌器,它按照一定的搅拌程序控制电机作正向和反向的转动。定时器采用单片机设计制作,来控制微型搅拌器做如下运转:

打开电源1s后:

电机高速正传5s,

暂停1s,

电机高速反转5s,

暂停1s

电机低速正传10s,

暂停1s,

电机低速反转10s,

暂停1s

电机高速正传5s,

暂停1s,

电机高速反转5s,

电机停转,搅拌结束。

1.2设计要求

(1)搅拌器打开电源开始1秒内,所有灯亮。

(2)搅拌器电机高速正转时绿指示灯亮,其它灯灭。

(3)搅拌器电机高速反转时红指示灯亮,其它灯灭。

(4)搅拌器电机低速正转时绿指示灯闪烁,闪烁频率1Hz,其它灯灭。

(5)搅拌器电机低速反转时红指示灯闪烁,闪烁频率1Hz,其它灯灭。

(6)搅拌器电机暂停时黄色指示灯闪烁,闪烁频率1Hz,其它灯灭。

(7)搅拌器电机停转时所有灯灭。

1.3说明

(1)搅拌器电机采用3V小型直流电机。

(2)三色指示灯采用红黄绿三种颜色的发光二极管。

(3)电机和指示灯驱动电压不要超过3V。

(4)搅拌头可采用塑料圆珠笔芯插上折叠90度制作。

1.4设计提示

可以利用51单片机最小系统加驱动控制单元来实现。电机驱动控制单元和指示灯可选用继电器控制或者H桥电路控制。高低电平变换控制可选用三极管控制。调速可采用PWM 调速。

2系统方案选择

2.1单片机选择

选择AT89S52单片机,该芯片I/O口较多,能够达到调速、控制LED灯的亮灭和正反转的要求,价格相对便宜,在此非常合适。

2.2电机制动

根据单片机的端口输出电平来决定,当单片机输出为低电平的时候,利用电磁继电器的

开关功能来控制电机的导通和截止

2.3电机正反转

根据单片机的端口输出电平来决定,根据输出的高低电平来控制电机的正转和反转。3系统原理框图

对于电路的搭建,我们采用两组电路来实现功能,分别为LED灯指示电路和马达运转电路。

3.1LED灯指示电路

单片机左端为LED灯指示电路,每个LED灯都串接一个100Ω电阻,用来对5V电源进进行分压,保证LED灯正常工作。每个LED灯接单片机的输出信号。灯光指示原理为:当单片机输出高电平时,LED灯两端电压不足,为熄灭状态;当单片机输出低电平时,LED灯正常工作,为常亮状态。

3.2电机运转电路

由于单片机输出信号的电流较小,所以采用晶体管对其进行放大,然后使用一个继电器构成H桥电路对电机实现正转和反转;用另一个继电器对电机实现开和关。

3.3AT89S52单片机

AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

4软件流程

系统的软件设计采用C语言编程实现各项功能,采用keil编写C语言代码,然后运用proteus 进行电路仿真,观察仿真结果并进行调整。

Protues电路图:

仿真软件截图:

电路板实物图

5总结

本系统以单片机AT89S52芯片为核心部件,利用其输出的高低电平来操控LED的亮灭转换以及电机的正转、反转、减速转、暂停,最终完成微型程控搅拌器的任务。在软件设计的过程中,力争使用程序的模块化,自上而下进行程序设计,使得程序尽量简洁易懂,易修改。在电路板的焊接之前,我们先使用Proteus进行软件仿真,在仿真的过程当中,我们发现了诸多问题,比如LED灯的亮灭时间与实际不符,电机无法实现反转等等,但在最后我们都将此问题一一解决。在电路板焊接完成后,在调试的过程中,我们也发现并遇到了许多问题,比如接地端没有共地,单片机电流输出不足,无法驱动电路等等。

通过这次的实验课,我们真正做到了理论与实践相结合,对单片机的知识又了解了许多,

对单片机的硬件结构的研究和软件的编程的兴趣增加了很多,培养了团队合作意识,提升了自己的素质,锻炼了自己,结识了其他班的同学,熟悉了对一项课题研究、设计和实验的过程。这将会在我们今后的学习和工作中起到很大的帮助。

附录:

程序设计:

思路:采用延时函数,以及51单片机的5个I/O口输出的信号来提供高低电平信号,操控外部电路,来实现灯的亮灭以及电机的正反转和延时。

代码部分:

#include

sbit RED=P1^0; //定义输出口

sbit YELLOW=P1^1;

sbit GREEN=P1^2;

sbit RUN=P1^3;

sbit PAUSE=P1^4;

void delay(unsigned int num) //延时1s

{

unsigned int i;

for(i=num*110*1000;i>0;i--)

{

}

}

void delayms(unsigned int num) //延时1ms {

unsigned int i;

for(i=num*110;i>0;i--)

{

}

}

void highRUNpostive() //高速正转{

unsigned int i;

RUN=1;

RED=1;

YELLOW=1;

GREEN=0;

for(i=0;i<=5;i++)

{

delay(1);

}

}

void highRUNnegative() //高速反转{

unsigned int i;

RUN=0;

RED=0;

YELLOW=1;

GREEN=1;

for(i=0;i<=6;i++)

{

delay(1);

}

}

void lowRUNpostive() //低速正转{

unsigned int j=0;

GREEN=0;

RED=1;

YELLOW=1;

RUN=1;

for(j=0;j<19;j++)

{

GREEN=!GREEN;

RUN=1;

delayms(800);

PAUSE=1;

delayms(200);

PAUSE=!PAUSE;

}

}

void lowRUNnegative() //低速反转{

unsigned int j=0;

unsigned int k=0;

RED=0;

GREEN=1;

YELLOW=1;

RUN=0;

for(j=0;j<19;j++)

{

RED=!RED;

RUN=0;

delayms(800);

PAUSE=1;

delayms(200);

PAUSE=!PAUSE;

}

}

void reset() //重置函数{

RED=1;

YELLOW=1;

GREEN=1;

RUN=0;

PAUSE=0;

}

void pause() //电机暂停{

unsigned int j=0;

YELLOW=0;

GREEN=1;

RED=1;

RUN=0;

PAUSE=1;

delayms(500);

YELLOW=1;

}

void main()

{

unsigned int i=0;

RED=0;

YELLOW=0;

GREEN=0;

RUN=0;

for(i=0;i<1;i++)

{

相关文档
最新文档