微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 怎么通过按键控制步进电机的转动还是停止?

怎么通过按键控制步进电机的转动还是停止?

时间:10-02 整理:3721RD 点击:

这是我自己写的一个程序,刚开始步进电机是停止的,按下按键后步进电机转动,但是再按下按键时,步进电机并不会停止。应该怎么改呢或者有什么思路其他的方法?
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;                                         //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
     uchar j;
     while( i--){
         for(j=0;j<250;j++)
             {;}
     }
}
void main()
{

    uchar i,j;
    uchar flag=0; //控制步进电机停止还是运转
    if(key1==0) {
       delay(5);
       if(key1==0)
       {
           flag=~flag;
           while(!key1);
        }
    }
while(flag)
{
      j=0;
      for(i=0;i<192;i++)
      {
          P1 = 0x00;
          P1 = F_Rotation[j];//这里只有正转是为了测试
          j++;
          if(j>=4) j=0;
          delay(2);
      }
      delay(200);
  }
}

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;                                         //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
     uchar j;
         while( i--){
             for(j=0;j<250;j++)
                     {;}
         }
}
void main()
{

    uchar i,j;
    uchar flag=0; //控制步进电机停止还是运转
    if(key1==0) {
           delay(5);
           if(key1==0)
           {
               flag=~flag;
                   while(!key1);
                }
    }
while(flag)
{
      j=0;
          for(i=0;i<192;i++)
          {
              P1 = 0x00;
                  P1 = F_Rotation[j];//这里只有正转是为了测试
                  j++;
                  if(j>=4) j=0;
                  delay(2);
          }
          delay(200);
  }
}

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;                                         //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
     uchar j;
         while( i--){
             for(j=0;j<250;j++)
                     {;}
         }
}
void main()
{

    uchar i,j;
    uchar flag=0; //控制步进电机停止还是运转
    if(key1==0) {
           delay(5);
           if(key1==0)
           {
               flag=~flag;
                   while(!key1);
                }
    }
while(flag)
{
      j=0;
          for(i=0;i<192;i++)
          {
              P1 = 0x00;
                  P1 = F_Rotation[j];//这里只有正转是为了测试
                  j++;
                  if(j>=4) j=0;
                  delay(2);
          }
          delay(200);
  }
}

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;                                         //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
     uchar j;
         while( i--){
             for(j=0;j<250;j++)
                     {;}
         }
}
void main()
{

    uchar i,j;
    uchar flag=0; //控制步进电机停止还是运转
    if(key1==0) {
           delay(5);
           if(key1==0)
           {
               flag=~flag;
                   while(!key1);
                }
    }
while(flag)
{
      j=0;
          for(i=0;i<192;i++)
          {
              P1 = 0x00;
                  P1 = F_Rotation[j];//这里只有正转是为了测试
                  j++;
                  if(j>=4) j=0;
                  delay(2);
          }
          delay(200);
  }
}

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^4;                                         //暂停还有停止
unsigned char code F_Rotation[4]={0x03,0x06,0x0c,0x09};//正转表格
unsigned char code B_Rotation[4]={0x03,0x09,0x0c,0x06};//反转表格
void delay(uchar i)//延时
{
     uchar j;
         while( i--){
             for(j=0;j<250;j++)
                     {;}
         }
}
void main()
{

    uchar i,j;
    uchar flag=0; //控制步进电机停止还是运转
    if(key1==0) {
           delay(5);
           if(key1==0)
           {
               flag=~flag;
                   while(!key1);
                }
    }
while(flag)
{
      j=0;
          for(i=0;i<192;i++)
          {
              P1 = 0x00;
                  P1 = F_Rotation[j];//这里只有正转是为了测试
                  j++;
                  if(j>=4) j=0;
                  delay(2);
          }
          delay(200);
  }
}

没看见你的停止控制程序啊

那个按键控制flag 当按一下是flag反向再通过while(flag)控制步进电机停止还是转动

flag并不能停止把,要把数据输入赋值为0,打赏点积分把

P1 = 0x00;停止

有没有msp430f149的控制电机转动的程序,谢谢

有没有msp430f149的控制电机转动的程序,谢谢

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top