毕业设计(论文)-手指键盘的设计.doc_第1页
毕业设计(论文)-手指键盘的设计.doc_第2页
毕业设计(论文)-手指键盘的设计.doc_第3页
毕业设计(论文)-手指键盘的设计.doc_第4页
毕业设计(论文)-手指键盘的设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

青岛理工大学毕业设计(论文)摘 要电子信息产业的迅速发展,对个人计算机的体积以及便携性提出了更高的要求。本文讨论并设计的基于PDIUSBD12和STC89C52单片机的手指键盘,利用单片机实时扫描手指按键,并将检测的按键值通过USB接口芯片传送至PC,实现常规键盘的功能。全文由USB协议概述,USB接口芯片介绍说明,系统硬件设计和软件设计等部分构成。利用单片机接口技术在数据处理方面的突出优势和单片机的可重复编特性使本系统具有一定的高可行性和高性价比。该方案还具有通用性,因为采用USB接口,支持主流PC机,可扩展性强,可用各种输入设备,具有十分广阔的发展前景。关键词:手指键盘,USB,单片机,按键ABSTRACTElectronic information industrys rapid growth on the volume of personal computers and portable high demands. This article discusses and designs based on PDIUSBD12 and STC89C52 MCU finger keyboard, using MCU realtime scanning and detection of key values via the USB interface chip transmitted to the PC, the implementation of the regular keyboard functionality. The full text consists of the USB protocol overview, USB interface chip describes, hardware design and software design, etc.MCU interface technology used in data processing of the outstanding advantages and characteristics of single chip can be programmed to repeat the system has a high feasibility and cost-effective. The program also has the versatility, as with USB interface, support for the mainstream PC, can extend strong, available a variety of input devices, have a very broad prospects for development.KEY WORDS: Finger keyboard,USB,MCU,Key目 录前 言1第1章 手指键盘简介21.1 手指按键的可行性21.2 手指按键采用USB接口的优势3第2章 USB概述42.1 USB总线简介42.2 USB技术指标52.3 USB系统构成52.3.1 USB宿主52.3.2 USB设备62.3.3 USB连接(数据流)72.4 USB接口芯片介绍72.4.1 芯片描述82.4.2 芯片功能框图及说明92.4.3 芯片端点描述112.4.4 芯片引脚配置14第3章 系统硬件设计173.1 单片机硬件设计173.1.1系统供电173.1.2单片机电路设计183.2 键盘设计203.3 PDIUSBD12驱动电路213.3.1 USB接口芯片电路213.3.2 USB接口芯片电路说明223.4 串行口电路23第4章 系统软件设计244.1按键处理部分254.1.1 按键处理流程264.1.2 按键检测代码274.1.3 键盘操作说明294.2 USB接口部分304.2.1 USB接口芯片工作流程314.2.2 PDIUSBD12驱动324.2.3 USB 设备描述符35第5章 结论38致 谢39参考文献40附录(系统电路原理图):41 42青岛理工大学毕业设计(论文)前 言常规PC系列键盘采用16行*8列二维矩阵行列结构,键盘的扫描控制电路核心是8048单片机。8048采用行列扫描法识别按下的按键,当有按键按下时,8048通过五芯插座向PC传送与按键位置相对应的键盘扫描码。常规标准键盘被广泛应用,但是体积大,不方便携带和扩展功能。本文利用PDIUSBD12芯片和51单片机设计成手指键盘,系统采用USB接口供电,即插即用,同时大大减少了按键的复杂程度,程序的灵活性也使得十个按键实现所有字母的输入成为可能。51系列单片机应用十分广泛,本设计采用的STC89C52单片机是8位的、支持串口编程的单片机,它与通用80C51系列单片机的指令系统和引脚兼容。片内的Flash可允许在线重新编程,也可使用非易失性存储器编程1。他将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能性价比的微控制器。PDIUSBD12 是一款性价比很高的USB 器件,它通常用作控制系统中实现与微控制器进行通信的高速通用并行接口,它还支持本地的DMA传输。PDIUSBD12 完全符合 USB1.1版的规范,适合应用在键盘这种传输数据量不大的系统中,这些特性都为系统显著节约了成本,同时使USB功能在外设上的应用变得容易。 本设计的完成对简化计算机的输入设备设计,减小设备体积,实现快速输入均有相当重要的参考价值。第1章 手指键盘简介当计算机的外设越来越丰富的时候,键盘作为其通用输入设备却没有多少更新。键盘是最常用也是最主要的输入设备,通过键盘,可以将英文字母、数字、标点符号等输入到计算机中,从而向计算机发出命令、输入数据等。USB接口的键盘通用性强,适用于台式机和笔记本和各种支持USB输入的设备,因而应用越来越广泛。1.1 手指按键的可行性近几年出现在PC机上的是新兴多媒体键盘,它在传统的键盘基础上又增加了不少常用快捷键或音量调节装置,使PC操作进一步简化,对于收发电子邮件、打开浏览器软件、启动多媒体播放器等都只需要按一个特殊按键即可,同时在外形上也做了重大改善,着重体现了键盘的个性化。键盘的外形分为标准键盘和人体工程学键盘,人体工程学键盘是在标准键盘上将指法规定的左手键区和右手键区这两大板块左右分开,并形成一定角度,使操作者不必有意识的夹紧双臂,保持一种比较自然的形态,这种设计的键盘被微软公司命名为自然键盘(Natural Keyboard),对于习惯盲打的用户可以有效的减少左右手键区的误击率,如字母“G”和“H”。有的人体工程学键盘还有意加大常用键如空格键和回车键的面积,在键盘的下部增加护手托板,给以前悬空手腕以支持点,减少由于手腕长期悬空导致的疲劳。这些都可以视为人性化的设计。手指键盘属于人体工程学键盘的一种,设计一种手指键盘,解决现有键盘不易携带,太大或太小不适于输入,输入速度慢,对身体造成损伤,老年人学习难等缺陷。十个手指正好控制十个按键,避免了初学者寻找按键不方便的缺点,可以快速上手。而且另一个优点是,手指键盘可以放在任意合适的地方,不必拘泥于桌面,可移动性强,操作方便。1.2 手指按键采用USB接口的优势将键盘集成于手套状或指环状的装置上,通过键盘电路将按键信息编码发送给智能工具,手指键盘便于携带,不占用智能工具本身的体积,应用范围广泛,无需手指寻找键盘,加快了输入速度,使用手指键盘的字符布局既有适合电脑高手使用的传统模式,又有适合老年人等初学者的易学模式。手指键盘应用范围广泛,前景广阔,几乎适用于一切智能工具,与现有键盘的使用条件几乎完全一样。中国的固定住户有三亿,即使每个住户只拥有手机、电脑、学习机等智能工具的一种,而拥有智能工具的用户有30%,那么手指键盘就会有九千万个市场份额。此种手指键盘市场上还没有出现,网络上也没有此类公开信息。属于自主创新发明。手指键盘采用USB接口。USB 端口是一个大约 7mm*1mm 的插孔,有四根信号线:两根线提供电源,两根线传输资料。目前常见的USB接头有两种,一种是“方的”,另一种是“扁的”,前一种就是常说的A型头,后一种为B型头。两种接头都有四个引脚,中间两个用来传输资料,侧面两个给USB设备提供电源。接头设计合理,避免用户插错。现在普遍采用USB 1.1规范,速度(12Mbps)比标准串口约快100倍,支持多个设备的同时连接,而且具有真正的“即插即用”特性。USB电缆线分为高速电缆和低速电缆两种。高速电缆的传输速率为12Mbps,主要用于连接数码相机等,低速电缆的传输速率为1.5Mbps,主要用于连接鼠标、键盘等。第2章 USB概述2.1 USB总线简介USB是一种支持在USB主机和USB设备之间进行串行数据传输的通信协议。主机作为总线的主叫方,采用两种信令模式:全速模式12Mb/s和低速模1.5Mb/s。USB使用四种数据传输方式:控制传输(control)、中断传输(interrupt)、批量传输(bulk)及等时传输(isochronous)5。Intel公司开发的通用串行总线架构(USB)的目的主要基于以下三方面考虑:一 计算机与电话之间的连接显然用计算机来进行计算机通信将是下一代计算机基本的应用。机器和人们的数据交互流动需要一个广泛而又便宜的连通网络。然而,由于目前产业间的相互独立发展,尚未建立统一标准,而USB则可以广泛的连接计算机和电话。 二 易用性众所周知,PC机的改装是极不灵活的。对用户友好的图形化接口和一些软硬件机制的结合,加上新一代总线结构使得计算机的冲突大量减少,且易于改装。但以终端用户的眼光来看,PC机的输入/输出,如串行/并行端口、键盘、鼠标、操纵杆接口等,均还没有达到即插即用的特性,USB正是在这种情况下问世的。 三 端口扩充外围设备的添加总是被相当有限的端口数目限制着。缺少一个双向、价廉、与外设连接的中低速的总线,限制了外围设备(诸如电话/电传/调制解调器的适配器、扫描仪、键盘、PDA)的开发。现有的连接只可对极少设备进行优化,对于PC机的新的功能部件的添加需定义一个新的接口来满足上述需要,USB就应运而生。它是快速、双向、同步、动态连接且价格低廉的串行接口,可以满足PC机发展的现在和未来的需要。 2.2 USB技术指标USB最大的特点是支持热插拔(Hot plug)和即插即用 (Plug&Play)。当设备插入时,主机枚举(enumerate)此设备并加载所需的驱动程序,因此使用远比PCI和ISA总线方便 。目前USB支持3种数据信号速率,USB设备应该在其外壳或者有时是自身上正确标明其使用的速率。(1)1.5 Mbit/s (183 KByte/s) 的低速速率,主要用于人机接口设备(Human Interface Devices ,HID)例如键盘、鼠标、游戏杆。(2)12 Mbit/s (1.4 MByte/s)的全速速率,在USB 2.0之前是曾经是最高速率,后起的更高速率的高速接口应该兼容全速速率。多个全速设备间可以按照先到先得法则划分带宽,使用多个等时设备时会超过带宽上限也并不罕见。所有的USB Hub支持全速速率。(3)480 Mbit/s (57 MByte/s)的高速速率。并非所有的USB 2.0设备都是高速的。高速设备插入全速hub时应该与全速兼容,而高速hub具有所谓Transaction Translator(事务翻译器)功能,能够隔离全速、低速设备与高速之间数据流,但是不会影响供电和串联深度 。2.3 USB系统构成USB系统主要由三部分组成,即宿主(host),USB设备(device)和USB连接。2.3.1 USB宿主USB宿主(host)是一个带有USB主控制器的PC机或者嵌入式系统,在USB系统中只有一个宿主,它是USB系统的主控者。USB宿主主要用于产生并且管理控制信号和数据流,检测并处理总线上的各种活动的状态,并为总线上的USB设备提供能源。USB宿主存在于主机系统中,它包括硬件,软件部分。其中,硬件部分指的是USB宿主控制器,一般集成在主板上,受USB系统软件的控制。软件部分分为三部分,分别是:1. USB设备驱动程序(USB Device Drivers)通过I/O请求包发出给USB设备的请求,而这些I/O请求包则完成对目标设备传输的设置。2. USB驱动程序(USB Driver)在设备设置时读取描述寄存器以获取USB设备的特征,并根据这些特征,在请求发生时组织数据传输。3. 主控制器驱动程序(Host Controller Driver)完成对USB交换的调度,并通过根集线器或其它的集线器完成对交换的初始化。2.3.2 USB设备USB设备用于完成特定的功能,它具有极强的扩充性,能以一种星型+级联的方式连接起来,USB宿主可以根据USB设备的动态增减,对其进行动态配置。USB设备是实现某种具体功能的硬件设备,如键盘,鼠标和摄像头等。USB功能器件作为USB外设,它必须保持和USB协议的完全兼容,并可以响应标准的USB操作。同样,用于表明自己身份的“BIOS”系统对于USB外设也是必不可少的,这在USB外设上被称为协议层。在物理机制上,一个USB外设可以由四部分构成:(1)用于实现和USB协议兼容的SIE部分。(2)用于内存特征字,存储实现外设特殊功能程序及厂家信息的协议ROM(3)用于实现外设功能的传感器及对资料进行简单处理的DSP部分(4)将外设连接到主机或USB Hub的接口部分。根据传输率的不同,USB功能器件被分为高速和低速两种。低速外设的标准传输率为1.5Mbps,而高速外设的标准传输率为12Mbps。例如鼠标,键盘等交互式设备就是低速设备运行,而打印机,扫描仪就使用全速设备模式运行。2.3.3 USB连接(数据流) USB连接实际上是指USB器件和USB主机连接并进行通信的方法,它可以将存在于USB主机和USB设备之间的USB数据传输模型描述为一个管道(pipe),管道只是一个逻辑上的概念。USB系统软件通过缺省管道(与端点0相对应)管理设备,设备驱动程序通过其它的管道来管理设备的功能接口。实际的数据传输过程是:设备驱动程序通过对USBD接口(USB driver interface)的调用发出输入输出请求(IRP I/O Request Packet), USB驱动程序接到请求后调用HCD接口(host controller driver interface)将IRP转化为USB的传输(transfer),一个IRP可以包含一个或多个USB传输,然后HCD将USB传输分解为总线操作(transaction),由主控制器以包(packet)的形式发出。需要注意的是所有的数据传输都是由主机开始的,任何外设都无权开始一个传输。IRP是由操作系统定义的,而USB传输与总线操作是USB规范定义的。USB总线将1ms定义为一帧,每帧以一个SOF包为起始,在这1ms里USB进行一系列的总线操作,引入帧的概念主要是为了支持与时间有关的总线操作。为了满足不同外设和用户的要求 USB 提供了四种传输方式:控制传输,同步传输,中断传输,批传输。它们在数据格式,传输方向,数据包容量限制,总线访问限制等方面有着各自不同的特征。 2.4 USB接口芯片介绍用于USB设备开发的芯片通常有两种:一种是带USB接口的微控制器,另一种是纯粹的USB接口芯片,需要外部微控制器(MCU)控制。PHILIPS公司的PDIUSBD12芯片属于后者。本文对此芯片的应用作了具体设计,以PDIUSBD12为接口芯片,以STC89C52为微控制器,完成了USB接口电路的设计。2.4.1 芯片描述PDIUSBD12是一款性价比很高的USB器件,它通常用作微控制器系统中实现与微控制器进行通信的高速通用并行接口,它还支持本地的 DMA传输。这种实现USB接口的标准组件使得设计者可以在各种不同类型微控制器中选择出最合适的微控制器。这种灵活性减小了开发的时间,风险以及费用,通过使用已有的结构和减少固件上的投资,从而用最快捷的方法实现最经济的USB外设的解决方案。 PDIUSBD12完全符合USB1.1版的规范,它还符合大多数器件的分类规格:成像类,海量存储器件,通信器件,打印设备以及人机接口设备。同样地 PDIUSBD12 理想地适用于许多外设。PDIUSBD12的技术可提供良好的USB连接指示。在枚举中LED指示根据通信的状况间歇闪烁。当PDIUSBD12成功地枚举和配置后LED指示将一直点亮,随后与PDIUSBD12 之间成功的传输(带应答)将关闭LED,处于挂起状态时,LED 将会关闭。 该特性为USB 器件,集线器和USB通信状态提供了用户友好的指示。作为一个诊断工具,它对隔离故障的设备是很有用的。从系统测试中也可以看见该指示LED间歇闪烁,很好的验证了这一特性。2.4.2 芯片功能框图及说明 图2.1 详细描述了芯片内部结构,包括模拟收发器、电压调整器、PLL、 Philips串行接口引擎(PSIE)等。3.3V集成RAMPLLD+ D-位时钟恢复1.5kD+存储管理单元串行接口引擎模拟收发器 并行和 DMA接口电压调整器图2.1 芯片内部结构1、模拟收发器:集成的收发器接口可通过终端电阻直接与 USB 电缆相连。 2、电压调整器:片内集成了一个 3.3V 的调整器用于模拟收发器的供电,该电压还作为输出连接到外部 1.5k的上拉电阻,可选择 PDIUSBD12提供的带 1.5k内部上拉电阻的软件连接技术。 3、PLL:片内集成了6M到48M时钟乘法PLL,这样就可使用低成本的6M晶振,EMI也随之降低。PLL的工作不需要外部元件。 4、位时钟恢复 位时钟恢复电路使用4X过采样规则,从进入的USB数据流中恢复时钟,它能跟踪 USB 规定范围内的抖动和频漂。 5、Philips 串行接口引擎(PSIE):Philips SIE实现了全部的USB协议层,完全由硬件实现而不需要固件的参与。该模块的功能包括:同步模式的识别,并行/串行转换,位填充/解除填充,CRC校验/产生,PID校验/产生,地址识别和握手评估/产生。 6、:与 USB 的连接是通过1.5k上拉电阻将D+(用于高速USB器件)置为高实现的。1.5k上拉电阻集成在PDIUSBD12 片内,默认状态下不与 VCC 相连。连接的建立通过外部/系统微控制器发送命令来实现。这就允许系统微控制器在决定与 USB 建立连接之前完成初始化时序。USB总线连接可以重新初始化而不需要拔出电缆。 PDIUSBD12在连接可以建立之前会检测USB VBUS是否可用。VBUS可通过 EOT_N 管脚进行检测。具体参阅管脚描述一节。 需要注意的是,内部电阻的误差(25%)大于USB规格的5% .但用于连接的VSE 电压规格仍然有足够的余量。是Philips半导体一项尚未获批准的专利技术。 7、:技术可提供良好的USB连接指示。在枚举中LED指示根据通信的状况间歇闪烁。当PDIUSBD12成功地枚举和配置后LED指示将一直点亮,随后与PDIUSBD12 之间成功的传输(带应答)将关闭LED,处于挂起状态时,LED 将会关闭。 该特性为USB 器件,集线器和USB通信状态提供了用户友好的指示。作为一个诊断工具,它对隔离故障的设备是很有用的。该特性降低了现场支持和热线的成本。 8、存储器管理单元(MMU)和集成(RAM): 以 12M/s的速率传输并与微控制器并口相连时,MMU和集成RAM作为USB 之间速度差异的缓冲区。这就允许微控制器以自己的速率对USB信息包进行读写。 9、并行和 DMA接口:一个普通的并行接口定义成易于使用,快速而且可以与主流的微控制器直接接口。对一个微控制器而言,PDIUSBD12看起来就象一个带8位数据总线和一个地址位,占用2个位置的存储器件。PDIUSBD12支持多路复用和非复用的地址和数据总线,还支持主端点与本地共享RAM之间直接读取的 DMA传输。支持单周期和突发模式的DMA传输6。 2.4.3 芯片端点描述PDIUSBD12 的端点适用于不同类型的设备,例如图像 打印机 海量存储器和通信设备端点可通过Set Mode 命令配置为 4 种不同的模式,分别为:表2.1 端点模式模式 0Non-ISO 模式非同步传输 模式 1ISO-OUT模式同步输出传输 模式 2ISO-IN 模式同步输入传输 模式 3ISO-IO 模式同步输入输出传输4种模式具体说明见下表:表2.2 模式0(非同步模式)端点数端点索引传输类型端点类型方向最大信息包规格(字节)001控制输出控制输入默认默认输出输入1616123普通输出普通输入普通普通输出输入1616245普通输出普通输入普通普通输出输入表2.3 模式1(同步输出模式)端点数端点索引传输类型端点类型方向最大信息包规格(字节)001控制输出控制输入默认默认输出输入1616123普通输出普通输入普通普通输出输入161624同步输出同步输出表2.4 模式2(同步输入模式)端点数端点索引传输类型端点类型方向最大信息包规格(字节)001控制输出控制输入默认默认输出输入1616123普通输出普通输入普通普通输出输入161624同步输入同步输入表2.5 模式3(同步输入/输出模式)端点数端点索引传输类型端点类型方向最大信息包规格(字节)001控制输出控制输入默认默认输出输入1616123普通输出普通输入普通普通输出输入1616245同步输出同步输入同步同步输出输入表格说明:主端点(端点2)在有些方面是比较特别的,它是进行吞吐大数据的主要端点,同样地它执行主机的特性以减轻传输大数据的任务: 1、双缓冲,允许USB与本地CPU之间的并行读写操作,这样就增加了数据的吞吐量缓冲区切换是自动处理的,这导致了透明的缓冲区操作。 2、支持DMA(直接存储器访问)操作,可以和对其它端点的正常 I/O 操作交叉进行。 3、DMA操作中的自动指针处理。在跨过缓冲区边界时不需要本地CPU的干预。 4、可配置为同步传输或非同步(批量和中断)传输7。2.4.4 芯片引脚配置PDIUSBD12芯片采用TSSOP28塑料极小型封装,一共28个引脚,本体宽度为4.4mm。图2.2 芯片引脚配置下面对其引脚和命令字作具体说明。 表4.6 PDIUSBD12芯片引脚说明管脚符号类型描述1DATAIO2双向数据位02DATAIO2双向数据位13DATAIO2双向数据位24DATAIO2双向数据位35GNDP地6DATAIO2双向数据位47DATAIO2双向数据位58DATAIO2双向数据位69DATAIO2双向数据位710ALEI在多路地址/数据总线中,下降沿关闭地址信息锁存。将其固定为低电平用于单地址/数据总线配置11CS_NI片选(低有效)12SUSPENDI,OD4器件处于挂起状态13CLKOUTO2可编程时钟输出14INT_NOD4中断(低有效)15RD_NI读选通(低有效)16WR_NI写选通(低有效)17DMREQO4DMA请求18DMACK_NIDMA应答(低有效)19EOT_NIDMA传输结束(低有效)。EOT_N仅当DMACK_N和RD_N或WR_N一起激活才有效20RESET_NI复位(低有效且不同步)。片内上电复位电路,该管脚可固定接VCC21GL_NOD8GoodLinkLED指示器(低有效)22XTAL1I晶振连接端1(6MHz)23XTAL2O晶振连接端2(6MHz)。如果采用外部时钟信号取代晶振,可连接XTAL1,XTAL2应当悬空24VCCP电源电压(4.0V-5.5V),要使器件工作在3.3V,对VCC和脚都提供3.3V25D+AUSB D-数据线26D-AUSB D+数据线27P3.3V调整输出。要使器件工作在3.3V,对VCC和脚都提供3.3V28A0I地址位。A0=1选择命令指令,A0=0选择数据。该位在多路地址/数据总线配置时应接高电平注:O2:2mA驱动输出OD4:4mA驱动开漏输出OD8:8mA驱动开漏输出 IO2:4mA输出随着科技的发展,芯片集成度越来越高,封装也变得越来越小,PDIUSBD12芯片不是采用标准DIP直插的引脚,因而需要有一个SOP转DIP的转接板,这样方便采用电路板设计硬件电路,同时也方便程序下载完成后系统的调试。即使有了转接板,采用贴片封装的PDIUSBD12芯片也需要手工焊接在转接板上,这一点需要特别注意,不能长时间焊接,以免芯片过热以致损坏。PDIUSBD12与一般需要提供时钟信号的芯片不同,该芯片需要标准的6MHz的时钟信号,因而采用晶振的时候需要特别注意,不能随意选择,这一点与51系列单片机能有选择的采用晶振的情况不同。芯片内部有各个寄存器,根据寄存器相关命令编写C语言程序(可以采用由局部到整体的方法),这样对USB传输协议的认识更清楚,程序流程也容易理解,脉络清晰。在程序中,Main函数作为程序设备Reset时的程序入口,调用了一些初始化设备的函数,比如各种寄存器如中断寄存器,定时器,计数器等,初始化D12芯片并完成连接等工作,然后程序进入循环等待阶段,等待着中断的发生。由于没有采用PCB制板,手工焊接要十分注意电源干扰的问题,电源和地之间要加上滤波电容。USB接口芯片与单片机之间的引线要尽量短,本设计采用并行传输,数据传输占用了8个IO口,个引脚连线要尽量平行,避免交叉,以免信号线相互干扰,造成数据传输不争取或者USB总线不能正常复位。PDIUSBD12芯片的GoodLinkLED指示器短接普通发光二极管时,要注意连接限流电阻,不能超过该芯片的输入电流额定值,否则可能造成芯片工作不正常,并且与电脑或者其他USB Host 芯片不能正常建立连接。对该芯片的各个管脚和具体功能建立了一定认识的基础上,就能顺利完成各部分硬件电路的设计和软件功能调试。第3章 系统硬件设计本章对系统硬件部分的设计作出了详细的介绍,主要是51单片机外围电路设计,键盘设计,PDIUSBD12芯片的外围电路及其与单片机的接口设计。并给出了PDIUSBD12的时序说明。3.1 单片机硬件设计3.1.1系统供电本设计采用的单片机芯片为STC89C52,这是新一代超强抗干扰、高速、低功耗的单片机,指令代码完全兼容传统的8051单片机。烧写程序代码时需要有一个上电握手过程,因而下载程序时不能采用USB供电,否则可能导致下载失败。因而需要在设计时需要有一个外接电源。电源采用常规的L7805稳压芯片供电。用78系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。系统正常工作时,7805输出电流不大,因而可以不加散热片,下图为稳压电路图: 图3.1 电源电路电路C14、C15和C16分别为输入端和输出端滤波电容,保证系统供电稳定。程序烧写完毕,利用USB连接线将该系统与PC机成功连接后,复位单片机,PC机提示发现新硬件(人体输入学设备)后,说明系统能正常运行,这时可以移除外接电源,采用USB接口供电。USB口最大能提供500 mA电流,足够驱动单片机及其外围电路工作。3.1.2单片机电路设计系统控制芯片为STC89C52,单片机外围器件连接如下图:图3.2 单片机外围电路系统采用22.1184MHz晶振,该晶振结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快,实时性越好。单片机在开机时都需要复位,以便中央处理器CPU以及其他功能部件都处于一个确定的初始状态,并从这个状态开始工作。STC89C51系列单片机的RST引脚是复位信号的输入端。复位信号是高电平有效,持续时间要有24个时钟周期以上。上电复位时可接大约10K的下拉电阻。将P0口与PDIUSBD12连接,实际是一个并行接口。PDIUSBD12带有一个普通的并行接口,易于使用,快速而且可以与主流的微控制器直接接口。对一个微控制器而言 PDIUSBD12 看起来就象一个带 8 位数据总线和一个地址位占用2个位置的存储器件。STC89C52的多位地址和数据总线可直接与 PDIUSBD12 的数据总线相连。将P0口作为数据传输接口时,需加10K上拉电阻。LED0、LED1、LED3为键盘上的指示灯,分别代表Num Lock、Caps Lock、Scroll Lock。当按键有对应的按键事件发生时,相应的灯会亮起,以指示用户当前的键盘操作状态。3.2 键盘设计将按键安装在手套里面,手指触手可及,不必寻找按键,操作方便,而且方便携带,这是本设计的一大特色,电路设计如下:图3.3 键盘设计电路键盘部分的设计基于左右手的规则,左右手的大拇指负责切换输入模式,可选高电平触发和低电平触发,这样,两个按键可以实现四种模式的切换,其余各键设置为低电平触发,正常输入字符。将键盘引线接在单片机上,单片机实时扫描按键,分析是否有按键事件发生,如果有按键按下,根据按下的按键和模式按键计算具体键值,将处理好的键值送USB接口芯片处理,这样完成一次按键检测过程。按键检测部分实时性要求很高,如果采用单一判断单片机的IO口高低电平,由于程序流程多,完成一次按键检测延时很大,无法达到设计的要求,因而可以在软件部分利用单片机的定时计数器,每隔一定的时间对键盘检测一次,具体参见软件设计部分的内容。3.3 PDIUSBD12驱动电路3.3.1 USB接口芯片电路PDIUSBD12与单片机的接口电路上文已作出说明,本设计中PDIUSBD12所用晶振为6MHz,这是根据芯片手册的要求而设计。电路原理图如下:图3.4 PDIUSBD12外围电路3.3.2 USB接口芯片电路说明芯片的ALE将其固定为低电平用于单地址/数据总线配置。CS_N为片选,低有效,因而也接低电平。SUSPEND接低电平是防止总线挂起,使器件一直处于工作状态。RD_N(读选通)和WR_N(写选通)直接与单片机的 连接,控制方便。DMREQ为DMA请求端,DMACK_N为DMA应答端(低有效),EOT_N为DMA传输结束端(低有效),且EOT_N仅当DMACK_N和RD_N或WR_N一起激活时才有效。将这三个端口通过1K电阻接高电平即可。接口芯片采用USB口供电,该系统有一个电源指示灯LED3和一个通讯指示灯LED4。其中LED4接21引脚,在枚举中LED指示根据通信的状况间歇闪烁。当PDIUSBD12成功地枚举和配置后LED指示将一直点亮,随后与PDIUSBD12 之间成功的传输(带应答)将关闭LED,处于挂起状态时,LED 将会关闭。 该特性为USB 器件,集线器和USB通信状态提供了用户友好的指示。作为一个诊断工具,它对隔离故障的设备是很有用的。该特性降低了现场支持和热线的成本。 3.4 串行口电路串行口电路采用常规的max232电平转换芯片,该芯片只需外接4个1uF电容。MAX232芯片是Maxim公司生产的低功耗、单电源双RS232发送/接收器,它的内部有一个电源电压变换器,可以把输入的+5V电源变换成RS-232C输出电平所需10V电压,所以采用此芯片接口的串行通信系统只要单一的+5V电源就可以了。串行口支持以下通信速率:300,1200,2400,4800,9600,19200,38400,57600,115200bps。STC89C52与MAX232的接口电路如下图所示,改电路可用于单片机下载程序,也可用于将系统运行过程中传送的信息上传至PC机观察,便于调试。 图3.5 MAX232串口通信电路第4章 系统软件设计单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,机器汇编是通过汇编软件将源程序变为机器码。随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。Keil软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到其生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。本设计采用的开发环境为Keil uVision3,开发语言为C语言。C语言是一个通用的编程语言,它提供高效的代码,结构化的编程和丰富的操作符。C不是一种大语言,不是为任何特殊应用领域而设计。它一般来说限制较少,可以为各种软件任务提供方便和有效的编程。许多应用用C比其他语言编程更方便和有效。与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。软件设计部分主要是要处理好按键扫描和USB接口芯片的数据传输问题,按键扫描部分利用单片机监测处理,实时性好。以下为各部分软件设计的详细介绍。4.1按键处理部分按键处理是本设计的关键部分,如果单片机在处理按键时出现各种错误,比如按键连击,按键键值串扰,检测不到按键,那么整个系统将变得不可靠,手指键盘输入时发生错误的概率增大,系统稳定性减小,这是应该避免的。按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。如果采用专门的硬件电路检测按键,这样设计会使得电路变得复杂,成本增加,编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路,这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖。本设计采用软件去抖。开始4.1.1 按键处理流程5ms中断时间到读取键值Y按键与上次相同?N判断模式正确?N键值处理YUSB接口忙?YN发送按键值图4.1 按键处理流程图4.1.2 按键检测代码实现该按键检测功能的主要程序代码:void Timer0Isr(void) interrupt 1 /定时器0重装,定时间隔为5ms,加15是为了修正重装所花费时间 TH0=(65536-clk/1000/12*5+15)/256; TL0=(65536-clk/1000/12*5+15)%256; if(!KeyCanChange)return; /如果正在处理按键,则不再扫描键盘 KeyCurrent=GetKeyValue(); /读取键值,GetKeyValue()是个宏,不是函数,if(P20=0)&(P21=0)if(KeyCurrent!=0xff)KeyOld=KeyCurrent;KeyPress=KeyOld; flag=0; else if(P20=0)&(P21=1)if(KeyCurrent!=0xff)KeyOld=KeyCurrent;KeyPress=KeyOld; flag=7; else if(P20=1)&(P21=0)if(KeyCurrent!=0xff)KeyOld=KeyCurrent;KeyPress=KeyOld; flag=14;else if(P20=1)&(P21=1)if(KeyCurrent!=0xff)KeyOld=KeyCurrent;KeyPress=KeyOld; flag=21; else KeyPress=0;4.1.3 键盘操作说明根据键盘检测部分的程序代码,得出下表,为手指按键具体操作对应表表3.1 手指按键对应表S1S2S3S4S5左小指左无名指左中指左食指左大拇指S6S7S8S9S10右大拇指右食指右中指右无名指右小指左右大拇指按键用于切换输入功能,具体说明见下表:表3.2按键切换功能表按键状态(S7-S8)按键输入S2 S3 S4 S5 S9 S10 S11 S12低-低a-b-c-d-e-f-g-h低-高i-j-k-l-m-n-o-p高-低q-r-s-t-u-v-w-x高-高y-z-ENT-CAPS-Shift-back-space-Alt注:高低代表按键接高电平或者低电平的状态,在手指键盘上反映出来就是按键按下或者没有按下的状态,按下为低电平,未按下为高电平。在程序中反映出来为以下判断语句,根据不同的状态返回不同的按键值。if(P20=0)&(P21=0)else if(P20=0)&(P21=1)else if(P20=1)&(P21=0)else if(P20=1)&(P21=1)4.2 USB接口部分主机对一个USB设备的识别是经过一个枚举的过程来完成的,主机的总线枚举器随时监控必要的设备状态变化。总线枚举的过程如下:(1)设备连接。USB设备经USB总线连接主机。(2)设备上电。USB设备可以自供电,也可以使用USB总线供电。(3)主机检测到设备,发出复位。主机通过检测设备在总线的上拉电阻检测到有新的设备连接,并获释设备是全速设备还是低速设备,然后向该端口发送一个复位信号。(4)设备默认状态。设备从总线上接收到一个复位信号后,才可以对总线的处理操作做出响应。设备接收到复位信号后,就暂时使用默认地址(00H)来响应主机的命令。(5)地址分配。当主机接收到有设备对默认地址(00H)响应的时候,就分配给设备一个空闲的地址,以后设备就只对该地址进行响应。(6)读取USB设备描述符。主机读取USB设备描述符,确认USB设备的属性。(7)设备配置。主机依照读取的USB设备描述符来进行配置,如果设备所需的USB资源得以满足,就发送配置命令给USB设备,表示配置完毕。(8)挂起。如果使用总线供电,为了节省电源,当总线保持空闲状态超过3ms以后,设备驱动程序就会

温馨提示

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

评论

0/150

提交评论