'
时老大你好,出于对q9的热爱,提一个建义,有一种编码器本身自带微动开关,可否用这个开关代替电源开关,再把音量电位器移到原q9的电源开关位置,这样面板格局是否更简洁一点,而且调节音量也更方便了,是吗? [表情] [表情] [表情]
'
是个好办法,我还淘了一个带有4方向键和确定键的编码器,嘿嘿,就是价格不容易接受,一个要抵10个。
建议程序修改一下,而不要去动编码器,感觉拆过的就有点晃。给两个可能的读取编码器的例子,一个是查询的,一个中断的。
no1
enum phase_status{
phase_no_move= 0,
phase_dec,
phase_inc,
phase_bad
};
u8 table_phase[16]=
{
phase_no_move,phase_dec,phase_inc,phase_bad,
phase_inc,phase_no_move,phase_bad,phase_dec,
phase_dec,phase_bad,phase_no_move,phase_inc,
phase_bad,phase_inc,phase_dec,phase_no_move,
};
u8 whell_scan(void)
{
static s8 phasecount = 0;
phaseshift <<= 2;
if((reg32(p4sin) & (1<<3))) phaseshift |= 0x01;
if((reg32(p1sin) & (1<<2))) phaseshift |= 0x02;
phaseshift &= 0x0f;
if(table_phase[phaseshift] == phase_inc) phasecount++;
if(table_phase[phaseshift] == phase_dec) phasecount--;
if(phasecount > 3)
{
phasecount -= 4;
return phase_inc;
}
else if(phasecount < -3)
{
phasecount += 4;
return phase_dec;
}
return phase_no_move;
}
no2
中断
方法就是两个脚一个用边沿触发中断,再判另一个的状态。
就是不去抖的。
上海有一家有无定位的编码器,价格呢,也是嘿嘿的。