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

发布者:bdwhsc最新更新时间:2011-12-28 关键字:鼠标  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 鼠标系统数据信息协议

  Mouse System格式 Microsoft格式
数字位 7  6  5  4  3  2  1  0 7  6  5  4  3  2  1  0
字节1 1  0  0  0  0  L  M  R 1  1  L  R  Y7  Y6 X7 X6
字节2 X7 X6 X5 X4 X3 X2 X1 X0 0  0  X5 X4 X3 X2 X1 X0
字节3 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 0  0  Y5 Y4 Y3 Y2 Y1 Y0
字节4 X7 X6 X5 X4 X3 X2 X1 X0  
字节5 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0  

    L=左键状态  M=中键状态  R=右键状态  1=按下  0=释放

    X7~X0=X轴(左右)运动数据  Y7~Y0=Y轴(上下)运动数据

2 AT89C51构成的鼠标电路

AT89C2051构成的鼠标接口电路如图2所示。

硬件接口分配如下:

P1口完成对按键及X、Y方向的运动扫描;

P3.1完成数据发送。

为较好地跟踪鼠标状态,采用12MHz晶振,AT89C2051每μs执行1条指令,能满足实时跟踪的要求。



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”),使主机能够检测到鼠标已经安装。



4 结论

本文利用AT89C2051完成了鼠标移动数据的读取与PC机通信数据的传送。该系统在Windows 95、98和Win2000XP下均调试通过。文中给出的硬件原理图同样可应用于测控系统中编程器信号的读取,应用面较广。

关键字:鼠标  AT89C2051  软件设计 引用地址:一种简单串行鼠标控制的51单片机实现

上一篇:一种用于51单片机的红外串行通信接口
下一篇:51单片机中断多优先级的软件扩展方法

推荐阅读最新更新时间:2024-03-16 12:49

便携式全数字心率测量装置的应用系统软件设计
引言 目前检测心率的仪器虽然很多,但是能实现精确测量、数据上传PC机并且具有声光报警等多种功能的便携式全数字心率测量装置很少。本文介绍的数字人体心率检测仪可以在人体的手、腕、臂等部位均能准确测量出心跳次数,同时还具有掉电存储、测量数据上传PC机及声光报警等多项功能。 1 、系统组成及工作原理 系统组成如图1所示,本设计以单片机为主控信号,外辅少量硬件电路,完成数据处理、记忆、显示、通信等功能。 首先,在系统开机时通过键盘设定系统的工作方式,然后,将压电陶瓷片检测到人体心跳信号经过放大、滤波及整形处理后输入给单片机,单片机对测量的数据进行处理,送显示电路显示,同时通过通信电路将测量数据上传PC机,记忆电路主要用来存储测量数据
[单片机]
便携式全数字心率测量装置的应用系统<font color='red'>软件设计</font>
无线鼠标都普及十年了,国内外厂商差距究竟还有多大
十年前因为无线信号传输技术的普及,无线鼠标开始出现在我们的眼前。如今国内外的外设厂商在无线外设领域都已经深耕十年了,国产厂商与国外厂商之间的差距也越来越小,你还在固守国产产品一定就会弱的的观念么?无线鼠标都普及十年了,国内外厂商差距究竟还有多大?带着这样的疑问我们PConline 评测室进行了今年的各家高端无线鼠标横评。 外观篇 首先我们来看看设计部分,由于我们这次横评的都是无线鼠标,所以5只鼠标都有的配件是充电线和无线模块,接下来介绍的配置部分我就不再赘述了。 先来看看罗技G903的整体配置,还有一枚10g的配重块和可更换的侧键。在整体造型上,罗技G903在原本左右按键与屁股相连的部位挖出一道很深的凹槽,再在
[单片机]
at89c2051串口带校验输入指令最高数率并行输出数据.
;;;串口带校验;;; ;;at89c2051串口带校验最高数率并行输出数据;; ORG 0000H AJMP MAIN ORG 0003H AJMP EX00 RETI ORG 000BH RETI ORG 0013H AJMP EX11 RETI ORG 001BH RETI ORG 0023H CLR TI JBC RI,ES1 RETI ES1: AJMP ESRD ORG 0030H MAIN: MOV SP,#10H MOV TMOD,#21H ;;MOV TH1,#0EFH;;;16MHZ/2450BANDU/S MOV TH1,#0F3H;;;12MHA/2400BANDU/S MOV TCON,#55H MO
[单片机]
VCM磁钢快速检测控制系统的设计
    钕铁硼稀土永磁材料是目前磁性能最强的一种永磁材料,该材料具有磁能积高、原材料丰富和易于加工等特点。因此,钕铁硼永磁材料广泛应用于电动机、发动机、音圈马达、磁共振成像仪、通信、控制仪表、音响设备等方面。其最主要的应用领域是音圈马达(VCM),目前国外生产的烧结钕铁硼磁体约有一半用于VCM。由于VCM磁钢的形状较复杂 ,外轮廓一般都是由圆弧及直线组成,尺寸及表面质量要求较高,所以,对VCM磁钢的检测设备也提出了更高的要求。本文主要介绍VCM磁钢快速检测控制系统的软硬件设计。 1 控制系统的方案设计     本文所设计的VCM磁钢快速检测控制系统主要是与快速智能检测系统中的机械、气动及检测部分相结合,利用单片机控制技术
[嵌入式]
高精度ISA总线测试板卡设计
1概述 工业控制器作为工业监测控制的关键设备,其应用越来越广泛,然而其使用前的测试还 停留在人工测试阶段,采用人工测试存在测试时间长、不够精确等缺点。本文作者在Window s 98下开发的基于PC机工业控制器测试系统,实现了带RS232通讯接口工业控制器模拟量精度的自动校验和开关量信号的自动测试。该测试系统的开发为工业控制器的测试提供了一种快速、准确、可靠的自动测试工具。 2 测试系统组成及原理 为使测试系统有良好的用户界面,缩短开发周期,测试系统采用了现成PC机加上自行设计 的ISA 总线I/O测试板卡的设计方案,其核心是一个基于ISA总线测试板卡的数据采集与控制 系统。测试系统由PC机主板、ISA总线测试板卡、鼠
[测试测量]
基于DS1620和AT89C2051的数字温度计的设计
1 DS1620芯片介绍      DS1620是一片8引脚的片内建有温度测量并转换为数字值的集成电路,他集温度传感、温度数据转换与传输、温度控制等功能于一体。测温范围:-55~+125℃,精度为0.5℃。该芯片非常容易与单片机连接,实现温度的测控应用,单独做温度控制器使用时,可不用外加其他辅助元件。   引脚功能及排列如图1所示。   其中:RST,CLK/CONV及DQ为三线串行通信线;DQ为数据输入输出端。当RST保持高电平,对应CLK/CONV时钟脉冲的上升沿处,DQ可按位输入各种控制指令及数据,在CLK/CONV时钟脉冲的下降沿处开始按位输出9 B温度值,分2个字节输出,最低位(LSB)在最先输出,先输
[单片机]
基于DS1620和<font color='red'>AT89C2051</font>的数字温度计的设计
基于AT89C2051智能汽车防撞报警器设计
  引言   随着现代生活节奏的加快,交通事故发生的频率也在增加,为提高汽车运行的安全性,本文介绍一种单片机控制的汽车防撞报警系统。该装置将单片机的实时控制及数据处理功能,与超声波的测距技术、传感器技术相结合,可检测汽车运行中后方障碍物与汽车的距离及汽车车速,通过数显装置显示距离,并由发声电路根据距离远近情况发出警告声。   1 超声波测距原理   超声波测距的原理是,通过不断检测超声波发射后遇到障碍物所反射的回波,从而测出发射超声波和接收到回波的时间差T,然后求出距离S=C×T/2,其中,C为超声波波速,常温下取为344m/s。声速确定后,只要测得超声波往返的时间,即可求得距离。   2 测速原理   汽车车速的测量是
[单片机]
基于<font color='red'>AT89C2051</font>智能汽车防撞报警器设计
基于PIC软件设计串行异步通信三倍速采样方法
在利用单片机开发各种嵌入式应用系统时,异步串行通信是常用的一种通信模式,有的应用中还要求实现多路异步串行通信。人们平时所应用的各种厂商的单片机,绝大部分片上只提供一个UART(通用异步收发器)硬件模块,利用它可以方便地实现一路串行通讯。PIC系列单片机也不例外,在其丰富的一系列产品中,除高端系列(PIC 17/18)一些型号片上带有2路UART硬件模块外,其他大部分型号片上只有1路UART,一些低端廉价的PIC单片机甚至还不带硬件UART。为了提高系统的性价比,要求设计者用软件实现1路或多路异步串行通信。很多人对用软件实现的UART在可靠性和效率方面持怀疑态度,其实关键问题是采用何种方式来实现可靠的UART功能。 1 串行异步
[单片机]
基于PIC<font color='red'>软件设计</font>串行异步通信三倍速采样方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved