#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(),用于延时一定的时间。

步进电机控制程序:正转4圈,可调速

原文地址: https://www.cveoy.top/t/topic/m9Sp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录