完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
|
|
相关推荐
25个回答
|
|
|
arr”是计数器计到arr个数就溢出中断一次,可以做成在lcd上显示编码器脉冲计数个数
|
|
|
|
|
|
我前一阵写过一个编码器测距的 没有测速度 不过你可以自己加计时就可以 我用的是STC12C5A的  CA上升和下降沿中断
#include "global.h" #include "USBInterface.h" #include "Encoder.h" /***********************************************/ /***********************************************/ /***********************************************/ /***********************************************/ #define ENCODER_A 14 #define ENCODER_B 13 INT8 _EncoderVal=0; UINT8 Encoder_Flag_A=0; UINT8 Encoder_Flag_B=0; Encoder_Init() { Encoder_Flag_A=ENCODER_A; Encoder_Flag_B=ENCODER_B; } INT8 Encoder_Switch(UINT8 Flag_A,UINT8 Flag_B) { static UINT8 Encoder_Last_A=0; static UINT8 Encoder_Last_B=0; if(Encoder_Last_A^Flag_A) // A变化 { Encoder_Last_A=Flag_A; if(Encoder_Last_A) // A为高电平,捕获的A为上升沿 { if(Encoder_Last_B) // B为高 则反转 { return -1; } else // B为低 则正转 { return 1; } } else //A为低电平,捕获的A为下降沿 { if(Encoder_Last_B)// B为高 则正转 { return 1; } else//B为低 则反转 { return -1; } } } if(Encoder_Last_B^Flag_B) // B变化 { Encoder_Last_B=Flag_B; if(Encoder_Last_B) // B为高电平,捕获的A为上升沿 { if(Encoder_Last_A) // A为高 则正转 { return 1; } else // A为低 则反转 { return -1; } } else //B为低电平,捕获的A为下降沿 { if(Encoder_Last_A)// A为高 则反转 { return -1; } else//A为低 则正转 { return 1; } } } else return 0; } void EncoderAp(void) { static UINT8 buf[64]={0}; ENTER_CRITICAL(); SYSPostCurMsg(RUN_TIMER0_DISPOSE_DATA); //SYSPostCurMsg(SYS_IDLE); //进入下一个任务 空闲 if(_EncoderVal!=0) { buf[63]=_EncoderVal; USBCiEP2Send(buf,64); //发送数据到上位机 _EncoderVal=0; } EXIT_CRITICAL(); } |
|
|
|
|
|
怎么放图上去啊 我不会 我写了个流程图 不过不知道 怎么放上来
|
|
|
|
|
|
先通过A,B二相的上升沿和下降沿产生中断 然后在中断函数里去判断是哪一相产生的中断,再通过检测该脚位的电平是高还是低去判断是上升沿产生的中断还是下降沿的中断 (如是低就说明是下降沿产生的中断,因为从高到低 中断后 检测到的就是低电平 ) 知道是哪一相产生的中断 而且 知道了 是上升 沿 还是下降沿 再通过 另一相的电平 就知道 是正转还反转
|
|
|
|
|
|
mark
|
|
|
|
|
|
谢谢大家了!
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1599 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4738 浏览 0 评论
4229 浏览 9 评论
3822 浏览 16 评论
4398 浏览 1 评论
4210浏览 3评论
2379浏览 0评论
3393浏览 0评论
1158浏览 0评论
2843浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 21:58 , Processed in 0.706130 second(s), Total 53, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1074