步进电机应用c语言程序设计实例,步进电机C语言程序.doc

步进电机C语言程序

步进电机C语言程序??

2009-04-18 20:20:42|??分类:?单片机|字号?订阅

//两相5、6线步进电机,分为四拍和八拍,这里介绍输出八拍方式:A-AC-C-CB-B-BD-D-DA//四拍:A-C-B-D,因此在八拍的基础上减去中间的就可以了,不过步距角要大一倍#include #include

sbit la=P2^0;?? //定义两相电机的四组线,从板上设计来分配,选择P2口的低四位输出,相应的输出也可以反应在LED灯上?? //P2。0为A相,P2。1为B相,P2。2为C相,P2。3为D相sbit lb=P2^1;sbit lc=P2^2;sbit ld=P2^3;

#define uchar unsigned charcode unsigned int lhj[]={1,50,100,1,50,80,1,100,50,0,120,40,0,30,80,0,50,100,?????? 1,50,120,0,200,80,1,400,20,1,50,130,0,200,90,0,50,150};?????? //定义电机动作的参数,每三个数为一组,第一个是方向(1、正转,0、反转)?????? //第二个是步进量,第三个是转速unsigned char key();//键盘动作,这里的键盘扫描只用到四个按键有效(板上标的0,4,8,C)unsigned char right(unsigned int Speed,unsigned int road); //正转unsigned char left(unsigned int Speed,unsigned int road); //反转void mDelay(unsigned int DelayTime);?? //延时函数

void main(){?uchar i=0;while(1){?? if(key()==0xde){//8的按键按下??? for(i=0;i<34;i+=3){//循环输出我们定义好的动作数据???? if(lhj[i])??? //调入数组,先判断正反转????? right(lhj[i+1],lhj[i+2]); //两个参数代表步进量和转速???? else????? left(lhj[i+1],lhj[i+2]);???? if(key()==0xee)//C的按键按下???? break;??? }????? }}??}unsigned char right(unsigned int Speed,unsigned int road)//两个参数代表步进量和转速{//步进节拍:A-AC-C-CB-B-BD-D-DAwhile(1){?? if(!Speed) //判断步进量走完没?以下都是,每走一步,判断一次??? break;?? ld=1;?? la=0;?? //a?? mDelay(road);//这里的延时就可控制转速?? if(!Speed--)??? break;?? lc=0;?? //ac?? mDelay(road);?? if(!Speed--)??? break;?? la=1;?? //c?? mDelay(road);?? if(!Speed--)??? break;?? lb=0;?? //cb?? mDelay(road);?? if(!Speed--)??? break;?? lc=1;?? //b?? mDelay(road);?? if(!Speed--)??? break;?? ld=0;?? //bd?? mDelay(road);?? if(!Speed--)??? break;?? lb=1;?? //d?? mDelay(road);?? if(!Speed--)??? break;?? la=0;?? //da?? mDelay(road);?? Speed--;}P3=P3|0x0f;//将四个脚输出置高}unsigned char left(unsigned int Speed,unsigned int road)//两个参数代表步进量和转速{?? //步进节拍 A-AD-D-DB-B-BC-C-CAwhile(1){?? if(!Speed)//判断步进量走完没?以下都是,每走一步,判断一次??? break;???? lc=1;?? la=0;?? //a?? mDelay(road);?? if(!Speed--)??? break;?? ld=0;?? /

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值