求一C程序,关于用单片机控制步进电机的。要求:可以用单片机上的独立按键控制电机的正反转。主要要求可

求一C程序,关于用单片机控制步进电机的。要求:可以用单片机上的独立按键控制电机的正反转。主要要求可看图片!大神们帮帮忙,谢谢了!!!

俺手头没有步进电机的硬件驱动电路,只好用LED测试了,测试通过喽


只不过程序中的延时 时间比较长,你可以随意修改


另外,你没说是什么步进电机,和控制方式


所以,本人就按照常用的 两相步进电机写的,方式为 8拍


程序设计思路为,设立一个变量来记录状态,然后再根据状态去执行不同语句


具体程序如下,如有不懂之处可以继续追问或私密我加好友


若满意,帮到了你,请记得采纳,谢谢!


/***************************************************************************/

#include<reg51.h>


sbit S1=P3^2; sbit S2=P3^3; sbit S3=P3^4; sbit S4=P3^5; sbit S5=P3^6;

int i=0,t=0,fe=0;

char LD[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6};//两相8拍编码

/***************************************************************************/

void delay(int t)//延时函数

{

int j;

for(;t>0;t--)

{for(j=200;j>0;j--);}

}

/***************************************************************************/

void main(void)

{

     while(1) //主循环内,只执行端口赋值

     {

         P2=LD[i]; //对 P2 端口赋值,点亮 LED

        

         //方向判断,停止是0,所以没必要编写停止语句

         if(fe==1) //如果是反转

         {

             i++;if(i>7){i=0;}//正向流动

             delay(100);//延时一会,即旋转的速度

         }

         if(fe==2) //如果是正转

         {

             i--;if(i<0){i=7;}//反向流动

             delay(100);//延时一会,即旋转的速度

         }

         if(fe==3) //如果是延时

         {

             delay(1000);//延时一会,再反转

             for(t=0;t<100;t++)//反转 100个脉冲

             {

                 i++;if(i>7){i=0;}//正向流动

                 P2=LD[i];

                 delay(100);//延时一会,即旋转的速度

             }

             fe=0;//反转结束后,则停止

         }

        

         //按键部分

         if(S5==0){fe=0;}//停止

         if(S4==0){fe=1;}//反转

         if(S3==0){fe=2;}//正转

         if(S2==0){fe=3;}//延时

         if(S1==0){fe=2;}//正转

     }

}

/***************************************************************************/

追问

哦!谢谢

追答

别客气

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-31
可以做,具体要求呢?步进电机型号呢?用单片机做驱动器,还是有额外的驱动器?追问

57步进电机,用额外的驱动器,现在用的是TB6560 可能会用别的驱动器 谢谢

相似回答