串口调试助手控制步进电机正反转
#include
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char table1[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; //控制电机正传
unsigned char table2[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08}; //控制电机反转
unsigned char ch,step;
int t1,t2,a,b;
/*------------------------------------------------
串口初始化函数
------------------------------------------------*/
void ckinit()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD; //设置波特率为9600 TR1=1; //启动定时器1 SCON=0X50;
PCON=0X00; //设置串口工作方式1 }
/*------------------------------------------------
控制字符接收函数
------------------------------------------------*/
void SCI_Rev() //串口接收数据 {
uint i=0;
while(RI){
ch=SBUF;
a=ch-96;
b=ch-64;
RI=0;
}
}
/*------------------------------------------------
电机延时函数
------------------------------------------------*/
void delay(int n){
int i,j; //延时0.999ms*n 12MHZ 晶振 for(i=0;i
for(j=0;j
;
}
}
/*------------------------------------------------
电机正转函数
------------------------------------------------*/
void forward1(){
for(t1=512*a;t1>0;t1--){
for(step=0;step
P1=table1[step];
delay(2);
if(RI)
t1=0;
}
}
}
/*------------------------------------------------
电机反转函数
------------------------------------------------*/
void backward1(){
for(t2=512*b;t2>0;t2--){
for(step=0;step
P1=table2[step];
delay(2);
if(RI)
t2=0;
}
}
}
/*------------------------------------------------
电机停止函数
------------------------------------------------*/
void stop(){
P1=0xff;
delay(100);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main(){
ckinit();
while(1){
SCI_Rev(); switch(ch){ case'a':
forward1(); ch=0; break;
case'b':
forward1(); ch=0; break;
case'c':
forward1(); ch=0; break;
case'd':
forward1(); ch=0; break;
case'A':
backward1(); ch=0; break;
case'B':
backward1(); ch=0; break;
case'C':
backward1(); ch=0; break;
case'D':
backward1(); ch=0; break; //正转1圈 //正转2圈 //正转3圈 //正转4圈 //反转1圈 //反转2圈 //反转3圈 //反转4圈
case'0': stop(); break; default: break; }
P1=0; }
} //停止电机
串口调试助手控制步进电机正反转
#include
#include
#define uchar unsigned char
#define uint unsigned int
unsigned char table1[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09}; //控制电机正传
unsigned char table2[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08}; //控制电机反转
unsigned char ch,step;
int t1,t2,a,b;
/*------------------------------------------------
串口初始化函数
------------------------------------------------*/
void ckinit()
{
TMOD=0X20;
TH1=0XFD;
TL1=0XFD; //设置波特率为9600 TR1=1; //启动定时器1 SCON=0X50;
PCON=0X00; //设置串口工作方式1 }
/*------------------------------------------------
控制字符接收函数
------------------------------------------------*/
void SCI_Rev() //串口接收数据 {
uint i=0;
while(RI){
ch=SBUF;
a=ch-96;
b=ch-64;
RI=0;
}
}
/*------------------------------------------------
电机延时函数
------------------------------------------------*/
void delay(int n){
int i,j; //延时0.999ms*n 12MHZ 晶振 for(i=0;i
for(j=0;j
;
}
}
/*------------------------------------------------
电机正转函数
------------------------------------------------*/
void forward1(){
for(t1=512*a;t1>0;t1--){
for(step=0;step
P1=table1[step];
delay(2);
if(RI)
t1=0;
}
}
}
/*------------------------------------------------
电机反转函数
------------------------------------------------*/
void backward1(){
for(t2=512*b;t2>0;t2--){
for(step=0;step
P1=table2[step];
delay(2);
if(RI)
t2=0;
}
}
}
/*------------------------------------------------
电机停止函数
------------------------------------------------*/
void stop(){
P1=0xff;
delay(100);
}
/*------------------------------------------------
主函数
------------------------------------------------*/
void main(){
ckinit();
while(1){
SCI_Rev(); switch(ch){ case'a':
forward1(); ch=0; break;
case'b':
forward1(); ch=0; break;
case'c':
forward1(); ch=0; break;
case'd':
forward1(); ch=0; break;
case'A':
backward1(); ch=0; break;
case'B':
backward1(); ch=0; break;
case'C':
backward1(); ch=0; break;
case'D':
backward1(); ch=0; break; //正转1圈 //正转2圈 //正转3圈 //正转4圈 //反转1圈 //反转2圈 //反转3圈 //反转4圈
case'0': stop(); break; default: break; }
P1=0; }
} //停止电机