微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机实现数字化B超键盘设计

单片机实现数字化B超键盘设计

时间:04-06 来源:互联网 点击:

增加了两个外中断,可满足接入4个外中断信号的需求。
TLC0838是TI公司生产的8位逐次逼近模数转换器。具有输入可配置的多通道多路器和串形输入输出方式。由于TLC0838采用的是串行输入结构,因此封装体积小,可节省51系列单片机I/O资源,价格也较适中。因8个通道全部使用,故其多路器由软件配置为单端输入。
编码器输出正交的信号经CPLD(XC9636XL)作倍频鉴相转换成单片机能接收的脉冲信号,单片机的处理工作得以简化。两个编码器共输出4路信号,以此作为单片机的外部中断源。在CPLD中还扩展了6个输出口用于指示Depth、Zoom、Focus、LP、A-Pwr调节功能是否可用及图像是否处于冻结状态。
键盘按键以行列形式排成16x8矩阵,输出列线16根,输入检测行线8根,最多支持128键,每个行列线交叉处设置一个按键。为了减少I/O的占用,采用两片3-8译码器(74HC138)实现4-16译码,给A11-A8依次输出0000、0001、0010、0011、0100、1000、1001、1010、1011、1100、1101、1110、1111,即可依次拉低列线S00-S015,同时读取行线P1口,行线为低代表当前拉低的列线与该行线交叉处的按键被按下。比采用接口芯片,成本更低。

4 软件设计
4.1 主程序设计
软件设计部分的主程序流程如图3所示。

主程序完成初始化后,进人命令查询处理,不断查询有没有来自计算机的命令,有则应答并处理,接着检查键扫标志,有键扫标志(即=1)则进行键盘处理,否则继续查询命令。
键盘处理流程如下:在实时状态,对TGC电位器进行AD采样,并与上一次结果比较,有变化则发送给计算机,冻结状态跳过TGC处理;接着判断扫描编码器旋转标志位,有则以键码形式发送给主机;然后扫描键盘阵列,有键按下或释放,则以查表方式取得扫描码,并发给计算机。
键盘扫描采用定时器0中断方式,晶体频率为24 MHz按方式1工作,最大定时时间为32.768ms,定时器中实现计数3次,可定时98.3ms,以此作键盘处理周期,定时间到则将键盘扫描标志置为1。
4.2 外中断程序设计
新增的2个中断,其中断信号由P4口输入,中断功能/状态通过XICON寄存器控制,P4和XICON不是标准80C52的寄存器,需预先定义——在源文件头上加入以下两行:
P4 EQU 0D8H
XICON EQU 0C0H
中断服务程序只完成置编码器旋转标志位的处理,主程序中根据标志位以按键键码的形式发送信息。中断服务程序源代码如下:


4.3 初始化及命令查询处理
初始化过程是设计过程中需要注意的。计算机启动过程跟主板有关,因为主机在总线上有优先权,通信过程发生异常,将禁用设备,而且目前找不到介绍计算机启动过程中对键盘操作细节的描述,所以本部分的设计是难点。
经过试验发现,上电后,键盘完成白检即发送代码0AAH给计算机,计算机在启动过程中可以进行复位、读ID、停止键扫、使能键扫、控制LED状态等操作,而且有时计算机会拉低时钟信号——抑制通讯,在整个过程中,只要主机认为设备异常,将抑制通讯导致键盘无法使用而且不能进入操作系统。
每个由计算机发送到键盘的数据都能从键盘获得一个0FAH应答的回应,唯一例外的是键盘对Resend和Echo命令的回应。在发送下一个字节给键盘之前,主机要等待应答。键盘作为从设备,无法预先知道什么时候主机会发送控制命令,一旦主机发送命令给设备,设备没有回应,主机即将该设备挂起,除非重新开机。
针对命令集,设计了专门的应答子程序,根据设备收到的命令,作出相应的回答和处理。
经逻辑分析仪测试、分析和反复验证,发现在主程序中插入命令查询处理程序,既能满足初始化的要求,还可以保证键盘及时接收和处理来自主机的信息,维持键盘设备正常工作,命令查询处理程序流程如图4所示。这部分概括起来就是空出360μs的等待时间(15μsx20),作查询,如果在这段时间内,数据线和时钟线同时变为低电平,表示键盘有命令需发送,设备产生时钟以接收命令,并根据收到的命令做相应的处理。

4. 4 TGC数据处理
TGC数据发送实质上是一个扫描码的序列,如第一个TGC增益数据为80,依次向计算机发送0x14 0x16 0x3E0x45 0xF0 0x14,对应键“L Ctrl”按下、键“1”按下、键“8”按下、键“0”按下、键“L Ctrl”释放的动作,超声系统软件实现解析。实践证明,发送每个序列数据过程中两个数据间至少应延时1.06 ms。
上述组合不会引起计算机异常,此前尝试过其他组合,在没进入超声软件时调节TGC易引起误操作。
特别要注意的是:
1)开机时ADC采样使能标志清0,禁止采集TGC;
2)键盘上电完成初始化后开启定时器1,联合应用定时器和计数器,定时5 s,时间到则ADC采样使能标志置1,可以采集TGC数据,TGC数据有变化则发送给计算机;
3)设立转换通道标志码,实时状态每次键扫时根据标志码只进行相对应的一个电位器的模数转换,转换后将转换标志码指向下一通道。
采用上述措施旨在解决因开机过程中键盘发送TGC数据和正常工作时TGC数据频繁发送导致键盘死机问题,频繁发送数据以至主机认为键盘异常而禁用键盘。
4.5 状态同步处理
标准键盘上有Num Lock,Caps Lock和Scroll Lock3个LED指示灯,为了实现主机与键盘的状态同步,采用了如下解决方案:键盘只发送Num Lock、Caps Lock、Scroll Lock按下或者释放的代码;根据按键情况,主机发送专门用于指示键盘上Num Lock、Caps Lock和ScrollLo-ck3个LED状态的指令;键盘处理器收到指令后刷新指示灯。
设计中冻结键使用Scroll Lock以保持状态同步。
Depth、Zoom、Focus、I.P、A-Pwr与功能调节编码器组合使用,5个按键中每次只有1个激活,激活时led指示灯亮,按键状态则由键盘MCU寄存和切换控制,不同功能激活时调节编码器产生不同的键码,如:Depth激活时编码器左旋产生“KP-”按下的代码,右旋则产生“KP +”按下代码;Zoom激活时编码器左旋产生“Page Up”按下的代码,右旋则产生“Page Down”按下代码。该方法成功解决了状态同步问题。

5 结论
对基于W78E052D单片机设计的PS2键盘方案、硬件和软件设计做了详细阐述,命令查询、TGC和状态同步处理对自行设计非标PS2键盘有借鉴意义,在整个设计过程中,通过不断改进硬件和调试软件,得到了预期的效果。相对于采用多片MCU分别处理几个模块最终通过USB集线器同PC主机通讯的方案,接口更简单,成本更低,而且不需要专门开发键盘驱动程序。在需要3个以上编码器的应用中,编码器处理方案有待于进一步改进。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top