找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: lkc8210
打印 上一主题 下一主题
收起左侧

一定位一脉冲的EC11旋转编码器最简洁的单片机驱动代码

  [复制链接]
楼主
ID:427868 发表于 2023-9-25 15:48 | 显示全部楼层
以下是我之前采用拿来主义得到的,只对判断后执行部分稍作修改,应用还不错。
/************************参数设置***************************/
void        canshu()                                //EC11旋转编码器一定位一脉冲
{
        static bit LastA = 0;                 //EC11旋转编码器的A引脚上一次的状态
        static bit LastB = 0;                //EC11旋转编码器的B引脚上一次的状态
               
  if(KA != LastA)                         //判断EC11旋转编码器A引脚是否等于上一次的状态
  {
    if(KA == 0)                                //EC11旋转编码器旋转后,判断KA是否是低电平状态
         {
                if(KB)                         //判断KB引脚当前状态,高电平则为正转
                        {num++;}                                                
                else
                        {num--;}                                                       
         }       
     LastA = KA;                         //更新编码器上一个状态暂存变量
     LastB = KB;                         //更新编码器上一个状态暂存变量
   }
}

现在看来LsaB变量似乎没有用,有空了去掉它试试。对于正反向不同的EC11,我是通过调换num变量的加减方向来解决的。
回复

使用道具 举报

沙发
ID:427868 发表于 2023-11-29 15:01 | 显示全部楼层
diyage 发表于 2023-11-25 19:55
我跟你用的一样,但是发现转快了丢码,慢很好

你说的这种情况,确实存在,也不能旋转过快,且在部分EC11上表现明显,即存在挑EC11现象,,后来我尝试将KB对地接的104电容换成105的就改善了,也不挑EC11了,你可试试。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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