- 1
- 0
- 约1.19万字
- 约 27页
- 2017-08-06 发布于湖北
- 举报
通过输出波形图可知每个运动周期的时序为顺时针运动逆时针运动A B1 10 10 01 0A B1 11 00 00 1静止状态为11 或00, A异或B的结果为0(注1)单片机可利用定时器中断来检测A和B的状态,中断时间在5~20ms之间均可。当检测到A^B = 0时,表示为静止状态,记下A和B的状态。当检测到A^B = 1时,表示有转动,读取AB的状态,如果AB是从11到01或者是从00到10则为正转,反之如果AB是从11到10或者是从00到01则为反转。此方法比较简单可靠,可以检测转动一格又可以检测快速转动。注1: 异或运算异或的运算方法是一个二进制运算,C语言中用A^B表示A异或B:1^1=00^0=01^0=10^1=1两者相等为0,不等为1.也许是屎上最简单的旋转编码器程序, 占用一个外中断#define ROTATE_A PIND.2#define ROTATE_B PIND.3uchar CW=0;uchar CCW=0;// External Interrupt 0 service routineinterrupt [EXT_INT0] void ext_int0_isr(void){if(ROTATE_A!=ROTATE_B)? ? {? ?? ???CW++;? ? ? ? }? ?? ???else CCW++;}void main(void){? ? ? ?
原创力文档

文档评论(0)