⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 串口步进.c

📁 三洋步进电机控制(带驱动器)
💻 C
字号:
#include<reg51.h>

//步进机控制端口定义//
sbit OPT=P2^4; //驱动器使能//
sbit SPL=P2^3; //脉冲//
sbit DIR=P2^2; //方向//
sbit ENA=P2^0; //步进机使能//
//定义默认时间全局变量//
unsigned int temp=100;

//延时//
void delay(unsigned int i)
{
  i=temp;
  while(i--);
}
//起动//
 qidong(void)
{
  OPT=1;DIR=0;ENA=1;
}

//停止//
 tingzhi(void)
{
  OPT=0;DIR=0;ENA=0;
}

//正转//
 zhengzhuan(void)
{
  OPT=1;DIR=0;ENA=1;
}

//反转//
 fanzhuan(void)
{
  OPT=1;DIR=1;ENA=1;
}

//加速//
 jiaspeed(void)
{
  if((temp-20>=20)&&(OPT==1)&&(ENA==1)) temp-=20;
}

//减速//
 jianspeed(void)
{
 if((temp+20<=200)&&(OPT==1)&&(ENA==1))  temp+=20;
}


//定时器1初始化//
void start_t1(){TMOD=0x20;IE=0x82;TH1=0xfd;TL1=0xfd;TR1=1;}

//主函数//
void main(void)
{
 unsigned char rdate;
 OPT=0;DIR=0;ENA=0;SPL=0;       //状态初始化//
 RED=1;GREEN=1;YELLOW=1;xuan=1;
 SCON=0x50;                     //串口初始化//
 start_t1();
 while(1)
  {
   SPL=~SPL;                    //脉冲为不断取反方式//
   delay(temp);
   if(RI==1)                    //接收命令后,执行对应操作//
    {
     RI=0;
     rdate=SBUF;
     if(rdate==0){qidong();}            //起动//
     else if(rdate==1){display(1);zhengzhuan();}   //正转//
     else if(rdate==2){display(2);fanzhuan();}     //反转//
     else if(rdate==3){display(3);jiaspeed();}     //加速//
     else if(rdate==4){display(4);jianspeed();}    //减速//
     else if(rdate==5){display(5);tingzhi();}      //停止//
     else tingzhi();
    }
   }
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -