找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机一键怎控制步进电机正转和反转?

查看数: 4241 | 评论数: 17 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-9-10 16:39

正文摘要:

功能要求:当安键KEY1安下且长安时步进电机正转70度停止,当松开时电机反转原位置。 小白写了个程序控制不了,安下键只能正转70度就停了,松开安键不能反转,没反应。问题在哪里,请大侠指点,非常感谢! #include ...

回复

ID:578423 发表于 2020-10-5 14:58
13303022280 发表于 2020-9-17 16:44
感觉你对switch case有些误区,     case 1:KEY_Status==0;SetpP();break;    //步进电机正转70度停止
    ...

非常感谢
ID:553941 发表于 2020-9-17 16:44
感觉你对switch case有些误区,     case 1:KEY_Status==0;SetpP();break;    //步进电机正转70度停止
          case 2:KEY_Status==1;SetpN();break;    //步进电机反转70度回原位你这个感觉是要判断的,case里面只是执行,不判断
ID:149799 发表于 2020-9-12 18:39
青桑叶 发表于 2020-9-12 17:32
说一下吧.你可以解决的.就是你在程序上加个判断条件:上升沿触发--正转;下降沿触发--反转;互相学习!!!

估计是按键按下的时间应该大于50°角用的时间。
ID:280512 发表于 2020-9-12 17:32
说一下吧.你可以解决的.就是你在程序上加个判断条件:上升沿触发--正转;下降沿触发--反转;互相学习!!!
ID:578423 发表于 2020-9-11 18:28
lfc315 发表于 2020-9-11 18:20
能把流程描述出来,也就基本能写出源码了吧

功能就是用一个安键控制步进电机正反转:上电时电机不转,当有按键按下且长按正转50度,停止(就算一直安下安键也不转),当按键松开时电机反转50度回原位停止,等待下次同上安键操作。
ID:10947 发表于 2020-9-11 18:20
能把流程描述出来,也就基本能写出源码了吧
ID:578423 发表于 2020-9-11 17:42
本帖最后由 1AJ1987402 于 2020-9-11 17:54 编辑
青桑叶 发表于 2020-9-11 14:31
void SetpP()    //步进电机正转70度停止
{
        uint j,k;

stepmotor.c(95): warning C275: expression with possibly no effect
stepmotor.c(96): warning C275: expression with possibly no effect
stepmotor.c(96): warning C206: 'SetpN': missing function-prototyp安下键时电机正转,再反转,重复这样,我想要的是安键下来后转70度停下来,如果松开安键时才反转回原位,再安键下又正转70度,停下来等松开安键才反转70度停

ID:280512 发表于 2020-9-11 14:31
本帖最后由 青桑叶 于 2020-9-11 17:31 编辑

void SetpP()    //步进电机正转70度停止
{
        uint j,k;
        j=155;        //正转70度
        while(j--)
        {
                P2=0X08;//控制正转
                delay();
                delay();
                P2=0X04;
                delay();
                delay();
                P2=0X02;
                delay();
                delay();
                P2=0X01;
                delay();
                delay();P2=0x00;delay();
         }
       // while(1);
   //void SetpN()
   // {
        //uint j;
       k=155;        //反转70度
        while(k--)
          {
                P2=0X01;//控制反转 //0011
                delay();
                delay();
                P2=0X02;//0110
                delay();
                delay();
                P2=0X04;//1100
                delay();
                delay();
                P2=0X08;//1001
                delay();
                delay();  P2=0x00;delay();
         }
      //}  
}
按下键盘后,正转结束紧接反转.供参考.共师兄习!!
ID:578423 发表于 2020-9-11 10:03

我是小白,要怎修改?非常感谢
ID:578423 发表于 2020-9-11 10:00
wulin 发表于 2020-9-11 05:41
SetpP() 和SetpN()之一一旦被调用就会死在while(1);,永远出不来。
void SetpP()    //步进电机正转70度 ...

要怎改?非常感谢指点,在线等
ID:280512 发表于 2020-9-11 08:23
程序停在While(1);
ID:213173 发表于 2020-9-11 05:41
1AJ1987402 发表于 2020-9-10 21:02
但安键按下来,第一步已工作,电机正转OK,就是松开安键时不进行第二步,

SetpP() 和SetpN()之一一旦被调用就会死在while(1);,永远出不来。
void SetpP()    //步进电机正转70度停止
{
        uint j;
        j=155;        //正转70度
        while(j--)
        {
                P2=0X08;//控制正转
                delay();
                delay();
                P2=0X04;
                delay();
                delay();
                P2=0X02;
                delay();
                delay();
                P2=0X01;
                delay();
                delay();
        }
        while(1);
}
void SetpN()
{
        uint j;
        j=155;        //反转70度
        while(j--)
        {
                P2=0X01;//控制反转 //0011
                delay();
                delay();
                P2=0X02;//0110
                delay();
                delay();
                P2=0X04;//1100
                delay();
                delay();
                P2=0X08;//1001
                delay();
                delay();
        }
        while(1);
}
ID:578423 发表于 2020-9-10 21:04
wulin 发表于 2020-9-10 20:38
2处语法错误
case 1:KEY_Status==0;SetpP();break;    //步进电机正转70度停止
case 2:KEY_Status==1;S ...

SetpP() 和SetpN()怎才可以引用?
ID:578423 发表于 2020-9-10 21:02
wulin 发表于 2020-9-10 20:38
2处语法错误
case 1:KEY_Status==0;SetpP();break;    //步进电机正转70度停止
case 2:KEY_Status==1;S ...

但安键按下来,第一步已工作,电机正转OK,就是松开安键时不进行第二步,
ID:213173 发表于 2020-9-10 20:38
1AJ1987402 发表于 2020-9-10 16:42
stepmotor.c(94): warning C275: expression with possibly no effect

2处语法错误
case 1:KEY_Status==0;SetpP();break;    //步进电机正转70度停止
case 2:KEY_Status==1;SetpN();break;    //步进电机反转70度回原位

Stop()没有被引用。
ID:578423 发表于 2020-9-10 16:42
stepmotor.c(94): warning C275: expression with possibly no effect

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表