拔码开关(数字旋转编码开关的原理及使用方法)

Posted

篇首语:顾虑太多难以起步,背负太多难走远路。本文由小常识网(cha138.com)小编为大家整理,主要介绍了拔码开关(数字旋转编码开关的原理及使用方法)相关的知识,希望对你有一定的参考价值。

拔码开关(数字旋转编码开关的原理及使用方法)

在电子产品设计中,经常会用到旋转编码开关,比如数码电位器等,它的英文名翻译过来就是Rotary Encoder Switch。在写这个元件的驱动程序之前,我google、baidu了一些它的使用说明资料,知道了它具有左转、右转和按下三个功能,有五个脚,它的外形如下图所示:

(1)1、3脚要外接上拉电阻,一般10K就足矣;

(2)2脚一般接地就行;

(3)4、5脚是下按键的开关接线(按下时,4脚为低电平);

我调试这个元件时的实物接线示意图为:

其实它使用起来并不难,我看到网上的资料大都说操作它时判断正转和反转是一个难点,在这里我希望博友在看了我的代码后会觉得这其实只是一个“传说”!我的代码会把这个问题说的清清楚楚、简简单单的!我觉得其实判断正转和反转的关键就是:当BMA为低电平时,BMB的跳变沿是怎样的——上升沿表示正转,下降沿表示反转。只要用代码把这个描述清楚就OK了,这个器件就基本可以顺利地操作了。

没有多余的再说了,直接附上代码:

#include

#define uchar unsigned char

#define uint unsigned int

sbit BMA=P1^4;

sbit BMB=P1^5;

sbit BMC=P1^6;

sbit P27=P2^7;

sbit P26=P2^6;

sbit P25=P2^5;

uchar code table[]=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;

uchar count=0;

uchar flag;

uchar Last_BMB_status;

uchar Current_BMB_status;

//************************************************

void delay(uchar z) //大约1ms的延时

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

//************************************************

void display() //显示子程序

P0=table[count%10]; //个位

P27=0;

delay(10);

P27=1;

P0=table[count%100/10]; //十位

P26=0;

delay(10);

P26=1;

P0=table[count/100]; //百位

P25=0;

delay(10);

P25=1;

//************************************************

void main()

TMOD="0x01"; //定时器0,工作方式1

TH0=0xD8;

TL0=0xF0; //给定时器装上初值,10ms中断一次

ET0=1; //打开定时器中断

EA =1; //打开总中断

TR0=1; //启动定时器0

while(1)

Last_BMB_status=BMB;

while(!BMA) //BMA为低电平时

Current_BMB_status=BMB;

flag="1"; //标志位置为1说明编码开关被旋转了

if(flag==1)

flag="0"; //时刻要注意这一点!给标志位清零

if((Last_BMB_status==0)&&(Current_BMB_status==1)) //BMB上升沿表示正转

count++;

if(count==255)

count="0";

if((Last_BMB_status==1)&&(Current_BMB_status==0)) //BMB下降沿表示反转

count--;

if(count==0)

count="255";

//************************************************

void timer0() interrupt 1 //定时器0的中断服务程序

TH0=0xD8;

TL0=0xF0; //再次装入初值

display(); //每隔10ms显示一次

if(!BMC) //按下旋转编码开关则计数清零

count="0";

相关参考

旋转编码开关(FFmpeg 常用指令(备忘查询))

安装Linux$apt-getinstallffmpeg$yuminstallffmpegMacOS$brewinstallffmpeg示例mp4转avi:$ffmpeg-iinput.mp4output.aviwebm转mp4:$ffmpeg-imovie.webmmovie.mp4全局选项-y覆盖输出文件-n不要覆盖输出文件主要选项-ffmt强制输入或输出文件格式-ifName输入文件名,未指定显...

数控车床编码器工作原理(旋转编码器原理)

...盘角度位移量增加(正方向)或减少(负方向)。在接合数字电路特别是单片机后,增量式旋转编码器在角度测量和角速度测量较绝对式旋转编码器更具有廉价和简易的优势。下面对增量式旋转编码器的内部工作原理(附图)A,B...

开关总成(燃气灶配件之点火总成原理及构造)

...磁阀打开;与此同时,旋钮杆上的金属片会与脉冲点火器开关线相接触,通过旋钮杆与面壳形成对地回路,脉冲开始点火;由于旋钮杆顶端为平头键,套在气阀芯的键槽内,如果旋钮逆时针旋转(顺时针旋转受阀体内定位装置的...

数字直流电压电流表头0一24V(5款24v开关电源原理详解,管用,涨知识)

24v开关电源电路图(一)电路以UC3842振荡芯片为核心,构成逆变、整流电路。UC3842一种高性能单端输出式电流控制型脉宽调制器芯片,相关引脚功能及内部电路原理已有介绍,此处从略。AC220V电源经共模滤波器L1引入,能较好抑...

洗衣机水位开关怎么判断好坏(全自动洗衣机电器件原理及故障检修)

...1、实物图片2、内部构成3、故障表现方式及原因三、水位开关/传感器1、实物图片2、内部构成3、故障表现方式及原因四、电容器与电机1、内部构成2、运行原理单相电不能产生旋转磁场.要使单相电动机能自动旋转起来,我们可...

洗衣机水位开关怎么判断好坏(全自动洗衣机电器件原理及故障检修)

...1、实物图片2、内部构成3、故障表现方式及原因三、水位开关/传感器1、实物图片2、内部构成3、故障表现方式及原因四、电容器与电机1、内部构成2、运行原理单相电不能产生旋转磁场.要使单相电动机能自动旋转起来,我们可...

数控车床编码器是什么样(编码器的工作原理及高速计数器程序编写,一文看懂)

...人专属及电控资料!编码器是一种将旋转位移转换成一串数字脉冲信号的旋转式传感器,这些脉冲能用来控制角位移,如果编码器与齿轮条或螺旋丝杠结合在一起,也可用于测量直线位移。编码器产生电信号后由数控制置CNC、可...

旋转式波段开关(LADDER步进式音量电位器,详细组装说明)

...式来说明Ladder级进式VR的制作---完成品是如最后一图波段开关其实构造很简单,但是很难以文字说清楚~我画了个图方便各位理解!下图为24段波段开关实品将其展开就如下图了在制作之前~先说明一下波段开关的构造~这波段开关有...

水龙头旋转开关手柄怎么拆(冷热水龙头如何拆卸,又有什么原理?看后就可亲自动手安装)

冷热款式水龙头如何拆卸,又有什么原理?看后就可亲自动手安装现在水龙头的种类都比较多,冷热款式的水龙头可是让很多购买者对它有着喜爱之情,只是这个冷热水龙头在平时用的时候,该怎么给它做拆卸比较好,而且平时...

旋转开关(路虎极光挂档旋转开关选不了档)

故障现象确认:启动车辆后档位旋转开关指示灯闪烁,旋转档位时发搓,并且档位指示灯熄灭,旋转不了其它档位,仪表显示ABS.TCM.等高速CAN网故障读取故障内容及SDD指导建议:故障诊断过程:此车已经维修多次,SDD检测很多都是...