找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2331|回复: 1
收起左侧

步进电机驱动器简单应用-自动广告牌控制51单片机程序

[复制链接]
ID:104126 发表于 2016-1-24 02:50 | 显示全部楼层 |阅读模式
#include <REG51.H>
/*定义程序中的公共变量参数*/
unsigned int ti_dis;        //定义时间间隔
unsigned int mot_step;  //定义步数
unsigned int mo_bc=25;//定义电机所转圈数的参数,可根据实际情况修改
unsigned int js=150;      //定义电机速度参数,数值越小,速度越快,最小为8,小于8可能堵转。根据实际情况可进行修改。
unsigned int cjs=15;      //定义时间基本控制参数,如无问题不需要修改
/*变量参数定义结束*/

/*以下为延时控制过程*/
void delay(unsigned int ti_small,unsigned int ti_base)//ti_small为时间最小单位,ti_base=1000时为10ms,a*ti=mS
{
while(--ti_small!=0)  //循环开始
   {
      for(ti_dis=0;ti_dis<=ti_base;ti_dis++);  //时间累加器
   }
}
/*时间延时过程结束*/

/*以下为主程序,执行电机的正反转,控制速度和延时*/
void main(void)
{
  P1=0xFF;                 //稳定信号输出,防止上电时电机转子因信号不稳定抖动
  delay(1000,1000);   //加电10s后再运行主程序,给调试人员留出足够准备时间,防止出现事故。可根据实际情况修改,为安全起见建议时间延长
  /*以下程序未控制电机运动方式的主体部分*/
   while(1)  //无限循环
   {
     for(mot_step=0;mot_step<mo_bc;mot_step++)  //循环控制旋转圈数,正转
       {
         delay(js,cjs); //每步延时  
       P1=0xF7;        //电机转速,正传
       delay(js,cjs);   //每步延时  
       P1=0xFB;       //电机转速,正传
    }
       P1=0x00;          //软制动,防止机械部件因惯性造成过位
       delay(20,cjs);    //延长制动时间,防止电机拖动的负荷因惯性造成过未,如果需要调整制动停留时间,数字20根据实际情况修改
       P1=0xFF;          //防止停车后电机过热
       delay(1000,1000); //间隔10s,还行反转,可根据需求进行修改
     for(mot_step=0;mot_step<mo_bc;mot_step++)  //循环控制旋转圈数,反转
       {
         delay(js,cjs);  //每步延时
       P1=0xFD;        //电机转速,反传
       delay(js,cjs);    //每步延时
       P1=0xFE;        //电机转速,反传
    }
       P1=0x00;          //软制动,防止机械部件因惯性造成过位
       delay(20,cjs);    //延长制动时间,防止电机拖动的负荷因惯性造成过未,如果需要调整制动停留时间,数字20根据实际情况修改
       P1=0xFF;          //防止停车后电机过热
       delay(1000,1000); //间隔10s,执行正传,可根据需求进行修改
  }
  /*电机控制主体部分结束*/
}
/*主程序段结束*/


评分

参与人数 1黑币 +5 收起 理由
DIY电子 + 5 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:100826 发表于 2016-7-4 23:55 | 显示全部楼层
谢谢分享  学习.........
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表