标签:
在电子产品设计中,经常会用到旋转编码开关,比如数码电位器等,它的英文名翻译过来就是Rotary Encoder Switch。常见的有5pin和3pin产品。5pin实在左右旋转的基础上增加了向下按得功能。以EC11为例,常用语仪器仪表面板,音响面板等。其pin脚用途如下:

考虑到资源占用以及编码器性能,采用单pin中段模式。代码中设计以pinA为中断源,上边沿下边沿均产生中断。如上图,从左到右,蓝线处开始读取A,B的值,结合中断。状态表如下A B0 1 CCW,下降沿1 1 CW,上升沿1 0 CCW,上升沿0 0 CW,下降沿也就是说CW时,A,B状态一致;CCW时,A,B状态相反

根据上面状态变,对应的程序代码如下:
void exProcess(void)
{
uint8_t A = EN.a_pin->read()<<1 | EN.b_pin->read();switch (A){case 0:EN.KEY_NUM = KEY_A; // 正向下降沿break;case 1:EN.KEY_NUM = KEY_B; // 反向下降沿break;case 2:EN.KEY_NUM = KEY_B; // 反向上升沿break;case 3:EN.KEY_NUM = KEY_A; // 正向上升沿break;}
}
标签:
原文地址:http://www.cnblogs.com/cat-li/p/5041175.html