EC11编码器

图文无关,每个阶段最好再做下滤波

定时器建议1ms

void EC11(void)
{
        static unsigned char traitA=0,traitB=0;
        //开关部分代码略
        //......
        //对应上图的逆时针
        if(EC11_B && !EC11_A && traitA==0)          //第一特征码
        {
                traitA=1;
        }
        else if(!EC11_B && !EC11_A && traitA==1)//第二特征码
        {
                traitA=2;
        }
        else if(!EC11_B && EC11_A && traitA==2)//第三特征码
        {
                if(count>0)count--;
                traitA=3;
        }
        else if(EC11_B && EC11_A && traitA==3)//第四特征码
        {
                traitA=0;//清0
//一个周期
        }
        //顺时针旋转
        if(!EC11_B && EC11_A && traitB==0)          //第一特征码
        {
                traitB=1;
        }
        else if(!EC11_B && !EC11_A && traitB==1)//第二特征码
        {
                traitB=2;
        }
        else if(EC11_B && !EC11_A && traitB==2)//第三特征码
        {
                if(count<250)count++;
                traitB=3;
        }
        else if(EC11_B && EC11_A && traitB==3)//第四特征码
        {
                traitB=0;//清0
//一个周期
        }
}

 http://www.51hei.com/bbs/dpj-221520-1.html

猜你喜欢

转载自blog.csdn.net/qq_41694204/article/details/129939260