完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一:学习要点:
1.手册只讲了原理,连引脚定义也没有,模块上的引脚标号也不正确。好在旋转编码器是开关量类的传感器,解决办法如下,在三个信号输出引脚上分别接上LED灯,旋转编码器观察LED灯的亮灭情况定义引脚。由此推测,开光量传感器在引脚定义不清楚时可以用这种观察方式; 2. 旋转编码器的关键就是判断K2与K3的先后顺序,加入“松手检测”语句就可以很好的解决这个问题。详见下文程序。 3.松手检测死循环语句适用情况 1)、需要检测信号的先后顺序,可在第一个信号出发后加一个松手检测,第一个信号结束后再判断第二个; 2)、等待信号到来,并计数的情况类似超声传感器中的等待到高电平的情况。 二:手册分析(基本上没用)
encoder.h #ifndef ENCODER_H #define ENCODER_H #include “reg52.h” ***it SW = P2^0; ***it DT = P2^1; ***it CLK= P2^2; void Encoder_Clockwise(unsigned int *p); #endif encoder.c #include “encoder.h” #include “delay.h” #include “reg52.h” /*通过目视观察现象,引脚乱标。。。。 1.顺时针旋转:DT=0->CLK=0; 2.逆时针旋转:CLK=0->DT=0; 3.按下按键后:SW=0; */ void Encoder_Clockwise(unsigned int *p) { if(0==DT) { while(0 == DT) ; if (0 == CLK) { *p = *p + 1; } else { *p = *p - 1; } } if(SW == 0) { while(SW ==0); *p = 0; } } |
|
|
|
只有小组成员才能发言,加入小组>>
3260 浏览 9 评论
2940 浏览 16 评论
3442 浏览 1 评论
8943 浏览 16 评论
4035 浏览 18 评论
1073浏览 3评论
557浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
550浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2285浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1844浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 22:23 , Processed in 0.923892 second(s), Total 48, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号