标题: 旋转编码器为什么顺时针转动正常,逆时针转动有问题? [打印本页]

作者: 13120735872    时间: 2017-2-8 08:21
标题: 旋转编码器为什么顺时针转动正常,逆时针转动有问题?
//编码器中断,下降沿触发
void INT1_interrupt(void) interrupt 2 using 0
{
  DelayUS(10);
if(P3^3 == 0)   //INT1引脚
{
   DelayUS(10);
  if(P3^3 == 0)
  {
    DelayUS(10);
    if(P3^3 == 0)
    {
     DelayUS(10);
    if((CS_KEY2 & 0x10) == 0x00)//第5引脚低电平
    {
     DelayUS(10);
     if((CS_KEY2 & 0x10) == 0x00)
     {
      DelayUS(10);
      if((CS_KEY2 & 0x10) == 0x00)
         {
       if(g_bLeft_Rigth_flg == 0)
       {
        g_bLeft_Rigth_flg = 1;
       }
       else
       {
         //编码器向右旋转,+
         EX1 = 0;
         INC_Function();         
       }         
      }
     }
    }
    else
    {
     DelayUS(10);
     if((CS_KEY2 & 0x10) == 0x10)   //第5引脚高电平
     {
      DelayUS(10);
      if((CS_KEY2 & 0x10) == 0x10)
      {
       if(g_bLeft_Rigth_flg == 1)
       {
        g_bLeft_Rigth_flg = 0;
       }
       else
       {
         //编码器向左旋转,-
         EX1 = 0;
         DEC_Function();            
       }               
      }      
     }  
   
    }
      
   }
  }
}


作者: 13120735872    时间: 2017-2-8 08:23
原理图

IMG_20170207_171637.jpg.JPG (5.79 KB, 下载次数: 135)

IMG_20170207_171637.jpg.JPG

作者: mlx    时间: 2017-2-9 09:33
路过看看
作者: w1179benp    时间: 2017-2-9 10:13
图太小,看不清楚。如果是类似EC11式的编码器,那触发输入端应该是A\B两个脉冲端子(C接地),看你程序有P3^3,但没见另一端子的程序,可以检查下看看。
作者: utzuzu    时间: 2017-2-15 16:56
这程序写的简直了。。 花括号都数不清。。 你进了中断之后直接判断编码器另一个信号脚,高电平和低电平表示2个方向,直接标志一下方向就行了。 消抖做的太过头了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1