欢迎来到天天文库
浏览记录
ID:43349018
大小:35.00 KB
页数:4页
时间:2019-09-30
《串口调试助手控制步进电机正反转》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、串口调试助手控制步进电机正反转#include#include#defineucharunsignedchar#defineuintunsignedintunsignedchartable1[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};//控制电机正传unsignedchartable2[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0C,0x08};//控制电机反转unsignedcharch,step;intt1,t2,a,b;/*-----------------
2、-------------------------------串口初始化函数------------------------------------------------*/voidckinit(){TMOD=0X20;TH1=0XFD;TL1=0XFD;//设置波特率为9600TR1=1;//启动定时器1SCON=0X50;PCON=0X00;//设置串口工作方式1}/*------------------------------------------------控制字符接收函数----------------------------------------------
3、--*/voidSCI_Rev()//串口接收数据{uinti=0;while(RI){ch=SBUF;a=ch-96;b=ch-64;RI=0;}}/*------------------------------------------------电机延时函数------------------------------------------------*/voiddelay(intn){inti,j;//延时0.999ms*n12MHZ晶振for(i=0;i4、---------------------电机正转函数------------------------------------------------*/voidforward1(){for(t1=512*a;t1>0;t1--){for(step=0;step<8;step++){P1=table1[step];delay(2);if(RI)t1=0;}}}/*------------------------------------------------电机反转函数------------------------------------------------*/void5、backward1(){for(t2=512*b;t2>0;t2--){for(step=0;step<8;step++){P1=table2[step];delay(2);if(RI)t2=0;}}}/*------------------------------------------------电机停止函数------------------------------------------------*/voidstop(){P1=0xff;delay(100);}/*------------------------------------------------主函数6、------------------------------------------------*/voidmain(){ckinit();while(1){SCI_Rev();switch(ch){case'a':forward1();//正转1圈ch=0;break;case'b':forward1();//正转2圈ch=0;break;case'c':forward1();//正转3圈ch=0;break;case'd':forward1();//正转4圈ch=0;break;case'A':backward1();//反转1圈ch=0;break;case'B':ba7、ckward1();//反转2圈ch=0;break;case'C':backward1();//反转3圈ch=0;break;case'D':backward1();//反转4圈ch=0;break;case'0'://停止电机stop();break;default:break;}P1=0;}}
4、---------------------电机正转函数------------------------------------------------*/voidforward1(){for(t1=512*a;t1>0;t1--){for(step=0;step<8;step++){P1=table1[step];delay(2);if(RI)t1=0;}}}/*------------------------------------------------电机反转函数------------------------------------------------*/void
5、backward1(){for(t2=512*b;t2>0;t2--){for(step=0;step<8;step++){P1=table2[step];delay(2);if(RI)t2=0;}}}/*------------------------------------------------电机停止函数------------------------------------------------*/voidstop(){P1=0xff;delay(100);}/*------------------------------------------------主函数
6、------------------------------------------------*/voidmain(){ckinit();while(1){SCI_Rev();switch(ch){case'a':forward1();//正转1圈ch=0;break;case'b':forward1();//正转2圈ch=0;break;case'c':forward1();//正转3圈ch=0;break;case'd':forward1();//正转4圈ch=0;break;case'A':backward1();//反转1圈ch=0;break;case'B':ba
7、ckward1();//反转2圈ch=0;break;case'C':backward1();//反转3圈ch=0;break;case'D':backward1();//反转4圈ch=0;break;case'0'://停止电机stop();break;default:break;}P1=0;}}
此文档下载收益归作者所有