完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define uint unsigned int #define udouble double #define J 10 #define M 15 uchar FFW[8]={0xFE,0xFC,0xFD,0xF9,0xFB,0xF3,0xF7,0xF6};//正转数组 uchar REV[8]={0xF6,0xF7,0xF3,0xFB,0xF9,0xFD,0xFC,0xFE};//反转数组 uchar rate ; /********************延时函数**************************/ void delay(uint i) { uint x, y; for(x=i; x>0; x--) for(y=100; y>0; y--) _NOP(); } /*****************电机1正转(逆时针)*******************/ void motor_ffw1(double q) { uchar i; for (i=0; i { P5OUT = FFW; delay(J); } } /*****************电机1反转(顺时针)*******************/ void motor_rev1(double q) { uchar i; for (i=0; i { P5OUT = REV; delay(J); } } /****************电机2正转(逆时针)*******************/ void motor_ffw2(double q) { uchar i; for (i=0; i { P4OUT = FFW; delay(M); } } /****************电机2反转(顺时针)********************/ void motor_rev2(double q) { uchar i; for (i=0; i { P4OUT = REV; delay(M); } } /***********************点运动*************************/ void dian(udouble x1,udouble y1,udouble x2,udouble y2) { double a1,a2,a3,b1,b2,b3; a1=sqrt((x1+15)*(x1+15)+(65-y1)*(65-y1)); b1=sqrt((50-x1)*(50-x1)+(65-y1)*(65-y1)); a2=sqrt((x2+15)*(x2+15)+(65-y2)*(65-y2)); b2=sqrt((50-x2)*(50-x2)+(65-y2)*(65-y2)); a3=fabs((a1-a2)/(3.14159*0.08)); b3=fabs((b1-b2)/(3.14159*0.08)); if((a1-a2)>=0) { motor_ffw1(a3); } else { motor_rev1(a3); } if((b1-b2)>=0) { motor_ffw2(b3); } else { motor_rev2(b3); } } /***********************线运动*************************/ void xian(udouble x1,udouble y1,udouble x2,udouble y2) { udouble i,a,b,c,d; a=x1;b=y1; for(i=1;i<=50;i++) { c=((0.02*i)*(x2-x1)+x1);d=((0.02*i)*(y2-y1)+y1); dian(a,b,c,d); a=c;b=d; } } /***********************圆运动************************/ void yuan(udouble x1,udouble y1) { udouble a[32]={10,9.7,9,8.3,7,5.5,4,2.4, 0,-2.4,-4,-5.5,-7,-8.3,-9,-9.7, -10,-9.7,-9,-8.3,-7,-5.5,-4,-2.4, 0,2.4,4,5.5,7,8.3,9,9.7}; udouble b[32]={0,2,4,5.5,7,8.3,9,9.7, 10,9.7,9,8.3,7,5.5,4,2, 0,-2,-4,-5.5,-7,-8.3,-9,-9.7, -10,-9.7,-9,-8.3,-7,-5.5,-4,-2,}; udouble c,d,e,f; uint i; xian(x1,y1,x1+10,y1); e=x1+10;f=y1; for(i=1;i<32;i++) { c=x1+a;d=y1+b; dian(e,f,c,d); e=c;f=d; } } /**********************主函数***********************/ void main(void) { WDTCTL = WDTPW + WDTHOLD; /*关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; P6DIR |= BIT2;P6OUT &= ~BIT2;//打开电平转换 P2DIR |= BIT3;P2OUT &= ~BIT3;//电平转换方向3.3V--->5V BCSCTL1&=~XT2OFF;//启动XT2振荡器 BCSCTL2|=SELM1;//MCLK为XT2 udouble x1,y1,x2,y2; x1=1;y1=1;x2=15;y2=40; xian(x1,y1,x2,y2); yuan(x2,y2); } 哪位大神帮我看看,这个程序为步进电机什么不转 |
|
相关推荐
1个回答
|
|
看不懂,帮顶~看不懂,帮顶~看不懂,帮顶~
|
|
|
|
只有小组成员才能发言,加入小组>>
2987个成员聚集在这个小组
加入小组2786 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3328 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2307 浏览 1 评论
4756 浏览 1 评论
2532 浏览 1 评论
1061浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3329浏览 2评论
2787浏览 1评论
1194浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-20 08:15 , Processed in 1.356112 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号