求一个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完事 发脉冲

求一个C语言程序,用msp430控制步进电机启动,停止,正转和反转...
首先这个程序是针对4项步进电机的,采用单4拍转动的方式。步进电机还有其他参数,比如转速等等,都要考虑在内。步进电机子程序放在定时器中断里面。不是特别精确。能用。里面设立了几个标志,你应该能看懂 void StepMotor(void) \/\/步进电机子函数 { \/\/正转\/\/ if (MOTORCONTROL==2){ if(motortim...

msp430f169单片机控制步进电机和直流电机的程序
\/\/int count[4];\/\/ int count[9]={0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9};\/\/高四位置为高电平,关掉点电机电源,否则三极管会烧坏;while(1){ for(i=0;i<9;i++){ P1=count[i];delay(1000);} } }

求单片机c语言控制步进电机调速程序
可以自行换成反转表格 delay(500);\/\/改变这个参数可以调整电机转速 } } }

用c语言程序实现步进电机的正反转加减速的编程
内容:1、本程序用于测试4相步进电机常规驱动 2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来 3、速度不可以调节的过快,不然就没有力矩转动了 4、按s4(设置成独立按键模式)可以控制正反转 ---*\/ include <reg52.h> bit Flag;\/\/定义正反转标志位 unsigned char code ...

用单片机控制步进电机正反转,简单易懂的C语言程序,最好带注释,步进电机...
第1行设置由输入端X1作为启动,Y1输出3万个脉冲,脉冲频率600赫兹(每秒600个脉冲的频率),由于只有Y1输出脉冲,没有设置方向输出端,所以电机正转。第3、4行由X2同时启动两行作为反转,Y1输出3万个脉冲,频率为800赫兹,Y1输出脉冲的同时方向输出端Y2同时输出方向信号,因此,电机反转。反转的3万个...

求一段控制电动机的C语言程序
\/\/电机转动 void motor_run() interrupt3 { if(n<PWM_H) motor=1;else motor=0;n++;if(n>=4) n=0;} \/\/速度控制,4级速度可调:0、1、2、3; 对应占空比:0、1\/4、2\/4、3\/4 void motor_set(unsigned char v){ if (v>3) v=3;if (v == 0)TR1 = 0;else { TR1 =...

大神们,有关步进电机和直流电机的问题,在线等??
另一个重要的是,步进电机一定有两个或以上的绕组,这是和普通电机最大的区别。所以步进电机正转反转就变得容易多了,而且步进电机通电的时候是两个绕组都有电流,所以步进电机区别直流电机最大的地方是电机有自锁(这个功能使步进电机定位效果达到最佳状态)。你下面的问题和步进电机本身无关,和驱动以及...

求51单片机控制步进电机,实现其间歇运动的程序,最好要有C语言的
void qudong(unsigned char t,bit flag) \/\/ t范围0~4控制转速,flag表示正反转 { unsigned char zz,i;if(t) \/\/ 先判断t是否为0,如果是,就没必要进行下面的判断 { if(flag) \/\/flag=1;为正转 { switch(t) \/\/ 选出几级速度 { case 1: zz=4;break;case 2: zz=...

求高手帮忙用STC89C52RC单片机控制步进电机旋转不同角度
步进电机是靠脉冲工作的,给一个脉冲就自己转一个角度,这个角度是步进电机的最小转矩角,这个角度是步进电机本身的,一般都标明的,也可以自己算出来的。比如你的步进电机最小步矩角是0.9度,那么你连续让控制步进电机的引脚给它270\/0.9=300个脉冲就能旋转270度。程序其实很简单的,关键明白步进电机...

求用51型的单片机控制步进电机,要求步进电机转90度后停5秒,再转90度
另一种是带脉冲分配的,单片机发过来一串方波脉冲,脉冲个数决定转动的步数,另外输出一个控制正转和反转的信号 这两种驱动器的单片机程序当然是不一样的 用C语言编程很简单:(第一种驱动器)for(i=0;i<4;i++){ for(j=0;j<3;j++)\/\/循环3次每次4步,12步是90度 { P0=1;delay_ms(2);...

相似回答