无线鼠标的设计与实现毕业论文Word文档下载推荐.docx
《无线鼠标的设计与实现毕业论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《无线鼠标的设计与实现毕业论文Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
机械鼠标在出现之初,是通过滑动电位器来判断它的移动方向,所以它的灵敏度低、磨损大。
但是随着技术的进步,机械鼠标吸收了光电鼠标的一些设计,由纯机械式结构发展成为了光学机械式鼠标,光学机械式鼠标采用了与纯机械式鼠标不同的编码器,并使用了一个滚球靠在两个转轴上的结构。
光学机械式鼠标的部结构是由机械传动装置、光电转换装置、按键、编码电路和连接线、外壳等组成。
光电鼠标是1981年由DiekLyon和steveKirseh发明的,这种没有滚球的鼠标采用光学定位,最初的光电必须和特殊额垫板配合才能使用,造成诸多不便。
随着技术的进步,光电鼠标最终拋弃了垫板,工作的时候通过发送一束红色的光线照射到桌面上,然后通过桌面不同颜色或凹凸点的运动和反射来判断鼠标的运动。
(2)串口鼠标、PS/2鼠标⑷和USB鼠标
早期的鼠标并不是电脑的标准配置,因此和现在的鼠标有很大的不同,除了必须外装电源之外,还要安装特殊的适配卡,使用起来很不方便。
后来出现了一种转接盒,通过它可以把鼠标连接到Parallel接口上。
Parallel接口成为了鼠标与电脑连接的第一种接口。
随着鼠标被广泛使用,在加上技术的发展,从COM接口(串口)成了鼠标使用的第二种接口,与其它设备一样,鼠标也是使用9针连接接口(DB-9)o由于电脑的COM口本来就少,还要连接其它设备,所以很容易造成资源占用的问题。
目前广泛使用的鼠标都是使用的PS/2鼠标这种接口是IBM公司于1987年在PS/2系统上推出的,这也是被称为PS/2鼠标的来由。
虽然PS/2系统最终没能得到市场的认可,但是其中的一些优秀设计还是被保留下来,比如它的PS/2鼠标接口,现在已经成了ATX主机板上面的标准配置。
USB接口的出现为外设提供了更加简便的连接方案,由于它符PNP规,可以实现热插拔,因此使用起来很方便。
1.3本文的主要工作
本文研究一款以普通Ps/2鼠标,采用ZigBee无线模块进行通信的无线鼠标,鼠标系统由鼠标发送部分和鼠标接收部分组成。
本文的主要工作如下:
(1)设计无线鼠标的硬件系统,连接各个模块,包括PS/2鼠标,LCD1602显示,ZigBee无线传输等鼠标的硬件设计。
(2)为鼠标设计合理的系统软件,获取鼠标位移信息及按键信息,利用LCD1602显示实现鼠标操作仿真。
(3)将鼠标的位移与按键信息合并后无线发送给插在电脑上的鼠标接收器使鼠标接收器与计算机进行通信,最终实现了鼠标的无线操作。
•专业•专注.
2PS/2协议与PS/2鼠标工作原理
2.1PS/2协议简介
PS/2协议是由IBM开发,主要用于鼠标和键盘的一种通信协议,它规定了物理及电器接口、命令、数据包格式。
2.1.1PS/2硬件接口物理特性
PS/2接口用于许多现代的鼠标和键盘,由IBM最初开发和使用。
物理上的PS/2接口⑸有两种类型的连接器:
5脚的DIN和6脚的mini-DIN。
图2—1就是两种连接器的引脚定义。
使用中,主机提供+5V电源给鼠标,鼠标的地连接到主机电源地上。
Male公的
Female母的
6-pmMiiii-DIN(PS/2):
6脚Mmi-DlN(PS/2)
1・Data
1-数据
V)
2•NotImplemented
2—未实现,保怖
3-Ground
3—电源地
4-+5y
4一电源+5V
(Plug)插头
(Socket)插座
5-Clock
5—时钟
6-NotImplemented
6—未实现,保留
图2-1PS/2硬件接口
2.1.2接口协议原理
PS/2鼠标接口采用一种双向同步串行协议。
即每在时钟线上发一个脉冲,就在数据线上发送一位数据。
在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送。
方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据。
如果主机要发送数据,它必须控制鼠标产生时钟信号。
方法如下:
主机首先下拉时钟线至少100PS抑制通信,然后再下拉数据线,最后释放时钟线。
通过这一时序控制鼠标产生时钟信号。
当鼠标检测到这个时序状态,会在10ms产生时钟信号。
如图2-3中A时序段。
主机和鼠标之间,传输数据帧的时序如图2-2、图2-3所示。
inrm_rLnj^rTrLrLTLnnj_
W\ZZ)CDOOaOCDOG7~
停止位校验位«
船位7数据位6数1«
位5数枢位4故屈位3S掘位2敎据位1
图2-2鼠标到主机的传输时序
标
/应咨徒\停止位校验位数据位7數提位3数据位4敖括伉3«
捋仃二敌据位1數据位O数
图2-3主机到鼠标的传输时序
数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收。
在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据。
但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源。
2.2PS/2鼠标的工作原理
2.2.1PS/2鼠标的工作模式
目前最常见的鼠标有PS/2鼠标和USB鼠标。
PS/2鼠标有4种工作模式,具体如下:
(1)复位模式:
当上电后或接收到复位命令FF后鼠标即处于此模式。
鼠标进行自检和初始化,再向主机发送OxFA,OxAA和0x00,—些参数将恢复到默认值,即采样率为100sample/s非自动流速、流模式、分辨率为4计数/mm、禁止状态。
(2)流模式:
如果有按键或滚轮动作,即向系统发送信息,最大发送速率就是可编程的采样率。
(3)遥控模式:
只有主机发送了模式设置指令OxFO后,鼠标才进入这种模式。
(4)卷绕模式:
这种模式只用于检测鼠标与主机是否连接正确,在该模式下鼠标收到什么就返回什么,除非收到退出卷绕指令OxEC或复位指令OxFFo
流模式是默认模式。
大多数应用系统使用流模式,鼠标的任何动作都会报告给主机。
也可以使用遥控模式,主机使用OxEB命令请求数据,鼠标进行应答。
主机和鼠标之间的通信命令有很多。
主机向鼠标发出的每一个字节和命令鼠标都必须采用OxFA应答,但是重传命令OxFE除外。
2.2.2PS/2协议数据包格式
PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机。
发送的数据包格式⑹如图2-4所示。
图2-4数据包格式
Bytel中的BitO、Bitl、Bit2分别表示左、右、中键的状态,状态值0表示释放,1表示按下。
Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值。
Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位。
这种数据包由带滚轮的三键三维鼠标产生。
若是不带滚轮的三键鼠标,产生的数据包没有Byte4其余的相同。
标准的PS/2协议数据格式为3字节,如图2-5所示。
鼠标的按键和滚动信息都采用这种格式汇报给主机。
YOverflow
XOverflow
YSign
XSign
1
MiddleButton
RightButton
Left
Button
Xmovement
Ymovement
图2-5标准的PS/2协议数据格式
标准鼠标指支持左右移动和三个鼠标键。
微软智能鼠标支持滚轮。
当主机向鼠标发送魔幻序列0xF30xC80xF30x640xF30x50后,鼠标进入滚轮模式。
此时读取鼠标ID返回0x03。
此后通信过程使用如图2-6所示的4字节协议。
Middle
Lel'
t
ZHmovement
ZLmovement
图2-6字节的PS/2协议数据格式
其中ZH和ZL都采用二进制补码表示,围为-8〜7。
此外,鼠标还有只能IE鼠标和台风(Typhoon)鼠标,通信协议与上述还有不同。
目前最常见的鼠标就是这两种。
3ZigBee无线传输协议
随着现代社会对通信技术的要求日益提高,由于短距离无线通信技术有广阔的应用前景和巨大的市场空间因此得到了许多厂商的重视,取得很大的发展。
各种短距离无线通信技术各有自己的特点和应用领域,下面对其中几种常用的短距离无线通信技术做简单介绍,并比较其特点。
1、红外技术
红外线丫是波长在750nin-lmin之间的电磁波,它的频率高于微波而低于可见光,是一种人眼看不到的光线。
由于红外线波长较短,对障碍物衍射能力差,所以更适合应用在需要短距离无线通信的场合,进行点对点的直线数据传输。
红外数据协会将红外数据通信所采用的光波波长围限定在850nm-900nm之。
红外数据通信的通信距离通常最大不超过10m,通信角度不能超过30°
传输速率可以达到16Mbpso该技术具有工作原理简单、功耗小、成本低的特点,但由于其传输距离有限、传输方向性强等缺点,在应用围上受到了一定程度的限制。
2、家庭无线电射频技术(HomeRadioFrequency)
家庭无线电射频⑻无线联网标准是由西门子、摩托罗拉等技术巨头组建的HomeRF工作组负责研发的,旨在为家庭无线联网提供一种组网方便、易用、成本低廉的通用性标准,是IEEE802.11与DECT的结合,使用开发的2.4GHz频段,能够有效降低话音和数据传输成本,可提供l-2Mbps的数据传输,最高可达lOMbpso
3、射频识别技术(RadioFrequencyldentificationDevices)
无线射频'
识别是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据。
其突出特点主要有识别速度快,适应高速移动物体,能穿透布、皮、木等材料,且阅读距离远,可全天候工作。
目前主要应用在电子标签领域。
4、蓝牙技术(Bluetooth)
蓝牙技术何于1998年5月由爱立信、诺基亚、东芝、IBM和英特尔公司在联合开展短程无线通信技术的标准化活动时提出的,旨在提供一种短距离、低成本的无线传输应用技术。
利用蓝牙技术,能够有效地简化掌上电脑、笔记本电脑和移动等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与Intemet之间的通信,从而使数据传输更加简便迅速高效。
蓝牙工作在2.4GHISM频段,采用1600次/秒的扩频调频技术,通信距离为10-100m,传输速率从720kbps发展到3Mbps,而且在传输数据信息的同时,还可以传输一路话音信息。
蓝牙技术的应用领域越来越广泛,从工业自动控制、家庭自动化到PDA、手机和电脑外设等,无处不在。
上面简单介绍了几种常用的短距离无线通信技术特征,接下来将这几种短距离无
线通信技术与ZigBee通信技术皿做简单的性能比较。
由3-1可以看出,各种短距离无线通信技术各有特点,适用于不同的场合。
表3-1几种短距离无线通信技术的比较
规
工作
频段
传输速率(Mbps)
数据/话音
最大功耗(mW)
连接设备数
安全
措施
主要用途
ZigBee
868/91
5
MHz
2.4GHz
0.25
数据
1-3
2,6-26*
32,64,
128
密钥
家庭网络、
控制网络、
传感器网络
红外
820nm
1.521
4,16
10
2
小角度传输
可见围的数
据传输、近距
离遥控
HomeRF
1.2
50
127
50次/秒跳频
家庭无线局
域网
蓝牙
1-100
7
128位
个人网络
RFID
5.8GHz
0.212
超市、物流管理
由上表比较可知,ZigBee无线传输更适合本设计,所以本设计的无线传输部分采用ZigBee无线传输技术。
3.1ZigBee无线通信技术概述
ZigBee技术M是一种近距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术,适用于自动控制和远程控制领域,可以嵌入到各种设备中。
ZigBee是一组基于IEEE802.15.4无线标准研制开发的,有关组网、安全和应用软件方面的技术标准oZigBee设备应该包括IEEE8O2.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的卩HY和MAC层,以及ZigBee堆栈层、网络层(NWK).应用层和安全服务提供层。
ZigBee联盟对网络层协议和API进行了标准化,完全协议用于一次可直接连接到一个设备的基本节点的4K字节或作为协调器的32K字节。
每个协调器可连接255个节点,几个协调器即可形成一个网络,对路由传输的数目没有限制。
ZigBee联盟还开发了安全层,以保证不会意外泄漏其标识,网络的远距离传输不会被其它节点获得。
ZigBee技术的主要特点包括:
低速率:
只有10k字节/秒到250k字节/秒,满足低速率传输数据的应用需求;
低功耗:
在低耗电待机模式下,两节普通5号干电池可使用6个月到2年;
低成本:
ZigBee数据传输速率低,协议简单,所以大大降低了成本,且ZigBee协议免收专利费;
大网络容量:
每个ZigBee网络最多可支持255个设备;
短时延:
通常时延都在15毫秒至30毫秒之问;
高安全:
ZigBee提供了三级安全模式,包括无安全设定、使用接入控制清单(ACL)防止非法获取数据以及采用高级加密标准(AES128)的对称密码,以灵活确定其安全属性;
近距离:
有效覆盖围10-75米之间,具体依据实际发射功率的大小和各种不同的应用模式而定,基本能够覆盖普通的家庭或办公室环境;
工作频段灵活:
使用的频段分别为2.4GHz、868MHz(欧洲)及91SMHz(美国),均为免执照频段。
3.2ZigBee协议结构
ZigBee结构采用分层技术,每一层负责完成所规定的任务并且向上层提供服务。
完整的ZigBee协议套件由高层应用规、应用会聚层、网络层、数据链路层和物理层组成。
网络层以上协议由ZigBee联盟制定,IEEE负责物理层和链路层标准。
ZigBee协议栈的结构见图3-2所示。
用户
应用层
应用程序员接口
网络层
星状网状樹状
介质访问控制层
Ss?
图3-2ZigBee协议栈
物理层:
使用IEEE802.15.4协议,负责启动和关闭无线收发器,进行能量检测,链路质量检测,信道选择,淸除信道评估,以及通过物理媒体对数据包进行发送和接收。
MAC层:
使用IEEE802.15.4协议,负责设备之间无线数据链路的建立、维护以及结束,确认模式的数据传送和接收,可选时隙,实现低延迟传输,支持各种网络拓扑结构,网络中每个设备为16位地址寻址,通过物理层数据服务发送和接收MAC层协议数据。
网络层:
负责配置一个新的设备,初始化网络,连接和断开网络,路由发现,邻居设备发现,接收控制生成网络层协议数据单元,指定拓扑传输路由。
应用层:
应用层维持器件的功能属性,发现该器件工作空间中其他器件的工作,根据服务和需求使多个器件之间进行通信,根据具体应用由用户开发。
ZigBee协议栈基于标准的七层开放式系统互联()模型,但仅对涉及ZigBee的层予以定义。
IEEE802.15.4定义了物理层(PHY)和介质访问控制层(MAC),ZigBee联盟定义了网络层和应用层(API),其中应用层的框架包括了应用支持(APS),ZigBee设备对象(ZDO)和由制造商制订的应用对象。
本设计的软件实现原理框架如图4-2所示。
开始
CPU初始化,LCD初始化和鼠标初始化,打开外部中断
鼠标移动位移处理
P1各端口输出f高低电平控制
CC2530
相关处理完成
LCD显示no±
ing
LCD显示扌安谑信息
LCD显示鼠标坐标信息
ZigBee无线发送模块CC2530发送鼠标信息
ZigBee无线接收模块CC2531接收信息完成鼠标操作
图4-2软件实现原理框图
5PS/2鼠标硬件设计与软件解码
5.1PS/2鼠标硬件设计
图5-1显示了鼠标与单片机接口的连接冋原理图,鼠标1接口为数据线,接单片机P3.7口;
鼠标5接口为时钟线,接单片机的P3.3口。
图5-1鼠标与单片机接口的连接图
解码后由LCD1602显示鼠标坐标和按键信息,无误后发送给CC2530模块进行传输。
LCD1602显示的硬件设计如图5-2所示。
图5-2LCD1602与单片机的连接图
ZigBeeCC2530模块发射端管脚说明:
端口1:
VCC_3.3V端口2:
无效,可浮空,不连接
端口3:
端口4:
GND0V
端口5:
端口6:
端口7:
接P3.0,鼠标左键,低电平有效
无线传输CC2530模块为3.3V供电,ZigBee无线传输CC2530模块与单片机连接方式如图5-3所示。
ATB9C51
<
TEXT>
'
图5-3CC2530模块与单片机连接图
在实际电路设计中51单片机采用5V供电,在给CC2530供电时在电源正极串联两个1N4007X极管,实现1.4V左右的压降。
整体电路设计见附录A。
将USB端插入电脑USB接口,自动识别驱动USB端接入电脑后红灯亮,指示工作正常,并等待鼠标端发射,接收到信号后红灯将变为信号灯,此后,有输入时,红灯会点亮,无输入则关闭。
目前支持左键、右键、左右上下光标移动。
模块中置按键滤波函数。
5.2PS/2鼠标软件解码程序设计
鼠标的发送端由两个模块组成,分别是ZigBee无线传输CC2530模块和PS/2模块。
ZigBee模块要寻找ZigBee网络并尝试连接接收端,处理鼠标数据的采集和发送。
5.2.1液晶显示器功能简介
LCD1602主要技术参数:
显示容量:
16X2个字符
芯片工作电压:
4.5-5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95X4.35(WXH)mm
引脚功能说明:
LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表5-1所示。
表5-1LCD1602各引脚接口说明
编号
符号
引脚说明
VSS
电源地
9
D2
VDD
电源正极
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
D0
15
BLA
背光源正极
D1
16
BLK
背光源负极
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接电源正极时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,髙电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7〜14脚:
D0〜D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
基本操作时序表如图5-2所示。
读状态
输入
RS=L,RW=H,E=H
输岀
D0-D7=4^态字
写指令
RS=L,RW=L,D0-D74旨令码,
E=高脉神
无
读数据
RS=H,RW=H,E=H
D0-D7浚据
写数据
RS=H,RW=L,D0・D7浚据,E=高脉冲
图5-2基本操作时序图
设计中定义的部分LCD1602显示的子程序问:
void
voidLCD1602write_char(unsignedx,unsignedchary,〃写一个字符到第X行y列
voidLCD1602_write_string(unsignedcharx,unsignedchary,unsignedchar*s);
//写字符串到第X行y列
voidLCD1602_Read„BF(void);
//读忙信号
voidnum(unsignedchar