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         }

 

posted on 2021-07-28 11:35  xiao_fei  阅读(74)  评论(0编辑  收藏  举报