OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 一个步进电机驱动程序,请各位指点一下

共2条 1/1 1 跳转至

一个步进电机驱动程序,请各位指点一下

院士
2006-12-22 22:43:00    评分
一个步进电机驱动程序,请各位指点一下



关键词: 一个     步进     电机     驱动程序     各位     指点     一下    

院士
2006-12-22 22:43:00    评分
2楼
问 这是我写的一个步进电机程序,通过MP(代表其中一个P口)的高4位来控制,AA`BB`-4,5,6,7脚。12细分,没行数组里面分4对,每对数第一个加到P口控制电流方向,第二个数控制通电时间。正转AA`-BB`-A`A-B`B,数组由1到12行的读取,反转B`B-A`A-BB`-AA`,数组由12到1行的读取。参数POWER表示电机启动还是不启动,DIRECT参数表示方向,SPEED表示速度等级,每项通电时间用数组中的植/SPEED。本程序没考虑要走多少步的情况,调用一次就走一步。因为是第一次做,还请各位大侠帮我看看有没错误
#include <CPU8052.h>
unsigned char yx[12][8]={
                         {16,128,64,222,32,128,128,222},
                         {16,222,64,128,32,222,128,128},
                         {16,256,64,0,32,256,128,0},
                         {16,222,128,128,32,222,64,128},
                         {16,128,128,222,32,128,64,222},
                         {16,0,128,256,32,0,64,256},
                          {32,128,128,222,16,128,64,222},
                         {32,222,128,128,16,222,64,128},
                         {32,256,128,0,16,256,64,0},
                         {32,222,64,128,16,222,128,128},
                         {32,128,64,222,16,128,128,222},
                         {32,0,64,256,16,0,128,256}};  //
struct moto{
            unsigned char power;   //电机电源
            unsigned char direct;  //方向
            unsigned char speed;  //速度
            unsigned char olDSPeed;
            } moto1;

void motop(unsigned char power,unsigned char direct,unsigned char speed)

{
unsigned char i,m,motomp,n;

    if (~power) {
        MP=MP&0XF0;  }
        
    if (power) {
        if (direct) {
        for (i=0;i<12;i++) {
            for (m=1;m<8;m=m+2){
                MP=MP&0xf0+yx[i][m];
                motomp=yx[i][m+1]/speed;
                for (n=0;n<motomp;n++);
                              }
                           }
                    }
        else
            {
        for (i=0;i<12;i++) {
            for (m=7;m>0;m=m-2){
                MP=MP&0xf0+yx[i][m];
                motomp=yx[i][m+1]/speed;
                for (n=0;n<motomp;n++);
                              }
                            }
        
            }
         }
} 1: 怎么没人说话啊!!! 2: 呵呵,好象你没问问题哦。 3: 我主要是问下,我这个程序有没啥错误,或改进得更好的地方! 4: m永远大于0了吧? for (m=7;m>0;m=m-2)
对于unsigned char m 来说,循环跳不出来吧 5: unsigned char m, m=1 ,m-2 会出现什么情况啊???

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]