- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验题目:单片机控制步进电机电路设计与调试
一、实验要求与目的
1、设计要求
1、利用Proteus软件设计仿真电路原理图。
2、系统控制能够完成步进电机的启动、停止;正转、反转;加速、减速及速度显示功能。
2、实验目的
1、进一步掌握单片机应用系统的软硬件设计方法。
2、掌握步进电机正转反转设置方法。
3、掌握步进电机调速工作原理及程序控制原理。
4、了解单片机系统常用的功率驱动电路ULN2803的应用。
实验原理
实验电路原理图:
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机;8重达林顿反相驱动器ULN2803包含8个NPN达林顿管,是一种大功率驱动芯片,多用于智能仪器、PLC、步进电机控制,具有工作电压高,电路增益高,可以提供大功率负载的特点,适应于各种功率驱动电路;数码管显示模块能显示电机的转速和电机的运动趋势,方便直观。
设计思路
本设计的硬件电路包括独立按键控制模块、步进电机驱动模块、数码管显示模块和单片机最小系统四部分。单片机最小系统由时钟电路和复位电路组成,保证单片机正常运行;独立按键控制模块由开关和按键组成,当按下按键时,该系统就按照该按键控制的功能运作;显示模块主要是为了显示电机的工作状态和转速;驱动电路主要是对单片机输出的脉冲进行功率放大,从而驱动电机转动。
根据系统的要求,按键输入部分设置了顺时针控制、逆时针控制、加速控制、减速控制和启动、停止三种启动方式选择按键。控制电路原理图所示,当按下按键,内部程序检测P3.0~P3.7的状态变化调用相应的启动和转向程序,从而实现系统的电机的启动和正反转控制。
根据步进电机的工作原来可以知道,步进电机的转速主要通过控制通入电机的脉冲频率,从而控制电机的转速。对单片机而言,主要的方法有:软件延时和定时中断,在此电路中电机的转速控制主要是通过软件延时控制,本设计是根据操作者设定的转速大小依据一定的公式计算得到变量脉冲的大小,通过延时程序改变电机转动一个步进角的时间,从而改变电机转动的快慢。
数码管显示电机的转速,主要是利用了单片机的P0口接一个四位的共阳极数码管。数码管a、b、c、d、e、f、g、DP分别接P0.0~P0.7口.数码管的公共脚1~4分别接P2.0~P2.3。
四、功能概述及方案设计
系统主要组成单元
电路图
完成的功能
AT89C51 采集数据信息并通过预置的程序加工处理控制电路的输出
Respk-8 限流保护
ULN2803
驱动步进电机
7SEG-MPX4-CC-BLUE
显示步进电机的转向和速度 实验运行程序
#include reg52.h
#define uchar unsigned char
#define uint unsigned int
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code motorCode2[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};
uchar code unmotorCode2[]={0x03,0x01,0x09,0x08,0x0c,0x04,0x06,0x02};
uint maichong;
uchar speed;
uchar flag;
uchar style;
sbit key_reset=P3^0;
sbit key_z=P3^1;
sbit key_f=P3^2;
sbit key_jia=P3^3;
sbit key_jian=P3^4;
void delay(uchar x)//延时1
{ uchar i,j;
for(i=0;ix;i++)
for(j=50;j0;j--);}
void reset(void)
{flag=2;
speed=0;
style=0;}
void display()
{
uchar A1,A2,A3,A4;
if(flag==0)
A1=0xc0; //显示0
else if(flag==1)
A1=0xf9;//显示1
else
A1=0x3f;//显示-
A2=0x3f;
A3=speed/10;
A4=speed%10;
P0=A1;//第一个数码管显示正反转
P2=0x01;
delay(1);
P2=0x00;
P0=A2;//第二个自定义显示-
P2=0x02;
delay(1);
P2=0
文档评论(0)