80C196单片机鼠标接口程序设计实例_第1页
80C196单片机鼠标接口程序设计实例_第2页
80C196单片机鼠标接口程序设计实例_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、80C196单片机鼠标接口程序设计实例摘要通过对鼠标底层通信原理及协议的深入分析,探讨了鼠标在80196单片机系统中的应用价值与可行性,并介绍了鼠标接口软件设计的原理及方法,给出了80196单片机与鼠标的具体接口程序。关键词鼠标接口技术软件设计接口程序80196单片机由于低格低、处理能力强,在信号分析、数据采集等很多领域得到了广泛应用,在目标系统中使用各种规格的液晶或显示器也越来越多。因此在这样的单片机系统中引入鼠标,将会方便操作,提高工作效率。鼠标内核本质上是一个二维的角度或位移信号检测装置,耗电极少、可靠性高、价格低廉,可能在许多场合发挥作用。鼠标与主机之间通过-232标准串行接口进行通信

2、,信息传送是单方向、无条件、无应答连续进行的。此外80196的不直接支持鼠标的接口协议,在程序设计中必须予以注尽、。本文主要探讨80196单片机与兼容鼠标接口程序的设计实现。1鼠标信号发送协议与过程鼠标是一个功能高度集中的小型机电一体化系统。它首先将直线移转换成角度位移,再转变成数字量,然后与按钮状态统一编码,通过-232串口发出。鼠标工作所需功率从-232串行接口的控制线上窃取2、接口鼠标除外。当鼠标被拖动超过一个最小距离或某一按钮被按下时,它按照规定的协议将移动距离和按钮状态通过一次或几次信息发送到机;主机上的鼠标驱动程序将信息变换成鼠标位置和按钮状态供其它程序模块调用。每发生一次移动或按

3、钮状态变化,鼠标向上发送一次信息。通常一般鼠标的分辨率为400。理论上即沿着某一方向每拖动一英寸一般速度,会产生400次信息发送过程。,如果拖动较快,则信息发送次数送减少,但所反映的总的移动距离仍然是400步。各种串行接口鼠标在物理层普遍采用标准的串行通信协议,波特率为1200。帧格式为7个数据位、2个停止位,无奇偶校验位。上层协议则在此基础上以十六进制数形式直接发更新鼠标信息,包括初始化报告移动方向、距离、按钮状态。其一般形式如表1所示。表1鼠标信息发送格式序号名称字串形式长度意义说明1初始化报告41字节声明初始化结束加电时发送一次2移动、按钮1、2、33字节反映按钮状态、移动方向和距离移动

4、或按钮操作时发送上述1、2、3三个参数说明1_76固定值01;10=11本次鼠标移动包含左右移动分量;32=11本次鼠标移动包含上下移动分量;4=1目前鼠标右键呈按下状态;5=1目前鼠标左键呈按下状态45=00则键呈释放状态。2_76固定值00;其余六位表示一个有符号二进制数,反映左右移动量,大于0为向右移动,小于0为向左移动。3_76固定值00;其余六位表示一个有符号二进制数,反映上下移动量,大于0为向下移动,小于0为向上移动。例如60231=6,2=02,3=3反馈出鼠标向右移动了2个单位,向上移动了6个单位,目前左键按下。2鼠标接口程序设计80196系列单片机内设-232收发器,但需要配

5、置接口芯片实现电平转换。考虑到鼠标从串口窃取功率,接口芯片必须具有一定的驱动能力,而不能要用简单的准-232电平转换器。这里采用232作为接口芯片。图1中左侧为80196单片机,20、21通过232形成满足鼠标要求的串行接口,包括生成标准-232电平和提供电源供应。图1中最右边为9针或24针标准串行接插件。由于鼠标的电源供应采用功率窃取方案,由提供,这里为加限流电阻防止对鼠标造成伤害。由232垢信号发送端提供,通过80196的20控制232的10脚对应的输出脚为7脚电平高低以改变7脚电位,使鼠标可以接收来自的控制命令,以实现鼠标安装与否的检测。232的11脚对应的输入脚为14脚设备高电平以保证

6、14脚电位为负-232电位,满足鼠标发送信号时的电平要求。从链路层看,80196串行接口的四种工作方式均不满足鼠标的帧格式要求;但其工作方式11位起始位、8位数据位、1位停止位的总传送位数与鼠标1位起始位、7个数据位、2个停止位相同,均为10位。接收过程中80196收到7个数据位后,将2个停止位中的第一个作为数据位装入接收缓冲器的最高位,由于停止位在物理层是高电平,作为数据被接收后相当于逻辑0;剩下的第二个停止位给好为80196提供了有效的停止位。利用80196的工作方式1完全可以保证正确接收鼠标信息。单片机起动后,通过鼠标驱动模块对鼠标进行初始化,即通过20使电平翻转一次而令鼠标发送初始化报

7、告,以确认鼠标是否安装。之后,鼠标即可随着拖动或按钮操作向单片机发送动作信息,经接口模块释放即可反应鼠标位置和按钮状态。鼠标接口模块主要包括按钮状态识别和位置识别两个部分。80196将根据接收到的鼠标信息不断刷新鼠标信息缓冲区。由于鼠标事件间隔不确定,采用扫描方式但会浪费时间,还可能因来不及处理而丢失信息。有效的处理方法是采用中断方式接收,应用模块通过软件接口获得鼠标信息。完整的鼠标接口程序流程图如图2所示在初始化阶段,首先检查鼠标是否存在,根据结果设置标志位,以备以后取鼠标信息时判断用;根据需要设定鼠标初始化位置、按钮原始状态;最后设置串行接口参数帧格式等并开放鼠标中断。鼠标发送信息时,第三

8、个字节为一个完整的信息报告。但80196每接收到一个字节,就产生一次中断,然后根据当前字节是否大于40确定其性质。若是信息报告的首字节,则还要进一步通过有效性检验后保存;若不是首字节,则必须经过一系列检验后保存起来。收到三个字节后立即进行命令分析和执行。具体处理过程可参看源程序。用户模块通过特定接口模块图2获得鼠标当前位置和按钮状,并可通过进位标志=01判断鼠标是否安装。下面是图2、3程序流程图如图对应的程序清单。该程序要求80196单片机的工作频率为12;如果采有其它工作频率,通过修改串行口的波特率设置参数以及延时程序的时间常数即可。;;8098特殊功能寄存器预定义00007_08210_1

9、1_1111618;通用寄存器预定义11+1+1640;显示屏宽度480;显示屏高度;;变量区20_1;光标值_1光标值_4;接收缓冲区_1;接收指针1_1;鼠标状态;7存在,5,左键,4右键;200020000,0,0,0,0,008000027,0;2080,#0100;设堆栈指针,#2;初始化指针#2#7#_;清除中断,#40;开串行中断,;清除#09;设串口模式,#9;1200,12ZZZ2,#0;22=0,#8000;延迟20000,7,#0;清单二取鼠标消息,=鼠标及按钮状态,=,=,#0,;取鼠标信息,#40;清单三串口中断服务程序;中断服务,6,0;第一个字节_,#_199;缓冲区空,出错_1_,#_+298;缓冲区满,出错,_+;存储收到字节_,#_

温馨提示

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

评论

0/150

提交评论