欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    1546.基于USB的串行通信软硬件设计-----毕业论文.doc

    • 资源ID:3899710       资源大小:5.84MB        全文页数:46页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    1546.基于USB的串行通信软硬件设计-----毕业论文.doc

    基于USB的串行通信软硬件设计1 引言在工业控制和数据采集系统中,单片机以其低成本,编程灵活、方便,实时性强和具有一定的智能而得到了广泛的应用。然而,许多复杂任务的实现,如人机对话、任务的切换、算法的实现、大数据的运算等,单片机就显得有些力不从心,而PC机在这方面却有强大的优势。这就需要将它们组合成系统,让单片机只管控制执行机构和进行数据采集与传输;PC机将数据进行处理,实现功能。这就涉及到单片机与PC机之间的通讯问题,在需要实时传递和处理声音和图象等大批数据的时候,普通的通信方式难以满足要求。这就为数据采集系统的设计提出了两个方面的要求:一方面,要求接口简单灵活且有较高的数据传输率;另一方面,由于数据量通常都较大,要求主机能够对实时数据做出快速响应,并及时进行分析和处理,并在单片机和PC机之间进行高速和可靠的通讯。传统的外设与主机的通信接口难以满足上述第一个方面的要求,这些接口一般采用PCI布部线或RS-232串行总线。PCI总线虽然有很高的传输率(可达132Mbps),还能“即插即用”,但是它们的扩充槽相当有限,且插拔并不方便;RS-232串行总线虽然连接方便,可是它的带宽非常有限,传输速度太慢,而且1条RS-232串口通信电缆只能连接1个物理设备。USB技术正是顺应这一要求提出的,它集PCI和RS-232的优点于一身:具有较高的传输速率(USB协议1.1支持最高传输速度达12Mbps,USB协议2.0支持最高传输速度可达480Mbps),实现了真正意义上的“即插即用”(Plug & Play),同时USB上最多可以连接127个外设,解决了如资源冲突、中断请求(IRQs)和直接数据通道(DMAs)等问题。因此,USB技术非常适合实时数据采集的场合,是目前较为流行的通讯方式。从应用方面来看,国外通用串行总线USB因其具备高速传输,即插即用等诸多优点,在各个领域得到了广泛应用;国内USB总线已经得到了控制工程师的普遍关注,由于其通信协议比较复杂,相关的研究成果还比较少,特别是USB与目前最具竞争力的工业微控制器(PIC单片机)通信的应用范例还很匮乏。本设计基于USB设计出了一套既简单又实用的串行通信程序,并制作了一个压力数据采集及实时显示的硬件电路对其进行了实例验证。设计选用美国微芯公司(Microchip)的主要产品PIC16F877单片机为主控制器,PC机的程序设计采用可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言Visual Basic。本设计作品能实现如下几项功能:1. 压力信号经精密放大电路后输入单片机进行A/D转换;2. 单片机对采集到的信号进行抗干扰处理和显示;3. 单片机将采集到的数据实时送入PC机;4. PC机对所得数据运算后列表显示并录入数据库;5. 单片机查询来自PC机的实时指令,并执行相应动作。图11 基于USB的高速数据采集系统示意图图11为基于USB的高速数据采集系统示意图,就本设计而言,传感器接收压力信号,PIC单片机的I/O控制口包括与USB100模块通信的标志位端口及LED显示输出口。2 总体规划数据采集是现代控制系统必不可少的控制任务,通用串行总线(USB)因具有传输速率快、接口简单、支持即插即用(Plug & Play)和使用维护方便等特点在控制领域具有广泛的应用前景。本设计以压力数据采集任务为载体,深入的学习和探讨了基于USB的串行通信的实现问题。本设计包括硬件接口设计和软件编程两个方面,软硬件结合能实现如图21所示的功能: 4位LED显示 VB的列表显示及数据库录入 PIC单片机将采集到的数据10个一组进行累加处理 PIC模数转换端口RA0 压力模拟信号 A/D转换 输入 输出 (a) 数据采集任务实现4位LED显示PIC单片机VB发送数据 (b) 控制任务实现图21 作品功能示意图2.1 USB接口及芯片选择2.1.1 USB接口当今的计算机外部设备,都在追求高速度和高通用性。为了满足用户的需求,以Intel为首的七家公司于1994年推出了USB(Universal Serial Bus通用串行总线)总线协议,专用于低、中速的计算机外设。目前,USB端口已成为了微机主板的标准端口;而在不久的将来,所有的微机外设,包括键盘、鼠标、显示器、打印机、数字相机、扫描仪和游戏柄等等,都将通过USB与主机相连。这种连接较以往普通并口和串口的连接而言,USB接口【1】的优势主要表现在以下几个方面: 1.使用方便,连接外设不必再打开机箱;允许外设热插拔,而不必关闭主机电源。2.速度快,USB支持三种设备传输速率:1.5 Mb/s(低速设备)、12 Mb/s(中速设备)480 Mb/s(高速设备)。3.独立供电,USB接口提供了内置电源。4.连接灵活,一个USB口理论上可以连接127个USB设备。连接的方式也十分灵活,既可以使用 串行连接,也可以使用集线器Hub,把多个设备连接在一起,再同PC机的USB口相接。5.成本低,为了把外设连接到PC上,USB提供了一种低成本的解决方案。综合上述我决定采用USB接口。2.1.2 USB100模块与同类产品的比较从网上收集到的资料整理结果如表21所示: 表21 USB100模块与相同功能产品的比较相同功能产品比较产品名称USB100模块JaRa 2201 I-7560CHTU-V20图片支持版本USB 1.1 标准USB(Universal Serial Bus)Rev.1.0 兼容USB 1.1 标准USB(Universal Serial Bus)Rev.1.0 兼容传输速率8Mbps230Kbps115.2K bps230Kbps对操作系统的要求Windows 98/ME/ 2000/ XPWindows95/98/2000/XPWindows 98/ME/2000/XP 及LinuxWindows95/98/2000/XP价格(元)98695970分析后不难发现:USB100模块在传输速率上具有突出优势,对系统没有特殊的要求,是其中性价比最高的一款芯片,且能满足本设计高速数据传输的要求。2.1.3 USB接口控制芯片介绍USB接口控制芯片分类【2】说明如下:1. 按传输速度的高低:低速(1.5Mbps)和全速(12Mbps)可选USB1.1接口芯片,例如Philips公司的PDIUSBD12、Cypress公司的EZ-USB2100系列和迅通公司的USB100;高速(480Mbps)可选USB2.0接口芯片,例如Philips公司的ISP1581、Cypress公司的CY7C68013和迅通公司的USB130。2. 是否带MCU(微控制器):一般Philips公司的都不带MCU,Cypress公司大多都带,例如AN2131。3. 是否带主控器功能:不需要主机参与,主从设备间可进行数据传输的芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。还有专门用途USB芯片,例如闪存专用芯片IC1114。工程中用户可根据自己的需求选择一款性价比高的芯片。另外可用开发资源也是要考虑的重要方面,例如开发板和芯片厂商提供的网上资源,可大大降低开发的难度。2.2 微控制器选型当今微控制器的种类很多,从生产厂家来说有几十家,例如:美国Intel公司,TI公司、美国微芯公司、韩国现代(LG)公司、台湾义隆公司和凌阳公司等。下面通过对当前流行的3类微控制器的介绍,阐述选择PIC单片机的依据。2.2.1 凌阳16位单片机随着单片机功能集成化的发展,其应用领域也逐渐地由传统控制扩展为控制处理、数据处理以及数字信号处理(DSP,Digital Signal Processing)等领域。凌阳的16位单片机就是为适应这种发展而设计的。它的CPU内核采用凌阳最新推出的µnSP(Microcontroller and Signal Processor)16位微处理器芯片(以下简称µnSP)。围绕µnSP所形成的16位µnSP系列单片机(以下简称µnSP家族)采用的是模块式集成结构,µnSP内核是一个通用的核结构,以µnSP内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件,这种结构可大可小或可有可无。借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合,这样做使每一种派生产品具有更强的功能和更低的成本。从目前的应用来看,凌阳16位单片机的优势在于它具有强大的语音处理功能。然而,它在工业控制现场的应用案例较少,在控制领域并不具备突出的竞争力。最重要的是,凌阳公司在国内的技术推广才刚开始,本科四年对凌阳单片机的了解还十分有限,在毕业设计期间化大量时间学习单片机的基础知识显然很不合适。2.2.2 MCS-51系列单片机传统的51系列微控制器,在国内使用时间比较长,开发所需的资料也比较多,但其片内资源较少,在外围电路中需加入多种模块,如:A/D转换器、PWM、RAM和ROM存储器等。它的优点是外围电路易于扩展,尤其是存储器的容量可以按需求增大,缺点是在线调试程序不方便。如果应用到本设计中,外围扩展电路比较复杂,电路板空间和制造成本较大,而且在硬件电路的制做和调试方面也有一定的困难。2.2.3 PIC系列单片机PIC系列单片机是美国微芯公司(Microchip)的主要产品,有PIC16系列、PIC17系列、PIC18系列等。PIC系列单片机CPU采用RISC结构,它具有运行速度快、工作电压低、功耗低、较大的输入输出直接驱动能力、价格低和体积小等优点。本设计选用的PIC16F877 单片机是PIC系列的中档产品,其内部资源非常丰富,含有8K的FLASH程序存储器、368B的RAM数据存储器、256B的EEPROM数据存储器、8通道10位A/D转换器、3个定时器、2个捕捉/比较/脉宽调制、1个同步串行端口SPI和通用同步/异步收发器 USART等。另外,它具有外围接口电路简单、工作性能稳定等特点。本设计选择该芯片作为下位机控制的核心,利用上述丰富的资源来完成A/D转换、收发数据、输出显示信号等处理和指定的控制任务。 2.3 压力传感器选型2.3.1 选型综述传感器(Sensor)是将各种非电量(包括物理量、化学量和生物量等)按一定规律转换成易于处理和传输的另一种物理量(一般为电量)的装置。在本设计中使用了压力传感器,它是力的测试中最关键的装置。它的种类繁多,有电容式、压阻式、差动变压器式、压电式、电阻应变式等。本设计选用的应变片式差压测力传感器,它具有灵敏度高、线性度和稳定性好、结构简单、动态性能优良等优点,广泛应用于力的测试中,其常见外观如图22所示: (a)柱形 (b) 悬臂梁形图22 电阻应变式测力传感器2.3.2 压力传感器参数压力传感器是把压力转换成电信号的传感器,用半导体材料制成的压力传感器称为半导体压力传感器,由于其体积小、重量轻、灵敏度高、功耗小、便于集成等优点,发展十分迅速,应用也很广泛。在本设计的过程中选用了S形双弯曲梁应变片式测力传感器,其的结构示意图如图23所示:图23 S形双弯曲梁压力传感器结构示意图S形双弯曲梁应变片式测力传感器主要参数如下:额定载荷:3kg额定输出:1.3mV/V输入电阻:350输出电阻:350非线性:0.01%F.S滞后:0.015%F.S重复性:0.01%F.S安全过载能力:150%由于S形双弯曲梁应变片式测力传感器的结构是双连孔型的,粘贴应变片处比较薄,应变大,灵敏度高,而其他部位较厚,故强度、刚度好的特点,所以试验中选择它作为压力传感器。S形双弯曲梁应变测力传感器和PIC16F877单片机相结合组成的测力系统,它具有实时数据采集和LED显示功能。传感器弹性体为双弯曲悬臂梁,四片应变片分别贴于梁的上下两表面组成全桥电路,当受到载荷W作用时,R1、R2受拉伸,阻值增加;R3,R4受压缩,阻值减小,电桥失去平衡,并产生电压U输出,且U与W成正比。2.4 数据采集电路通信程序的正确与否只有检验之后才能定论,考虑到实用性,本设计选择压力传感器检测的压力数据作为通信的数据源。这样既增强了设计的实用性,又便于对通信成功与否的评估。由于压力传感器精度很高,但其输出的电压信号差值很微弱,需经过放大电路之后,才能送到微控制器处理。在制作过程中,分别尝试了以下两种方案:2.4.1 初步方案压力模拟信号放大电路的原理如图24所示:图24 压力模拟信号放大电路原理图在第一级放大电路中,Rf=20K,R1=510,放大电路的放大倍数接近40倍,第二级放大电路中,无论电位器如何调整输出电压范围,所得的压力信号变化范围始终不会超过1V,而且调整第一级放大电路的放大倍数仍无法达到满意的结果。通过请教老师和查阅相关资料了解到:两级放大电路第二级放大倍数不能过大,一般为1倍,只有这样才能保证放大电路的稳定性。2.4.2 精密放大电路认真分析上述试验结果后发现:由于本设计选用的压力传感器输出的比较电压信号变化范围小,必须增大放大倍数,传统的一级放大和两级放大电路很难调试出满意的结果。本设计改用由三个运算放大器组成的精密放大电路【3】,其原理如图25所示:图25 精密放大电路原理图输出电压(21)本设计中,R2为1K的滑动变阻器,试验调整后正常工作是阻值为210,R、 R1、Rf的阻值分别为820、12K和3.3K。此电路可以放大差模信号,抑制共模信号。差模放大倍数值愈大,共模抑制比愈高。当输入信号中含有共模信号时,也将被抑制。由式21可见,放大倍数约为460。3 USB100模块3.1 USB100模块的功能3.1.1 USB100模块的特点USB100 是目前开发最为方便的USB 接口产品,用户无需编写驱动程序,对USB的操作就变成了类似于对外部存储器的操作,由USB100模块完成全部协议的转换和封装,只要有:单片机和PC 应用程序的基本知识,就可以很快地开发好USB 接口和数据采集等产品,开发过程十分简单。USB100模块是完全集成化的USB接口模块,完全满足USB1.1标准,具有8位单片机总线接口,内部多达384字节的发送缓冲区和128字节的接收缓冲区,数据通讯速率最高可达8Mbit/S。性能可靠,特别适合工业控制场合。在单片机系统中,USB100通讯模块作为单片机的并行接口芯片,两者有机结合,构成了下位机的USB通讯接口。USB100模块提供两种PC机应用程序编程【4】:虚拟串口方式和动态连结库方式。 1. 虚拟串口方式下,用户在PC机上安装USB100模块专用虚拟串口驱动程序之后,USB100即可作为PC机上的一个标准设备,可以按照与操作串口完全一样的方法来编程。 2. 在动态连结库方式下,用户要在PC机上安装USB100模块专用动态连结库,安装之后,USB100即成为PC机的一个标准外设,编程时调用API函数发送和接收数据。3.1.2 USB100的引脚图及功能USB100的管脚排列图如图31所示,数据口(D0D7)是8位双向I/O口,它以并行方式与微控制器交换数据。 RD:允许内部接收缓冲区数据通过8位并行总线读出。WR:将8位并行总线上的数据锁存入内部缓冲区。图31 USB100引脚图TXE:高表示模块发送缓冲区已满;低表示发送缓冲区为空,可以发送数据。RXF:高表示模块没有数据输出;低表示模块有数据输出,可以读数据。USBVCC:USB接口的电源脚。D+:USB数据脚。D-:USB数据脚。GND:电源脚。VCC:+5V输出,可提供给外部MCU使用,最大400mANC:空管脚。3.2 USB100模块的控制时序3.2.1 单片机发送数据时序发送时序【5】如图3-2所示,当单片机检测到USB100模块TXE为低时,表示内部发送缓冲区允许发送数据,可以将数据通过八位数据总线D0D7发给USB100模块,发送数据锁存由WR控制;USB100模块TXE为高时,禁止发送数据。图3-2 单片机发送数据时序图3.2.2 单片机接收数据时序接收时序【5】如图3-3所示,当单片机检测到USB100模块RXE为低时,表示内部接收缓冲区有数据,可以通过八位数据总线D0D7将数据读入发送给USB100模块,接收数据锁存由RD控制。 图3-3 单片机接收数据时序图43.3 USB100模块的典型应用电路查阅相关资料整理分析后认为:图3-4为最有价值的PIC单片机与USB100模块通信的原理图【6】,其可取之处在于:1. 用USB自带的5V直流电源供电,减小了系统的硬件电路制作量,充分利用了现有的系统资源;2. USB传输线电源线(USBVCC)与地线之间加两级滤波电容,能有效的抑制传输过程中的噪音干扰;3. 单片机电源线与地线之间加0.1uF电容,可增强控制系统的抗干扰能力。图34 USB100模块与PIC单片机通信的典型应用电路当然上述参考电路也有一些需要完善的地方,具体体现在以下几个方面:1. 没有电源开关及保护电路,USB100模块的VCC输出最大电流为400mA,而PIC单片机的最大输出电流是200mA,将它及外围设备看作一个黑箱后不难发现:若不加过流保护,有可能因为短路等情况损坏PIC单片机。更严重的是:也可能由于硬件电路的短路等故障烧坏USB100模块,甚至损坏USB主机。2. 分析USB100模块的数据手册后发现:其标志位WR、RD、TXE和RXF可以接任意的I/O口,并不需要占用具有串行输入/输出功能的引脚RC6和RC7。这样为单片机之间的通信留下了空间,可以解决系统的增容和扩展问题。3. 通信过程I/O数据口及标志位口只需检测TTL电平的高低变化,考虑到某些未知的误操作可能损坏单片机和USB100模块的数据口,在接口部分可增加电阻,这样可以起到有效的过流保护作用。3.4 优化后的通信接口电路优化后的通信接口电路如图35所示: 图35 优化后的通信电路原理图本设计的特点是:1. USB100模块输出电源VCC先经过电源开关,接0.3A保险丝后为PIC单片机及其它用电器件供电。这样既为单片机安全用电提供了一定的保证,又为其它器件用电留下了余量。2. PIC单片机的电源线和地线之间接入LED指示电路,起到工作指示作用。它可以明确的反映出单片机是否有电源接入,并能起到相当好的电路自检作用。3. 复位电路中将电容换成了电阻,并装上了复位按钮,可以方便的执行复位操作。4. USB100的I/O数据口和标志位控制端子均接入1.8K的电阻,即使发生短路等严重事故输入输出电流也不会超过3mA,最大限度保证了电路的安全工作。4 单片机硬件设计4.1 PIC单片机美国Microchip技术公司的PIC系列单片机采用精简指令集计算机(RISCReduced Instruction Set Computer)、哈佛(Harvard)双总线和两级指令流水线结构的高性能价格比的8位嵌入式控制器(Embedded controller)。其高速度、低工作电压、低功耗、较大的输入输出直接驱动LED能力、一次性编程芯片的低价位、小体积、指令简单易学易用等特点,都体现了单片机工业发展的新趋势。在全球都可以看到PIC单片机在不同领域的广泛应用,它在世界单片机市场份额排名中逐年提前,以致已成为一种新的8位单片机的世界标准和最有影响力的主流嵌入式控制器,所以本设计选用PIC16F877作为主控制器。4.1.1 PIC单片机的特点PIC单片机的主要优点【7】表现在:1. PIC16F87X系列单片机都具有A/D转换功能,A/D转换器是采用逐次逼近法进行模数转换,转换的结果是10位数字量。另外PIC16F87X系列单片机的A/D转换具有一个独特的功能,就是在CPU休眠期间能照常工作。不过,此时的A/D转换时钟必须选择A/D内部的RC振荡器。2. 指令的“单字节化”。因为指令总线和数据总线是分离的,并且采用了不同的宽度,所以程序存储器ROM和数据存储器RAM的寻址空间是相对独立的,而且两种存储器宽度也不同。这样设计不仅可以确保数据的安全性,还能提高运行速度和实现全部指令的“单字节化”。而MCS51系列单片机的ROM和RAM宽度都是8位指令长度从1个字节(8位)到3个字节长度不一。3. 精简指令集(RISC)技术。PIC系列单片机的指令系统只有35条指令。这给指令的学习,记忆,理解带来很大的好处,也给程序的编写,阅读,调试,修改,交流带来极大的便利,真可谓易学好用。它不仅全部指令均为单字节指令,而且绝大多数指令为单周期指令以利于提高执行速度。4. 寻址方式简单。寻址方式就是寻找操作数的方法,PIC系列单片机只有4种寻址方式(即寄存器间接寻址,立即数寻址,直接寻址和位寻址),容易掌握。5. 运行速度高。由于采用了哈佛结构,又由于指令的读取和执行采用了流水作业方式,PIC系列单片机的运行速度大大提高。可知PIC系列单片机的运行速度远高于其它相同档次的单片机。在所有8位机中,PIC17C是目前世界上速度最快的品种之一。6. 功耗低。PIC系列单片机的功率消耗极底,有些型号的单片机在4MHz时钟下工作时耗电不超过2mA,在睡眠模式下低到1uA以下。7. 驱动能力强。I/O端口驱动负载的能力较强,每个I/O引脚输入和输出电流的最大值可分别达到25mA和20mA,能够直接驱动发光二极管、光电耦合器或者微型继电器等。8. 具备I²C和SPI串行总线端口:PIC系列单片机的一些型号具备I²C和SPI串行总线端口。I²C和SPI分别是由PHILIPS和MOTOROLA公司发明的芯片之间同步串行数据传输的两种串行总线技术,利用单片机串行总线端口可以方便灵活的扩展一些必要的外围器件。串行接口和串行总线的设置,不仅大大的简化了单片机应用系统的结构,而且还极易形成产品的模块化结构。9. 寻址空间设计简洁。PIC系列单片机的程序、堆栈和数据三者各自采用互相独立的寻址空间,而且前两者的地址安排不需要用户操心,这会受到初学者的喜欢。10. 外围电路简洁。PIC系列单片机内部集成了上电复位电路、I/O引脚上拉电路、看门狗定时器等,可以最大程度的减少或免用外围器件,以便实现“纯单片”应用。这样,不仅便于开发,而且还可节省用户的电路板空间和制造成本。11. 开发方便。芯片公司及其国内多家代理商,为应用开发提供了丰富多彩的硬件和软件支持。此外,微芯片公司还研制了多种版本的软件仿真器和软件综合开发环境,为爱好者学习与实践、应用与开发的实际操练提供了极大的方便。4.1.2 PIC16F877单片机引脚功能1. 电源和地线引脚PIC系列单片机一般采用5V电压,为了减少外界噪声的影响,将电源引脚和地线引脚放置芯片的中间。在本设计中选用的是PIC16F877单片机,属于PIC系列单片机中的中档系列,其引脚布置如图41所示。2. 主复位信号引脚复位信号引脚用于外部电路产生复位信号使PIC单片机产生复位,低电平有效。在对单片机编程时,此引脚作为编程电压的输入端。图41 PIC16F877 引脚图3. 输入/输出端口功能引脚 在PIC16F877微控制器中,有五个端口,每个端口引脚大部分都具有两种或三种功能复用;作为输入输出端口时,端口A、端口B、端口C、端口D和端口E都是双向IO口,端口B还可以通过编程设置为弱上拉输入。作为第二或第三功能端口,每个引脚功能都可能不同,主要包含有以下的几种功能:a). 用于A/D转换的模拟电压输入端和参考电压输入端;b). 用于定时器的时钟输入端和振荡器输出端;c). 用于串行通信的输入/输出端和时钟端;d). 并行从动端口和读/写,片选端口等。4. 振荡器输入输出线在PIC单片机中有一根振荡器输入引脚OSC1/CLKIN和一根振荡器输出引脚OSC2/CLKOUT,由于PIC单片机可以采用不同的振荡器,这使得两根引脚可以有不同的功能。采用晶体振荡器或陶瓷谐振器,将晶体振荡器的两脚直接接人OSC1/CLKIN和OSC2/CLKOUT;采用外部RC振荡器时,OSC1/CLKIN作为输入,OSC2/CLKOUT开路。在本设计中,为了和PC机进行串行通讯使频率稳定,使传送A/D转换的结果能正确接收,采用了标准晶体振荡器XT,频率为4MHz,原理如图42所示。在晶体振荡下,电阻Rf10M,所以线路电阻可忽略不及,C1=C2=20pF(C1相位调节电容;C2增益调节电容 )。图42 晶振电路工作原理图5. PIC16F877的引脚功能说明(见附表1)。4.2 单片机外围电路4.2.1 PIC单片机引脚分配PIC单片机外围电路如图44所示:图44 PIC单片机外围电路接线图由图可见,在本设计中,PIC16F877微控制器的引脚功能配置如下:1. 端口D作为LED输出接口显示控制;2. RA0口为压力模拟信号输入端;3. RA1和RA2为USB100模块的标志位RXF和TXE;4. RA3和RC7为USB100模块的存入(WR)和读出(RD)标志位;5. 端口RC0、RC1、RC2、RC3分别为4位LED动态显示的片选控制端;6. B口作为USB100模块的数字I/O口;7. RA5可以根据编程设置,起到工作状态监视作用。4.2.2 显示部分电路原理为了验证通信结果的正确性,必须增加有效的手段测试PIC单片机接收到的数据正确与否,而最简单且可行的方法就是增加LED显示部分。考虑到压力显示精度和显示范围等因素,本设计选用4位共阴极LED数码管,其引脚图如图45所示:图45 4位LED引脚图此类数码管的工作特点是:1. 数码管片选端清0时,对应位的数码管才有可能亮;2. 每次只能有一个片选端清0,即只能动态移位显示相应的数据;3. 单片机控制数码管显示相应数字要用查表子程序来实现。显示部分电路原理见附录C,该原理图主要涉及到数码管限流电阻的接法及大小的确定。PIC单片机I/O口的输出电压为5V,最大输入电流为25mA;每段数码管的正常工作电压为1V左右,电流应小于10mA。为了使整个显示部分安全工作,必须为每段数码管加限流电阻。常用的办法是在adp端分别串入一个100的电阻,考虑到PIC端口的驱动能力【7】为6070mA,在试验过程中我改用200的限流电阻后发现:显示数码管的亮度适中,完全可以满足实际需求。改进后的试验显示电路可以减小显示控制端口的输入电流,从而保证了PIC其它端口的正常工作。此电路的程序设计要求是:不能在保持原输出数据的情况下,常时间持续执行其它控制任务。在本设计中,用显示程序来替换其它任务中必要的延时子程序,从而实现了数据显示的连续性,而且不会影响其它控制任务的正确执行。5 单片机程序设计本设计选用PIC单片机作为下位机,它的程序设计是本设计的重点,也是难点。这不仅要求熟悉PIC单片机编程的有关知识,还要求根据USB100的数据手册试验出一套实用的通信协议程序模块。在设计制作的过程中,考虑到实际需求增加了压力采集模块和LED显示部分,使本设计的实用性得到了增强。同时,为了提高编程效率,增强程序的可读性,设计中的程序采用C语言编写。5.1 PICC编程特点PICC具有许多特殊的性质,并且进行了C语言的扩展,从而可以更轻松地完成编程任务。PICC与ANSI C标准的区别在于函数的递归调用【8】,即编程中不能出现if()break或if()continue语句。这是因为PIC受硬件的限制没有堆栈,内存的数量也有限。通过3种不同的技术,可以实现C语言和汇编语言的混合编程:1. 外部汇编函数,PICC中函数可以完全用汇编语言编写,作为独立的.as文件由汇编器(ASPIC)汇编后,再使用链接器将它合并成二进制映像。2. 在汇编程序内访问C变量,通过在变量名前加下划线“_”,汇编程序可以直接访问C全局变量。3. asm,endasm及asm()指令,asm和endasm指令分别用于嵌入汇编程序块的开头和结尾;asm()用于将单条汇编指令嵌入到编译器生成的代码中。注意:asm结构并非C程序的语法部分,所以不服从C的流程规则。例如,在if语句中使用asm块,并试图让它正常工作是不可能的。5.2 LED显示程序模块分析LED引脚图不难发现,各数码管控制线采用共享的方式,所以数码管显示功能的实现必须采用动态扫描的方式,其显示子程序流程如图51所示。该子程序完成4位LED数码管动态显示的任务,显示的数值为data/1000,片选控制端低电平有效。RC1、RC2、RC3、RC0分别为4位LED的片选14,其中片选1表示最高位,片选4表示最低位。每次片选显示后需加100us的延时子程序,在下一位选中时先要将其它端置1。值得注意的是:PICC可以方便的执行位操作,所以C口片选端的选中可由位操作来实现。图51 显示程序流程图5.3 通信模块5.3.1 发送模块与发送模块有关的标志位为RA2和RA3,发送数据控制流程如图52所示:图52 发送数据控制流程图该程序模块能将字符型数据正确的发送到PC机,由VB处理后显示,相关的VB程序部分在第6章中论述。5.3.2 接收模块与接收模块有关的标志位为RA1和RC7,接收数据控制流程如图53所示,该程序模块能正确的接收VB发送的二进制数据,并由全局变量将其值传出。图53 接收数据控制流程图说明:以上程序在设计中均涉及到C语言和汇编语言的混合编程问题、有参函数使用问题及函数形参的作用域问题。1. 为了保证收发数据的安全,在收发数据过程中加入空操作是非常必要的;2. 从函数的形式看,函数分两类:无参函数和有参函数【9】。在调用函数时,在主调函数和被调用函数之间有数据传递。也就是说,主调函数可以将数据传给被调用函数使用,被调用函数中的数据也可以带回来供主调函数使用。3. 在定义函数时函数名后面括号中的变量名称为“形式参数”,简称“形参”。在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存。只有在发生函数调用时,函数中的形参才被分配内存单元;在调用结束后,形参所占的内存单元也被释放。5.4 压力数据采集模块压力数据采集主要包括两个方面:A/D转换和数据处理。5.4.1 A/D转换流程A/D转换的种类繁多,工作原理各异,但逐次比较型A/D转换是应用较多的类型之一,其主要原因是该类型的A/D转换速度快、精度高。逐次比较型A/D转换由采样保持电路、电压比较器、逐次比较寄存器、数/模转换器和锁存器等部分组成。PIC16F877单片机具有8个A/D模拟输入通道,器件内所有模拟输入通道均有采样保持转换器,采用逐次逼近法产生模拟电平的数字结果,模拟输入信号的A/D转换结果为对应的10位数字,参考电压为5V。在本设计中,实际用到的模拟通道只有模拟信号输入端口RA0,A/D转换流程如图5-4所示:图54 A/D转换流程图由图54可见,A/D转换的工作过程分如下几个步骤:1. 选择RA0为A/D转换通道,使能A/D转换,ADCON0=0X41;2. 转换结果右对齐,RA0为模拟输入方式,ADCON1=0X8E;3. 清A/D转换标志位,ADIF=0;4. 启动A/D转换,ADGO=1; 5. 判断是否进行了A/D转换,即ADIF是否为1。若ADIF=1,则将A/D转换的结果存入外部寄存器;5.4.2 数据处理模块单片机对采集数据的处理包括以下几个方面:1. 将十次A/D转换的结果累加存入寄存器sum;2. 将sum经运算处理后送显示子程序显示;3. 用标准砝码对显示值进行校正(通过改进运算处理的算法来实现)。数据处理程序如下: for(i=1;i<11;) while(!ADIF); d=ADRESH; e=ADRESL; sum+=d*256+e; i+; ADIF=0; ADGO=1; if(sum<6998) c=(6998-sum)*5/9; /标定 else c=0;/防止发生溢出上述处理具有以下优点:1. 将10次A/D转换的结果运算后送出显示可以防止数据传输中的尖峰干扰,但降低了显示程序的动态性能。然而,由于10次A/D转换所占用的指令周期并不长,本设计选用上述处理方式。2. 标定程序中加入了if语句,可以有效的防止由于相减为复数而发生溢出的情况。3. 加入if(c>2000)语句可以起到超过2N发出警示的作用。6 基于VB的PC机通信程序设计VB全称Visual Basic,是微软公司推出的基于Basic语言的可视化编程环境,以其简单易学功能强大而倍受广大电脑爱好者的青睐。随着Windows在国内的普及,特别是Windows95的推出,越来越多的微机用户转向了Windows操作系统。要开发一个功能强、界面美观的应用软件,其编程和调试的工作量是非常大的,许多并非搞软件出身的工程技术人员对Windows编程望而生畏。然而使用微软的Visual Basic来开发这些方面的Windows应用软件就十分方便,一般工程技术人员易于掌握,设计软件界面非常方便。编程工作量相对较小,只需进行主要应用功能的编程和少量界面控制的编程。Visual Basic更加简化了Windows程序接口的设计工作,只需要极少量的代码,就能实现标准Windows应用程序的接口。基于以上优点,PC机采用VB编程设计界面,有关内容介绍如下:6.1串行通信控件的应用6.1.1 串行通信控件在PC机上安装USB100模块专用驱动程序后,USB100即作为PC机上的一个标准设备,可以按照与操作串口完全一样的方法来编程(区别是设定通讯速率无效,USB100按默认最高速率工作)。这就提供了一个最方便的开发USB的手段和方法,因为串口编程是编程人员都很熟悉的,这也是USB100开发与其他USB方案相比最大的优点。在VB中可以将其按标准的串口来使用,用MScomm控件将USB100当作一个真实的串口来连接,并进行控制,此串口通信速率为8Mbps,PC上设定该串口的速率不会对传输速率有影响,这是与实际串口的区别。6.1.2 串行通信程序实现与串行通信有关的VB

    注意事项

    本文(1546.基于USB的串行通信软硬件设计-----毕业论文.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开