📄 串口步进.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 + -