打印

求大神帮忙看看,我这步进电机程序那错了

[复制链接]
790|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qaz411140525|  楼主 | 2014-11-9 23:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*************************************************************************************
*  标题:  步进电机试验二(双四拍方式)                                                             *
*                                                                                      *
*    通过本例程了解步进马达使用及驱动程序编写                                         *
*;   双四拍工作方式:                                                                *
*;   正转:A/B   AB   AB/  A/B/                                                       *
*     反转:A/B/  AB/  AB   A/B
*   
*    UDN2916电流控制真值表:
*     I0    I1       输出电流
*      L        L          最大
*      H        L          最大*2/3
*      L        H          最大*1/3
*     H     H         0                                                                 *
*  请学员一定要消化掉本例程                                                            *
   J14短路冒需断开                                                                       *
**************************************************************************************/  
#include "reg52.h"

#define speed 2
//Motor
sbit PH1 = P1^0;      //定义管脚
sbit PH2 = P1^1;
sbit I01 = P1^2;
sbit I11 = P1^3;
sbit I02 = P1^4;
sbit I12 = P1^5;



void delay(int time);

/***************************************
函数功能:产生脉冲控制步进机
正转:A/B   AB   AB/  A/B/
crazybc.com
I0 I1 为低电平时,均以最大电流输出
**************************************/
void Go()
{     //A
    PH1 = 0;  //PH1为0 则A线圈为反向电流
    I01 = 0;
    I11 = 0;
   

    PH2 = 1;   //PH2为1 则B线圈为正向电流
    I02 = 0;
    I12 = 1;

    delay(speed);
    //0
    PH1 = 1;  //PH1为1 则A线圈为正向电流
    I01 = 0;
    I11 = 0;
   

    PH2 = 1;
    I02 = 0;
    I12 = 0;

    delay(speed);
    //B
    PH1 = 1;  //PH1为1 则A线圈为正向电流
    I01 = 0;
    I11 = 0;
   

    PH2 = 0;   //PH2为0 则B线圈为反向电流
    I02 = 0;
    I12 = 0;
               ////
    delay(speed);
    //0
    PH1 = 0;
    I01 = 0;
    I11 = 0;
   

    PH2 = 0;  
    I02 = 0;
    I12 = 0;
            
    delay(speed);
   
   
}
/*******************延时函数****************************/
void delay(int time)
{
  int i,j;
  
  for(j=0; j <= time; j++)
   for(i =0 ; i <= 120; i++);
}

void main()
{

  while(1)
  {
   
    Go();  //步进电机运行
   
  }

}


相关帖子

沙发
wangch_sh| | 2014-11-10 08:11 | 只看该作者
你要说明错误现象是什么呀?

使用特权

评论回复
板凳
kakaoracle| | 2014-11-10 08:45 | 只看该作者
对,楼主,说说现象吧,速度不对还是根本转动不起来啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

11

帖子

0

粉丝