黄工无刷电机学习
直播中

一曲作罢

9年用户 865经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术
私信 关注
[问答]

单片机是如何控制步进电机正反转的

单片机是如何控制步进电机正反转的?如何去编写其程序代码?

回帖(1)

孔德羲

2021-10-14 09:28:26
  单片机控制步进电机正反转
  硬件连接:
  
  程序:
  #include 《reg52.h》
  #define uint unsigned int
  #define uchar unsigned char uchar code FFW[]= {
  0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09 };
  uchar code REV[]= {
  0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01 };
  ***it K1 = P3^0;
  ***it K2 = P3^1;
  ***it K3 = P3^2;
  void DelayMS(uint ms)
  {
  uchar i;
  while(ms--)
  {
  for(i=0;i《120;i++);
  }
  }
  void SETP_MOTOR_FFW(uchar n)
  {
  uchar i,j;
  for(i=0;i《5*n;i++)
  {
  for(j=0;j《8;j++)
  {
  if(K3 == 0)
  break;
  P1 = FFW[j];
  DelayMS(25);
  }
  }
  }
  void SETP_MOTOR_REV(uchar n)
  {
  uchar i,j;
  for(i=0;i《5*n;i++)
  {
  for(j=0;j《8;j++)
  {
  if(K3 == 0)
  break;
  P1 = REV[j];
  DelayMS(25);
  }
  }
  }
  void main()
  {
  uchar N = 3;
  while(1)
  {
  if(K1 == 0)
  {
  P0 = 0xfe;
  SETP_MOTOR_FFW(N);
  if(K3 == 0) break;
  }
  else if(K2 == 0)
  {
  P0 = 0xfd;
  SETP_MOTOR_REV(N);
  if(K3 == 0) break;
  }
  else
  {
  P0 = 0xfb;
  P1 = 0x03;
  }
  }
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分