找回密码
 注册
关于网站域名变更的通知
查看: 145|回复: 1
打印 上一主题 下一主题

单片机旋转编码器程序调试问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-1-5 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

0 Y9 K; \% T6 i1 |6 x: D论坛的各位老铁你们好!!!向你们请教几个问题。
0 J. I. c) L. G  T+ b, i& L) f$ j. c1 K* v$ V$ K6 B5 p7 M7 n
uint8 integer=0;//整数* J4 W. [1 S" z  k1 R) `$ D5 m
uint8 decimals=0;//小数
& O  `0 z' q1 }! a! Z* _& y* d' j2 C8 D$ q# @
是这样的我搞了一个旋转编码器 想法是这样的:就是说使用4数码管来显示旋转编码器的值分为整数位和小数位,编码器控制decimals小数变量加加和减减实现目的是小数每加到99,integer整数步进加1。搞来搞来整数怎么也加不上去  小数减也减不回来。思路倒是有小数每到99整数加1 小数往回减99整数减1在程序上怎么也写不出来实现不出来看来我还是道行潜了,所以来请教请教论坛的老铁们,感激不尽!!+ N$ T: d3 c! g7 i; @* }2 E& e& M: r, l
下面这函数是我的旋转编码器的一个服务函数:
9 U" x! e2 \! f
& _: v# E" ^. c( c! q6 ], }5 f
# G+ ]: W0 y( @# l9 o- v3 z/ ]" g7 Qvoid ROTARY_ROTARY_Service()//旋转编码器服务函数放到主循环里循环调用) M' c" k& Z* W! S; E
{1 c, ^! v7 ?% H; u' k
        static xdata uint8 Count=0;, O: b3 I, [) N9 |' K; G9 }5 F
4 J# x, j! |: z% S4 M" D: g
        Count++;
" P# `1 e+ n; N# y5 f# l
3 U( i8 [: p2 f4 d        if(Count>=250)
4 W7 }7 R! c7 Q( U        {
  q; q7 T0 Y! q                Count=0;2 g; p$ H+ m/ a# n8 p5 I' m
: {0 z! Y7 I8 K& ?
                switch(Read_ROTATE_Data)
8 j; U+ {& q. h; E, E7 o                {' e' O, g( j2 W# f9 ^3 p
                        case(1)://左转7 \4 \* f" j: l/ D& H9 y3 X
                                        decimals--;- ^' L" ?6 y, h2 F3 b* D
                                        if(decimals>=99)# ]3 c2 T8 `3 e- z2 Y  v% n
                                        {5 O8 B3 p- M; C& v
                                                decimals=99;( ?7 W7 q$ J2 e+ Q/ L
                                        }
3 _' l2 T* ^0 f                                        Read_ROTATE_Data=0;
: w. c% c6 I. A% t7 C  a) M                                                                                                break;5 ]* I! T6 B$ I% b. ~8 y; c
                        case(2)://右转9 R8 p" K6 A7 @; i; Z
                                        decimals++;
; @7 |6 K$ Y6 k8 z  M. B: o                                        if(decimals>=99)
1 J% Z3 Y4 c" A0 w3 u/ [/ ?( C5 i- p                                        {
) P( D8 R: U* z$ ^7 P                                                decimals=0;
* k& F/ }' d8 J" a  R, A% `                                        }
, i6 c$ ?$ Z" }# K0 r  N5 n# X0 j/ T                                        Read_ROTATE_Data=0;
& ?' E5 O+ z7 K6 ]                                                                                                break;: V/ v. A% X4 L3 u2 J9 X
                        default:break;
- @- i0 y% X% }* I' z6 j5 P8 j                }& E. i! Y; g* V+ R* T3 k
        }- ?' C2 S0 a) I, f6 Y) B9 B
}
& i5 A& ]- V9 E$ c, q1 O2 M) F$ o; r: y2 {5 V1 z% s

该用户从未签到

2#
发表于 2022-1-5 15:46 | 只看该作者
switch(Read_ROTATE_Data)- M* n- B9 M2 S' n. e% B4 g3 F
                {, i( d, X$ N6 M! ^2 I; ?) v! N+ p7 C
                        case(1)://左转
5 g( E7 y( Z/ C5 @  a                                        decimals++;* k: E- d+ w# D# ]* m5 Q* u
                                        if(decimals>=99)+ m3 K0 k, ?) c4 a
                                        {5 Q" }7 L# p' ^7 j4 K- R$ Y0 ^9 C
                                                decimals=99;
% F9 d0 x& g8 S, c                                        }
" X- Z2 C  t* o2 y# j/ \* w                                        Read_ROTATE_Data=0;
* s& K! o3 L% r9 `7 c4 x2 ?/ s                                                                                                break;
- A/ Y+ _8 L. x# i( ~& B9 \                        case(2)://右转
% u! c1 d  d: [% J, z. v# ]                                        decimals--;$ t1 S0 ?0 n- W
                                        if(decimals<=0)
- Y6 v9 k* J: _* W7 ^                                        {+ e3 U# i3 N& i$ [. s# p8 B: k
                                                decimals=0;
% C& R0 d% M4 e                                        }
1 i+ q4 b- j  C0 W2 t) X3 E* h) _                                        Read_ROTATE_Data=0;
3 T: V( Q2 u4 h. r, g                                                                                                break;* v  Z$ d- G% @, N# ]( U
                        default:break;/ Q- v% X. I8 _0 [; ^) o$ \
                }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-16 03:25 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表