鼠标设计参考.doc_第1页
鼠标设计参考.doc_第2页
鼠标设计参考.doc_第3页
鼠标设计参考.doc_第4页
鼠标设计参考.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

鼠标是一种快速定位器,通过移动鼠标可以快速定位屏幕上的对象,是计算机图形界面交互的必用外部设备。通常,鼠标通过微机中的串口或PS/2鼠标插口与主机连接。当在平面上移动鼠标时,通过机械或光学的方法把鼠标滚轮移动的距离和方向转换成脉冲信号传送给计算机,计算机鼠标驱动程序将脉冲个数转换成鼠标的水平方向和垂直方向的位移量,从而控制显示屏上光标箭头随鼠标的移动而移动。根据此原理,我们可利用鼠标的上位机驱动程序来设计测控系统中的编码器读取软件。1 串行鼠标的原理及数据协议鼠标一般划分为以下功能模块:微控制器、按键检测、位置移动检测、RS232信号产生、5V电源产生器。串行鼠标的功能框图如图1所示。微软公司与Mouse System公司的鼠标都采用串行输入技术。微软公司的协议格式为3个字节:第1字节的6、7位固定为1,4,5位分别为左右键状态,2、3位为上下移动数据的高6、7位,0、1位为左右移动数据的高6、7位;第2、第3字节发送的都是左右上下的其余6位数据,其中Y表示上下、X表示左右移动的数据位。Mouse System公司的协议格式为5个字节:1个字节用于描述3个按键的状态,2个字节为Y方向的相对坐标,另外2个字节为X方向的相对坐标,具体协议如表1所列。由表1我们可以方便地制作鼠标。表1 鼠标系统数据信息协议Mouse System格式Microsoft格式数字位7654321076543210字节110000LMR11LRY7Y6 X7 X6字节2X7 X6 X5 X4 X3 X2 X1 X000X5 X4 X3 X2 X1 X0字节3Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y000Y5 Y4 Y3 Y2 Y1 Y0字节4X7 X6 X5 X4 X3 X2 X1 X0字节5Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0L=左键状态M=中键状态R=右键状态1=按下0=释放X7X0=X轴(左右)运动数据Y7Y0=Y轴(上下)运动数据2 AT89C51构成的鼠标电路AT89C2051构成的鼠标接口电路如图2所示。硬件接口分配如下:P1口完成对按键及X、Y方向的运动扫描;P3.1完成数据发送。为较好地跟踪鼠标状态,采用12MHz晶振,AT89C2051每s执行1条指令,能满足实时跟踪的要求。图2 电路原理图3 软件设计设计的软件要完成按键扫描、X方向/Y方向运动扫描、数据发送等任务。在记数光电管产生脉冲的同时,将数据按照规定格式发送到主机。脉冲的个数反映了移动的距离,单位时间内脉冲数越多,鼠标移动越快。下面以X方向为例,详细说明方向的判断及脉冲的记数。X方向的2路信号为P1.2与P1.3,分别用X1与X2表示。当鼠标向左移动时,X1(P1.2)超前于X2(P1.3);当鼠标向右移动时,X1(P1.2)落后于X2(P1.3);假设测得X1、X2都为低电平0(图3中a),若下一次测得X1为高电平1、X2为低电平0(图3中b)。第三次检测到X1、X2电平1(图3中c),继续向左移动,直到检测到X1为低电平1、X2为高电平0(图3中d),正好检测到一个完整的脉冲,计数器加1,接着进入下一个循环。由此可见,要完成一个脉冲的计数,需要检测到四种不同的状态:X1=X2=0;X1=1,X2=0;X1=X2=1;X1=0,X2=1。向右移动的状态为:X1=X2=0;X1=0,X2=1;X1=X2=1;X1=1,X2=0。正好与向左移动的情况相反。由此,可以根据本次测得的状态与上一次的状态比较的结果确定鼠标移动的方向。向上、向下的运动检测遵循同样的原则。根据以上分析,要完成一次计数,单片机至少要对每一种状态检测一次,这就需要单片机有较高的跟踪速度。由实验测得,最短的时间间隔在b与d处,即X1=X2=0变化到X1=X2=1或者X1=X2=1变化到X1=X2=0的过程中。鼠标正常移动时,间隔一般为300s500s。即使在鼠标高速移动时,最小间隔也大于80s。当AT89C2051采用12MHz晶振时,程序正常扫描一遍的时间最大为50s(包括数据处理与发送的时间),因此,能保证每种状态都能扫描到。在表1中,X7X0反映X方向移动的距离。如X值为正(X7=0),则表示鼠标向右运行;如果为负值(X7=1,即以补码表示),表示向左运行。同理,若Y值为正,表示鼠标向下运行;若为负,则表示向上运行。在程序中,若检测到鼠标状态有变化,则延时多个循环(在每个循环中都对鼠标状态检测一遍),作为消除按键抖动的时间。信息采用RS232格式,波特率为1200baud。为满足鼠标1位起始位、7位数据,无奇偶校验位以及2位停止位的数据格式,在程序中,对数据进行了处理,将要发送的每个字节的最高位置为1。主程序流程如图4所示。在图中,当检测到按钮状态发化或者检测到X、Y方向运行时,置延时循环标志。为了发送3个字节信息,在串行口中断程序中置标志位,使3个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论