huyangliu 发表于 2012-8-8 08:39:59

旋转编码器 程序

自己调试的一个旋转编码器的程序

        #define PULSE1PC7
        #define PULSE2PC6
        #define CODER_ONOFF PC5
void Coder_Deal (void)
{
        static bit pulse1_old = 0;//定义了两个变量用来储蓄上一次调用此方法是编码开关两引脚的电平
        static bit pulse2_old = 0;
       
        static WORD cnt = 0;
          
        if(CODER_ONOFF == 1)
        {
                Coder_ONOFF = 1;//开关
        }
        else
        {
                Coder_ONOFF = 0;//开关
        }



        Coder_INC = 0;//加
        Coder_DEC = 0;//減
        cnt = 0;
       
        if(Coder_ONOFF ) return;
       
       
        if(PULSE1&&PULSE2) //全是高电平时进入判断
        {
                               
                while (PULSE1 & PULSE2)
                {
                        if(++cnt > 2000)
                        {
                        //        cnt = 0;
                                return;
                        }
                }
               
               
             if(PULSE1)      //为高说明编码开关在向加大的方向转
             {
                                Coder_NUM ++;
                        Coder_INC = 1;//加
             }
             if(PULSE2)      //为高说明编码开关在向减小的方向转
             {
                                Coder_NUM --;
                        Coder_DEC = 1;//減
             }
        }
}

xsh2005105326 发表于 2012-8-8 08:49:14

快速旋转是否丢码

query88 发表于 2012-8-8 08:51:29

是光电旋转编码器么?能说一下程序的功能,使用环境等么?谢谢

xsh2005105326 发表于 2012-8-8 08:53:35

query88 发表于 2012-8-8 08:51 static/image/common/back.gif
是光电旋转编码器么?能说一下程序的功能,使用环境等么?谢谢

应该不是光电的,是机械的。编码器输出两个信号,一个信号超前,一个信号滞后,根据相位差来判断旋转的方向

chen1986sl 发表于 2012-8-8 08:54:46

快速旋转是否丢码   这个有待验证。。

huyangliu 发表于 2012-8-8 09:18:26

机械旋钮式的,
声明:这个代码不是用在实时记录编码器的状态中的,是用在分时处理中的,对对实时性不做要求。
页: [1]
查看完整版本: 旋转编码器 程序