找回密码
 立即注册
查看: 187|回复: 0

分享一款基于STC15W408AS单片机设计的TB6560可编程步进电机驱动器

[复制链接]

该用户从未签到

42

主题

7

回帖

246

积分

中级会员

积分
246
发表于 2023-7-7 14:07:09 | 显示全部楼层 |阅读模式
DSC_0001.JPG

DSC_0002.JPG

DSC_0004.JPG

DSC_0005.JPG

DSC_0006.JPG

DSC_0008.JPG

DSC_0012.JPG


/****************************************************
主控为STC15w408as,
****************************************************/
#include<STC12C5A60S2.H>
#define uchar unsigned char
#define uint unsigned int

/********************************************************
                                                控制位定义
********************************************************/
uint j=2,xx=0,g=0,i=0,s=2;
static uint ss=0; //ss为静态
sbit shi_neng1=P1^1;  //        使能控制位1
sbit fang_xiang1=P1^0;//        旋转方向控制位1
sbit mc1=P1^2; // 脉冲控制位1
sbit shi_neng2=P3^7;  //        使能控制位2
sbit fang_xiang2=P3^5;//        旋转方向控制位2
sbit mc2=P3^6; // 脉冲控制位2
sbit qd=P2^0;//        启动
sbit tz=P2^1;//停止按钮
sbit zz=P2^2;//正转按钮
sbit fz=P2^3;//反转按钮
sbit jia=P2^4;//加速按钮
sbit jian=P2^5;// 减速按钮
sbit jt=P0^0;// 急停按钮
/*******************************************************************
*                       K1 开机按键
********************************************************************/
void key_1(){
    if(qd==0){
                             shi_neng1=1;//开机
                                 shi_neng2=1;
                                  i=1;       
            }
  }
/*******************************************************************
*                       K2 关机按键
********************************************************************/
void key_2(){
         if(tz==0){
                         shi_neng1=0;//关机
                                 shi_neng2=0;
                                   i=0;   
           }
  }

/*******************************************************************
*                       K3正转按键
********************************************************************/
void key_3(){
    if(zz==0)
         {
           if(ss>180){ ss=0;
                if(zz==0){
                           fang_xiang1=0;
                           fang_xiang2=0;
                        }
                  }
           while(zz==0);
         }
  }
/*******************************************************************
*                       K4反转按键
********************************************************************/
void key_4(){
    if(fz==0)
         {
           if(ss>180){ ss=0;
                if(fz==0){
                           fang_xiang1=1;
                           fang_xiang2=1;
                        }
                  }
           while(fz==0);
         }
  }
/*******************************************************************
*                       K5减速按键
********************************************************************/
void key_5(){
    if(jian==0)
         {
           if(ss>180){ ss=0;
                if(jian==0){    //注s至少为2不能少于2
                                s+=1;  
                        }
                  }
           while(jian==0);
         }
  }
/*******************************************************************
*                       K6加速按键
********************************************************************/
void key_6(){
    if(jia==0)
         {
           if(ss>180){ ss=0;
                if(jia==0){
                      if(s>=2){
                                s-=1; //注s至少为2不能少于2
                                }
                         if(s<2){
                                s=2; //注s至少为2不能少于2
                                }
                        }
                  }
           while(jia==0);
         }
  }
/*******************************************************************
*                       K7 急停按键
********************************************************************/
void key_7(){
         if(jt==0){
                         shi_neng1=0;//关机
                                 shi_neng2=0;
                                   i=0;   
           }
  }
/******************************************************************
                          定时器配置
*******************************************************************/
void ConfigTimer0(){
        TMOD=0x01;//将定时器0,1都设置为模式1
TL0 = 0x0C;                //设置定时初值 500us 内部晶振12M 发出1KHZ脉冲为最高速度 大于1KHZ速度降低,只能为偶整数倍降低
        TH0 = 0xFE;                //设置定时初值
        TR0=1;//开启定时器0
        ET0=1;//开定时器0的中断
        EA=1;//开总中断
}
/******************************************************************
                          T0定时器
*******************************************************************/
void timer0_ISR() interrupt 1
{
TL0 = 0x0C;                //设置定时初值
        TH0 = 0xFE;                //设置定时初值
        ss++;          //按键延时用
          if(i==1){
           j--;                          //j-1的结果即为降低的倍数j-1=2,2为原来速度的一半跟细分一样
             if(j==1){          //j必须为1不能为0并且j赋值最少为2因为j--,j=0时会变成999
                     j=s;
                        mc1=~mc1;
                        mc2=~mc2;
           }
        }

}
/********************************************************
                                                主函数
********************************************************/

main()
{
        shi_neng1=0;  //        使能控制位1
        fang_xiang1=0;//        旋转方向控制位1
        shi_neng2=0;  //        使能控制位2
        fang_xiang2=0;//        旋转方向控制位2
//        i=1;
//        mc=0; // 脉冲控制位
        ConfigTimer0();
        while(1)
        {
                key_1();
                key_2();
                key_3();
                key_4();
                key_5();
                key_6();
                key_7();
        }
}


GYJ-0244_TB6560可编程步进电机驱动器.pdf

829.03 KB, 下载次数: 32

GYJ-0244_TB6560可编程步进电机驱动器发货资料.rar

1.78 MB, 下载次数: 32

回复 送花

使用道具 举报

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-21 22:56 , Processed in 0.067127 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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