求高手给步进电机子程序加个延时或者中断步进电机运行一分钟停止,或者转3圈停止
/******************************************************7 步进电机控制程序函数*****************************************************/voidmotor_ccw(void) //电机反转函数{ uchar i,j; for(j=0;j<8;j++) //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周 { if(key7==0) { break; //如果K7按下,退出此循环 } for(i=0;i<8;i++) //旋转45度 { //P1=CCW; MA=tabD; MB=tabC; MC=tabB; MD=tabA; delay(5); //调节转速 } }}voidmotor_cw(void) //电机正转函数{ uchar i,j; for(j=0;j<8;j++) { if(key7==0) { break; //如果K7按下,退出此循环 } for(i=0;i<8;i++) //旋转45度 { //P1=CW; MA=tabDB; MB=tabCB; MC=tabBB; MD=tabAB; delay(5); //调节转速 } }} voidmotor_back() //电机反转{ write_1602com(er+0x01); write_1602dat(tabrun[2]); //写运行状态反转B //for(r=0;r<N;r++) while(motorflag==1) { motor_ccw(); if(key7==0) //key7电机停止按键 { motorflag=0; write_1602com(er+0x01); write_1602dat(tabrun[0]); //break; } }} void motor_run() //电机正转 { write_1602com(er+0x01); write_1602dat(tabrun[1]); //写运行状态正转A //for(r=0;r<N;r++) while(motorflag==1) { motor_cw(); if(key7==0) { motorflag=0; write_1602com(er+0x01); write_1602dat(tabrun[0]); //break; } } } void motor_stop() //电机停止{ write_1602com(er+0x01); write_1602dat(tabrun[0]); MD=0; MC=0; MB=0; MA=0; }voidkeyscan2() // 电机控制按键扫描子涵数{if(key5==0) //key5电机反转按键 { delay(10); if (key5==0) { motorflag=1; motor_back(); } }elseif(key6==0) //key6电机正转按键 { delay(10); if(key6==0) { motorflag=1; motor_run(); } } else motor_stop();}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>