嵌入式设备鼠标接口的设计与实现
发布时间:2008/5/27 0:00:00 访问次数:362
    
    
    当前嵌入式系统技术已得到了广泛应用,但传统嵌入式系统的人机接口多采用小键盘操作的文本菜单方式,用户操作较为不便。本文介绍了一种利用ps/2接口鼠标,在点阵lcd的单片机系统上实现图形化用户界面的方案。用窗口菜单和图形按钮取代了传统的键盘操作,具有成本低、效果好等特点,具有很强的实用性。
    
    1 ps/2接口和协议
    
    1.1 接口的物理特性
    
    ps/2接口用于许多现代的鼠标和键盘,由ibm最初开发和使用。物理上的ps/2接口有两种类型的连接器:5脚的din和6脚的mini-din。图1就是两种连接器的引脚定义。使用中,主机提供+5v电源给鼠标,鼠标的地连接到主机电源地上。
    
    
    
    1.2 接口协议原理
    
    ps/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送。方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据。在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号。
    
    如果主机要发送数据,它必须控制鼠标产生时钟信号。方法如下:主机首先下拉时钟线至少100μs抑制通信,然后再下拉数据线,最后释放时钟线。通过这一时序控制鼠标产生时钟信号。当鼠标检测到这个时序状态,会在10ms内产生时钟信号。如图3中(a)时序段。主机和鼠标之间,传输数据帧的时序如图2、图3所示。
    
    
    
    2 ps/2鼠标的工作模式和协议数据包格式
    
    2.1 ps/2鼠标的四种工作模式
    
    ps/2鼠标的四种工作模式是:reset模式,当鼠标上电或主机发复位命令(0xff)给它时进入这种模式;stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;remote模式,只有在主机发送了模式设置命令(0xf0)后,鼠标才进入这种模式;wrap模式,这种模式只用于测试鼠标与主机连接是否正确。
    
    2.2 数据包结构
    
    ps/2鼠标在工作过程中,会及时把它的状态数据发送给主机。发送的数据包格式如表1所示。
    
    
    
    byte1中的bit0、bit1、bit2分别表示左、右、中键的状态,状态值0表示释放1表示按下。byte2和byte3分别表示x轴和y轴方向的移动计量值,是二进制补码值。byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位。这种数据包由带滚轮的三键三维鼠标产生。若是不带滚轮的三键鼠标,产生的数据包没有byte4其余的相同。
    
    3 设计与实现
    
    3.1 接口设计
    
    因为ps/2鼠标接口采用双向同步串行协议,时钟脉冲信号(以下皆称clock)总是由鼠标产生。因此,可以考虑这种方案:鼠标的clock接主机的一外中断线,数据线(以下皆称data)接主机的某一i/o口线,如图4所示。
    
    
    
    在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收。在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据。但该方案有一点不足,由于每个clock都要产生一次中断,中断频繁,需要耗用大量的主机资源
    
    
    当前嵌入式系统技术已得到了广泛应用,但传统嵌入式系统的人机接口多采用小键盘操作的文本菜单方式,用户操作较为不便。本文介绍了一种利用ps/2接口鼠标,在点阵lcd的单片机系统上实现图形化用户界面的方案。用窗口菜单和图形按钮取代了传统的键盘操作,具有成本低、效果好等特点,具有很强的实用性。
    
    1 ps/2接口和协议
    
    1.1 接口的物理特性
    
    ps/2接口用于许多现代的鼠标和键盘,由ibm最初开发和使用。物理上的ps/2接口有两种类型的连接器:5脚的din和6脚的mini-din。图1就是两种连接器的引脚定义。使用中,主机提供+5v电源给鼠标,鼠标的地连接到主机电源地上。
    
    
    
    1.2 接口协议原理
    
    ps/2鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲,就在数据线上发送一位数据。在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送。方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据。在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号。
    
    如果主机要发送数据,它必须控制鼠标产生时钟信号。方法如下:主机首先下拉时钟线至少100μs抑制通信,然后再下拉数据线,最后释放时钟线。通过这一时序控制鼠标产生时钟信号。当鼠标检测到这个时序状态,会在10ms内产生时钟信号。如图3中(a)时序段。主机和鼠标之间,传输数据帧的时序如图2、图3所示。
    
    
    
    2 ps/2鼠标的工作模式和协议数据包格式
    
    2.1 ps/2鼠标的四种工作模式
    
    ps/2鼠标的四种工作模式是:reset模式,当鼠标上电或主机发复位命令(0xff)给它时进入这种模式;stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工作;remote模式,只有在主机发送了模式设置命令(0xf0)后,鼠标才进入这种模式;wrap模式,这种模式只用于测试鼠标与主机连接是否正确。
    
    2.2 数据包结构
    
    ps/2鼠标在工作过程中,会及时把它的状态数据发送给主机。发送的数据包格式如表1所示。
    
    
    
    byte1中的bit0、bit1、bit2分别表示左、右、中键的状态,状态值0表示释放1表示按下。byte2和byte3分别表示x轴和y轴方向的移动计量值,是二进制补码值。byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位。这种数据包由带滚轮的三键三维鼠标产生。若是不带滚轮的三键鼠标,产生的数据包没有byte4其余的相同。
    
    3 设计与实现
    
    3.1 接口设计
    
    因为ps/2鼠标接口采用双向同步串行协议,时钟脉冲信号(以下皆称clock)总是由鼠标产生。因此,可以考虑这种方案:鼠标的clock接主机的一外中断线,数据线(以下皆称data)接主机的某一i/o口线,如图4所示。
    
    
    
    在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收。在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据。但该方案有一点不足,由于每个clock都要产生一次中断,中断频繁,需要耗用大量的主机资源
上一篇:基于RFID的预付费电能表的研制