基于C8051F320的USB数据采集系统设计_第1页
基于C8051F320的USB数据采集系统设计_第2页
基于C8051F320的USB数据采集系统设计_第3页
基于C8051F320的USB数据采集系统设计_第4页
基于C8051F320的USB数据采集系统设计_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

中文摘要 I 中 文 摘 要 随着信息技术与电子技术的 迅速发展,计算机和外围设备也得到 讯速 发展和应用,在 科学研究领域和许多生产场合中常用到数据采集技术,并且 对数据采集的 要求越来越高。 以前的通信方式由于 传送速率慢、抗扰能弱、 安装复杂麻烦等原因,严重阻碍了数据采集 技术的发展,而通用串行总线 USB 具有传输线少、速 率快、支持热插拔 和易于扩展等优点,很好 得解决 了上述产生的问题,因而串行总线技术在计算机系统及通信设备中迅速得到 广泛的使用。 本设计以 USB 作为总线的采集系统为主要研究内容,利用C8051F320 等芯片组成的一套数据采集系统的设计方案、开发方法和开发过程,并给出 了具体实现方案。 文中首先介绍了设计中所用的 C8051F320 芯片的性能和 特点,然后给出了具体硬件设计方案, 并重点介绍了设计中应该注意的问 题。整个系统包括硬件设计和软件设 计两部分,实现数据高速转换和采集、 数据显示、数据保存 等功能。 系统硬件部分实现数据采集功能,并将采集的数据送至USB 控制器, 再通过 USB 接口将数据传送给 PC 机。硬件设计部分主要包括主控制器 C8051F320 外围电路设计与 数据采集电路选择、键输入显示电路设计等 。 硬件设计中每个 单元部分之间的连接 主要以芯片的工作模式和系统要实现 的功能来决定 。 系统软件包括 USB 固件程序设计、驱动程序设计以及用户界面程序。 USB 固件程序在 keil c 中实现,实现 C8051F320 的初始化;驱动程序为用户 提供了软件和硬件平台连接的通道 ;用户界面程序采用 VB 语言完成,调用 了驱动函数句柄来对硬件 进行操作, 完成数据的接收、保存、 以及显示功 能。 关键词:C8051F320,USB,数据采集技术 英文摘要 II Abstract With the development of information technology and the rapid development of electronic technology, the computer and peripheral equipment also gets rapid development and application in the field of scientific research, production and many occasions are commonly used in the data acquisition technique, and the data acquisition of the various requirements are also getting higher and higher. The traditional means of communication as the transmission speed is slow, weak anti-jamming ability, troublesome installation and other reasons, has seriously hindered the development of the data acquisition equipment, a new generation of universal serial bus USB transmission line having small, fast, supports hot plug and easy to extend the advantages, is a very good solution to the above problems, so the serial bus technology in the computer system and the communications equipment quickly and has been widely used. This design is based on the USB bus data acquisition system as the main research content, using a C8051F320chip consisting of a set of data acquisition system design, development method and development process, and gives the concrete realization plan. This paper first introduced the design used in the C8051F320chip performance and characteristics, and then presents the concrete hardware design scheme, and introduces the design should pay attention to the problem. The whole system includes hardware design and software design in two parts, to realize high speed data conversion and acquisition, data display, data storage and other functions. The system hardware to realize the data acquisition function, and the data will be collected and sent to the USB controller, through the USB interface transmits the data to the PC machine. The hardware design mainly includes the main controller C8051F320 peripheral circuit design and data acquisition circuit selection, key input display circuit design. The hardware design of each 英文摘要 III unit section is connected between the main chip working mode and system to achieve the function to decide. Each unit are given a unit circuit characteristics and use. System software includes USB firmware, device driver and user interface program. USB firmware program in keil C, C8051F320initialization; device driver for the user interface program provides software and hardware platform to connect the channels; the user interface program used VB language, in VB called driving function in the handle to the hardware equipment operation, realize the data receiving, storage, and display function. Finally, through the testing of the system, in the design of the data acquisition interface shows the random input signal waveform. Proved by practice, the system design has been initially successful, can achieve USB data acquisition function. Key Word:C8051F320、USB、The data acquisition technique 目 录 IV 目 录 摘 要 .I ABSTRACT . 目 录 第一章 绪 论.1 1.1 课题的背景和意义1 1.2 数据采集系统发展史1 1.3 数据采集技术发展方向2 1.4 设计方案的可行性分析与预期目标3 第二章 数据采集系统的整体设计 4 2.1 硬件系统构成4 2.2 软件系统构成5 第三章 硬件设计模块 6 3.1 数字温湿度传感器介绍6 3.1.1 接口说明 7 3.1.2 发送命令 7 3.1.3 测量时序 8 3.1.4 通讯复位时序 9 3.1.5 数据物理量转化 9 3.1.6 温湿度传感器框图 . 10 3.1.7 数据采集流程图 11 3.2 数据采集系统的主控芯片 12 3.3 单片机与主机连接设备 USB. 14 3.3.1 USB 特点 14 3.3.2 USB 与 IEEE 1394 比较 15 3.3.3 USB 传输类型 . 15 3.4 单片机键盘显示接口模块 16 3.4.1 键输入设定 17 目 录 V 3.4.2 显示器电路设定 19 3.5 单片机辅助电路 21 3.5.1 时钟电路 21 3.5.1 复位电路 21 第四章 软件系统设计 22 4.1 主程序设计 22 4.2 固件程序设计 23 4.3 驱动程序设计 26 4.4 用户界面程序设计 29 结论.31 参考文献32 致谢.33 第一章 绪 论 1 第一章 绪 论 1.1 课题的背景和意义 数据采集系统是将现场采集的数据进行处理、传输、显示、存储等操作, 基于计算机测量的软硬件产品实现灵活的、 用户自定义的测量系统,它主 要完成数据的采集、模数转换、压缩处理,然后通过 PC 接口总线将处理 后的数据送入计算 机作进一步处理。计算机技术 的迅速发展,以数据采集 系统为核心的设备也在国内外得到了广泛的应用,现代工业生产和科学研究 对数据采集的要求越来越高 .。目前,最多采用的 采集方式是数据采集板卡, 采用板卡安装 复杂麻烦,价格昂贵,易受机箱环境干扰,通讯过程极易发 生错误,并且受 计算机插槽数量、中断资源限制,不可能 连接较多设备, 在电磁干扰强的场所,可能无法 专门进行电磁屏蔽,导致采集的数据 错误, 因此需采取新的技术进行解决。 而 USB 的出现,方便地解决了以上这些问题。 它是一种连接 外围设备 的总线,最多可连 127 个设备,为 计算机扩充以及配置外部设备提供了方 便,解决了 I/O 插口不够的问题,建立了一条连接访问 外部设备的方法, 这些方法有效 得减少了总体成本,减少硬件 间的冲突。因此,我们 用 USB 总线接口可容易得实现低成本、高可靠性的数据采集系统。尽管目前USB 接口的应用主要集中在电脑的周边外设,但是USB 产品进入工控领域将是 必然的趋势,所以本课题的研究是具有一定 现实意义和经济意义的 。 1.2 数据采集系统发展史 数据采集系统出现于 20 世纪 50 年代,1956 年美国首先研发了军用的 数据采集测试系统,目标是在测试中不依靠 相关的测试文件, 让非熟练人 员操作,测试任务 让测试设备高速自动 实现。由于该采集测试系统 具有高 速灵活性,满足传统方法不能完成的数据采集和测试任务。20 世纪 60 年 代,国外便有成套采集测试设备进入市场,此阶段的 采集设备大多属于专 用系统。 第一章 绪 论 2 20 世界 70 年代,随着计算机的普及,采集系统发展 迅猛,开始产生 了通用数据采集和 自动测试系统。此阶段 的系统有两大类:一类是由仪表 与采集器和通用接口总线以及 计算机。另一类是由数据采集卡和标准总线 以及与计算机构成, STD 总线系统是这类数据采集系统的典型代表。这种接 口系统采用积木式结构,把相应接口卡装在专用机箱内,由一台计算机控制。 主要应用于工业现场 。 20 世纪 90 年代至今,在 发达国家,采集技术已在军事、航空电子设备 领域得到广泛应用。 加上集成制造技术不断进步, 产生了高效能 、高稳定 性的采集系统,已经成为一种专门技术,采用 先进的模块 结构,根据不同 要求,通过简单 得更改模块,以及系统编程,便可扩展成新系统。 并行总线采集系统向高速模块化和即插即用 的方向发展,串行总线 采 集系统朝着分布式结构和智能方向发展。 1.3 数据采集技术发展方向 数据采集片上系统 片加工技术迅猛发展,产生了集数据采集、处理、运行、分析等为一身 的数据采集芯片。例如数据采集芯片ADuC812 是美国 Analog Devices 公 司生产的一款性能优越的微转换器产品,片内继承了一个完全可编程的、自 校准、高精度的模拟数据采集系统。 采用新型数据处理方法 技术如数据融合技术、模糊信息处理技术和神经网络技术等,在数据采 集和现代测试系统中得到了广泛应用。 采用高智能化软件 迅猛发展的今天,系统的硬件越来越简单,软件越来越复杂;集成电路 硬件成本逐年下降,软件成本大幅上升。信号分析与处理要求取的特征值, 若用硬件电路获取,电路时极为复杂的。因此不可能用一般硬件电路获取, 用软件编程会比较容易实现此功能。 第一章 绪 论 3 网络化 以 Internet 为代表的网络技术和其他高新科技结合,为测量和仪器技 术带来了极大发展空间,出现了网络化测量技术和具备网络功能的新型仪器。 基于网络的数据采集系统,不仅可以进行远距离操作和控制,还可把数据采 集结果通过网络显示在世界各地的WEB 浏览器中,实现了数据采集和测试 系统的资源和数据共享。 1.4 设计方案的可行性分析和预期目标 可行性分析:本次设计要求掌握利用温度,湿度传感器对温湿度进行实 时测量。设计 PCB 板,能够对所需要测量的参数进行A/D 转换或者频率 转换,将所测得的内容通过 LED 数码管进行显示,并通过 USB 端口,将 所测得的数据传输到上位机,并对所测的数值与设定的门限值进行比较,如 果异常,则进行报警,并采取相应的解决措施。 目的: 1掌握 C8051F320 等系列芯片的使用方法。 2掌握温度,湿度传感器等测量芯片的工作原理。 3掌握通过串行口、 USB 接口的基本原理。 4. 掌握数据采集系统的基本设计方法。 5掌握输出电路的设计方法。 6掌握用 PROTEL 绘制原理图、线路板图的方法。 7利用汇编语言或者 C51 编制程序。 8掌握利用 VB 或者 VC 编程的方法 。 第二章 数据采集系统的整体设计 4 第二章 数据采集系统的整体设计 对于单片机的实时控制应用系统,被测对象的有关参数往往是一些连续 变化的模拟量,这里进行的是温度和湿度采集。这些模拟量必须转换成数字 量后,才能输入到单片机中进行处理。本设计要要求通过键盘置数、显示 等。 该系统包含两部分:硬件设计和软件 编程。硬件上实现数据采集功能, 将数据送达 USB 控制器, USB 接口将数据送给 PC 机;软件包括 USB 固 件程序、驱动程序以及 用户界面程序。 设计思路为:用户使用应用软件下载 USB 固件代码,再向采集系统发读写命令 并对数模转换器进行 数据设置; 采集系统接收命令后,开始对 采集信号进行模数变换,再将数据由 USB 传输至 PC 机,用户程序 实现数据的接收、存储和显示。下面简述该数据采 集系统硬件系统和软件系统的构成。 2.1 硬件系统构成 本系统为一路数据实时采集系统, 选用 cygnal 公司内置 USB 接口的 高性能微控制器芯片 C8051F320。因为 C805IF320 是带 USB 接口(符合 USB20 协议)的单片机,所以整个硬件部分是一般 单片机应用系统的开发, 仅需要外加输入信号处理电路就可实现 。由于 C8051F320 片内有 16KB 的 flash 存储器,所以系统不需要用外部扩展程序存储器。系统选用的数据采集 器是数字式温湿度传感器,输出量为数字量,可直接传送给单片机,无需要 选用 A/D 转换器。系统选用经 8255A 与键盘/显示器接口来管理 6 位 LED 显示器及 2*8 键盘输入。采用 USB 接口完成单片机与上位机的连接 。 图 2-1 硬件系统构成 第二章 数据采集系统的整体设计 5 系统工作原理: 本系统设计采用定时采样控制方式进行工作,每隔0.5s 对温湿度进行 巡回采集一次。系统开始工作后, CPU 启动定时器 T0,定时 50ms,定时 器定时到使 26H 单元加 1,当 26H 单元加到 10 时,即到 0.5s 后,传感器 内部 A/D 转换器对采集的模拟量进行转换,将转换的数据送到单片机 RAM 中。同时,根据将采集的数据与用户通过键盘设定的门限值进行比较, 如果出现异常,则进行报警,并采取相应的解决措施。此外将采集的数据送 往显示缓冲区,经 LED 显示出来。再通过 USB 口将 RAM 中存储的数据 送外上位机上。 2.2 软件系统构成 软件设计包括三部分:单片机固件程序 客户驱动程序 主机应用 软件。固件响应来自系统 的 USB 标准请求, 实现数据交换工作以及事件处 理;客户驱动程序 使主机可识别 USB 设备,使用应用软件 存取 USB 设备。 主机应用软件 使用客户驱动程序与系统 USBI 进行通讯,由系统产生 USB 数据的传输行为,可用 VB、VC 软件开发生成采集软件 和相关说明。 应用 程序 驱动 程序 固件 程序硬件层 图 2-2 软件设计流程 第三章 硬件设计模块 6 第三章 硬件设计模块 3.1 数字温湿度传感器 SHT 系列产品是一款高度集成的温湿度传感器 ,采用专利的 CMOSENS 技术,保证产品的可靠性与 稳定性。传感器由电容性聚合体湿 度敏感元件加上能隙材料生成的温度敏感元件, 14 位的模数转换器和串行 接口电路构成。体积微笑、功耗低使它成为各种 应用的首选 。 表 3-1 传感器性能 第三章 硬件设计模块 7 3.1.1 接口说明 图 3-1 传感器与单片机接口电路 1 电源引脚 供电电压: 2.45.5V。上电后,要等待 11ms 以越过“休眠”状态。 此期间不需要发送任何命令。电源引脚( VDD,GND)间可增加一个 100nF 的电容,起到去耦滤波作用。 2 串行接口 串行接口在传感器信号的读取及电源损耗方面,都做了优化处理;但与 I2C 接口不兼容。 3 串行时钟输入 SCK SCK 用在微处理器与传感器之间的同步 通信。接口包含完全静态的逻 辑,所以不存在最小 SCK 频率。 4 串行数据 DATA DATA 三态门用于数据的读取。 DATA 在 SCK 时钟下降后更改状态, 并仅在 SCK 时钟上升沿有效。数据 传送时, SCK 时钟高电平 ,DATA 保持稳定。为 防止信号冲突,微处理器应 使 DATA 为低。须要一个外部 上 拉电阻将信号 拉到高电平。电阻已包含在 I/O 电路中。 3.1.2 发送命令 用 “ 启动传输”时序,表示数据 传送初始化。包含:当 SCK 时钟 为高电平时 ,DATA 翻转成低电平,然后 SCK 变成低电平,接着在 第三章 硬件设计模块 8 SCK 时钟高电平时 , DATA 翻转成高电平。 后续的命令包括三个地址位和五个命令位。 SHRXX 以下面的方式表示 已正确地接收到指令:在第 8 个 SCK 时钟的下降之后,将 DATA 下拉 为低电平(ACK 位)。在第 9 个 SCK 时钟的下降 之后,释放 DATA(回复高电平)。 3.1.3 测量时序(RH 和 T) 发布测量的命令( 00000101 代表相对湿度 RH,00000011 代表温度 T)后,控制器等待测量 的结束。这个过程 共需 11/55/210ms,分别对应 8/12/14bit 。传感器通过下拉 DATA 至低电平, 代表测试结束。控制器触 发 SCK 时钟前,须要等待“数据备妥”信号。然后传送 2 字节的测试 数 据和 1 字节奇偶的校验。uC 需使用 DATA 下拉为低电平, 确保任何一个 字节。数据从 MSB 开始,右值有效。用 CRC 数据的确认位, 代表通信 的结束。如果不用 CRC-8 校验,控制器可 在测试 LSB 后,通过保 证 ack 高电平,来结束通信 。测量通讯完成后,传感器自动转入休眠 状态。 表 3-2 常用命令 命令代码 预留0000x 温度测量00011 湿度测量000101 读状态寄存器00111 写状态寄存器00110 第三章 硬件设计模块 9 3.1.4 通讯复位时序 如果与 SHRXX 通讯中断,一下时序可 复位串口:当 DATA 为高电 平,触发 SCK 时钟 9 次。下一次指令前,发送一个 “传输启动”时序。 只复位串口,状态寄存器内容保留。 3.1.5 数据物理量转化 相对湿度 为补偿传感器的非线性以获取准确数据,使用 下面的公式修正读数: RH(linear) = c1 +c 2 SORH + c3 SORH 表 3-3 温度转换系数 SORHC1C2C3 12bit-40.0405-2.8*10-6 8bit-40.648-7.2*10 相对湿度对温度依赖性补偿 因为实际温度和测量的参考温度 25不同,须考虑温度修正系数: RH(true )= (TC - 25)(t1 +t2 SORH)+RH(linear) 温度 能隙材料开发的温度传感器具有 极佳的线性度。可用下面的公式将数 字输出转化成温度值: Temperature = d1 +d2 SOT 第三章 硬件设计模块 10 在极端工作条件下测量温度时,可使用进一步的补偿算法以获取高精度。 表 3-4 温度转换系数 VDD d1d1F 5V-40.00-40.00 4V-39.75-39.50 3.5V-39.66-39.35 3V-39.60-39.28 2.5V-39.55-39.23 SOT D2D2F 14bit0.010.018 12bit0.040.072 3.1.6 温湿度传感器框图 图 3-2 温湿度传感器框图 第三章 硬件设计模块 11 3.1.7 数据采集流程图 图 3-3 数据采集模块流程图 开始 初始化端口,保护现场: PSW,ACC,DPTR 进栈 定时器 T0 重新赋值 启动定时器 0 采样时间到? 启动传输 进行温度湿度转换 延时等待转换完毕 数据进行 A/D 转换 50ms 单元加 1 读取转换结果 数据送入显示缓冲 区 存转换结果 恢复现场 返回 Y N 第三章 硬件设计模块 12 3.2 数据采集系统单片机C8051F320 随着 USB 技术的快速发展以及 USB 外设在越来越多场合的广泛应用, 支持 USB 接口技术的芯片也越来越多。对于USB 接口的设计,选用带有 的 USB 控制器是我们的首选, C8051F320 是一款新型的 USB 控制 器芯片。 C8051F320 主要特点 C8051F320 是 Cygnal 公司提供的一种全速 USB 功能的混合信号芯片, 内部集成了 2304 Byte RAM 和 16K Byte flash 的存储器。C8051F320 是一 款完善的小型片上系统。 无须外部晶体,支持 8 个端点的 1KB USB 缓存 集成接收器;不需外部电阻,该芯片性价比较高。 C8051F320 提供了设备的 “软”解决方案,使得设备可以无限制的配置和升级。开发包提供的硬件和 软件己经为开发者做了大量开发工作,开发者只需在特定的地方加入自己的 功能相关的代码即可,开发极为方便。 飞速的 USB 功能控值器; 内部有时钟恢复电路, 无须外接晶振; 支持 8 个 USB 的端点; 带有 1KB 字节 USB 的缓冲器; 内部集成 USB 接口的数据 接收器,不须外部上拉的电阻; 具有高速增强型 8051MCU 内核,该 MCU 内核采用流水线式指令结 构,70%的指令执行时间为一个或两个系统时钟周期,处理速度可达 25MIPS(时钟频率为 25HZ 时)。 此外,C8051F320 还有许多其它特性,如支持在系统编程( ISP),带 有可编程的数字 I/O 和数字交叉开关,可提供全速、非侵入式的在系统片内 调试电路等 第三章 硬件设计模块 13 图 3.4 C8051F320 引脚图 引脚功能如下: D、D:USB 电缆的 USB D和 USB D连接端; VDD:2.73.6V 片上电源输入端或片内 的电压调节器 3.3V 输出端; GND:模拟地; REGIN:片内的电压调节器的 5V 输入端; VBUS:USB 电缆 VBUS 感应的输入端,当引 脚出现 5V 信号,说明 设备已和主机连接上 ; RST/C2CK:多功能引脚,内部上电 的复位 POR 和 VDD 监视器漏极 开路的输出,使引 脚保持为低 15S 上可对系统 复位一次。引脚还作为 C2 接口时钟信号 的输入端; P3.0/C2D:多功能引脚,可作为 I/O 端口或 C2 接口双向数据信号 的传 输端口。 第三章 硬件设计模块 14 P0.2/XTAL1 为端口 0.2 或外部的晶振输入; P0.3/XTAL2 为端口 P0.3 或外部的晶振输出; P0.6/CNVSTR 为端口 P0.6 或 ADC0 外部转换开始输入脚; P0.7/VRFF 为端口 P0.7 或外部参考电源的输入端或输出端; P0.0、P0.1、P0.4、P0.5、P1.0P1.7、P2.0P2.7 均为相应的端口引 脚 3.3 单片机与主机连接设备的选择 C8051F320 集成全速/低速的 USB 功能控制器,来完成 USB 的外部设备。 USB0(USB 功能控制器)包含串行节口引擎(SIE) 、USB 的收发器、1KB FIFO 的存储器以及时钟复位电路,无须外部器件。USB0 和接发器遵从通用串 行总线的规范。 USB 是一种标准的连接接口,当外面的设备和计算机相连,允许不必重新 配置与设计系统,不用开机壳,不用调整接口卡开关。在 USB 与计算机连接时, 计算机可自主识别这些设备,配置合适驱动程序,用户无须再另外重新设置。 USB 接口有即插即用、热插拔的特点,用户可以便捷地连主机上的外围设备。 而且 USB 的另一优势是连接 PC 时,对所有接口设备,提供一种通用标准的连 接器。连接器可代替传统外围接口,且 USB 接口允许达 127 个接口设备同时接 到 PC 机的一个外部的 USB 口上,这样就不同于传统串行接口或并行接口,一 个端口仅能接一个端口设备。USB 端口慢慢成为各种新型设备用标准的连接接 端口。 3.3.1 USB的特点: USB 统一了各种接口设备的连接头,例如通信的吨口、打印机的接口、 显示器的输出和音效的输入/输出设备、存储设备等,使用同样 USB 接口规范。 即插即用,可自动检测和配置系统资源。USB 设备不需要另外设置 第三章 硬件设计模块 15 IRQ 中断、I/O 地址以及 DMA 等的系统资源。 有热插拔特性。在操作系统已开机的执行状态中,随时可以插入或拔 离 USB 设备。 USB 最多可连接 127 个端口的设备。 单一专用的接头型号。所有 USB 外围设备的接头型号应完全统一,并 可使用 USB 集线器来增加扩充的连接端口数目。 3.3.2 USB与IEEE 1394 比较 IEEE 1394 与 USB 同为串行传输接口端口,但 1394b 的格式可支持 400Mbps 数据传输速率,比 USB1.0 规范快了 33 倍,而且最多可连接至 63 个 设备。USB2.0 速度已经追上 IEEE 1394 的传输速度。USB 与 IEEE 1394 是使用 在不同的应用领域。IEEE 1394 比 USB 快速而且更有弹性,不过其价钱则较贵。 USB 适合使用在键盘、扫描仪、硬盘、打印机等中低速度与价位的应用上,可 望成为未来计算机外围产品的主要传输接口。而 IEEE 1394 适用于数字影像编 辑等需要高速传输接口的消费性电子产品上,或是没有 PC 主机的场合。目前 USB 2O 补充协议 OTG 也支持点对点的传输模式,外围设备可以彼此沟通, 具有较强的弹性。 3.3.3 USB传输类型 USB 四种传输类型:控制传输、中断传输、批量传输以及等时传输。其中, 低速设备只使用控制传输与中断传输。 控制传输为 USB 传输中最重要传送类型,只有正确执行完控制传输,才 能进一步执行其他传送类型。此传输是用来提供给介于主机与设备之间的配置、 命令或状态的通信协议的。控制传输能使能主机去读取与此设备相关的信号, 并去设置设备地址,选择配置与其他设置等。也能送出自定义的要求,以针对 任何目的送出与接收数据。所以要以双向传输来达到此要求。所有的 USB 设备 必须支持控制传输。 中断传输支持偶然需要的小批量通信,且服务时间受限的设备。此种方使 第三章 硬件设计模块 16 用在设备需定时接收主机或设备的场合,低速设备中唯一需要传送数据的方式, 主用在键盘、鼠标、游戏杆。所有的设备不一定需要支持中断传输。 批量传输属于单向或双向传输。用来传送大量数据,这些大量数据必须准 确地加以传输,但无传输速度上的限制(即没有固定传输的速率) 。需要根据 目前总线的拥挤状态或可用的宽带,以所有可使用到的带宽为基准,不断调整 本身的传输速率。并没有设置查询的时间间隔。设备并不一定要支持此种传输 类型。 等时传输是单向或双向的传输。此传输维持一定传输速度,需要牺牲些微 错误的发生。采用预先与 PC 主机协议好的固定带宽,确保发送端与接收端速 度吻合。就算发生传输错误,也不会重新传送。仅有全速与快速设备室支持等 时传输的。 3.4 单片机的键盘显示接口模块 我采用单片机经 8255A 与键盘/显示器接口技术 下图为 8*2 键盘、6 位共阴极显示器通过 8255A 和 C8051F320 的接口 电路。从图中可以看出 8255A 的 PA,PB,PC 及控制口的地址分别为 0BCFFH,0BDFFH,0BEFFH,0BFFFH。8255A 的 PB 口为显示器的段口, PA 口为显示器的位口,同时又是键盘的行输出口, PC 口为键盘的列输入 口。 第三章 硬件设计模块 17 图 3-5 单片机通过 8255A 的键盘/显示器接口电路 3.4.1 键输入设定 1. 键输入电路主要作用: 设置键输入电路主要是为了可以根据用户需要设定温、湿度的上下线值 (门限值),以便于使所测得的数值与设定门限值进行比较,如果发生异常 现象,超出门限值,则进行报警,并采取相应的解决措施。 2. 键输入电路按键功能描述: 0 键:表示输入数字 “0” 1 键:表示输入数字 “1” . 9 键:表示输入数字 “9” E 键:区分输入数值正负号的。当按下E 键时,表示此时输入的数据 (设定的温、湿度上下限值)为负值;如果不按下此键,则表示输入的数据 为正值。 第三章 硬件设计模块 18 F 键:按下此键,表示输入的是温度的上下限值。 D 键:按下此键,表示输入的是湿度的上下限值。 C 键:“确认”键。当选择输入的上下限是温度或者湿度时,选择F 或 D 后,都要按 “确认”键表示确认;当确定输入数值正负号时,若为负 号,按下 E 键后,再按“确认”键表示确认;当输入数据(此处设定的数 据为 4 位,百位、十位、个位、小数点后一位)时,每属于一位都要按 “确认”键表示该位输入完毕。 B 键:“输入完毕”键,表示当用户对温、湿度上下限数值进行设定后, 已经设定完毕。 另外,键输入程序,我采用的是外部中断的方式来启动的,当用户需要 对环境的温、湿度上下限值进行更改时,用外部中断的方式可以方便快捷的 启用键输入程序进行数据上下限进行更改。 键输入程序功能包括如下方面: 判别键盘上有无键闭合。 采用粗扫描的办法:让所有的行为0,读列的数值。如果读得的列值全 为 1,说明无键按下;否则说明有键按下。 去除键的机械抖动,方法是判别到键盘上有键按下后,延迟一段时间 再判别键盘的状态,若仍有键闭合,认为键盘上有一个键处于稳定的闭合期, 否则认为是键的抖动。 判别闭合键的键号,方法是采用细扫描的办法:逐行输出0,读列 的数值。如果读得的列值为全 1,说明被按键不在该行上,再让下一行为 0;否则说明被按键在该行上。 闭合键的键值为: 键值 = 行号在高四位,列值在低二位 使 CPU 对键的一次闭合仅做一次处理,采用的方法是等待闭合键释 放以后再做处理。 第三章 硬件设计模块 19 键输入程序流程图如下。 在此,我用显示子程序作为延迟 的子程序,其优点是,在进行 键盘输 入子程序后,显示器是亮的。在键输入源程序中, DIR 为显示的子程序, 调用一次用 6ms。8255A 的 PA,PB,PC 及控制口的地址分别为 0BCFFH,0BDFFH,0BEFFH,0BFFFH。初始化时讲 8255A 初始化为工 作方式 0,A 口输出,B 口输出,C 口输入。外部中断设置按键即可,按此 键便可响应键输入程序 图 3-5 外部中断按键 图 3-6 键输入程序流程图 第三章 硬件设计模块 20 键输入的操作步骤: 当外部中断响应用户设定需求时,按下外部中断键。然后当要对温度 (或湿度)进行上下限值设定时, 按下 F 键(或 D 键),再按下 C 键确认。 然后确定输入数值的正负,如果为负值按下E 键,再按 C 键确认。开始输 入数据百位,按下 09 键中一位,再按下 C 键确认。同理十位、个位、小 数位依次。 3.4.2 显示器电路设定 1. 六位显示器的含义 采用 6 位 LED 共阴极显示器。从左到右,每位显示器的含义:第一位 表示显示的是温度或者湿度,显示温度用数字1 表示,显示湿度用数字 0 表示。第二位显示数值的正负号,负号用数字1 表示,正号用数字 0 表示。 第三位表示百位数,第四位表示十位数,第五位表示个位数,第六位表示小 数点后一位数。 本设计采用的显示为动态显示。动态显示就是一位一位地轮流点亮各位 显示器( 扫描方式),对每一位显示器每隔一定时间点亮一次。即从段口 上按位次分别送所要显示字符的段码,在位控制口上也按相应的次序依次分 别选通相应的显示位码(共阴极送低电平,共阳极送高电平),选通的位就 显示相应的字符,并保持几毫秒的延时,未选通位不显示字符(保持熄灭)。 这样,对各位显示就是一个循环过程。从计算机的工作过程来看,在一个瞬 时只有一位显示字符,而其他位都是熄灭的,但因为人的视觉滞留和显示器 的余辉,这种动态变化是察觉不到的。从效果上看,各位显示器都能连续而 稳定地显示不同的字符。 2. LED 显示器的七段码 显示字符 共阴极七段码 显示字符 共阴极七段码 0 3FH 6 7DH 1 06H 7 07H 第三章 硬件设计模块 21 2 5BH 8 7FH 3 4FH 9 6FH 4 66H 5 6DH 在单片机中,显示的内容和显示的代码之间的转换一般采用软件转换。 软件转换用查表的方式进行。步骤如下: 在程序存储器中建立一个显示代码表,我们采用上面的共阴极七段 码。按一定顺序将所要显示的所有内容对应代码放入表中。 将要显示的内容所对应的代码在代码表中的相应位置送累加器A; 将显示代码表的首地址 TAB 送数据指针 DPTR 采用查表指令 MOVC A, A+DPTR,将代码取出来送显示器 的段口。 3.5 单片机辅助电路 3.5.1 时钟电路 这里我采用内部时钟方式 外接晶体和电容组成并联谐振回路。单片 机允许的的振荡晶体可在 1.224MHz 之间选择,一般 11.0592MHz。电容 C1、C2 的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有一定 的影响,可在 20100pF 之间选择,典型值为 30pF。 图 3-7 内部时钟方式的时钟电路 第三章 硬件设计模块 22 3.5.2 复位电路 计算机在启动运行时都需要复位,可使CPU 和系统中的其他部件都处 于一个确定的初始状态,并从这个状态开始工作。单片机的复位都靠外部电 路实现,上有一个复位引脚 RST,高电平有效。如图所以是上电按钮复位 电路,只需将一个常开按钮并联于上电复位电路,按下开关一定时间就能使 RST 引脚端为高电平,从而使单片机复位。 图 3-8 上电按钮复位电路 第四章 软件设计 23 第四章 软件系统设计 4.1 主程序设计 在整个程序设计中, 数据采集模块采用定时器控制方式对温湿度进行采 集、模数转换,并将转换的数据进行存储并送入显示缓冲区中,经LED 显示出来,键输入程序用来对温湿度进行上下限值设置,最后将存储的数据 通过 USB 模块传输到上位机上。 主程序主要实现从数据采集模块获取数据 并通过 LED 显示,并将数据送到上位机上。 主流程图: 开始 初始化:设置栈堆 设置定时器 T0 工作方式 显示缓冲区清“0” 0.5s 到? 有键按下? 调用显示子程序 设定温湿度上下限 值 图 4-1 主流程图 Y Y N N 第四章 软件设计 24 数据采集系统 USB 应用系统软件分为三部分: USB 外设端的单片机固 件程序、主机操作系统上客户驱动程序和主机应用软件。单片机固件相应各 种来自系统的 USB 标准请求,完成各种数据交换工作和事件处理;客户驱 动程序让主机可以识别 USB 设备,并通过应用软件来存取 USB 设备,完 成通信功能;主机应用软件通过客户驱动程序与系统UBSI 进行通信,由 系统产生 USB 数据的传送动作。 4.2 固件程序设计 USB 固件程序设计师 USB 接口部分的主要工作,它的主要目的是:当 USB 设备连接到主机上时,主机可以发现新设备,然后建立连接并完成数据 传输任务,也就是可以让 Windows 正常监测和识别 USB 设备。因此在 USB 固件程序中,最重要的工作就是 USB 描述符的定义和 USB 传输中断 的处理。 (1)USB 描述符 USB 描述符是 USB 协议定义的一套描述设备功能和属性的固定结构的 描述语言。USB2.0 中的描述符包括设备 描述符、配置描述符、接口描述符、 端点描述符等 8 种标准描述符和其他一些非标准描述符。 USB 主机通过 USB 描述符完成设备类型的识别和配置,同时为设备提供相应的客户端驱动 程序,运行于 USB 协议栈上层的客户端驱动程序通过这些信息来正确访问 设备并与其通信,从而达到即插即用的目的。其中,配置中用到的两个端点 描述符如下表所列。 表 4-1 固件 HID 群组描述内容 偏移 量 字 段大小(字节)相关的描述 0bLength 1以字节来表示描述符长度 1bDescriptor 121h 表示 HID 群组 2bcdHID 2HID 规范修订版本值(以 BCD 码) 4CountryCode 1用来设置国家的数码(以 BCD 码) 第四章 软件设计 25 5bNumDescriptors 1所支持的附属群组描述符数目 6bDescriptorType 1报告描述符的类型 7wDescriptorLength 2报告描述符的总长度 9bDescriptorType 1用来设置描述符类型的常数,设 备可选择的超过一个描述符 10wDescriptorLength 2描述符总长度,设备可选择的超 过一个描述符。可能是跟随在额 外的 bDescriptorType 与 wDescriptorLength 字段后 (2)USB 中断服务程序编写 当 USB 中断到达时, C8051F320 首先通过读取 USB 功能控制器的三 个中断寄存器 CMINT、IN1 INT 和 OUT1 INT 来判断中断来源( USB 复位 中断、端的 0 中断、端点 1 输入中断、端点 2 输出中断),然后根据不同 的中断来源跳入相应的处理模块以进行不同的中断处理,并在处理完毕后返 回。 其中,端点 0 是每个 USB 设备都必须支持的默认控制传输端点,主要 用于主机对 USB 设备的配置、状态信息的获取和设备错误的纠正等,它的 中断处理模块由控制输出和控制输入两部分组成。每次传输首先由设置事物 开始,然后根据设置事物数据包中的USB 标准命令请求判断该次传输时控 制输入还是控制输出。由于作用和地位的特殊性和重要性,端点0 中断处 理模块式一个最为复杂的中断处理模块。结合C8051F320 端点 0 控制状态 寄存器 E0CSR 的特点和应用的具体需求,图 1 给出了该中断处理模块的流 程图,主要是对控制传输中设置事务的分析和处理。 USB 复位中断的主要作用是将相关 USB 变量、寄存器和各端点的状态 恢复为初始状态(需要注意:复位后,端点0 为空闲状态,端点 1 的 IN 和端点 2 的 OUT 为暂停状态)。端点 1 输入中断和端点 2 输出中断均为批 量传输中断,其主要作用是在收到中断时,在各自预先定义好的缓冲区中写 入要传输给主机的数据或取走主机传输过来的数据,实际上,这是 C8051F320 读写 USB 缓冲区的过程。 第四章 软件设计 26 开始 读 E0CSR 寄存器 端点传输错误中断? 清 STSTL 中断标志位 传输提前结束中断? 清 SUEND 中断标志 位 设置事务中断? 读取 USB 命令数据包 控制输入命令? Get Status 命令? Get Configuration 命令? Get Interface 命令? Get Discriptor 命令? 发送 Stall 应答数据包 发送设备状态数据包 发送设备相关描述符 数据包 发送设备配置数据包 发送设备接口数据包 N N N N N N N Y Y Y Y Y Y Y Y 第四章 软件设计 27 N Y Y Y N N N N 图 4-2 端点 0 控制传输中断流程图 4.3 驱动程序设计 驱动程序是操作系统中控制和连接硬件的关键模块,给连接到计算机 的硬件设备提供软件接口 。在 Windows 环境中,定义了 Windows 设备驱 动程序模型,设立了两种模式 用户模式和内核模式。应用程序只能工 设置设备地址 控制输出命令? Set Address 命令? Set Interface 命令? Set Configura

温馨提示

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

评论

0/150

提交评论