原创 旋转编码开关的原理及使用方法

2011-9-2 17:17 13160 13 15 分类: 汽车电子

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

   

(1)1、3脚要外接上拉电阻,一般10K就足矣;
(2)2脚一般接地就行;
(3)4、5脚是下按键的开关接线(按下时,4脚为低电平);
我调试这个元件时的实物接线示意图为:
 
其实它使用起来并不难,我看到网上的资料大都说操作它时判断正转和反转是一个难点,在这里我希望博友在看了我的代码后会觉得这其实只是一个“传说”!我的代码会把这个问题说的清清楚楚、简简单单的!我觉得其实判断正转和反转的关键就是:当BMA为低电平时,BMB的跳变沿是怎样的——上升沿表示正转,下降沿表示反转。只要用代码把这it 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";
    }
}

文章评论2条评论)

登录后参与讨论

用户1869431 2016-1-22 17:10

旋转编码开关网址www.zigkj.cn

用户377235 2015-10-22 11:01

你这个本来就是用来识别左转右转的旋钮,那种8421输出的你拿来判断左转右转,左快转右快转,实际调试之后你就会发现麻烦了。要是8421码换成格雷码就会好多了。

用户264463 2010-1-27 12:36

我现在想要一个大功率的扩流电路,谢谢啦 支招啊 急急急!!!

用户1436739 2009-3-2 00:28

如果是小电流的恒流源设计,下面这个参数计算器很适用 http://www.dz3w.com/info/designcalc/0069492.html

用户188490 2009-2-21 16:15

工高电子(PROSPER ELECTRONICS)由具美资背景的劳斯伯国际创立,本司专业定制各类高品质电源电子线束及防水电源线束,一级代理多个全球领导品牌电子连接器,恒流二极管,LED半导体照明专用恒流二极管及负温度系数热敏电阻,同时一级代理国内LED半导体照明领导品牌勤上光电KINGSUN全系列LED路灯产品,本司主营业务为: 1、专业定制各类高品质电子电源线束,防水电源线束;专业定制适用于大功率LED路灯,户外LED显示屏,LED景观照明,高端卫浴设备,高端电机等产品的防水电源线束;定制NTC温度传感器; 2、资深专业分销美国MOLEX,TYCO/AMP全系列连接器,提供全方位电源连接解决方案,服务于3C行业(电脑,消费电子及通讯产品)及LED照明行业; 3、一级代理全球领先的日本SEMITEC石冢全系列恒流二极管(简称CRD),全系列LED半导体照明专用恒流二极管;SEMITEC恒流二极管是行业内最适合LED灯具的恒流点灯回路,相比一般的阻容回路,恒流源模块控制等恒流模式而言,CRD电路更简单,使LED灯具发光更稳定,功耗更底,效率更高且更富成本优势; 4、一级代理全球领先的日本SEMITEC石冢全系列负温度系数热敏电阻(简称NTC)及温度传感器;SEMITEC负温度系数热敏电阻是全球同行业领导品牌,专用于各类高品质温度计,电池组,测温仪,家电,电源,安防设备等电子产品的测温控温功能以便更好的保护电路安全; 5、一级代理全球领先的德国PHOENIX菲尼克斯全系列接线端子,组合端子,电涌保护器,防水航空插头及无线通讯控制模块,服务于电源,电气,工控及自动化设备行业; 6、一级代理全球领先的德国WEIDMULLER魏德米勒全系列接线端子,导轨端子,平板电源模及继电器等产品,服务于电源,电气,工控及自动化设备行业; 7、一级代理国内大功率LED路灯行业领导品牌勤上光电KINGSUN全系列LED照明产品,如LED路灯,LED隧道灯,LED太阳能灯,LED公共场馆灯;承接大功率LED道路照明工程,提供包括大功率LED路灯,太阳能及风光互补成套绿色照明施工方案; 8、提供包括适用于各类LED灯具恒流点灯的恒流二极管,美国MOLEX防水电源连接器,德国PHOENIX防水航空插头,以及防水电源线束增值加工在内的全方位LED半导体照明恒流电源驱动及防水电源解决方案; 工高电子联络方式: TEL:0769-22859259/22859260/22859261 联络人:何先生 EMAIL:victorho@prosper-china.com HTTP:www.prosper-china.com

用户188490 2009-2-21 16:14

工高电子(PROSPER ELECTRONICS)由具美资背景的劳斯伯国际创立,本司专业定制各类高品质电源电子线束及防水电源线束,一级代理多个全球领导品牌电子连接器,恒流二极管,LED半导体照明专用恒流二极管及负温度系数热敏电阻,同时一级代理国内LED半导体照明领导品牌勤上光电KINGSUN全系列LED路灯产品,本司主营业务为: 1、专业定制各类高品质电子电源线束,防水电源线束;专业定制适用于大功率LED路灯,户外LED显示屏,LED景观照明,高端卫浴设备,高端电机等产品的防水电源线束;定制NTC温度传感器; 2、资深专业分销美国MOLEX,TYCO/AMP全系列连接器,提供全方位电源连接解决方案,服务于3C行业(电脑,消费电子及通讯产品)及LED照明行业; 3、一级代理全球领先的日本SEMITEC石冢全系列恒流二极管(简称CRD),全系列LED半导体照明专用恒流二极管;SEMITEC恒流二极管是行业内最适合LED灯具的恒流点灯回路,相比一般的阻容回路,恒流源模块控制等恒流模式而言,CRD电路更简单,使LED灯具发光更稳定,功耗更底,效率更高且更富成本优势; 4、一级代理全球领先的日本SEMITEC石冢全系列负温度系数热敏电阻(简称NTC)及温度传感器;SEMITEC负温度系数热敏电阻是全球同行业领导品牌,专用于各类高品质温度计,电池组,测温仪,家电,电源,安防设备等电子产品的测温控温功能以便更好的保护电路安全; 5、一级代理全球领先的德国PHOENIX菲尼克斯全系列接线端子,组合端子,电涌保护器,防水航空插头及无线通讯控制模块,服务于电源,电气,工控及自动化设备行业; 6、一级代理全球领先的德国WEIDMULLER魏德米勒全系列接线端子,导轨端子,平板电源模及继电器等产品,服务于电源,电气,工控及自动化设备行业; 7、一级代理国内大功率LED路灯行业领导品牌勤上光电KINGSUN全系列LED照明产品,如LED路灯,LED隧道灯,LED太阳能灯,LED公共场馆灯;承接大功率LED道路照明工程,提供包括大功率LED路灯,太阳能及风光互补成套绿色照明施工方案; 8、提供包括适用于各类LED灯具恒流点灯的恒流二极管,美国MOLEX防水电源连接器,德国PHOENIX防水航空插头,以及防水电源线束增值加工在内的全方位LED半导体照明恒流电源驱动及防水电源解决方案; 工高电子联络方式: TEL:0769-22859259/22859260/22859261 联络人:何先生 EMAIL:victorho@prosper-china.com HTTP:www.prosper-china.com

用户184998 2009-2-16 20:17

捷购网店有您想要的LED照明驱动恒流源http://shop36442876.taobao.com

用户184327 2008-12-3 09:49

我敢保证,楼主决定没有试过TL431搭恒流电路。 按你的图根本出不来。 事实上,网上有很多人和我一样疑惑。 想做一个100微安的恒流源。 按公式,取RCL=25K欧左右。 另一个R取值370欧姆 供电电压6V。 搭出电路后,实测: 流过RCL的电流并不恒流,供电电压变化时,它也在变化,实测78微安左右。 于是又试了三极管的集电极,发现电流达78mA之多,三极管发热严重(我用的是9013). 问题出在哪里?

用户28232 2008-11-29 00:35

LZ已经很专业了,客气啊!不顶不行。

用户1498922 2008-11-25 15:40

梳理的不错,谢谢
相关推荐阅读
用户42765 2011-12-31 19:34
评论:@hanruotian's Blog 博客中提到的“上拉电阻和下拉电阻(转)”
上拉电阻和下拉电阻(转)...
用户42765 2011-05-26 11:04
6个好习惯让你做个优秀的开发者
1.       交谈  尽可能多地跟其他软件开发者交谈;培养个人关系;跟意见与你相左的人交流;跟经验更丰富的人交流;跟阅历丰富的人交流。多到Groups 中去,尤其是交谈自由随意的Groups——不...
用户42765 2011-02-21 21:02
去耦电容的容值计算和布局布线
      有源器件在开关时产生的高频开关噪声将沿着电源线传播。去耦电容的主要功能就是提供一个局部的直流电源给有源器件,以减少开关噪声在板上的传播,和将噪声引导到地。 去耦电容的容值计算 去耦的初衷是...
用户42765 2011-02-21 21:00
PCB的阻抗控制与前端仿真
 随着 PCB 信号切换速度不断增长,当今的 PCB 设计厂商需要理解和控制 PCB 迹线的阻抗。相应于现代数字电路较短的信号传输时间和较高的时钟速率,PCB 迹线不再是简单的连接,而是传输线。  ...
用户42765 2011-02-16 18:27
USB接口定义及封装
        USB全称Universal Serial Bus(通用串行总线),目前USB 2.0接口分为四种类型A型、B型、Mini型还有后来补充的Micro型接口,每种接口都分插头和插座两个部...
我要评论
2
13
关闭 站长推荐上一条 /2 下一条