电子创新设计实验报告材料.docx
《电子创新设计实验报告材料.docx》由会员分享,可在线阅读,更多相关《电子创新设计实验报告材料.docx(15页珍藏版)》请在冰点文库上搜索。
![电子创新设计实验报告材料.docx](https://file1.bingdoc.com/fileroot1/2023-7/10/745fa48c-0c63-48e0-8f46-70c7a939cb5e/745fa48c-0c63-48e0-8f46-70c7a939cb5e1.gif)
电子创新设计实验报告材料
中国海洋大学课程设计报告
设计制作一台微型程控搅拌器
专业年级:
2014级通信工程
指导教师:
谷健
设计人:
张志诚14020023053
左修洋14020023055
设计日期:
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进行电路仿真,观察仿真结果并进行调整。
Protues电路图:
仿真软件截图:
电路板实物图
5总结
本系统以单片机AT89S52芯片为核心部件,利用其输出的高低电平来操控LED的亮灭转换以及电机的正转、反转、减速转、暂停,最终完成微型程控搅拌器的任务。
在软件设计的过程中,力争使用程序的模块化,自上而下进行程序设计,使得程序尽量简洁易懂,易修改。
在电路板的焊接之前,我们先使用Proteus进行软件仿真,在仿真的过程当中,我们发现了诸多问题,比如LED灯的亮灭时间与实际不符,电机无法实现反转等等,但在最后我们都将此问题一一解决。
在电路板焊接完成后,在调试的过程中,我们也发现并遇到了许多问题,比如接地端没有共地,单片机电流输出不足,无法驱动电路等等。
通过这次的实验课,我们真正做到了理论与实践相结合,对单片机的知识又了解了许多,对单片机的硬件结构的研究和软件的编程的兴趣增加了很多,培养了团队合作意识,提升了自己的素质,锻炼了自己,结识了其他班的同学,熟悉了对一项课题研究、设计和实验的过程。
这将会在我们今后的学习和工作中起到很大的帮助。
附录:
程序设计:
思路:
采用延时函数,以及51单片机的5个I/O口输出的信号来提供高低电平信号,操控外部电路,来实现灯的亮灭以及电机的正反转和延时。
代码部分:
#include
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();
}