欢迎来到天天文库
浏览记录
ID:27659664
大小:50.00 KB
页数:4页
时间:2018-12-05
《一种简单串行鼠标控制的单片机实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一种简单串行鼠标控制的单片机实现摘要:通过对鼠标底层通信原理与协议的深入分析,探讨以AT89C2051单片机构成串行鼠标的实现方法;介绍鼠标编码器数据取软件的设计原理及方法,给出串行鼠标的软件设计。鼠标是一种快速定位器,通过移动鼠标可以快速定位屏幕上的对象,是计算机图形界面交互的必用外部设备。通常,鼠标通过微机中的串口或PS/2鼠标插口与主机连接。当在平面上移动鼠标时,通过机械或光学的方法把鼠标滚轮移动的距离和方向转换成脉冲信号传送给计算机,计算机鼠标驱动程序将脉冲个数转换成鼠标的水平方向和垂直方向的位移量,从而控制显示屏上光
2、标箭头随鼠标的移动而移动。根据此原理,我们可利用鼠标的上位机驱动程序来设计测控系统中的编码器读取软件。1串行鼠标的原理及数据协议鼠标一般划分为以下功能模块:微控制器、按键检测、位置移动检测、RS232信号产生、5V电源产生器。串行鼠标的功能框图如图1所示。微软公司与MouseSystem公司的鼠标都采用串行输入技术。微软公司的协议格式为3个字节:第1字节的6、7位固定为1,4,5位分别为左右键状态,2、3位为上下移动数据的高6、7位,0、1位为左右移动数据的高6、7位;第2、第3字节发送的都是左右上下的其余6位数据,其中Y表示
3、上下、X表示左右移动的数据位。MouseSystem公司的协议格式为5个字节:1个字节用于描述3个按键的状态,2个字节为Y方向的相对坐标,另外2个字节为X方向的相对坐标,具体协议如表1所列。由表1我们可以方便地制作鼠标。表1鼠标系统数据信息协议 MouseSystem格式Microsoft格式数字位7654321076543210字节110000LMR11LRY7Y6X7X6字节2X7X6X5X4X3X2X1X000X5X4X3X2X1X0字节3Y7Y6Y5Y4Y3Y2Y1Y000Y5Y4Y3Y2Y1Y0字节4X7X6X5X4
4、X3X2X1X0 字节5Y7Y6Y5Y4Y3Y2Y1Y0 L=左键状态M=中键状态R=右键状态1=按下0=释放X7~X0=X轴(左右)运动数据Y7~Y0=Y轴(上下)运动数据2AT89C51构成的鼠标电路AT89C2051构成的鼠标接口电路如图2所示。硬件接口分配如下:P1口完成对按键及X、Y方向的运动扫描;P3.1完成数据发送。为较好地跟踪鼠标状态,采用12MHz晶振,AT89C2051每μs执行1条指令,能满足实时跟踪的要求。图2电路原理图3软件设计设计的软件要完成按键扫描、X方向/Y方向运动扫描、数据发送等任务。在记数光
5、电管产生脉冲的同时,将数据按照规定格式发送到主机。脉冲的个数反映了移动的距离,单位时间内脉冲数越多,鼠标移动越快。下面以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为高电
6、平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。正好与向左移动的情况相反。
此文档下载收益归作者所有