您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > 51单片机步进电机转动基本程序
/*-----------------------------------------------名称:步进电机编写:汤姆克鲁斯日期:2013.1修改:无内容:本程序用于测试2相或4相步进电机常规驱动,使用一二相励磁,驱动信号低电平有效------------------------------------------------*/#includereg52.hsbitA1=P2^0;//定义步进电机连接端口sbitB1=P2^1;sbitC1=P2^2;sbitD1=P2^3;#defineCoil_A1{A1=0;B1=1;C1=1;D1=1;}//A相通电,其他相断电,低电平有效,若你的驱动电路是高电平有效则改为(1,0,0,0)#defineCoil_B1{A1=1;B1=0;C1=1;D1=1;}//B相通电,其他相断电#defineCoil_C1{A1=1;B1=1;C1=0;D1=1;}//C相通电,其他相断电#defineCoil_D1{A1=1;B1=1;C1=1;D1=0;}//D相通电,其他相断电#defineCoil_AB1{A1=0;B1=0;C1=1;D1=1;}//AB相#defineCoil_BC1{A1=1;B1=0;C1=0;D1=1;}//BC相#defineCoil_CD1{A1=1;B1=1;C1=0;D1=0;}//CD相#defineCoil_DA1{A1=0;B1=1;C1=1;D1=0;}//DA相#defineCoil_OFF{A1=1;B1=1;C1=1;D1=1;}//全部断电unsignedcharSpeed;/*------------------------------------------------uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编,大致延时长度如下T=tx2+5uS------------------------------------------------*/voidDelayUs2x(unsignedchart){while(--t);}/*------------------------------------------------mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是0~255这里使用晶振12M,精确延时请使用汇编------------------------------------------------*/voidDelayMs(unsignedchart){while(t--){//大致延时1mSDelayUs2x(245);DelayUs2x(245);}}/*------------------------------------------------主函数------------------------------------------------*/main(){uinti=50;//根据电机的步距角调整通电循环次数,这里设为一二相励磁方式,我的电机现在步距角就是0.9°,0.9*8*50=360°,就能正转或者反转一周Speed=5;//调整速度(延迟时间)while(i--)//正转一周{Coil_A1DelayMs(Speed);Coil_AB1DelayMs(Speed);Coil_B1DelayMs(Speed);Coil_BC1DelayMs(Speed);Coil_C1DelayMs(Speed);Coil_CD1DelayMs(Speed);Coil_D1DelayMs(Speed);Coil_DA1DelayMs(Speed);}Coil_OFFi=50;while(i--)//反转一周{Coil_DA1DelayMs(Speed);Coil_D1DelayMs(Speed);Coil_CD1DelayMs(Speed);Coil_C1DelayMs(Speed);Coil_BC1DelayMs(Speed);Coil_B1DelayMs(Speed);Coil_AB1DelayMs(Speed);Coil_A1DelayMs(Speed);}}//对步进电机工作原理若不了解请去百度视频补课
本文标题:51单片机步进电机转动基本程序
链接地址:https://www.777doc.com/doc-4634989 .html