当前位置:文档之家› 电子创新设计实验报告

电子创新设计实验报告

电子创新设计实验报告标准化管理部编码-[99968T-6889628-J68568-1689N]
中国海洋大学课程设计报告设计制作一台微型程控搅拌器
专业年级:2014级通信工程
指导教师:谷健
设计人:张志诚
左修洋
设计日期:2017年8月23日
摘要
本设计是制作一台微型程控搅拌器,采用AT89S52单片机来控制电机的正转、反转、加速转、减速转,以及与红黄绿三种颜色的LED 灯的交替变亮、闪烁相互配合。

采用PWM进行调速,全部通过单片机控制,达到智能操控的效果。

关键字:AT89S52;PWM;单片机控制
目录
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是一种低功耗、高性能CMOS8
位微控制器,具有8K 系统可编程Flash 存储器。

使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash ,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

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

本系统以单片机AT89S52芯片为核心部件,利用其输出的高低电平来操控LED 的亮灭转换以及电机的正转、反转、减速转、暂停,最终完成微型程控搅拌器的任务。

在软件设计的过程中,力争使用程序的模块化,自上而下进行程序设计,使得程序尽量简洁易懂,易修改。

在电路板的焊接之前,我们先使用Proteus 进行软件仿真,在仿真的过程当中,我们发现了诸多问题,比如LED 灯的亮灭时间与实际不符,电机无法实现反转等等,但在最后我们都将此问题一一解决。

在电路板焊接完成后,在调试的过程中,我们也发现并遇到了许多问题,比如接地端没有共地,单片机电流输出不足,无法驱动电路等等。

通过这次的实验课,我们真正做到了理论与实践相结合,对单片机的知识又了解了许多,对单片机的硬件结构的研究和软件的编程的兴趣增加了很多,培养了团队合作意识,提升了自己的素质,锻炼了自己,结识了其他班的同学,熟
悉了对一项课题研究、设计和实验的过程。

这将会在我们今后的学习和工作中起到很大的帮助。

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

代码部分:
#include<reg52.h>
sbitRED=P1^0; //定义输出口
sbitYELLOW=P1^1;
sbitGREEN=P1^2;
sbitRUN=P1^3;
sbitPAUSE=P1^4;
voiddelay(unsignedintnum) //延时1s
{
unsignedinti;
for(i=num*110*1000;i>0;i--)
{
}
}
voiddelayms(unsignedintnum) //延时1ms
{
unsignedinti;
for(i=num*110;i>0;i--)
{
}
}
voidhighRUNpostive() //高速正转
{
unsignedinti;
RUN=1;
RED=1;
YELLOW=1;
GREEN=0;
for(i=0;i<=5;i++)
{
delay(1);
}
}
voidhighRUNnegative() //高速反转
{
unsignedinti;
RUN=0;
RED=0;
YELLOW=1;
GREEN=1;
for(i=0;i<=6;i++)
{
delay(1);
}
}
voidlowRUNpostive() //低速正转{
unsignedintj=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;
}
}
voidlowRUNnegative() //低速反转
{
unsignedintj=0;
unsignedintk=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;
}
}
voidreset() //重置函数
{
RED=1;
YELLOW=1;
GREEN=1;
RUN=0;
PAUSE=0;
}
voidpause() //电机暂停{
unsignedintj=0;
YELLOW=0;
GREEN=1;
RED=1;
RUN=0;
PAUSE=1;
delayms(500);
YELLOW=1;
}
voidmain()
{
unsignedinti=0;
RED=0;
YELLOW=0;
GREEN=0;
RUN=0;
for(i=0;i<1;i++)
{
delayms(1);
PAUSE=1;
delayms(999);
PAUSE=!PAUSE;
}
highRUNpostive();
pause();
reset();
highRUNnegative();
pause();
reset();
lowRUNpostive();
pause();
reset();
lowRUNnegative();
pause();
reset();
highRUNpostive();
pause();
reset();
highRUNnegative();
reset();
}。

相关主题