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

一定位一脉冲的EC11旋转编码器最简洁的单片机驱动代码

  [复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
先上代碼為敬. u8 Q, }/ p/ B# m
  •             if(!PinA && PinA_O && PinB) {
  •                 Now++;
  •             }PinA_O = PinA;
  •             if(!PinB && PinB_O && PinA) {
  •                 Now--;
  •             }PinB_O = PinB;$ v/ C8 @9 u. S7 l, f& ^0 v5 g& l
2 q" T. c& v7 k- F/ ?9 ^
复制代码
; v( s. k- T! H' j只有六行代碼就能用EC11對Now進行加減操作% m' Z. u$ X3 `2 Y& ]+ f% y
; o; T6 M; B* @9 I) k
为什么这样写呢?
, H# s1 @+ C4 R% L( X上时序图6 w$ U! p7 ?6 \; R& B( I; r
顺时针转:
( ~+ l, Z% H# j6 r0 ?2 w$ _
$ Y. b: Q; ]" o* ]$ i* r. }
: _' _/ S$ n$ m% @, R逆时针转:4 k' @  n9 P% O# Z3 t

- p% m9 J, J1 c$ U- Q  o' w4 [& g
) C6 Q" Y6 }2 X我们看到,当顺时针转时
# N4 q3 l0 E% e  q( N& Z+ APin A会早于Pin B 转低电平,反之亦然
8 h: W2 v* v. y" x7 ^5 S. m( L! t" E# _& j
代码解读:8 o/ e& h) m7 ~- h7 M) o' E
!PinA && PinA_O && PinB//当Pin A 为低电平而之前为高电平(即下降沿)并且Pin B为高电平/ E( K" Y% u: N6 A$ ^0 \( Y; H, s
这一句就捕捉到顺时针转时序图中箭指着的那一刹那的情况
% B6 G: ?$ Z* |8 ^2 a$ f. f于是Now加1! U1 H# J/ N' Z# T. V! J0 c: L
# A& s& O  P& I5 r
!PinB && PinB_O && PinA//当Pin B 为低电平而之前为高电平(即下降沿)并且Pin A为高电平
: G& D& K1 R; X这一句就捕捉到逆时针转时序图中箭指着的那一刹那的情况
$ K' U( P/ X# J5 N5 `* ^* d& `  Z于是Now减1
! q- @! _, O3 n' M1 Q: Y5 G+ h% J1 ]9 S

  d2 K* @8 d+ G% x) }% `( o1 U5 C0 U) I" x* v  E- R) ~3 e; n. d
如果编码器不加电容消抖
5 G) d8 c7 C( A  ~3 o% \就用软件消抖/ j4 Q- Q& d3 [) n7 j7 v

; m2 |4 E( ^; B6 N
  •         if(ScanCount++ > 50) {        //其数值按单片机速度加减
  •             ScanCount = 0;
  •             if(PinA && !PinA_O && PinB) {
  •                 Now++;
  •             }PinA_O = PinA;
  •             if(PinB && !PinB_O && PinA) {
  •                 Now--;
  •             }PinB_O = PinB;
  •             Now>9? Now = 0:_nop_();
  •             Now<0? Now = 9:_nop_();
  •         }: \6 W! k! H" U' w) Z

, }) b0 K' i/ C. m4 c" H* W( U4 T; Y复制代码/ y; P! p3 X8 Z
现附上小应用实例一则
2 l' ~8 X6 s1 t! t基如STC15F104E的EC11软串口六位密码检查程序
$ {3 U( ~4 p5 n如发现顺逆时针相反,对调PinA/PinB 定义脚即可
4 N5 n- R7 |4 B; g& p+ s

该用户从未签到

2#
发表于 2022-6-24 10:18 | 只看该作者
假如顺时针扭了一点但没到位之前逆时针扭回去了呢?

该用户从未签到

3#
发表于 2022-6-24 13:51 | 只看该作者
不考慮任何不正常操作吗!
* J  V1 V$ q+ h不过,代码简洁易懂,挺好的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-10 11:33 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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