1.实现功能,就是通过A与COM和B与COM的不同波形,判断顺时针或逆时针旋转。如下图所示波形
2.相关程序,程序设计思路,当A、B同时为高时,如果A先变为低,为顺时针,如果B先变低,为逆时针。当A、B同是为低时,如果A先变高,为顺时针,如果B先变高,为逆时针。
1 if(A==0&&B==0) //同低时 2 { 3 CW_Value++; 4 if(CW_Value > 250) 5 { 6 CW_Value = 250; 7 } 8 } 9 if(A==1&&B==1) //同高时 10 { 11 CCW_Value++; 12 if(CCW_Value>250) 13 CCW_Value = 250; 14 } 15 16 if(CW_Value>5) //判断同低时,那个先发生跳变 17 { 18 if(A==1&&B==0)//A先发生跳变,顺时针 19 { 20 time1++; 21 if(time1 > 200){ 22 time1 = 200; 23 } 24 if(time1 > 3) 25 { 26 if(PT.CW_value<99) 27 PT.CW_value++; 28 CW_Value = 0;time1=0; 29 } 30 } 31 else 32 time1 = 0; 33 if(B==1&&A==0)//B先发生跳变,逆时针 34 { 35 time2++; 36 if(time2>250) 37 time2=250; 38 if(time2 > 3) 39 { 40 if(PT.CW_value>0) 41 PT.CW_value--; 42 CW_Value = 0;time2=0; 43 } 44 } 45 else 46 time2 = 0; 47 } 48 if(CCW_Value > 5)//判断同高时,那个先发生跳变 49 { 50 if(A==0&&B==1)//B先发生跳变,顺时针 51 { 52 time3++; 53 if(time3 > 200){ 54 time3 = 200; 55 } 56 if(time3 > 5) 57 { 58 if(PT.CW_value<99) 59 PT.CW_value++; 60 CCW_Value = 0;time3=0; 61 } 62 } 63 else 64 time3 = 0; 65 if(B==0&&A==1)//A先发生跳变,逆时针 66 { 67 time4++; 68 if(time4>250) 69 time4=250; 70 if(time4 > 5) 71 { 72 if(PT.CW_value>0) 73 PT.CW_value--; 74 CCW_Value = 0;time4=0; 75 } 76 } 77 else 78 time4 = 0; 79 }