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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

& y) @# l$ v) M; B5 ]论坛的各位老铁你们好!!!向你们请教几个问题。) }( i9 \$ M/ X4 U1 A: u3 `9 x  r
3 v, M3 J5 s' {, w; F/ C+ a
uint8 integer=0;//整数  a5 o, @0 a1 `" |+ h
uint8 decimals=0;//小数9 V; W. Q) R8 a( ~7 }  ^/ {

1 x" a: |( o' Y: j- m3 K0 j是这样的我搞了一个旋转编码器 想法是这样的:就是说使用4数码管来显示旋转编码器的值分为整数位和小数位,编码器控制decimals小数变量加加和减减实现目的是小数每加到99,integer整数步进加1。搞来搞来整数怎么也加不上去  小数减也减不回来。思路倒是有小数每到99整数加1 小数往回减99整数减1在程序上怎么也写不出来实现不出来看来我还是道行潜了,所以来请教请教论坛的老铁们,感激不尽!!
  s& [' c/ F2 D. R下面这函数是我的旋转编码器的一个服务函数:
3 ]* d3 a3 A" F# N) K% g4 o
2 F  S5 K/ d: ^- C$ q
# z1 L7 O& \) X0 e! U" p5 Uvoid ROTARY_ROTARY_Service()//旋转编码器服务函数放到主循环里循环调用  {8 N8 S+ M4 n9 [3 T8 O' h
{
  Q6 `- K2 w; }3 \/ ^+ A2 R, ]- M! w        static xdata uint8 Count=0;
& B. J1 Z1 u' K' a7 F# i% d& L, Y- {' U
        Count++;
8 J$ c9 g; _2 E2 J
+ T3 H" @. x. o2 T* s: {        if(Count>=250)
- S! [7 G, x2 K2 ^% y9 X        {9 C  v' L* x; A8 l7 L$ _5 A
                Count=0;
9 j  Y3 D1 e) i6 q' Q5 q7 d# b  X6 b; U( h
                switch(Read_ROTATE_Data)0 D6 V" [) j& F
                {
1 h5 w, O  Q0 ~5 ]                        case(1)://左转
1 B. d3 o. `  g                                        decimals--;+ ^; F7 w- j! N, ?4 N, M% m
                                        if(decimals>=99)& Y9 e1 S2 l, h. e1 |  ?
                                        {0 s- Q$ c( f9 w' g# o
                                                decimals=99;
8 W$ s% J1 V7 G. K5 K7 H1 e4 @; q                                        }
; K8 b, y8 z7 ?! R* z9 ]                                        Read_ROTATE_Data=0;6 w& {( t. @9 ~* U) v5 B1 |
                                                                                                break;! U, d4 N7 e3 I: U% C6 X) Q7 ?
                        case(2)://右转% n( ]- x$ w; C* g. n) _% V
                                        decimals++;5 W, T* C7 h3 |/ e  F0 e9 S
                                        if(decimals>=99)
* f3 I1 |+ l1 r% i) Y; j' }5 H                                        {
& d  Y( }9 V2 _- ^                                                decimals=0;/ U* @8 l1 _5 Z  Z0 @  Z
                                        }- c- M6 v& L) G/ S
                                        Read_ROTATE_Data=0;
* h8 C  W1 z* I; K( B& V0 d                                                                                                break;
# r- M' s5 v- R0 x                        default:break;
5 v+ W! m9 C% [- m+ C' n( I                }
; {" `6 R2 Y" k5 O& a1 Q        }0 G+ j0 p; s' h* j' R$ Q5 o2 V
}5 {1 R% s' H1 M! |3 E

6 n( d! B" L' p3 o

该用户从未签到

2#
发表于 2022-1-5 15:46 | 只看该作者
switch(Read_ROTATE_Data)8 i: S" l4 b' F2 q& O/ X7 C+ V
                {
4 a, `7 I& C) N! O2 E                        case(1)://左转" k% i. q- a$ p7 x/ I& z
                                        decimals++;
0 F' R& Q/ R" j, \                                        if(decimals>=99)2 k" _2 F- a9 E% m
                                        {+ s+ ?/ i* B! Z! P+ l
                                                decimals=99;
& c$ l  x' P" T# r1 U6 |- B                                        }
% s) m1 R/ h8 W1 R1 @% o                                        Read_ROTATE_Data=0;! G# j  a/ e8 p  ^
                                                                                                break;
2 G, k  d) F" m& E( G                        case(2)://右转. r) x& ], m/ v" ?3 A7 B
                                        decimals--;; F) S; G& X$ J3 g. Y
                                        if(decimals<=0)( v. I# y, u$ l( g* c3 U+ A
                                        {
8 i3 _5 t5 S5 S; \. G                                                decimals=0;$ K- t9 P/ ?' z' P& }
                                        }, p$ j+ ]' I) S$ g
                                        Read_ROTATE_Data=0;6 z/ g3 S' B5 b7 `
                                                                                                break;
9 c0 ^" j& j4 j+ \                        default:break;
. \# i, O  h( A2 U4 X4 [8 G& l                }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-18 15:49 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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