找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4150|回复: 4
打印 上一主题 下一主题
收起左侧

旋转编码器为什么顺时针转动正常,逆时针转动有问题?

[复制链接]
跳转到指定楼层
楼主
//编码器中断,下降沿触发
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();            
       }               
      }      
     }  
   
    }
      
   }
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:143803 发表于 2017-2-8 08:23 | 只看该作者
原理图

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

IMG_20170207_171637.jpg.JPG
回复

使用道具 举报

板凳
ID:163984 发表于 2017-2-9 09:33 | 只看该作者
路过看看
回复

使用道具 举报

地板
ID:149451 发表于 2017-2-9 10:13 | 只看该作者
图太小,看不清楚。如果是类似EC11式的编码器,那触发输入端应该是A\B两个脉冲端子(C接地),看你程序有P3^3,但没见另一端子的程序,可以检查下看看。
回复

使用道具 举报

5#
ID:153041 发表于 2017-2-15 16:56 | 只看该作者
这程序写的简直了。。 花括号都数不清。。 你进了中断之后直接判断编码器另一个信号脚,高电平和低电平表示2个方向,直接标志一下方向就行了。 消抖做的太过头了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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