步进电机控制程序:正转4圈,可调速
#include <reg52.h> #include <intrins.h> //微秒(nop)头文件 sbit dir=P1^0; sbit pul=P1^1; sbit ena=P1^5; #define uint unsigned int void Delay_xms(uint x);
void Delay1000us() //@11.0592MHz { unsigned char i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
} void Delay_xms(uint x) { uint i,j; for(i=0;i<x;i++) for(j=0;j<112;j++); }
void main()
{
uint x,y;
dir=1; //dir为1时正转,dir为0时反转
ena=1;
//for( y = 0; y<5; y++) { //正转4圈,修改Y值,可以改变圈数
for( x = 0; x <=133; x++) { //一圈200个脉冲 两个pul为一个脉冲 16个脉冲就是28.8°距离30°是1.2°,如果改成17个脉冲就是30.6°
pul=1;
Delay1000us(); //修改微秒值可以调速
pul=0;
Delay1000us();
}
//}
Delay_xms(1000); //1.5秒转一次 如果想把这个程序作为子程序,加入主程序,只需要将这个延时注释掉即可
}
这个程序控制一个步进电机正转4圈,每圈转200个脉冲,每个脉冲由两个pul信号组成,每个脉冲的时间间隔为1.2°,可以通过修改脉冲数量和微秒延时来控制步进电机的转速。程序包含了一个延时函数Delay_xms(),用于延时一定的时间。
原文地址: https://www.cveoy.top/t/topic/m9Sp 著作权归作者所有。请勿转载和采集!