求一个C语言程序,用msp430控制步进电机启动,停止,正转和反转。在线等,急求,给高分~~

如题所述

我给你一段作为参考,最近正在研究这个玩意。让步进电机转动很简单,最简单的方式就是依次给它的每一项一个脉冲(脉冲时间适具体情况而定)。首先这个程序是针对4项步进电机的,采用单4拍转动的方式。步进电机还有其他参数,比如转速等等,都要考虑在内。步进电机子程序放在定时器中断里面。不是特别精确。能用。里面设立了几个标志,你应该能看懂

void StepMotor(void) //步进电机子函数
{
//正转//
if (MOTORCONTROL==2)
{
if(motortime<3) //转的圈数。
{
motorABCD++;
switch( motorABCD ) //精度要求不高,改8拍为4拍转动方式
{
case 2MS:
m1=0;
m2=1;
m3=1;
m4=1;
break;
case 3MS:
m1=1;
m2=0;
m3=1;
m4=1;
break;
case 4MS:
m1=1;
m2=1;
m3=0;
m4=1;
break;
case 5MS:
m1=1;
m2=1;
m3=1;
m4=0;
motortime++;
motorABCD=1MS;
break;
}
}
}
//反转//
if (MOTORCONTROL==1)
{
if(motortime<3) //转的圈数。
{
motorABCD++;
switch( motorABCD ) //精度要求不高,改8拍为4拍转动方式
{
case 2MS:
m1=0;
m2=1;
m3=1;
m4=1;
break;
case 3MS:
m1=1;
m2=1;
m3=1;
m4=0;
break;
case 4MS:
m1=1;
m2=1;
m3=0;
m4=1;
break;
case 5MS:
m1=1;
m2=0;
m3=1;
m4=1;
motortime++;
motorABCD=1MS;
break;
}
}
}
if(motortime==3)
{
motortime=0;
MOTORCONTROL=0;
}

}//子函数结尾

void MOTOR() interrupt 3 //定时器1 中断程序
{

TH1=(65536-990)/256; /*恢复计数初值*/
TL1=(65536-990)%256;
StepMotor();
}追问

十分感谢!但是兄弟,你这个是不是基于51的?

追答

YES.是基于C51的。但是控制步进电机的核心思想应该是有共同点的哈。如果对精度要求不高的话还是很好控制的。你有什么问题可以问我,我最近在研究这个。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-02
可以用PLSY指令或PLSR指令。
你的步进电机有没有定位模块啊?追问

没有~~~能给我一段带注释的具体程序吗?我是初学者,网上的程序都看不懂

追答

我晕

第2个回答  2013-11-02
用PLC完事 发脉冲
相似回答