反转孙铅时通电帆凯枣顺序态拆倒过来就行,按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()
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)