资源描述
精选优质文档-倾情为你奉上/*- 名称:步进电机 编写:汤姆克鲁斯 日期:2013.1 修改:无 内容:本程序用于测试2相或4相步进电机常规驱动,使用一二相励磁,驱动信号低电平有效 -*/#include sbit A1=P20; /定义步进电机连接端口sbit B1=P21;sbit C1=P22;sbit D1=P23;#define Coil_A1 A1=0;B1=1;C1=1;D1=1;/A相通电,其他相断电,低电平有效,若你的驱动电路是高电平有效则改为(1,0,0,0)#define Coil_B1 A1=1;B1=0;C1=1;D1=1;/B相通电,其他相断电#define Coil_C1 A1=1;B1=1;C1=0;D1=1;/C相通电,其他相断电#define Coil_D1 A1=1;B1=1;C1=1;D1=0;/D相通电,其他相断电#define Coil_AB1 A1=0;B1=0;C1=1;D1=1;/AB相#define Coil_BC1 A1=1;B1=0;C1=0;D1=1;/BC相#define Coil_CD1 A1=1;B1=1;C1=0;D1=0;/CD相#define Coil_DA1 A1=0;B1=1;C1=1;D1=0;/DA相#define Coil_OFF A1=1;B1=1;C1=1;D1=1;/全部断电unsigned char Speed;/*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 主函数-*/main() uint i=50;/根据电机的步距角调整通电循环次数,这里设为一二相励磁方式,我的电机现在步距角就是0.9,0.9*8*50=360,就能正转或者反转一周 Speed=5; /调整速度(延迟时间) while(i-) /正转一周 Coil_A1 DelayMs(Speed); Coil_AB1 DelayMs(Speed); Coil_B1 DelayMs(Speed); Coil_BC1 DelayMs(Speed); Coil_C1 DelayMs(Speed); Coil_CD1 DelayMs(Speed); Coil_D1 DelayMs(Speed); Coil_DA1 DelayMs(Speed); Coil_OFF i=50; while(i-) /反转一周 Coil_DA1 DelayMs(Speed); Coil_D1 DelayMs(Speed); Coil_CD1 DelayMs(Speed); Coil_C1 DelayMs(Speed); Coil_BC1 DelayMs(Speed); Coil_B1 DelayMs(Speed); Coil_AB1 DelayMs(Speed); Coil_A1 DelayMs(Speed); /对步进电机工作原理若不了解请去百度视频补课专心-专注-专业
展开阅读全文