一种简单串行鼠标控制的单片机实现_第1页
一种简单串行鼠标控制的单片机实现_第2页
一种简单串行鼠标控制的单片机实现_第3页
一种简单串行鼠标控制的单片机实现_第4页
全文预览已结束

下载本文档

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

文档简介

1、一种简单串行鼠标控制的单片机实现             摘要:通过对鼠标底层通信原理与协议的深入分析,探讨以AT89C2051单片机构成串行鼠标的实现方法;介绍鼠标编码器数据取软件的设计原理及方法,给出串行鼠标的软件设计。     关键词:鼠标 AT89C2051 软件设计鼠标是一种快速定位器,通过移动鼠标可以快速定位屏幕上的对象,是计算机图形界面交互的必用外部设备。通常,鼠标通过微机中的串口或PS/2鼠标插口与主机连接。当在平面上移动鼠标时,

2、通过机械或光学的方法把鼠标滚轮移动的距离和方向转换成脉冲信号传送给计算机,计算机鼠标驱动程序将脉冲个数转换成鼠标的水平方向和垂直方向的位移量,从而控制显示屏上光标箭头随鼠标的移动而移动。根据此原理,我们可利用鼠标的上位机驱动程序来设计测控系统中的编码器读取软件。1 串行鼠标的原理及数据协议鼠标一般划分为以下功能模块:微控制器、按键检测、位置移动检测、RS232信号产生、5V电源产生器。串行鼠标的功能框图如图1所示。微软公司与Mouse System公司的鼠标都采用串行输入技术。微软公司的协议格式为3个字节:第1字节的6、7位固定为1,4,5位分别为左右键状态,2、3位为上下移动数据的高6、7位

3、,0、1位为左右移动数据的高6、7位;第2、第3字节发送的都是左右上下的其余6位数据,其中Y表示上下、X表示左右移动的数据位。Mouse System公司的协议格式为5个字节:1个字节用于描述3个按键的状态,2个字节为Y方向的相对坐标,另外2个字节为X方向的相对坐标,具体协议如表1所列。由表1我们可以方便地制作鼠标。表1 鼠标系统数据信息协议Mouse System格式Microsoft格式数字位7  6  5  4  3  2  1  07  6  5  4  3  2&#

4、160; 1  0字节11  0  0  0  0  L  M  R1  1  L  R  Y7  Y6 X7 X6字节2X7 X6 X5 X4 X3 X2 X1 X00  0  X5 X4 X3 X2 X1 X0字节3Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y00  0  Y5 Y4 Y3 Y2 Y1 Y0字节4X7 X6 X5 X4 X3 X2 X1 X0字节5Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 &

5、#160;  L=左键状态  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方向运动扫描、数据发送等任务。在

6、记数光电管产生脉冲的同时,将数据按照规定格式发送到主机。脉冲的个数反映了移动的距离,单位时间内脉冲数越多,鼠标移动越快。下面以X方向为例,详细说明方向的判断及脉冲的记数。向右移动的状态为: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=

7、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个字节能连续发送完。另外,当主机检测鼠标时,需要鼠标发送初始化报告,以检测鼠标是束安装。因此,在鼠标初始化过程中,首先要发送一个字节“4DH”(“M”,D7位置“1”则为“CDH”),使主机能

温馨提示

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

评论

0/150

提交评论