串口调试助手控制步进电机正反转

时间:2026-01-27

串口调试助手·控制步进电机

串口调试助手控制步进电机正反转

#include <reg52.h>

#include <stdio.h>

#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<n;i++){

for(j=0;j<120;j++)

;

}

}

/*------------------------------------------------

电机正转函数

------------------------------------------------*/

void forward1(){

for(t1=512*a;t1>0;t1--){

for(step=0;step<8;step++){

P1=table1[step];

delay(2);

if(RI)

t1=0;

}

}

}

/*------------------------------------------------

电机反转函数

------------------------------------------------*/

void backward1(){

for(t2=512*b;t2>0;t2--){

for(step=0;step<8;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; }

} //停止电机

…… 此处隐藏:111字,全部文档内容请下载后查看。喜欢就下载吧 ……
串口调试助手控制步进电机正反转.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219