无线鼠标报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无线鼠标制作
学校专业:_____西安邮电大学理学院_________ 制作者:_刘峪,刘江江,曹明智,段少飞___ 指导教师:_____________孙宇航_____________
摘要
本文介绍了基于STC89C52RC 单片机的无线鼠标制作,通过模拟Windows 串口鼠标的通信协议,让计算机将单片机识别为串口鼠标。

无线接收发送采用315M 无线收发模块。

一.无线鼠标设计方案(探索之路)
方案一:由于缺乏电路设计的经验,一开始我们采用的方案非常简单:将有线鼠标的USB 线剪断,将其用315M 无线收发器代替,鼠标发射编码信号,计算机接收并解码无线信号。

VCC
D+ 串行信号
D-
GND
D+ 串行信号 D+
D-
这个方案的缺点是:315M 无线收发器的传输速率跟不上鼠标的扫描
鼠标 PT2262 编码芯片
315M 无线发射模块
计算机
PT2272
解码芯片
315M
无线接收模块
速率。

方案二:将上述方案的315M 无线收发模块改为市面上通用的4.2G 无线收发模块,最常用的有NRF24L01。

但是NRF24L01采用的是SPI 通信协议,如果要将有线鼠标改为无线鼠标,需要在鼠标端口接USB 转SPI 模块,计算机端接SPI 转USB 模块,造价昂贵且实验价值不高。

方案三:是电院同学之前采用过的方案,主要思想是用单片机来接受红外遥控信号,控制单片机输出高低电压来代替鼠标按键的作用。

这种方案的实施可行性非常高,但是功能只有按键的作用,无法控制光标的移动。

方案四:用51单片机模拟串口鼠标的信号输出,用红外遥控信号控制单片机,单片机输出相应的串口信号,控制鼠标光标的移动, 以及左右按键的功能。

我们最后采取的就是此方案。

遥控器
发射
鼠标
接收
二、实验材料简介
1. 51单片机STC89C52RC开发板:
选用一个开发板,而不是直接使用单片机STC89C52RC,因为开发板上的电路焊接牢固稳定,自己用51单片机搭建外部电路很容易出现毛病,这个开发板的功能我们基本都可以用到。

开发板上的主要组成部分有:
(1) STC89C52RC: STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

采用的外接晶振11.0592hz。

(2)PL2303 是Prolific 公司生产的一种高度集成的RS232-USB 接口转换器,可提供一个RS232 全双工异步串口通信装置与USB 功能接口便利连接的解决方案。

采用的外接晶振12MHZ。

2. 315M无线收发模块
此无线收发器采用的是PT2262-M4/PT2272-M4,为四路独立动点输出电路。

也就是说,按下A, B,C,D键时,接收端分别有相应的四个端口输出高电平。

3.杜邦线
我们购买的是双母头的杜邦线,因为无线接收器和单片机上都有相应的插针,既然能插杜邦线,就不需要焊接了,而且对于后续的改进也很方便。

三、方案详述
第一步:我们要做的就是把51单片机做成一个电脑识别的鼠标,有两种方法,第一种是自定义通信协议,需要写出计算机上的驱动程序,可以说相当复杂,我们短时间内是无法完成的;第二种方法是模拟Windows老式串口鼠标,让Windows自动帮我们安装驱动程序。

下面附上串口鼠标的通信协议:
数据格式
㈠MicroSoft 公司标准:
MICROSOFT FORMAT
字节字元(B i t)
7 6 5 4 3 2 1 0
BYTE1 1 1 L R Y7 Y6 X7 X6
BYTE2 0 0 X5 X4 X3 X2 X1 X0
BYTE3 0 0 Y5 Y4 Y3 Y2 Y1 Y0
注释:
L = 左键状态
R = 右键状态1 = 按下0 = 释放
X0-X7 = X 距离
Y0-Y7 = Y 距离X7或Y7为±符号位
串口特性:波特率= 1200 Baud,8 位数据,无校验位,2 停止位。

(这是我从网上查到的通信协议,但是有一处应该是错误的:“X0-X7 = X 距离”,实际上我测试的结果是x6x5x4x3x2x1x0由高位到低位所组成的二进制数表示
鼠标一次前进的距离,另外,“X7或Y7为±符号位”表示x7=0,向左;
x7=1,向右;y7=0,向下;y7=1,向上)。

相应的我们在51单片机的程序中需要定义三个字节的结构体变量:其中,tmpX,是有八个字节的char型变量,用于保存x7,x6,x。

不参与发送。

tmpY也一样。

还有一个关键是从串口不断向电脑发送字符‘M’,这样Windows就会将单片机识别为一个串口鼠标,发送频率不是固定的,我们采用的发送频率大概是每秒两次。

第二步:
用红外遥控器向单片机输入电平信号,单片机根据所接收的信号输出相应的串口信号来控制光标的移动。

因为我们采用的是四路独立的红外遥控电路,所以不需要红外解码程序,取而代之用单片机常用的键盘扫描法来识别遥控信号。

键盘扫描法的基本流程用下图表示:
在我们的方案中,分别将无线接收器的四个输出管脚分别接到了单片机的管脚:P1^0,P1^1,P1^2,P1^3; 需要注意的是此接收模块的有效输出电平是高电平,需要将这四个管脚全部置为低电平。

实现鼠标左右键功能,使用的是单片机上四个独立按键中的两个,分别接单片机的P2^2,P2^3。

使用的同样是键盘扫描的方法。

至此,无线鼠标的功能已经全部实现了,但是看看开发板上还有两个多余的按键,不能浪费了,一次我们有了第三步:
第三步:
考虑鼠标的协议,通过调节X6X5X4X3X2X1X0的值的大小,可以改变光标移动的速度,那么我设置了一个speed变量,通过键盘扫描法获得两个按键P3^4、P3^5的键值,如果P3^4被按下,就减小
speed的值,如果P3^5被按下,就增加speed的值。

然后将speed的值赋予X6X5X4X3X2X1X0所组成的字符串,这样我们就有了两个可以控制光标移动速度的按键,(很像鼠标上的DPI有没有)。

单片机上还有一个数码管,本着不浪费的原则,我们将它做成一个鼠标光标速度的显示器,经过试验,speed的值在5-45之间时,鼠标的光标移动速度比较合理,我们在数码管上显示speed/5,这样鼠标光标移动速度就被分成了0,1,2,3,4,5,6,7,8,9九个档位。

四、鼠标的使用
步骤一:
安装PL2303驱动,这样电脑才能识别鼠标发出的串口信号,安装完成后,打开计算机的设备管理器,会发现一个USB-SERIAL的com口。

如果前面有黄色叹号,需要卸载重装。

步骤二:
插入鼠标,打开设备管理器,检查电脑有没有将其识别为串口鼠标。

步骤三:
可以使用鼠标进行控制了,功能如下:
按键 A B C D 1 2 3 4
功能左右上下左键右键加快减慢
五、参考资料
1、郭天祥《十天学会51单片机》。

2、借鉴了阿莫电子论坛duxingke的方案。

报表人刘峪,qq:1916431714
源代码及驱动:/s/1o6oUPv0。

相关文档
最新文档