标签:
在电子产品设计中,经常会用到旋转编码开关,比如数码电位器等,它的英文名翻译过来就是Rotary Encoder Switch。常见的有5pin和3pin产品。5pin实在左右旋转的基础上增加了向下按得功能。以EC11为例,常用语仪器仪表面板,音响面板等。其pin脚用途如下:
考虑到资源占用以及编码器性能,采用单pin中段模式。代码中设计以pinA为中断源,上边沿下边沿均产生中断。如上图,从左到右,蓝线处开始读取A,B的值,结合中断。状态表如下
A B
0 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