按键控制步进电机正反转,汇编程序怎么写?

按键控制步进电机正反转,汇编程序怎么写?,第1张

正转Zhengzhuan:SETB P3.4 CALL DELAYCLR P3.4SETB P3.5CALL DELAY CLR P3.5 SETB P3.6CALL DELAYCLR P3.6SEB P3.7CALL DELAY CLR P3.7AJMP Zhengzhuan

反转孙铅时通电帆凯枣顺序态拆倒过来就行,按P3.7 P3.6 P3.5 P3.4来循环。

这是8086微机原理的实验吧,我没有相同的硬件环境,只能给你说一下思路。

首先,步进电机的控制就是在两组不同的线圈上加脉冲信号,对于你提供的实验资料来说,就是向8255的B口发送相应的数据。你可以定义两个内存变量,一个正转,一个反转。当要正转时把正转变量传送给控制过程,反转时把反转变量传送给控制过程。这样就可以控制正反转了。

其次延时30秒,这可以通过做循环程序实现。洞竖谨自己编写一个过程就可以纳基。

第三,写个控制程序过程,设置一个内存变量,当该变量为零时把控制电机正转,非0时,反转,调用延时程序,改变这个变量值,通过纤斗取反 *** 作,使其值在0和1之间不断变化,电机就会按要求转动。

c语言行不行

#include "reg52.h"

void delay(unsigned int t)

//Motor

sbit F1 = P1^0

sbit F2 = P1^1

sbit F3 = P1^2

sbit F4 = P1^3

unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}//反转

unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}//正转

unsigned int K

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

* *

* 步进电机驱动 *

* *

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

void motor_ffw()

{

unsigned char i

unsigned int j

for (j=0j<12j++) //转1*n圈

{

for (i=0i<8i++) //一个冲困拆周期转30度

{

if(K==1) P1 = FFW[i]&0x1f //取数据

if(K==2) P1 = FFZ[i]&0x1f尺拦

delay(5) //调节转速

}

}

}

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

*

* 延时程序散枣

*

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

void delay(unsigned int t)

{

unsigned int k

while(t--)

{

for(k=0k<80k++)

{ }

}

}

main()

{

while(1)

{

K=1

motor_ffw()

K=2

motor_ffw()

}

}


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

原文地址: http://outofmemory.cn/yw/12359692.html

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

发表评论

登录后才能评论

评论列表(0条)

保存