单片机与mc运动控制模块组成的三轴运动控制系统.doc
文本预览下载声明
单片机与mpc运动控制模块组成的三轴运动控制系统
摘要采用单片机89C2051和mpc微型运动控制模块作为控制系统的核心,控制步进电机做运动。单片机,
1.引言
运动控制的应用在国内已有十几年的历史,技术也相当成熟。控制系统系统硬件设计
mpc微型运动控制模块部分
mpc微型运动控制模块采用5V电源供电,RXD,TXD,BUSY与单片机连接。X0,X1,X2可作为三路电机的原点信号,P1,D1为1轴的脉冲和方向信号。P2,D2为2轴的脉冲和方向信号。P3,D3为3轴的脉冲和方向信号。
(3)原点信号输入部分
原点采用光藕隔离输入,输入端可接NPN型光电开关来作为原点信号。
信号输出部分
输出采用NPN晶体管极电极开路输出,分别接到电机驱动器脉冲和方向信号输入端。
3,系统软件设计
#include reg52.h
//-----STC89C2051-------
sfr IPH =0XB7;
sfr CCON =0XD8;
sfr CMOD =0XD9;
sfr CL =0XE9;
sfr CH =0XF9;
sfr CCAP0L =0XEA;
sfr CCAP0H =0XFA;
sfr CCAPM0 =0XDA;
sfr CCAPM1 =0XDB;
sfr P3M1= 0XB1;
sfr P3M0= 0XB2;
sfr P1M1= 0X91;
sfr P1M0= 0X92;
sfr WAKE_CLKO= 0X8f;
sfr BRT =0x9c;
sfr AUXR =0x8E;
sfr AUXR1 = 0xA2;
sfr WDT_CONTR = 0xc1;
sfr T2MOD = 0xC9;
//////////////////
sbit busy = P3^2;
sbit s1 = P3^7;
void initial()
{
P3M1 = 0x00;
P3M0 = 0x80;
P1M1 = 0x00;
P1M0 = 0xf9;
}
void init_uart()
{
PCON = 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
BRT = 0xFD; //设定独立波特率发生器重装值 波特率115200bps
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
}
/*
串口发送一个字节,需根据所使用的单片机作适当更改。
*/
void USART_Txbyte(unsigned char i)
{
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
}
/*
串口接收模块返回的10个字节数据,需根据所使用的单片机作适当更改。
*/
void receive(unsigned char *buf)
{
unsigned char i;
for(i=0;i10;i++)
{
while(RI==0);
RI=0;
buf[i]=SBUF;
}
}
/*
串口发送一串数据。
*/
void USRAT_transmit(unsigned char *fdata,unsigned char len)
{
unsigned char i;
for(i=0;ilen;i++)
{
USART_Txbyte(fdata[i]);
}
}
/*
函数名: inp_move
功能:二轴直线插补
参数:
cardno 卡号
no1 X轴轴号
no2 Y轴轴号
pulse1,pulse2 X-Y轴移动的距离,范围(-8388608~+8388607)
mode 0:相对坐标 1:绝对坐标
返回值:
0 失败 1 成功
*/
unsigned char inp_move(unsigned char cardno,unsigned char no1 ,unsigned char no2 , long pulse1 ,long pulse2 ,unsigned char mode )
{
unsigned char OutByte[25];
unsig
显示全部