c语言编写步进电机程序,正转,反转,有6档转速5转S、2.5转S、1.25转S、1转S、0.5转S和、0.25转S.

c语言编写步进电机程序,正转,反转,有6档转速5转S、2.5转S、1.25转S、1转S、0.5转S和、0.25转S.,第1张

这个要看你的电机驱动是什么了,不同的驱动电路或者驱动器的编程是不一样的#include#defineunitunsignedint#defineucharunsignedcharsbitkey=P1^1;//定义键盘接线口unsignedcharcodeF_Rotation[4]={0x01,0x02,0x04,0x08};//正转表uchara;voidDelay(unsignedinti)//延时{while(--i);}voidrun()//转11圈子程序{unsignedchari,j;for(j=0;j<176;j++){for(i=0;i<4;i++)//4相{P0=F_Rotation[i];//输出对应的相可以自行换成反转表格Delay(500);//改变这个参数可以调整电机转速}}}voidmain(){while(1){if(key==0){Delay(100);if(key==0){while(!key);run();}}}}转速你自己计算一下在改一下就好了

ZHENG EQU 30H

FAN EQU 31H

NO EQU 32H

AS EQU 33H

SS EQU 34H

ORG 00H

AJMP MAIN

ORG 03H

AJMP SUB_INT0

ORG 30H

MAIN: MOV 10H,#01H

MOV 11H,#03H

MOV 12H,#02H

MOV 13H,#06H

MOV 14H,#04H

MOV 15H,#0CH

MOV 16H,#08H

MOV 17H,#09H

MOV 20H,#50

MOV 21H,#25

MOV 22H,#10

MOV 23H,#05

CLR ZHENG

CLR FAN

CLR NO

CLR AS

CLR SS

MOV R1,#20H

MOV A,@R1

MOV R5,A

MOV IE,#10000001B

SETB IT0

MOV R0,#0FH

LOOP: JNB ZHENG,LP

CALL GO

LP: JNB FAN,LOOP

CALL BACK

AJMP LOOP

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(中断)

SUB_INT0:

SCAN: MOV A,P0

CPL A

ANL A,#00011111B

JNZ SCAN1

AJMP SCAN

SCAN1: CALL DELAY1

MOV A,P0

CPL A

ANL A,#00011111B

JZ SCAN

CALL RDKEY

RETI

RDKEY: MOV A,P0

JNB ACC0,STOP

JNB ACC2,REV

JNB ACC1,FOR

JNB ACC3,ADDSPEED

JNB ACC4,SUBSPEED

STOP: SETB NO

RET

FOR: SETB ZHENG

RET

REV: SETB FAN

RET

ADDSPEED:SETB AS

RET

SUBSPEED:SETB SS

RET

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(正转)

GO: CLR ZHENG

CLR FAN

CLR NO

CLR AS

CLR SS

INC R0

MOV A,R0

CJNE A,#18H,GO2

MOV R0,#10H

GO2: MOV P2,@R0

MOV A,@R1

MOV R5,A

CALL DELAY

JB NO,RETURN

JB ZHENG,RETURN

JB FAN,RETURN

JNB SS,GO3

CALL JIAN

GO3: JNB AS,GO4

CALL JIA

GO4: AJMP GO

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(反转)

BACK: CLR ZHENG

CLR FAN

CLR NO

CLR AS

CLR SS

DEC R0

MOV A,R0

CJNE A,#0EH,TT

MOV R0,#17H

SJMP BACK2

TT: CJNE A,#0FH,BACK2

MOV R0,#17H

BACK2: MOV P2,@R0

MOV A,@R1

MOV R5,A

CALL DELAY

JB NO,RETURN

JB ZHENG,RETURN

JB FAN,RETURN

JNB AS,BACK3

CALL JIA

BACK3: JNB SS,BACK4

CALL JIAN

BACK4: AJMP BACK

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(加速)

JIA: MOV A,R1

CJNE A,#23H,JIA1

RET

JIA1: INC R1

RET

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(减速)

JIAN: MOV A,R1

CJNE A,#20H,JIAN1

RET

JIAN1: DEC R1

RET

RETURN:RET

DELAY:

D1: MOV R6,#50

D2: MOV R7,#150

D3: DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

DELAY1: MOV R6,#60

D4: MOV R7,#100

DJNZ R7,$

DJNZ R6,D4

RET

END

转速:代表发出脉冲频率。

位置:实际上就是代表脉冲个数,具体视步进电机的步距角而定(也就是每发一个脉冲,步进电机所旋转的角度)。

正反转:跟步进电机的相数有关,通过控制相位。

你还是先了解清楚你的步进电机的具体参数 还有步进电机的工作原理吧。

找你说的这种控制方案,是步进电机上还有步进驱动器,然后再通过单片机控制驱动器的。

如果是带驱动器控制,只需要了解驱动器的控制方式就可以了。

内容:1、本程序用于测试4相步进电机常规驱动

2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来

3、速度不可以调节的过快,不然就没有力矩转动了

4、按s4(设置成独立按键模式)可以控制正反转

------------------------------------------------/

#include

bit Flag;//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格

unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格

//

/ 延时函数 /

//

void Delay(unsigned int i)//延时

{

while(--i);

}

//

/ 主函数 /

//

main()

{

unsigned char i;

EX1=1; //外部中断0开

IT1=1; //边沿触发

EA=1; //全局中断开

while(!Flag)

{

P0=0x71;//显示 F 标示正转

for(i=0;i<4;i++) //4相

{

P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格

Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag)

{

P0=0x7C;//显示 b 标示反转

for(i=0;i<4;i++) //4相

{

P1=B_Rotation[i]; //输出对应的相

Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

}

//

/ 中断入口函数 /

//

void ISR_Key(void) interrupt 2 using 1

{

Delay(300);

Flag=!Flag; //s3按下触发一次,标志位取反

}

不清楚您具体采用的什么控制器(PLC或是单片机)和什么步进电机。

这里当着您使用的是单片机与5线4相电机

通常情况下控制单片机的4个IO口,使其都为高电平。

再按照一个方向轮流使其中一个IO口变为低电平(间隔这里先为2ms,修改间隔时间可以控制转速),就可以驱动步进电机转起。

以上就是关于c语言编写步进电机程序,正转,反转,有6档转速5转/S、2.5转/S、1.25转/S、1转/S、0.5转/S和、0.25转/S.全部的内容,包括:c语言编写步进电机程序,正转,反转,有6档转速5转/S、2.5转/S、1.25转/S、1转/S、0.5转/S和、0.25转/S.、按键控制步进电机停止启动(C程序)、单片机控制步进电机正反转、转速、位置,用C语言编写,上位机用Vc++6.0编写实现串口通信,C程序如何编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9426093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存