没有合适的资源?快使用搜索试试~ 我知道了~
首页单片机与PS2鼠标滚轮识别显示3D坐标
资源详情
资源评论
资源推荐
单片机与 PS2 鼠标滚轮识别显示 3D 坐标
简介:PS2 鼠标,具有滚轮识别,LCD1602 显示 3D 坐标,有 LED 指示灯,等等~
~~~~~其实发现学起来也很简单。
由于在网上找不到 单片机可以识别鼠标带滚轮的完整可用程序,也就是
,,,;轴功能的程序,笔者花了很长时间尝试,终于整出来了,特拿出来与
所有单片机菜鸟分享。
第一步:
PS/2 接口和协议简介
1 PS/2 接口和协议R
接口的物理特性R
接口用于许多现代的鼠标和键盘由 最初开发和使用。物理上的 接口有两种类型的连接
器 脚的 和 脚的 。图 就是两种连接器的引脚定义。使用中主机提供 电源给鼠标鼠
标的地连接到主机电源地上。
接口协议原理R
鼠标接口采用一种双向同步串行协议。即每在时钟线上发一个脉冲就在数据线上发送一位数据。在
相互传输中主机拥有总线控制权即它可以在任何时候抑制鼠标的发送。方法是把时钟线一直拉低鼠标就
不能产生时钟信号和发送数据。在两个方向的传输中时钟信号都是由鼠标产生即主机不产生通信时钟信
号。
如果主机要发送数据它必须控制鼠标产生时钟信号。方法如下主机首先下拉时钟线至少 抑制通
信然后再下拉数据线最后释放时钟线。通过这一时序控制鼠标产生时钟信号。当鼠标检测到这个时序状态
会在 内产生时钟信号。如图 中R时序段。主机和鼠标之间传输数据帧的时序如图 、图 所示
。数据包结构在主机程序中利用每个数据位的时钟脉冲触发中断在中断例程中实现数据位的判断和
接收。在实验过程中通过合适的编程能够正确控制并接收鼠标数据。但该方案有一点不足由于每个
!" # 都要产生一次中断中断频繁需要耗用大量的主机资源。
2 PS/2 鼠标的工作模式和协议数据包格式
鼠标的四种工作模式R
鼠标的四种工作模式是$%%& 模式当鼠标上电或主机发复位命令R'(( 给它时进入这种模
式)&*%+ 模式鼠标的默认模式当鼠标上电或复位完成后自动进入此模式鼠标基本上以此模式工
作)$%,&% 模式只有在主机发送了模式设置命令R'( 后鼠标才进入这种模式)-*+. 模式这种模式只
用于测试鼠标与主机连接是否正确。R
鼠标在工作过程中会及时把它的状态数据发送给主机。发送的数据包格式如表 所示。
/&% 中的 &、&、& 分别表示左、右、中键的状态状态值 表示释放 表示按下。/&% 和
/&% 分别表示 轴和 轴方向的移动计量值是二进制补码值。/&%0 的低四位表示滚轮的移动计量值
也是二进制补码值高四位作为扩展符号位。这种数据包由带滚轮的三键三维鼠标产生。若是不带滚轮的三
键鼠标产生的数据包没有 /&%0其余的相同。
第二步:
11.3 PS/2 鼠标原理
目前最常见的鼠标有 鼠标和 1 鼠标。本章介绍 鼠标。 鼠标有 0 种工作模式,
具体如下:
()复位模式。当上电后或接收到复位命令 (( 后鼠标即处于此模式。鼠标进行自检和初始化,
再向主机发送 '(,' 和 ',一些参数将恢复到默认值,即采样率为 +.2% 非自
动流速、流模式、分辨率为 0 计数、禁止状态。
()流模式。如果有按键或滚轮动作,即向系统发送信息,最大发送速率就是可编程的采样率。
()遥控模式。只有主机发送了模式设置指令 '( 后,鼠标才进入这种模式。
(0)这种模式只用于检测鼠标与主机是否连接正确,在该模式下鼠标收到什么就返回什么,除
非收到退出卷绕指令 '3 或复位指令 '((。
流模式是默认模式。大多数应用系统使用流模式,鼠标的任何动作都会报告给主机。也可以使
用遥控模式,主机使用 '3 命令请求数据,鼠标进行应答。
标准的 协议数据格式为 字节,如表 0 所示。鼠标的按键和滚动信息都采用这种格式
汇报给主机。
表 11-4 标准的 PS/2 协议数据格式
"4%*5
,6
"4%*5
,6
7
7
88
2%
9&&
,
$7:
&
9&&
,
!%;&
9&&
,
,4%%&
,4%%&
标准鼠标指支持左右移动和三个鼠标键。微软智能鼠标支持滚轮。当主机向鼠标发送魔幻序列 '(
' <'('0'(' 后,鼠标进入滚轮模式。此时读取鼠标 返回 '。此后通信过
程使用如表 所示的 0 字节协议。
表 11-5 字节的 PS/2 协议数据格式
"4%*5
,6
"4%*5
,6
7
7
88
2%
9&&
,
$7:
&
9&&
,
!%;&
9&&
,
,4%%&
,4%%&
=,4%%& !,4%%&
其中 = 和 ! 都采用二进制补码表示,范围为<~>。
此外,鼠标还有只能 3 鼠标和台风(?/.:,,)鼠标,通信协议与上述还有不同。目前最常见
的鼠标就是这两种。
主机和鼠标之间的通信命令有很多。主机向鼠标发出的每一个字节和命令鼠标都必须采用 '(
应答,但是重传命令 '(3 除外。如果鼠标接收的命令或数据是错误的,鼠标发送 '(3 表示
#,如果下一个字节重复错误,鼠标使用 '( 表示连续错误。
' 表示读扩展 ,可最长达 字节。
'~'( 是提供商特定命令,如 ' 是 !,7&%@:命令。
'3 表示读取第二个 。
'3 表示 ?*+@A,&。
'3 表示设置鼠标比例为原始比例 ,即 ,4%%& 和 ,4%%& 都以原始值发送。
'3> 表示设置鼠标比例为原始比例 ,即如果 ,4%%& 或 ,4%%& 大于等于
,则乘以 后发送;如果小于 ,则 ,,,,0, 分别被放大到 ,,,,,B。
'3 表示设置鼠标到流模式。
'3 表示读取鼠标数据,即读取一个 字节或 0 字节的包。
'3 清除卷绕模式。
'33 表示设置鼠标到卷绕模式。
'( 表示设置鼠标到遥控模式。
'( 表示读取鼠标 。
'( 表示设置鼠标采样率。
'(0 表示设置鼠标使能。
'( 表示设置鼠标停止。
'( 表示设置鼠标到默认值。
'(3 表示请求重新发送。
'(( 表示复位。
鼠标还有一些其他的更加复杂的命令,读者可参考有关文献。
第三步:
/********************** XXXX.C 部分*********************/
#include<reg52.h>
#include"mouse.h"
#include"LCD1602_4.h"
#include"DELAY52.h"
sbit beep=P3^7;
void main()
{
LCD1602_Init();//初始化液晶 1602
CLEARSCREEN;//清屏
Init_mouse();
delayms(500);
num(0,2,mouse_byte);//x 坐标值
delayms(500);
host_to_mouse(0xf3);
num(0,2,mouse_byte);
num(0,10,1);
delayms(500);
delay10us(1);
host_to_mouse(0xc8);
num(0,2,mouse_byte);
num(0,10,2);
delayms(500);
delay10us(1);
host_to_mouse(0xf3);
num(0,2,mouse_byte);
num(0,10,3);
delayms(500);
host_to_mouse(0x64);
num(0,2,mouse_byte);
num(0,10,4);
delayms(500);
host_to_mouse(0xf3);
num(0,2,mouse_byte);
num(0,10,5);
delayms(500);
host_to_mouse(0x50);
num(0,2,mouse_byte);
num(0,10,6);
delayms(50);
delay10us(1);
host_to_mouse(0xf2);
num(0,2,mouse_byte);
num(0,10,7);
delayms(50);
if(mouse_byte==0x03)
{
剩余24页未读,继续阅读
qingfengtsing
- 粉丝: 327
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- ExcelVBA中的Range和Cells用法说明.pdf
- 基于单片机的电梯控制模型设计.doc
- 主成分分析和因子分析.pptx
- 共享笔记服务系统论文.doc
- 基于数据治理体系的数据中台实践分享.pptx
- 变压器的铭牌和额定值.pptx
- 计算机网络课程设计报告--用winsock设计Ping应用程序.doc
- 高电压技术课件:第03章 液体和固体介质的电气特性.pdf
- Oracle商务智能精华介绍.pptx
- 基于单片机的输液滴速控制系统设计文档.doc
- dw考试题 5套.pdf
- 学生档案管理系统详细设计说明书.doc
- 操作系统PPT课件.pptx
- 智慧路边停车管理系统方案.pptx
- 【企业内控系列】企业内部控制之人力资源管理控制(17页).doc
- 温度传感器分类与特点.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0