80C196单片机鼠标接口程序设计实例
发布时间:2008/6/3 0:00:00 访问次数:636
    
    
    来源:电子技术应用 作者:华北电力大学(北京)(102206)杨国田 白焰 抚顺石油学院(113001)徐培民
    
    摘要:通过对鼠标底层通信原理及协议的深入分析,探讨了鼠标在80c196单片机系统中的应用价值与可行性,并介绍了鼠标接口软件设计的原理及方法,给出了80c196单片机与microsoft鼠标的具体接口程序。
    
    关键词:鼠标 接口技术 软件设计 接口程序
    
    80c196单片机由于低格低、处理能力强,在信号分析、数据采集等很多领域得到了广泛应用,在目标系统中使用各种规格的液晶或crt显示器也越来越多。因此在这样的单片机系统中引入鼠标,将会方便操作,提高工作效率。鼠标内核本质上是一个二维的角度或位移信号检测装置,耗电极少、可靠性高、价格低廉,可能在许多场合发挥作用。鼠标与主机之间通过rs-232标准串行接口进行通信,信息传送是单方向、无条件、无应答连续进行的。此外80c196的uart不直接支持鼠标的接口协议,在程序设计中必须予以注意。本文主要探讨80c196单片机与microsoft兼容鼠标接口程序的设计实现。
    
    1 鼠标信号发送协议与过程
    
    鼠标是一个功能高度集中的小型机电一体化系统。它首先将直线移转换成角度位移,再转变成数字量,然后与按钮状态统一编码,通过rs-232串口发出。鼠标工作所需功率从rs-232串行接口的控制线上窃取(ps/2、usb接口鼠标除外)。当鼠标被拖动超过一个最小距离或某一按钮被按下时,它按照规定的协议将移动距离和按钮状态通过一次或几次信息发送到机;主机上的鼠标驱动程序将信息变换成鼠标位置和按钮状态供其它程序模块调用。每发生一次移动或按钮状态变化,鼠标向上发送一次信息。通常一般鼠标的分辨率为400dpi。理论上即沿着某一方向每拖动一英寸(一般速度),会产生400次信息发送过程。,如果拖动较快,则信息发送次数送减少,但所反映的总的移动距离仍然是400步。
    
    各种串行接口鼠标在物理层普遍采用标准的串行通信协议,波特率为1200bps。帧格式为7个数据位、2个停止位,无奇偶校验位。上层协议则在此基础上以十六进制数形式直接发更新鼠标信息,包括:初始化报告:移动方向、距离、按钮状态。其一般形式如表1所示。
    
    表1 鼠标信息发送格式
    
    
    
    上述p1、p2、p3三个参数说明:
    
    p1_d7d6固定值01;d1d0=11本次鼠标移动包含左右移动分量;d3d2=11本次鼠标移动包含上下移动分量;d4=1目前鼠标右键呈按下状态;d5=1目前鼠标左键呈按下状态(d4d5=00则键呈释放状态)。
    
    p2_d7d6固定值00;其余六位表示一个有符号二进制数,反映左右移动量,大于0为向右移动,小于0为向左移动。
    
    p3_d7d6固定值00;其余六位表示一个有符号二进制数,反映上下移动量,大于0为向下移动,小于0为向上移动。
    
    例如:[6ch 02h 3ah](p1=6ch,p2=02h,p3=3ah)反馈出鼠标向右移动了2个单位,向上移动了6个单位,目前左键按下。
    
    
    2 鼠标接口程序设计
    
    80c196系列单片机内设rs-232收发器,但需要配置接口芯片实现电平转换。考虑到鼠标从串口窃取功率,接口芯片必须具有一定的驱动能力,而不能要用简单的准rs-232电平转换器。这里采用max232e作为接口芯片。
    
    图1中左侧为80c196单片机,p2.0(txd)、p2.1(rxd)通过max232e形成满足鼠标要求的串行接口,包括生成标准rs-232c电平和提供电源供应。图1中最右边为9针或24针标准串行接插件。由于鼠标的电源供应采用功率窃取方案,由dtr/rts提供,这里为dtr加限流电阻防止对鼠标造成伤害。rts由max232e垢信号发送端提供,通过80c196的p2.0控制max232e的10脚(对应的输出脚为7脚)电平高低
    
    
    来源:电子技术应用 作者:华北电力大学(北京)(102206)杨国田 白焰 抚顺石油学院(113001)徐培民
    
    摘要:通过对鼠标底层通信原理及协议的深入分析,探讨了鼠标在80c196单片机系统中的应用价值与可行性,并介绍了鼠标接口软件设计的原理及方法,给出了80c196单片机与microsoft鼠标的具体接口程序。
    
    关键词:鼠标 接口技术 软件设计 接口程序
    
    80c196单片机由于低格低、处理能力强,在信号分析、数据采集等很多领域得到了广泛应用,在目标系统中使用各种规格的液晶或crt显示器也越来越多。因此在这样的单片机系统中引入鼠标,将会方便操作,提高工作效率。鼠标内核本质上是一个二维的角度或位移信号检测装置,耗电极少、可靠性高、价格低廉,可能在许多场合发挥作用。鼠标与主机之间通过rs-232标准串行接口进行通信,信息传送是单方向、无条件、无应答连续进行的。此外80c196的uart不直接支持鼠标的接口协议,在程序设计中必须予以注意。本文主要探讨80c196单片机与microsoft兼容鼠标接口程序的设计实现。
    
    1 鼠标信号发送协议与过程
    
    鼠标是一个功能高度集中的小型机电一体化系统。它首先将直线移转换成角度位移,再转变成数字量,然后与按钮状态统一编码,通过rs-232串口发出。鼠标工作所需功率从rs-232串行接口的控制线上窃取(ps/2、usb接口鼠标除外)。当鼠标被拖动超过一个最小距离或某一按钮被按下时,它按照规定的协议将移动距离和按钮状态通过一次或几次信息发送到机;主机上的鼠标驱动程序将信息变换成鼠标位置和按钮状态供其它程序模块调用。每发生一次移动或按钮状态变化,鼠标向上发送一次信息。通常一般鼠标的分辨率为400dpi。理论上即沿着某一方向每拖动一英寸(一般速度),会产生400次信息发送过程。,如果拖动较快,则信息发送次数送减少,但所反映的总的移动距离仍然是400步。
    
    各种串行接口鼠标在物理层普遍采用标准的串行通信协议,波特率为1200bps。帧格式为7个数据位、2个停止位,无奇偶校验位。上层协议则在此基础上以十六进制数形式直接发更新鼠标信息,包括:初始化报告:移动方向、距离、按钮状态。其一般形式如表1所示。
    
    表1 鼠标信息发送格式
    
    
    
    上述p1、p2、p3三个参数说明:
    
    p1_d7d6固定值01;d1d0=11本次鼠标移动包含左右移动分量;d3d2=11本次鼠标移动包含上下移动分量;d4=1目前鼠标右键呈按下状态;d5=1目前鼠标左键呈按下状态(d4d5=00则键呈释放状态)。
    
    p2_d7d6固定值00;其余六位表示一个有符号二进制数,反映左右移动量,大于0为向右移动,小于0为向左移动。
    
    p3_d7d6固定值00;其余六位表示一个有符号二进制数,反映上下移动量,大于0为向下移动,小于0为向上移动。
    
    例如:[6ch 02h 3ah](p1=6ch,p2=02h,p3=3ah)反馈出鼠标向右移动了2个单位,向上移动了6个单位,目前左键按下。
    
    
    2 鼠标接口程序设计
    
    80c196系列单片机内设rs-232收发器,但需要配置接口芯片实现电平转换。考虑到鼠标从串口窃取功率,接口芯片必须具有一定的驱动能力,而不能要用简单的准rs-232电平转换器。这里采用max232e作为接口芯片。
    
    图1中左侧为80c196单片机,p2.0(txd)、p2.1(rxd)通过max232e形成满足鼠标要求的串行接口,包括生成标准rs-232c电平和提供电源供应。图1中最右边为9针或24针标准串行接插件。由于鼠标的电源供应采用功率窃取方案,由dtr/rts提供,这里为dtr加限流电阻防止对鼠标造成伤害。rts由max232e垢信号发送端提供,通过80c196的p2.0控制max232e的10脚(对应的输出脚为7脚)电平高低
上一篇:如何仿真单片机的外围设备