网站首页 | 经济学论文 | 证券金融 | 管理学 | 会计审计 | 法学论文 | 医药学论文 | 社会学论文 | 教育论文 | 计算机 | 艺术论文 | 哲学论文 | 财务管理 |
写论文网
  • 民法论文
  • 经济法论文
  • 国际法论文
  • 法学理论论文
  • 司法制度论文
  • 国家法论文
  • 宪法论文
  • 刑法论文
  • 行政法论文
  • 您的位置:写论文网 > 法学论文 > 法学理论论文 > 一种简单串行鼠标控制的单片... 正文 2019-12-25 07:26:58

    一种简单串行鼠标控制的单片机实现 鼠标单片机

    相关热词搜索:

    一种简单串行鼠标控制的单片机实现

    一种简单串行鼠标控制的单片机实现 关键词:鼠标 AT89C2051 软件设计 鼠标是一种快速定位器,通过移动鼠标可以快速定位屏幕上的对象,是计 算机图形界面交互的必用外部设备。通常,鼠标通过微机中的串口或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 鼠标系统数据信息协议 L=左键状态 M=中键状态 R=右键状态 1=按下 0=释放 X7~X0=X轴(左右)运动数据 Y7~Y0=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的过程中。鼠标正常移 动时,间隔一般为300μs~500μs。即使在鼠标高速移动时,最小间隔也大于80μs。

    当AT89C2051采用12MHz晶振时,程序正常扫描一遍的时间最大为50μs(包括数 据处理与发送的时间),因此,能保证每种状态都能扫描到。在表1中,X7~X0反映X方向移动的距离。如X值为正(X7=0),则表示 鼠标向右运行;
    如果为负值(X7=1,即以补码表示),表示向左运行。

    同理,若Y值为正,表示鼠标向下运行;
    若为负,则表示向上运行。

    在程序中,若检测到鼠标状态有变化,则延时多个循环(在每个循环中都 对鼠标状态检测一遍),作为消除按键抖动的时间。信息采用RS232格式,波特 率为1200baud。为满足鼠标1位起始位、7位数据,无奇偶校验位以及2位停止位 的数据格式,在程序中,对数据进行了处理,将要发送的每个字节的最高位置为 1。

    主程序流程如图4所示。在图中,当检测到按钮状态发化或者检测到X、Y 方向运行时,置延时循环标志。为了发送3个字节信息,在串行口中断程序中置 标志位,使3个字节能连续发送完。

    另外,当主机检测鼠标时,需要鼠标发送初始化报告,以检测鼠标是束安 装。因此,在鼠标初始化过程中,首先要发送一个字节“4DH”(“M”,D7位置“1” 则为“CDH”),使主机能够检测到鼠标已经安装。

    完整的程序清单见网络补充版(http://www.dpj.com.cn)。

    4 结论 本文利用AT89C2051完成了鼠标移动数据的读取与PC机通信数据的传送。

    该系统在Windows 95、98和Win2000XP下均调试通过。文中给出的硬件原理图同 样可应用于测控系统中编程器信号的读取,应用面较广。

    • 范文大全
    • 教案
    • 优秀作文
    • 教师范文
    • 综合阅读
    • 读后感
    • 说说
    一种简单串行鼠标控制的单片机实现 鼠标单片机》由(写论文网)整理提供,版权归原作者、原出处所有。
    Copyright © 2019 写论文网 All Rights Reserved.