位置:51电子网 » 技术资料 » 单 片 机

用光电编码器实现单键飞梭功能

发布时间:2008/5/27 0:00:00 访问次数:1188

        

    

    

    “单键飞梭”作为一种用户输入方法,其输入方式灵活可靠,特别适合应用在嵌入式仪器设备和手持式设备上。本文利用cpld鉴相控制模拟开关, 模拟手动按键得到统一的ps/2码,从而简化软件设计,提高了用户输入效率。

    1 光电trim knob的工作原理

    光电trim knob又称为光电编码器(optical encoder),其中以bourns公司和greyhill公司的产品用得最广泛。本文就以bourns公司的enc产品为例,介绍其工作原理。

    如图1所示,trimknob有两个发光二极管及两个光敏三极管,中间是可自由转动的遮光板。当旋转trimknob时,两个光敏三极管会被遮光板有次序地遮挡而产生图2所示的波形。

    

    

    

    如果是顺时针从位置#1旋转到位置#2,通道a会比通道b相位超前半个周期;反之如果是逆时针从位置#3旋转到位置#1, 通道b会比通道a相位超前半个周期。通过检测通道a和通道b的相位就能判断是顺时针还是逆时针转动。通过记录检测通道a和通道b波形变化的次数就能得到转动位置变化数目。

    2 holtek ht82k628a简介

    ht82k628a是台湾holtek公司为ibm pc/at及兼容机设计生产的专用键盘扫描控制芯片,支持101/102/104/109个键, ps/2接口。引脚定义如图3所示。行线r0~r15为键盘矩阵的扫描输出,列线c0~c7为键盘矩阵的扫描输入。

    

    

    

    表1列举了几个行列线对应的键值,关于此芯片的更详细的应用,请见参考文献[1]。

    3 设计原理

    通过一个鉴相电路,输入为通道a、b,输出为cw、 ccw。cw、ccw控制模拟开关sw1、sw2。sw1的数据端分别连接在c6和r7上,从表1可以看出c6、r7对应f8键。顺时针转动一个位置,cw 输出一个脉冲,模拟开关sw1接通。从键盘扫描控制芯片ht82k628a角度看,效果和按下“f8”一样,如图4。

    4 实 现

    4.1 鉴相器的实现

    由于本系统其它逻辑部分电路用到xilinx公司的cpld xcr3032xl,所以我们把鉴相器电路也做在此cpld中。其中定义cw、ccw为输出引脚,ch_a、ch_b为输入引脚。状态机变化逻辑如下:

    state_diagram qstate

    state st0: cw = 0;

    ccw = 0;

    if (!ch_a&ch_b) then st1

    else if (ch_a&!ch_b) then st4

    else st0;

    state st1: cw=1;

    ccw=0;

    if (ch_a&ch_b) then st2

    else st1;

    state st2: cw=1;

    ccw=0;

    if (ch_a&!ch_b) then st3

    else st2;

    state st3: cw=1;

    ccw=0;

    if (!ch_a&!ch_b) then st0

    else st3;

    state st4: cw=0;

    ccw=1;

    if (ch_a&ch_b) then st5

    else st4;

    state st5: cw=0;

    ccw=1;

    if (!ch_a&ch_b) then st6

    else st5;

    state st6: cw=0;

    ccw=1;

    if (!ch_a&!ch_b) then st0

    else st6;

    4.2 模拟开关的实现

    一般手动按下一个键的开关时间是20ms,所以设计中在cw、ccw输出端加了一个单稳电路作为时延,单稳电路的输出作为模拟开关mc74hc4066的控制。电路设计如图5所示。

    

    

    

    当鉴相器产生一个cw脉冲,u1就会触发产生一个20ms宽的脉

        

    

    

    “单键飞梭”作为一种用户输入方法,其输入方式灵活可靠,特别适合应用在嵌入式仪器设备和手持式设备上。本文利用cpld鉴相控制模拟开关, 模拟手动按键得到统一的ps/2码,从而简化软件设计,提高了用户输入效率。

    1 光电trim knob的工作原理

    光电trim knob又称为光电编码器(optical encoder),其中以bourns公司和greyhill公司的产品用得最广泛。本文就以bourns公司的enc产品为例,介绍其工作原理。

    如图1所示,trimknob有两个发光二极管及两个光敏三极管,中间是可自由转动的遮光板。当旋转trimknob时,两个光敏三极管会被遮光板有次序地遮挡而产生图2所示的波形。

    

    

    

    如果是顺时针从位置#1旋转到位置#2,通道a会比通道b相位超前半个周期;反之如果是逆时针从位置#3旋转到位置#1, 通道b会比通道a相位超前半个周期。通过检测通道a和通道b的相位就能判断是顺时针还是逆时针转动。通过记录检测通道a和通道b波形变化的次数就能得到转动位置变化数目。

    2 holtek ht82k628a简介

    ht82k628a是台湾holtek公司为ibm pc/at及兼容机设计生产的专用键盘扫描控制芯片,支持101/102/104/109个键, ps/2接口。引脚定义如图3所示。行线r0~r15为键盘矩阵的扫描输出,列线c0~c7为键盘矩阵的扫描输入。

    

    

    

    表1列举了几个行列线对应的键值,关于此芯片的更详细的应用,请见参考文献[1]。

    3 设计原理

    通过一个鉴相电路,输入为通道a、b,输出为cw、 ccw。cw、ccw控制模拟开关sw1、sw2。sw1的数据端分别连接在c6和r7上,从表1可以看出c6、r7对应f8键。顺时针转动一个位置,cw 输出一个脉冲,模拟开关sw1接通。从键盘扫描控制芯片ht82k628a角度看,效果和按下“f8”一样,如图4。

    4 实 现

    4.1 鉴相器的实现

    由于本系统其它逻辑部分电路用到xilinx公司的cpld xcr3032xl,所以我们把鉴相器电路也做在此cpld中。其中定义cw、ccw为输出引脚,ch_a、ch_b为输入引脚。状态机变化逻辑如下:

    state_diagram qstate

    state st0: cw = 0;

    ccw = 0;

    if (!ch_a&ch_b) then st1

    else if (ch_a&!ch_b) then st4

    else st0;

    state st1: cw=1;

    ccw=0;

    if (ch_a&ch_b) then st2

    else st1;

    state st2: cw=1;

    ccw=0;

    if (ch_a&!ch_b) then st3

    else st2;

    state st3: cw=1;

    ccw=0;

    if (!ch_a&!ch_b) then st0

    else st3;

    state st4: cw=0;

    ccw=1;

    if (ch_a&ch_b) then st5

    else st4;

    state st5: cw=0;

    ccw=1;

    if (!ch_a&ch_b) then st6

    else st5;

    state st6: cw=0;

    ccw=1;

    if (!ch_a&!ch_b) then st0

    else st6;

    4.2 模拟开关的实现

    一般手动按下一个键的开关时间是20ms,所以设计中在cw、ccw输出端加了一个单稳电路作为时延,单稳电路的输出作为模拟开关mc74hc4066的控制。电路设计如图5所示。

    

    

    

    当鉴相器产生一个cw脉冲,u1就会触发产生一个20ms宽的脉

相关IC型号

热门点击

 

推荐技术资料

硬盘式MP3播放器终级改
    一次偶然的机会我结识了NE0 2511,那是一个远方的... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!