毕业设计无线鼠标设计软件部分.doc_第1页
毕业设计无线鼠标设计软件部分.doc_第2页
毕业设计无线鼠标设计软件部分.doc_第3页
毕业设计无线鼠标设计软件部分.doc_第4页
毕业设计无线鼠标设计软件部分.doc_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1 自强不息 厚德载物 职务 软件工程师 摘要摘要 2 自强不息 厚德载物 本文首先介绍鼠标的发展历史以及分类 然后着重介绍光电鼠标的 内部构造及工作原理 并分析了 PS 2接口类型鼠标的接口协议 一 前言一 前言 1 鼠标的发展历史 1968年 鼠标的原型诞生 1981年 第一只商业化鼠标诞生 仍旧是机械鼠标 出现滚球鼠 标 1983年 罗技发明了第一只光学机械式鼠标 成为日后的行业标 准 80年代初出现了第一代光电鼠标 它需要特殊的有栅格的鼠标垫 过高的成本限制了其使用范围 1999年 微软公司与安捷伦公司合作发布了 IntelliEye 光学引擎 以及第一只光学鼠标 3 自强不息 厚德载物 2 鼠标的分类 鼠标按其工作原理的不同可以分为机械鼠标和光电鼠标 机械鼠标 机械鼠标主要由滚球 辊柱和光栅信号传感器组成 当你拖动鼠标 时 带动滚球转动 滚球又带动辊柱转动 装在辊柱端部的光栅信 号传感器产生的光电脉冲信号反映出鼠标器在垂直和水平方向的位 移变化 再通过电脑程序的处理和转换来控制屏幕上光标箭头的移 动 光电鼠标 光电鼠标器是通过检测鼠标器的位移 将位移信号转换为电脉冲 信号 再通过程序的处理和转换来控制屏幕上的光标箭头的移动 光电鼠标用光电传感器代替了滚球 这类传感器需要特制的 带有 条纹或点状图案的垫板配合使用 另外 鼠标还可按外形分为两键鼠标 三键鼠标 滚轴鼠标和感 应鼠标 两键鼠标和三键鼠标的左右按键功能完全一致 一般情况下 我们 用不着三键鼠标的中间按键 但在使用某些特殊软件时 如 AutoCAD 等 这个键也会起一些作用 滚轴鼠标和感应鼠标在笔记本电脑上 用得很普遍 往不同方向转动鼠标中间的小圆球 或在感应板上移 4 自强不息 厚德载物 动手指 光标就会向相应方向移动 当光标到达预定位置时 按一 下鼠标或感应板 就可执行相应功能 无线鼠标和3D 鼠标 无线鼠标和3D 鼠标 新出现无线鼠标和3D 振动鼠标都是比较新颖的 鼠标 无线鼠标器是为了适应大屏幕显示器而生产的 所谓 无线 即 没有电线连接 而是采用二节七号电池无线摇控 鼠标器有自动休 眠功能 电池可用上一年 接收范围在1 8米以内 3D 振动鼠标 3D 振动鼠标是一种新型的鼠标器 它不仅可以当作普通的鼠标器使 用 而且具有以下几个特点 1 具有全方位立体控制能力 它具有前 后 左 右 上 下六个 移动方向 而且可以组合出前右 左下等等的移动方向 2 外形和普通鼠标不同 一般由一个扇形的底座和一个能够活动的 控制器构成 3 具有振动功能 即触觉回馈功能 玩某些游戏时 当你被敌人击 中时 你会感觉到你的鼠标也振动了 4 是真正的三键式鼠标 无论 DOS 或 Windows 环境下 鼠标的中 5 自强不息 厚德载物 间键和右键都大派用场 有线无线鼠标 在光电鼠标原由的基础上进行改良 通过 RF 无线传输实现无线 同时内部是充电电池 作为有线鼠标使用世界首创来自3R 数据伸缩 线 可长可短 携带非常方便 3R 品牌有线无线鼠标 无线鼠标的类型 鼠标 的标准称呼应该是 鼠标器 英文名 Mouse 它从出 现到现在已经有38年的历史了 鼠标的使用是为了使计算机的操作 更加简便 来代替键盘那繁琐的指令 鼠标的接口类型 鼠标按接口类型可分为串行鼠标 PS 2鼠标 总 线鼠标三种 串行鼠标是通过串行口与计算机相连 有9针接口和25 针接口两种 PS 2鼠标通过一个六针微型 DIN 接口与计算机相连 它与键盘的接口非常相似 使用时注意区分 总线鼠标的接口在总 线接口卡上 无线鼠标和3D 鼠标 新出现无线鼠标和3D 振动鼠标都是比较新颖的 鼠标 无线鼠标器是为了适应大屏幕显示器而生产的 所谓 无线 即没有电线连接 而是采用二节七号电池无线摇控 鼠标器有自 动休眠功能 电池可用上一年 接收范围在1 8米以内 3D 振动鼠 标是一种新型的鼠标器 它不仅可以当作普通的鼠标器使用 而且 6 自强不息 厚德载物 具有以下几个特点 1 具有全方位立体控制能力 它具有前 后 左 右 上 下六 个移动方向 而且可以组合出前右 左下等等的移动方向 2 外形和普通鼠标不同 一般由一个扇形的底座和一个能够活动 的控制器构成 3 具有振动功能 即触觉回馈功能 玩某些游戏时 当你被敌人 击中时 你会感觉到你的鼠标也振动了 4 是真正的三键式鼠标 无论 DOS 或 Windows 环境下 鼠标的中 间键和右键都大派用场 二 光电鼠标的工作原理 1 光学鼠标的主要参数 1 分辨率 光电鼠标的分辨率通常用 CPI Count Per Inch 每英寸的测 量次数 来表示 CPI 越高 越利于反映玩家的微小操作 而且在鼠 标光标移动相同逻辑距离时 分辨率高的需要移动的物理距离则要 短 拿一款800 CPI 的光电鼠标来说 当使用者将鼠标移动1英寸时 其光学传感器就会接收到反馈回来的800个不同的坐标点 鼠标箭头 同时会在屏幕上移动800个像素点 反过来 鼠标箭头在屏幕上移动 一个像素点 就需要鼠标物理移动1 800英寸的距离 所以 CPI 高 7 自强不息 厚德载物 的鼠标更适合在高分辨率的屏幕下使用 光学机械鼠标的分辨率多 为200 400 CPI 而光电鼠标的分辨率通常在400 800 CPI 之间 除 CPI 以外 DPI Dots Per Inch 每英寸像素数 也常被人用 来形容光电鼠标的分辨率 由于光电鼠标的分辨率反映了一个动态 过程 所以用 CPI 来形容更恰当些 但无论是 CPI 还是 DPI 描述 的都是光电鼠标的分辨率 不存在性能差别 2 刷新频率 光电鼠标的刷新频率也被称为扫描频率或者帧速率 它反映了 光学传感器内部的 DSP 对 CMOS 每秒钟可拍摄图像的处理能力 在鼠 标移动时 光学传感器中的数字处理器通过对比所 拍摄 相邻照 片间的差异 从而确定鼠标的具体位移 但当光电鼠标在高速运动 时 可能会出现相邻两次拍摄的图像中没有明显参照物的情况 那 么 光电鼠标势必无法完成正确定位 也就会出现我们常说的 跳 帧 现象了 而提高光电鼠标的刷新频率就加大了光学传感器的拍 摄速度 也就减少了没有相同参考物的几率 达到了减少跳帧的目 的 3 像素处理能力 虽然分辨率和刷新率都是光电鼠标重要的技术指标 但它们并 不能客观反映光电鼠标的性能 所以罗技提出了像素处理能力这个 8 自强不息 厚德载物 指标 并规定 像素处理能力 CMO 晶阵像素数 刷新频率 根据 光电鼠标的定位原理我们知道 光学传感器会将 CMOS 拍摄的图像进 行光学放大后再投射到 CMOS 晶阵上形成帧 所以在光学放大率一定 的情况下 增加了 CMOS 晶阵像素数 也就可增大实际拍摄图像的面 积 而拍摄面积越大 每帧图像上的细节也就越清晰 参考物也就 越明显 和提高刷新率一样 也可减少跳帧的几率 不过 需要注意的是 大多数情况下 厂商不会公布鼠标的 CMOS 尺寸 其大小从15x15到30 x30像素 Pixel 不等 2 光电鼠标的内部构造 光电鼠标通常由以下部分组成 光学感应器 光学透镜 发光二极 管 接口微处理器 轻触式按键 滚轮 连线 PS 2或 USB 接口 外壳等 下面分别进行介绍 光学感应器 9 自强不息 厚德载物 光学感应器是光电鼠标的核心 目前能够生产光学感应器的厂 家只有安捷伦 微软和罗技三家公司 其中 安捷伦公司的光学感 应器使用十分广泛 除了微软的全部和罗技的部分光电鼠标之外 其他的光电鼠标基本上都采用了安捷伦公司的光学感应器 图1 光电鼠标内部的光学感应器 安捷伦公司的光学感应器主要由 CMOS 感光块 低档摄像头上采 用的感光元件 和 DSP 组成 CMOS 感光块负责采集 接收由鼠标底 部光学透镜传递过来的光线 并同步成像 然后 CMOS 感光块会将 一帧帧生成的图像交由其内部的 DSP 进行运算和比较 通过图像的 比较 便可实现鼠标所在位置的定位工作 10 自强不息 厚德载物 图2 光学感应器内部的组成方式 图1是方正光电鼠内部的光学感应器 它采用的是安捷伦公司的 H2000 A0214光学感应元件 其芯片内部的组成方式可参见图2 图3 是 H2000 A0214光学感应器的背面 从图中我们可以看到 芯片上 有一个小孔 这个小孔用来接收由鼠标底部的光学透镜传送过来的 图像 图3 光学感应器背面的小孔用来接收由鼠部底部的光学透镜传送过 来的图像 光电鼠标的控制芯片 控制芯片负责协调光电鼠标中各元器件的工作 并与外部电路 进行沟通 桥接 及各种信号的传送和收取 我们可以将其理解成 是光电鼠标中的 管家婆 图4是罗技公司的 CP5919AM 控制芯片 它可以配合安捷伦的 H2000 A0214光学感应元件 实现与主板 USB 接口之间的桥接 当然 它也具备了一块控制芯片所应该具备的控制 传输 协调等功能 这里有一个非常重要的概念大家应该知道 就是 DPI 对鼠标定 11 自强不息 厚德载物 位的影响 DPI 是它用来衡量鼠标每移动一英寸所能检测出的点数 DPI 越小 用来定位的点数就越少 定位精度就低 DPI 越大 用来 定位点数就多 定位精度就高 图4 罗技公司的 CP5919AM 控制芯片 通常情况下 传统机械式鼠标的扫描精度都在200dpi 以下 而光电 鼠标则能达到400甚至800dpi 这就是为什么光电鼠标在定位精度上 能够轻松超过机械式鼠标的主要原因 光学透镜组件 光学透镜组件被放在光电鼠标的底部位置 从图5中可以清楚地 看到 光学透镜组件由一个棱光镜和一个圆形透镜组成 图5 光学透镜组件由一个棱光镜和一个透镜组成 12 自强不息 厚德载物 其中 棱光镜负责将发光二极管发出的光线传送至鼠标的底部 并予以照亮 圆形透镜则相当于一台摄像机的镜头 这个镜头负责将已经被 照亮的鼠标底部图像传送至光学感应器底部的小孔中 通过观看光 电鼠标的背面外壳 我们可以看出圆形透镜很像一个摄像头 如图 6 图6 光电鼠标的背面外上的壳圆形透镜很像一个摄像头 发光二极管 光学感应器要对缺少光线的鼠标底部进行连续的 摄像 自 然少不了 摄影灯 的支援 否则 从鼠标底部摄到的图像将是一 片黑暗 黑暗的图像无法进行比当然更无法进行光学定位了 13 自强不息 厚德载物 图7 光电鼠标内部的发光二极管 通常 光电鼠标采用的发光二极管 如图7 是红色的 也有部 分是蓝色的 且是高亮的 为了获得足够的光照度 发光二极 管发出的红色光线 一部分通过鼠标底部的光学透镜 即其中的棱 镜 来照亮鼠标底部 另一部分则直接传到了光学感应器的正面 用一句话概括来说 发光二极管的作用就是产生光电鼠标工作 时所需要的光源 轻触式按键 没有按键的鼠标是不敢想象的 因而再普通的光电鼠标上至少 也会有两个轻触式按键 方正光电鼠标的 PCB 上共焊有三个轻触式 按键 图8 除了左键 右键之外 中键被赋给了翻页滚轮 高级 的鼠标通常带有 X Y 两个翻页滚轮 而大多数光电鼠标还是像这个 方正光电鼠标一样 仅带了一个翻页滚轮 翻页滚轮上 下滚动时 会使正在观看的 文档 或 网页 上下滚动 而当滚轮按下时 则会使 PCB 上的 中键 产生作用 注意 中键 产生的动作 可由用户根据自己的需要进行定义 14 自强不息 厚德载物 图8 方正光电鼠标的 PCB 上共焊有三个轻触式按键 当我们卸下翻页滚轮之后 可以看到滚轮位置上 藏 有一 对光电 发射 接收 装置 如图9 滚轮 上带有栅格 由于 栅格能够间隔的 阻断 这对光电 发射 接收 装置的光路 这样 便能产生翻页脉冲信号 此脉冲信号经过控制芯片传送给 Windows 操作系统 便可以产生翻页动作了 图9 光电 发射 接收 装置 3 光电鼠标的工作原理 在光电鼠标内部有一个发光二极管 通过该发光二极管发出的光线 照亮光电鼠标底部表面 这就是为什么鼠标底部总会发光的原因 15 自强不息 厚德载物 然后将光电鼠标底部表面反射回的一部分光线 经过一组光学透镜 传输到一个光感应器件 微成像器 内成像 这样 当光电鼠标移 动时 其移动轨迹便会被记录为一组高速拍摄的连贯图像 最后利 用光电鼠标内部的一块专用图像分析芯片 DSP 即数字微处理器 对移动轨迹上摄取的一系列图像进行分析处理 通过对这些图像上 特征点位置的变化进行分析 来判断鼠标的移动方向和移动距离 从而完成光标的定位 LED 光学引擎的原理示意图 三 三 PS 2协议协议 1 PS 2接口标准的发展过程 随着计算机工业的发展 作为计算机最常用输入设备的键盘也日新 月异 1981年 IBM 推出了 IBM pc XT 键盘及其接口标准 该标准定 16 自强不息 厚德载物 义了83键 采用5脚 DIN 连接器和简单的串行协议 实际上 第一套 键盘扫描码集并没有主机到键盘的命令 为此 1984年 IBM 推出了 IBM AT 键盘接口标准 该标准定义了84 101键 采用5脚 DIN 连接 器和双向串行通讯协议 此协议依照第二套键盘扫描码集设有8个主 机到键盘的命令 到了1987年 IBM 又推出了 ps 2键盘接口标准 该标准仍旧定义了84 101键 但是采用6脚 mini DIN 连接器 该连 接器在封装上更小巧 仍然 用双向串行通讯协议并且提供有可选择 的第三套键盘扫描码集 同时支持17个主机到键盘的命令 现在 市面上的键盘都和 ps 2及 AT 键盘兼容 只是功能不同而已 2 PS 2接口硬件 1 物理连接器 一般 具有五脚连接器的键盘称之为 AT 键盘 而具有六脚 mini DIN 连接器的键盘则称之为 ps 2键盘 其实这两种连接器都只有四 个脚有意义 它们分别是 Clock 时钟脚 DATA 数据脚 5V 电 源脚 和 Ground 电源地 在 ps 2键盘与 pc 机的物理连接上只要保 证这四根线一一对应 就可以了 ps 2键盘靠 pc 的 ps 2端口提供 5V 电源 另外两个脚 Clock 时钟脚 和 DATA 数据脚 都是集电极 开路的 所以必须接大阻值的 上拉电阻 它们平时保持高电平 有 输出时才被拉到低电平 之后自动上浮到高电平 现在比较常用的 17 自强不息 厚德载物 连接器如图1所示 2 电气特性 PS 2通讯协议是一种双向同步串行通讯协议 通讯的两端通过 Clock 时钟脚 同步 并通过 DATA 数据脚 交换数据 任何一方如 果想抑制另外一方通讯时 只需要把 Clock 时钟脚 拉到低电平 如果是 pc 机和 ps 2键盘间的通讯 则 pc 机必须做主机 也就是说 pc 机可以抑制 ps 2键盘发送数据 而 ps 2键盘则不会抑制 pc 机发 送数据 一般两设备间传输数据的最大时钟频率是33kHz 大多数 ps 2设备工作在10 20kHz 推荐值在 15kHz 左右 也就是说 Clock 时钟脚 高 低电平的持续时间都为40 s 每一数据帧包含 11 12个位 具体含义如表1所列 18 自强不息 厚德载物 表1 数据帧格式说明 1个起始位总是逻辑0 8个数据位 LSB 低位在前 1个奇偶校验位奇校验 1个停止位总是逻辑1 1个应答位仅用在主机对设备的通讯中 表中 如果数据位中1的个数为偶数 校验位就为1 如果数据位中1 的个数为奇数 校验位就为0 总之 数据位中1的个数加上校验位 中1的个数总为奇数 因此总进行奇校验 按照 PS 2协议 移动时 鼠标会输出一组时钟和数据信号 而在静 止时 时钟和数据信号将一直保持为逻辑高电平 表示处于空闲状 态 每次移动时 鼠标会向主机发送3个数据帧 每个数据帧11位 包括1个起始位 0 8个数据位 低位在前 1个奇校验位和一 个结束位 1 因此每次移动时 鼠标会向主机发送33位数据 其 中第0 11和22位是起始位 0 第10 21和32位是结束位 1 如图 5 7所示 19 自强不息 厚德载物 在图 5 7 中 Mouse status byte X direction byte 和 Y direction byte 三个字节的数据是鼠标移动产生的相关数据 包括状态 X 方向数据和 Y 方向数据 按照 PS 2协议 鼠标数据在 时钟 CLK 的下降沿有效 而时钟 CLK 的频率要求在20KHz 30KHz 之 间 基于 PS 2协议的鼠标采用相对坐标的形式来追踪它的移动轨迹 如 图 5 8所示 如果鼠标水平向右移动 则得到一个正的 X 值 否则 得到一个负的 X 值 如果鼠标竖直向上移动 则得到一个正的 Y 值 否则 得到一个负的 Y 值 使用 0 表示正值 而使用 1 表示 负值 在 Mouse status byte 数据字节中 XS 和 YS 就表示了鼠 标的移动方向 20 自强不息 厚德载物 相对坐标中 X 值和 Y 值表示了鼠标的移动速度 值越大表示鼠标 的移动速度越大 Mouse status byte 数据字节中 XV 和 YV 则 标识鼠标的移动是否超出了范围 包括 X 方向和 Y 方向 如果超出 了范围 则 XV 或 YV 置位为1 Mouse status byte 数据字节中 L 和 R 则分别表示鼠标的左键和右键 如果有键按下 则相应的 L 或 R 置位 如果鼠标一直移动 则图 5 7所示的33个位的数据不停发送 重复 周期约为50ms 按照 PS 2协议 移动时 鼠标会输出一组时钟和 数据信号 而在静止时 时钟和数据信号将一直保持为逻辑高电平 表示处于空闲状态 3 PS 2设备和 PC 机的通讯 PS 2设备的 Clock 时钟脚 和 DATA 数据脚 都是集电极开路的 平 21 自强不息 厚德载物 时都是高电平 当 ps 2设备等待发送数据时 它首先检查 Clock 时 钟脚 以确认其是否为高电平 如果是低电平 则认为是 pc 机抑制 了通讯 此时它必须缓冲需要发送的数据直到重新获得总线的控制 权 一般 ps 2键盘有16个字节的缓 冲区 而 ps 2鼠标只有一个缓冲 区仅存储最后一个要发送的数据 如果 Clock 时钟脚 为高电平 ps 2设备便开始将数据发送到 pc 机 一般都是由 ps 2设备产生时 钟信号 发送时一般都是按照数据帧格式顺序发送 其中数据位在 Clock 时钟脚 为高电平时准备好 在 Clock 时钟脚 的下降 沿被 pc 机读入 ps 2设备到 pc 机的通讯时序如图2所示 当时钟频率为15kHz 时 从 Clock 时钟脚 的上升沿到数据位转变时 间至少要5 数据变化到 Clock 时钟脚 下降沿的时间至少也有 5 但不能大于25 这是由 ps 2通讯协议的时序规定的 如果时钟频率是其它值 参数的内容应稍作调整 4 PS 2向 PC 机发送一个字节 22 自强不息 厚德载物 从 PS 2向 PC 机发送一个字节可按照下面的步骤进行 检测时钟线电平 如果时钟线为低 则延时50 检测判断时钟信号是否为高 为高 则向下执行 为低 则转到 1 检测数据线是否为高 如果为高则继续执行 如果为低 则放弃发 送 此时 pc 机在向 ps 2设备发送数据 所以 ps 2设备要转移到接收 程序处接收数据 延时20 如果此时正在发送起始位 则应延时 0 输出起始位 0 到数据线上 这里要注意的是 在送出每一位后都要 检测时钟线 以确保 pc 机没有抑制 ps 2设备 如果有则中止发送 输出8个数据位到数据线上 输出校验位 输出停止位1 延时30 如果在发送停止位时释放时钟信号则应延时50 通过以下步骤可发送单个位 准备数据位 将需要发送的数据位放到数据线上 延时20 23 自强不息 厚德载物 把时钟线拉低 延时40 释放时钟线 延时20 5 PS 2设备从 PC 机接收一个字节 由于 PS 2设备能提供串行同步时钟 因此 如果 PC 机发送数据 则 PC 机要先把时钟线和数据线置为请求发送的状态 PC 机通过下 拉时钟线大于100 来抑制通讯 并且通过下拉数据线发出请求发 送数据的信号 然后释放时钟 当 PS 2设备检测到需要接收的数据 时 它会产生时钟信号并记录下面8个数据位和一 个停止位 主机 此时在时钟线变为低时准备数据到数据线 并在时钟上升沿锁存数 据 而 PS 2设备则要配合 PC 机才能读到准确的数据 具体连接步 骤如下 等待时钟线为高电平 判断数据线是否为低 为高则错误退出 否则继续执行 读地址线上的数据内容 共8个 bit 每读完一个位 都应检测时钟 线是否被 PC 机拉低 如果被拉低则要中止接收 读地址线上的校验位内容 1个 bit 24 自强不息 厚德载物 读停止位 如果数据线上为0 即还是低电平 PS 2设备继续产生时钟 直到接 收到1且产生出错信号为止 因为停止位是1 如果 PS 2设备没有读 到停止位 则表明此次传输出错 输出应答位 检测奇偶校验位 如果校验失败 则产生错误信号以表明此次传输 出现错误 延时45 以便 PC 机进行下一次传输 读数据线步骤如下 延时20 把时钟线拉低 延时40 释放时钟线 延时20 读数据线 下面的步骤可用于发出应答位 延时15 25 自强不息 厚德载物 把数据线拉低 延时5 把时钟线拉低 延时40 释放时钟线 延时5 释放数据线 四 芯片资料四 芯片资料 1 ATMEL Mega8 Atmega8是基于增强的 AVR RISC 结构的低功耗8位 CMOS 微控制器 有五种工作模式 它具有如下特点 8k 字节的系统内可编程 Flash 具有同时读写能力 即 RWW 512字节 EEPROM 1K 字节 SRAM 32个通用工作寄存器 32个通用 I O 口线 3个具有比较模式的灵活的定时器 计数器 T C 26 自强不息 厚德载物 片内 外中断 可编程串行 USART 面向字节的两线串行接口 10位6路 8路为 TQFP 与 MLF 封装 ADC 具有片内振荡器的可编程看门狗定时器 一个 SPI 串行端口 以及五种可以通过软件进行选择的省电模式 工作于空闲模式时 CPU 停止工作 而 SRAM T C SPI 端口以及终 端系统继续工作 掉电模式时晶体振荡器停止震荡 所有功能除了 中断和硬件复位之外都停止工作 在省电模式下 异步定时器继续 运行 允许用户保持一个时间基准 而其余功能模块处于休眠状态 ADC 噪声抑制模式时终止 CPU 和除了异步定时器与 ADC 以外所有 I O 模块的工作 以降低 ADC 转换时的开关噪声 Standby 模式下只有 晶体或谐振荡器运行 其余功能模块处于休眠状态 使得器件只消 耗极少的电流 同时具有快速启动能力 ATMEL Mega8引脚图 27 自强不息 厚德载物 引脚说明 VCC 数字电路的电源 GND 地 端口 B PB7 PB0 端口 B 为8位双向 I O 口 具有可编程的内 部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收 大电流 作为输入使用时 若内部上拉电阻使能 端口被外部电路 拉低时将输出电流 在复位过程中 即使系统时钟还未起振 端口 28 自强不息 厚德载物 B 具有高祖状态 通过时钟选择熔丝位的设置 PB6可作为反向 振荡放大器或时钟操作电路的输入端 通过时钟选择熔丝位的设置 PB7可作为反向 振荡放大器的输出端 若将片内标定 RC 振荡器作为芯片时钟源 且 ASSR 寄存器的 AS2位设置 PB7 6作为异步 T C2的 TOSC2 1输入端 端口 C PC5 PC0 端口 C 为双向 I O 口 具有可编程的内 部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和吸收 大电流 若内部上拉电阻使能 端口被外部电路拉低时将输出电流 在复位过程中 即使系统时钟还未起振 端口 C 处于高阻状态 PC6 RESET 若 RSTDISBL 熔丝位编程 PC6作为 I O 引 脚使用 若 RSTDISBL 熔丝位未编程 PC6作为输入 引脚 持续时间小于门限时间的脉冲不能保证可靠复位 端口 D PD7 PD0 端口 D 为 8 位双向 I O 口 具有可编程 的内部上拉电阻 其输出缓冲器具有对称的驱动特性 可以输出和 吸收大电流 作为输入使用时 若内部上拉电阻使能 则端口被外 29 自强不息 厚德载物 部电路拉低时将输出电流 在复位过程中 即使系统时钟还未起振 端口 D 处于高阻状态 RESET 复位输入引脚 持续时间超过最小门限时间 的低电平将引起系统复位 门限时间见 P35Table 15 持续时间小 于门限时间的脉冲不能保证可靠复位 AV CC AVCC 是 A D 转换器 端口 C 3 0 及 ADC 7 6 的电源 不使用 ADC 时 该引脚应直接与 VCC 连接 使用 ADC 时应通过一个低通滤波器与 VCC 连接 注意 端口 C 5 4 为 数字电源 V CC AREF A D 的模拟基准输入引脚 ADC7 6 TQFP 与 MLF 封装 TQFP 与 MLF 封装的 ADC7 6作为 A D 转换器 的模拟输入 为模拟电源 且作为10位 ADC 通道 2 MAX232 MAX232 芯片是美信公司专门为电脑的 RS 232 标准串口设计的 单电源 电平转换芯片 使用 5v 单电源供电 MAX232引脚图 30 自强不息 厚德载物 引脚介绍 引脚介绍 第一部分是电荷泵电路 由 1 2 3 4 5 6 脚和 4 只电容构成 功能是产生 12v 和 12v 两个电源 提供给 RS 232 串口电平的需 要 第二部分是数据转换通道 由 7 8 9 10 11 12 13 14 脚构 成两个数据通道 31 自强不息 厚德载物 其中 13 脚 R1IN 12 脚 R1OUT 11 脚 T1IN 14 脚 T1OUT 为第一数据通道 8 脚 R2IN 9 脚 R2OUT 10 脚 T2IN 7 脚 T2OUT 为第二数据通道 TTL CMOS 数据从 T1IN T2IN 输入转换成 RS 232 数据从 T1OUT T2OUT 送到电脑 DB9 插头 DB9 插头的 RS 232 数据从 R1IN R2IN 输入转换成 TTL CMOS 数据后从 R1OUT R2OUT 输出 第三部分是供电 15 脚 GND 16 脚 VCC 5v 主要特点主要特点 符合所有的 RS 232C 技术标准 只需要单一 5V 电源供电 片载电荷泵具有升压 电压极性反转能力 能够产生 10V 和 10V 电压 V V 功耗低 典型供电电流 5Ma 内部集成 2 个 RS 232C 驱动器 内部集成两个 RS 232C 接收器下图为 MX232双串口的连接图 可以 分别接单片机的串行通信口或者实验板的其它串行通信接口 32 自强不息 厚德载物 3 PL2303HX PL2303是 Prolific 公司生产的一种高度集成的 RS232 USB 接口 转换器 可提供一个 RS232全双工异步串行通信装置与 USB 功能接 口便利联接的解决方案 该器件内置 USB 功能控制器 USB 收发器 振荡器和带有全部 调制解调器控制信号的 UART 只需外接几只电容就可实现 USB 信号 与 RS232信号的转换 能够方便嵌入到手持设备 该器件作为 USB RS232双向转换器 一方面从主机接收 USB 数 据并将其转 换为 RS232信息流格式发送给外设 另一方面从 RS232外设接收 数据转换为 USB 数据格式传送回主机 这些工作全部由器件自动完 成 开发者无需考虑固件设计 通过利用 USB 块传输模式 利用庞大的数据缓冲器和自动流量 控制 PL2303HX 能够实现更高的吞吐量比传统的 UART 通用异步收 发器 端口 高达115200 bps 的波特率可用于更高的性能使用 PL2303HX 引脚图 引脚图 33 自强不息 厚德载物 引脚介绍 引脚介绍 TXD 数据输出到串口 DTR N 数据终端准备好 低电平有效 RST N 发送请求 低电平有效 34 自强不息 厚德载物 VDD 325 RS232的电源 为串行端口信号的电源引脚 当 串口未3 3V 这应该是3 3V 当串行端口是2 5V 这 应该是2 5V RXD 串口数据输入 RI N 串行端口 环指示器 GND 接地 NC 无连接 DSR N 串行端口 数据集就绪 DCD N 串行端口 数据载波检测 CTS N 串行端口 清除发送 SHTD N 控制 RS232收发器关机 EE CLK 串行 EEPROM 时钟 EE DATA 串行 EEPROM 数据 DP USB 端口 D 信号 DM USB 端口 D 信号 VO 33 常规3 3V 电源输出 GND 接地 35 自强不息 厚德载物 NC 无连接 VDD 5 USB 端口的5V 电压电源 GND 接地 GP0 通用 I O 引脚0 GP1 通用 I O 引脚1 NC 无连接 GND A 模拟地锁相环 PLL TEST PLL 锁相环测试模拟控制 OSC1 晶体振荡器输入 OSC2 晶体振荡器输出 附录 using System using System Collections Generic using System Windows Forms namespace RF Mouse 36 自强不息 厚德载物 static class Program 应用程序的主入口点 STAThread static void Main Application EnableVisualStyles Application SetCompatibleTextRenderingDefa ult false Application Run new RF driver 37 自强不息 厚德载物 using System using System Collections Generic using System ComponentModel using System Data using System Drawing using System Text using System Windows Forms using System Runtime InteropServices namespace RF Mouse public partial class RF driver Form Point lpoint new Point 0 0 Point WindowPoint new Point public RF driver 38 自强不息 厚德载物 InitializeComponent SetCursorPos lpoint X lpoint Y WindowPoint X Screen PrimaryScreen Bounds Width WindowPoint Y Screen PrimaryScreen Bounds Height int Status 0 int SerialBuffer new int 3 int TurnBuffer new int 6 bool leftdown false bool rightdown false DllImport user32 dll static extern bool SetCursorPos int X int Y 39 自强不息 厚德载物 DllImport user32 dll static extern bool GetCursorPos out Point lpoint DllImport user32 dll static extern void mouse event uint dwFlags uint dx uint dy uint dwData int dwExtraInfo Flags public enum MouseEventFlags MOVE 0 x00000001 LEFTDOWN 0 x00000002 LEFTUP 0 x00000004 RIGHTDOWN 0 x00000008 RIGHTUP 0 x00000010 MIDDLEDOWN 0 x00000020 MIDDLEUP 0 x00000040 ABSOLUTE 0 x00008000 40 自强不息 厚德载物 private void serialPort DataReceived object sender System IO Ports SerialDataReceivedEventArg s e int Data while serialPort BytesToRead 0 Data serialPort ReadByte if Data 0 x55 else if Status 1 if Data 41 自强不息 厚德载物 else if Data else if Data else SerialBuffer 0 Data Status 2 else if Status 2 SerialBuffer 1 Data Status 3 else if Status 3 42 自强不息 厚德载物 SerialBuffer 2 Data Status 4 else if Status 4 if Data 0 xaa Status 0 return else if SerialBuffer 0 43 自强不息 厚德载物 else lpoint X SerialBuffer 1 if SerialBuffer 0 else lpoint Y SerialBuffer 2 44 自强不息 厚德载物 if lpoint X WindowPoint X lpoint X WindowPoint X if lpoint Y WindowPoint Y lpoint Y WindowPoint Y SetCursorPos lpoint X WindowPoint Y lpoint Y if SerialBuffer 0 mouse event uint MouseEventFlags LEFTDOW N 0 0 0 0 else if leftdown true leftdown false mouse event uint MouseEventFlags LEFTUP 46 自强不息 厚德载物 0 0 0 0 if SerialBuffer 0 mouse event uint MouseEventFlags RIGHTDO WN 0 0 0 0 else 47 自强不息 厚德载物 if rightdown true rightdown false mouse event uint MouseEventFlags RIGHTUP 0 0 0 0 Status 0 48 自强不息 厚德载物 private void Form1 Load object sender EventArgs e boBox Text COM1 if serialPort IsOpen true serialPort Close try serialPort Open catch Exception err MessageBox Show 串口打开错误 return this Statuslabel Text 开启 this Statuslabel ForeColor Color Red 49 自强不息 厚德载物 private void Form1 FormClosed object sender FormClosedEventArgs e serialPort Close private void comboBox SelectedIndexChanged object sender EventArgs e serialPort Close serialPort PortName boBox Text if serialPort IsOpen true serialPort Close try serialPort Open 50 自强不息 厚德载物 catch Exception err MessageBox Show 串口打开错误 this Statuslabel Text 关闭 this Statuslabel ForeColor Color Blue return this Statuslabel Text 开启 this Statuslabel ForeColor Color Red namespace RF Mouse 51 自强不息 厚德载物 partial class RF driver 必需的设计器变量 private System ComponentModel IContainer components null 清理所有正在使用的资源 如果应释放托管资源 为 true 否则为 false protected override void Dispose bool disposing if disposing base Dispose disposing region Windows 窗体设计器生成的代码 设计器支持所需的方法 不要 使用代码编辑器修改此方法的内容 private void InitializeComponent ponents new System ComponentModel Container System ComponentModel ComponentResourceManager 53 自强不息 厚德载物 resources new System ComponentModel ComponentResourceMan ager typeof RF driver this serialPort new System IO Ports SerialPort ponents this label1 new System Windows Forms Label this label2 new System Windows Forms Label boBox new System Windows Forms ComboBox this label3 new System Windows Forms Label this label4 new System Windows Forms Label this Statuslabel new System Windows Forms Label this label6 new System Windows Forms Label this SuspendLayout serialPort 54 自强不息 厚德载物 this serialPort ParityReplace byte 255 this serialPort ReadBufferSize 256 this serialPort ReadTimeout 1 this serialPort WriteBufferSize 64 this serialPort DataReceived new System IO Ports SerialDataReceivedEventHan dler this serialPort DataReceived label1 this label1 AutoSize true this label1 ForeColor System Drawing SystemColors ActiveCaption this label1 Location new System Drawing Point 12 9 this label1 Name label1 55 自强不息 厚德载物 this label1 Size new System Drawing Size 257 12 this label1 TabIndex 0 this label1 Text 该程序可视为无线鼠标的驱动 可选择对应串口 label2 this label2 AutoSize true this label2 ForeColor System Drawing SystemColors ActiveCaption this label2 Location new System Drawing Point 49 87 this label2 Name label2 this label2 Size new System Drawing Size 203 12 this label2 TabIndex 1 this label2 Text 作者 河南 郑州 张源斌 56 自强不息 厚德载物 QQ 312467086 comboBox boBox DropDownStyle System Windows Forms ComboBoxStyle DropDow nList boBox FormattingEnabled true boBox Items AddRange new object COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 57 自强不息 厚德载物 COM9 COM10 COM12 COM13 COM14 COM15 COM16 COM17 COM18 COM19 COM20 boBox Location new System Drawing Point 89 34 boBox Name comboBox boBox Size new System Drawing Size 87 20 boBox TabIndex 2 58 自强不息 厚德载物 boBox SelectedIndexChanged new System EventHandler boBox Selected IndexChanged label3 this label3 AutoSize true this label3 ForeColor System Drawing SystemColors ActiveCaption this label3 Location new System Drawing Point 182 37 this label3 Name label3 this label3 Size new System Drawing Size 41 12 this label3 TabIndex 3 this label3 Text 状态 label4 59 自强不息 厚德载物 this label4 AutoSize true this label4 ForeColor System Drawing SystemColors ActiveCaption this label4 Location new System Drawing Point 18 37 this label4 Name label4 this label4 Size new System Drawing Size 65 12 this label4 Ta

温馨提示

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

最新文档

评论

0/150

提交评论