DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 224|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                                          用光电编码器实现单键飞梭功能          [/td]        [/tr]                                作 者: 飞利浦医疗电子 杜荣茂          [/td]        [/tr]                   [td]            “单键飞梭”作为一种用户输入方法,其输入方式灵活可靠,特别适合应用在嵌入式仪器设备和手持式设备上。本文利用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所示。                                              [/td]                    [/tr]                  [/table]                [/td]              [/tr]            [/table]            当鉴相器产生一个CW脉冲,U1就会触发产生一个20ms宽的脉冲,将U2的引脚1和2接通。从表1可以查出行列线C6、R7 对应着键F8,               于是从HT82K628A的PS/2输出口可以得到F8的PS/2码。
                                     5 结 论
                该电路已经运用到实际应用中,收到很好的效果。读者可以根据这种思路, 采用输入解码控制模拟开关,合并到键盘矩阵扫描,得到统一的PS/2码,从而简化软件设计,               设计出更多更方便的用户输入方法。            [/td]        [/tr]        [tr]          [td] [/td]        [/tr]        [tr]          [td]                       [/td]        [/tr]      [/table]    [/td][/tr]           
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-27 06:26 , 耗时 0.226268 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表