旋转编码开关用法
来源:互联网 发布:多迪网络是培训机构吗 编辑:程序博客网 时间:2024/05/02 09:16
旋转编码开关用法
By:陈浩
5脚的ALPS:
具有左转,右转,按下三个功能。4、5脚是中间按下去的开关接线 1 2 3脚一般是中间2脚接地,1、3脚上拉电阻后,当左转、右转旋纽时,在1、3脚就有脉冲信号输出了。这是标准资料:
在单片机编程时,左转和右转的判别是难点,用示波器观察这种开关左转和右转时两个输出脚的信号有个相位差,见下图:
CW direction 顺时针方向
程序:
/**********************************************************
扫描编码开关子函数 by陈
正转(时钟方向)
11
10
00
01
11 //开始第二角度
10
……
反转(时钟反方向)
11
01
00
10
11 //开始第二角度
01
……
程序从00开始
如果还是00则等待如果在延时这么长时间0ffff*yans(1)还是00 则返回 (如果转的速度非常快,则可使减小;相反亦然)
如果收到01则正转加1返回
如果收到10则反转减1返回
如果收到11则错误 返回 11为静止时状态, 00状态下必须经过01(正转)或10(反转)状态后,才能到11状态
**********************************************************/
unsigned char DUAJ()
{
unsigned int i;
static bitsszt=AX; //SS状态
// while(1)
// {
if(BMA==0&&BMB==0) //收到0 0后开始判断
{
for(i=0;i<0xfff0;i++)
{
if(BMA==AX&&BMB==AX) //状态未变,等待
yans(1);
elseif(BMA==AX&&BMB==TQ) //正转
return0xbf;
elseif(BMA==TQ&&BMB==AX) //反转
return0xdf;
if(BMA==TQ&&BMB==TQ) //错误
return0xff;
}
}
elseif(AX==BMC)
return0xef;
// elseif(0==FUNC)
// return0x1f;
elseif(sszt==SS)
{
sszt=~sszt;
return0x7f;
}
// else
return0xff;
// kmg();
// }
}
unsigned char capd(unsigned char jz) //0短按 1长按 2更长按返回的值越大,按的越长。
{
unsigned int i;
for(i=0;i<60000;i++)
{
yans(20);
if(DUAJ()!=jz) //短按就返回0
return(unsigned char)(i/250);
}
return 0xff;
}
- 旋转编码开关用法
- 树莓派旋转编码开关(python程序)
- 如何使用旋转编码开关(Rotary Encoder switch)
- 树莓派平台的旋转编码开关编程使用例程
- 【应用】使用STM32单片机定时器的Encoder模式驱动数字旋转编码开关
- 编码开关驱动
- 旋钮编码开关工作原理
- 编码开关测试OK陈
- 外设驱动(编码开关)
- Android 自动旋转屏幕快捷开关监听
- perl中的命令行开关用法
- 三极管做开关的用法
- Java字符串开关(switch用法)
- 重力感应与旋转方向开关的相关理解
- 自编码实现方向旋转
- 引用 三极管做开关的用法
- switch(开关按钮) 控件的用法
- Swift - 开关按钮(UISwitch)的用法
- jQuery 入门教程(38): jQuery UI Slider 示例(一)
- 1049 单个字符类型判断
- ios&php rsa
- [ZCJ]PHP问题:将网页提交到SAE上,原本显示正常的页面出现乱码
- 主题
- 旋转编码开关用法
- WriteFile写中文字符串TxT显示乱码
- STM32嵌入式微控制器快速上手——笔记
- 注意
- PLC学习一
- 1050 字符个数统计
- 偶遇MySQL/Writing file error (Errcode 28)
- win7 音频服务未运行 有声音
- PLC学习二