外设驱动(编码开关)
2014-08-11 14:53
176 查看
<img src="file:///c:/users/user18/appdata/roaming/360se6/User Data/temp/3097494864862.jpg" alt="" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" />(1)1、3脚要外接上拉电阻,一般10K就足矣;(2)2脚一般接地就行;(3)4、5脚是下按键的开关接线(按下时,4脚为低电平);废话不说先上两张测试图:下图是编码开关正转的情况 (红线跟着蓝线变)下图是编码开关反转的情况 (蓝线跟着红线变)我们假设 A为蓝线 B为红线 这样就清楚啦 其实编码开关的编码原理也不难,看A,B信号那个跟着那个变就可以判断转的方向。但是如何检测了?(正转为列:)根据测试可以知道 在编码开关刚刚转时蓝线出现跳变沿 当转动一格完成 红线也出现跳变沿。红线和蓝线跳变的时间差取决于你转动的速度,转的越快,时间差越短。对于速度比较快的单片机而言 (检测周期小于2MS 假设人转动最大的速度是1/MS)我们可以当BMA为低电平时,BMB的跳变沿是怎样的——上升沿表示正转,下降沿表示反转。反之当BMA为高电平时,BMB的跳变沿是怎样的——下升沿表示正转,上降沿表示反转。
bimdirR = 0; bimdirL = 0; if(bm1 == 1) { if(bimold == 0) //状态改变 { bimold = 1; if(BM2 == 1) { Set1 bimdirR } else { Set1 bimdirL } } } else { if(bimold == 1) { //状态改变 bimold = 0; if(BM2 == 1) { Set1 bimdirL } else { Set1 bimdirR } } }那快速的怎么办了,编码开关 ,编码二字如何而来了。其实我们仔细观察就会发现:当正转时 AB的关系如下单反转时 AB的关系为:
table[16] = {
<span style="white-space:pre"> </span>no_move,phase_dec,phase_inc,phase_bad,
<span style="white-space:pre"> </span>phase_inc,no_move,phase_bad,phase_dec,
<span style="white-space:pre"> </span>phase_dec,phase_bad,no_move,phase_inc,
<span style="white-space:pre"> </span>phase_bad,phase_inc,phase_dec,no_move
};
uchar whell_scan(void){static uchar PhaseCount = 0;static uchar PhaseShift= 0; //记录值if(PINA) PhaseShift |=0X01;IF(PINB) PhaseShift |=0X02;PhaseShift &=0X0F;if(table[PhaseShift ] == phase_inc) PhaseCount ++;if(table[PhaseShift ] == phase_dec) PhaseCount --;}
相关文章推荐
- 编码开关驱动
- GPIO驱动实例:操作LED开关
- 树莓派【外设】3.5寸显示屏驱动安装
- STM32外设驱动---SysTick精准延时
- 谈谈为 Linux 内核写驱动的编码规范
- STM32F4系列外设驱动【不断更新中】
- .NET应用架构设计―面向查询的领域驱动设计实践(调整传统三层架构,外加维护型的业务开关)
- Linux主机驱动与外设驱动分离思想
- Linux主机驱动与外设驱动分离思想[转宋老师]
- .NET应用架构设计—面向查询的领域驱动设计实践(调整传统三层架构,外加维护型的业务开关)
- JDBC :设置工作空间的编码与导入驱动jar包
- -02-Sensor Controller 编写CC2650STK外设驱动【蓝牙数据采集模块】
- 自举驱动、top开关电源、光耦拾遗
- Linux主机驱动与外设驱动分离思想
- 谈谈为 Linux 内核写驱动的编码规范
- Linux主机驱动与外设驱动分离思想 推荐
- ZedBoard学习手记(二) 开发自定义AXI总线外设IP核——以LED和开关为例
- 从Stellaris®外设驱动库学到的东西之一---变量的命名
- 谈谈为 Linux 内核写驱动的编码规范
- 设备驱动--中断开关执行的匹配