




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
温湿度测量系统设计毕业论文1绪论1.1 课题意义及目的在工农业生产、日常生活以及科学研究等诸多领域中,温度和湿度是两个很普遍而又非常重要的参数。因此,在这些领域中,对于这两个参数的测量与控制就显得尤为重要,特别是在纺织工业、冶金、化工、食品、温室种植,汽车制造以及气象预报和科研实验室等许多地方,都具有举足轻重的作用。传感器技术、微控制器技术和计算机技术日渐成熟之后,现代的温湿度测量与控制系统克服了以往系统中存在的一些问题,比如对环境温湿度的控制与调节以及数据的记录都由微控制器或计算机自动完成,且测得的数据也更加的精确,对环境温湿度的调节更具有实时性。1.2 课题主要研究的内容木课题以 Windows XP为开发平台,以C+为开发语言,以VisualC+6.0作为前台开发环境, Microsoft Access作为后台开发数据库。本文从上位机软件出发,利用面向对象、数据库、串口通信、多线程等技术,设计并实现温湿度测量系统的上位机应用软件。此软件具有温湿度的实时监测、历史记录查看及其数据库管理等功能,高度可视化、全中文界面、具有可扩展性,减少了人为的差错,它与通信模块和下位机等共同构成了温湿度测量系统。本论文的主要研究内容如下:(l)学习和掌握C+语言、VC开发平台、数据库技术、串口通信原理及多线程技术。(2)分析整个温湿度测量系统的总体框架及其功能特点。(3)根据用户需求设计出温湿度测量系统的上位机软件,给操作人员提供可视化界面,实现对温湿度的实时监测、历史记录查看及其数据库管理等功能。(4)对软件进行现场测试,以验证设计的可行性、准确性和优越性。2 面向过程与面向对象2.1 面向过程与面向对象技术传统的软件设计方法是面向过程的,所谓面向过程的程序设计是用结构化编程语句来编写程序。它把一个复杂的程序分解成若干个较小的过程,每个过程都可以单独地设计、修改、调试。其程序流程完全由程序员控制,用户只能按照程序员设计好的程序处理问题。它是一种自顶向下逐步求精的设计方法和单入口单出口的程序结构。面向过程是先分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候按照步骤依次调用。面向过程程序设计涉及到结构分析与结构设计技术,它们在现在的应用中表现出了许多明显的缺点,用这些技术开发出的软件,其稳定性、可修改性和重用性都比较差。首先,结构分析与结构设计技术的本质是功能的分解,是围绕实现处理功能的过程来构造系统的。结构化方法强调过程抽象,将现实世界映射为数据流和加工,加工之间通过数据流进行通信,数据作为被动的实体被主动的操作所加工,这是以过程为中心来构造系统和设计程序的。然而用户需求的变化大部分是针对加工的,因此这种变化对基于过程的设计来说是不可能实现的,用这利,技术设计出的系统往往是不稳定的,即用户需求的变化往往造成系统的较大变化,从而需要花费很大代价才能实现这种变化。其次,结构分析与结构设计技术清楚地定义了目标系统的接口。当系统对外界的接口发生变化时,结构分析与结构设计技术很难扩充新的接口,这样的系统较难修改和扩充。另外,结构化方法从本质上仍是把数据和操作分离,以至在实现阶段,一些具有潜在可重用价值的软件部分和具体应用环境密不可分。这些原因都使得结构分析与结构设计技术开发出的软件可重用性较差。为了克服传统的设计方法的缺点,逐渐创造出了新的软件开发技术,即面向对象技术。面向对象技术是一个非常实用而且强有力的软件开发方法,它具有许多特色,如符合人们通常的思维方式,高度连续性,重用性好,可维护性强等。面向对象的定义可以是:面向对象=对象+类+继承+通信。一个面向对象的程序的每一成分应是对象,计算都是通过新的对象的建立和对象之间的通信来执行的。对象是面向对象开发模式的基本成分,是基本运行时的实体,每个对象可以用一组属性和它可以执行的一组操作来定义,就是封装了数据和操作的程序块,反映了面向对象的封装的特征。属性一般只能通过执行对象的操作来改变。操作就是成员函数,也叫方法,描述了对象执行的功能。若通过消息传递,还可以为其它对象使用。从用户的角度看,对象提供了所需要的行为。类是一组具有相同数据结构和相同操作的对象的集合,它可以被视为一个具有类似特性与共同行为的对象的模板,用来产生对象。对象就是类的实例,可以使用该类的成员函数,对象的状态包含在它的实例变量中。类的实现可使用能提供它所需要服务的其它类的实例,这些实例应该受到保护不被其它对象存取,包括了同一个类所生成的所有其它实例。把一组对象的共同特性加以抽象并存储在一个类中的能力,是面向对象技术最重要的一点;是否建立了一个丰富的类库是衡量一个面向对象程序语言成熟与否的重要标志。继承是使用己经存在的定义作为基础建立起新定义的技术,类之间的继承关系是现实世界中遗传关系的直接模拟。封装使程序局部化,易修改、好维护,但许多对象有相同的功能时免不了重复,所以面向对象技术有继承的机制。新类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合,可以沿用现存类的某些特征。新类复用现存类的定义,而不要求修改现存类。现存类可以看成父类或者基类来引用,新类则相应得作为子类或者派生类引用,可以具有自己独立的属性和操作。使用继承设计一个新类,可以视为描述一个新对象的集合,它是现存类所描述对象集合的一个子集合。继承性是面向对象的最主要特点,是面向过程所不具备的。对象之间进行通信的一种构造叫做消息。当一个消息发送给某个对象时,包含要求接收对象去执行某些活动的信息。消息在一个对象与另一个对象之间传送,发送给一个对象的消息定义了一个操作和一个参数表,并指定某一个对象。当一个对象接收到发送给自己的消息时,就会调用消息中指定的操作,并且将参数表中的值与形式参数结合起来。接收对象对消息的处理可能会改变对象的状态,即改变接收对象的属性,并发送消息给自己或者另外一个对象。因此,可以把这种消息的传递大致地看成传统的过程方法中的函数调用。接收到消息的对象经过解释,然后予以响应。这种通信机制叫做消息的传递。对象、类、继承及消息代表了面向对象开发模式,同时面向对象还具有其它的特点,如多态性。多态性技术主要在结构方面提供了灵活性,多态性有静态多态性和动态多态性两种。静态多态性表现为成员函数的重载,发生在一个类的内部而动态多态性表现为函数的重写,则反映在父类和子类之间。封装、继承、多态是面向对象程序的主要特征。正是这些特征使程序安全、可靠、可重用、易维护、易于修改,减少了复杂性,支持开发人员建立灵活的可扩充的系统。面向对象相对于面向过程的方法有许多优点:(l)面向对象是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。面向对象是以功能来划分问题,而不是步骤。功能上的统一保证了面向对象设计的可扩展性。(2)面向对象把问题域的概念直接映射到对象以及对象间的接口。而传统的方法忽略了数据和操作之间的内在联系,软件要解决的问题其实都是相互之间存在一定联系的事物组成的,每个具体的事物都具有行为和属性两方面特征,所以把表示事物静态属性的数据结构和描述事物动态行为的操作放在一起构成的整体才可以完整而自然地表示客观世界中的实体。(3)面向对象技术从分析到设计再到编码用的是一致的模型表示,具有高度连续性。(4)面向对象技术具有的继承性和封装性支持软件复用,易于扩充,能较好地适应复杂的大系统不断发展和变化的要求,要复用类,可以直接创建该类的实例,实现复用,还可以从该类派生出满足新需要的子类。继承性使得派生类不仅可以重复父类的数据结构和方法,而且可以在父类基础上修改和扩充,并且不会影响父类的使用。(5)面向对象技术把属性和方法封装在“对象”中,当外部功能发生变化时,保持对象结构的相对稳定,使改动局限于对象内部。类是独立性很强的模块,向类的实例发送消息就可以运行,并且观察它是否可以正确地完成要求的工作,对类的测试比较容易实现,发现错误也通常集中在类的内部,容易调试和维护。所以,用面向对象技术开发的软件,易于扩展、调试和维护。2.2 面向对象的程序设计C+就是典型的面向对象的编程语言,Visual C+就是Windows环境下最主要的应用开发系统之一,它不仅是C+语言的集成开发环境,还与Win32紧密相连,因此,Visual C+可以完成各种应用程序开发,从底层的软件到顶层面向用户的软件。使用Visual C+环境开发应用程序缩短了开发时间,且界面友好,易于操作。在用Visual C+开发面向对象应用程序时,可以使用Windows提供的Windows API(Application Programming Interface)函数,也可以直接使用Microsoft提供的 MFC(Microsoft Foundation Classes)类库。API函数可以实现窗口创建、移动和修改,实现与设备无关的图形操作功能,实现与操作系统有关的多种功能,但是,利用API函数编程时,大量的代码需要用户自己编写,编程工作量很大。MFC类库则集成了大量已经预先定义好的类,是C十+的类集,该类集以层次结构组织起来,其中封装了大部分 Windows API函数和控件,包含的功能涉及到整个Windows操作系统。不仅为用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件。使用MFC类库和Visual C+提供高度可视的应用程序开发工具,使得现在应用程序的开发更简单,并可提高代码的可靠性与可重用性。MFC提供的类库让程序员把精力更多的放在功能拓展上,而不用太在意细节的实现,还允许在编程过程中自定义和扩展应用程序中的类,同时也允许调用 Windows API函数,使得应用程序以最小的规模实现最丰富的功能。MFC是C+语言中的一个安全子集,简化了C+开发基于Windows的应用程序的工作,MFC精心设计的类库结构以一种软件包的形式把进行Windows应用开发这一过程所需的各种程序模块有机地组织起来。MFC包含的类分层结构和功能具有可伸缩性,这使得MFC能跟上软件发展的潮流,并且保持了程序的向下兼容性,它还增强了对数据库应用程序的支持,可以使用ODBC类和高性能的ODBC驱动程序来访问提供ODBC支持的数据库中的数据,还可以通过数据访问对象,通过编程语言来访问和操纵数据库中的数据并管理数据库。目前的MFC包含了一百多个类,不同的类实现不同的功能,它们之间既有区别又有联系,这些类按照层次关系可以分为根类、窗口和控件类、绘图和打印类、应用程序体系结构类、文件和数据库类、Internet和网络工作类、OLE类以及调试和异常类等等。用户可以根据编程的需要调用相应的类,或者自己定义有关的类。 Visual C+6.0为了减轻程序员的工作量,特别增强了应用程序向导的功能。应用程序向导为程序员提供了一个基于MFC的应用程序框架,只要在此基础上添加实现特定功能的代码即可。2.3本章小结本章主要介绍了面向过程与面向对象的技术,课题主要研究的内容及论文的整体框架,对论文的整体结构与内容有了一定的了解。3系统相关技术介绍3.1 Visual C+开发平台二十世纪九十年代以来,伴随着计算机硬件技术的高速发展,Windows操作系统风靡全球,形成了操作系统市场的垄断地位。Windows应用软件也蓬勃发展,广泛应用于各个行业,包括教育领域。对于应用软件的开发,微软公司也提供了强大、复杂的开发工具Visual C+(以后简称VC+),借助其生成代码的向导,能快速生成可运行的Windows应用程序的外壳。VC+附带的基本类库,即MFC封装了大部分从前进行开发所用的API函数,己经成为许多C+编译器进行Windows开发的行业标准。 (1)Visual C+介绍Visual C+有很多版本,本课题用的是VC+6.0。VC+6.0是Microsoft公司推出的一个基于Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供的高度可视化的应用程序开发工具和MFC类库,可使应用程序开发变得简单。(2)Visual C+的优势VC+6.0的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C+类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作,大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。3.1.1 Windows编程模型Windows程序启动后,执行特定的任务,其中最重要的是创建应用程序的主窗口,这个主窗口需要自己的代码来处理Windows发送给它的信息,所以Windows程序是通过来自操作系统的消息来处理用户的输入。Windows中的大部分消息是严格定义的,而且适用于所有的程序。例如,当创建一个窗口时,发送一个 WM_CREAT消息;当用户按下鼠标左键时,会发送一个 WM_LBUTTONDWON消息。Windows还对选定的窗口发送 WM_COMMAND消息,以响应用户菜单的选择、对话框按钮的单击等操作,用户也可以定义自己的消息,并且能够由程序发送到桌面的任何窗口,接收响应。Windows引入了一个名为图形设备接口(GDI)的抽象层。其中包含了一个重要的概念设备环境(DC),它其实是一个对窗口的绘图属性保持跟踪的数据结构。Windows提供视频和打印机驱动程序。当应用程序进行显示或打印任务时,就把设备环境映射到具体物理设备上,所以自己的应用程序不必知道系统连接的显卡和打印机的类型,不必进行硬件寻址,而只是调用GDI函数,发出适当的输入/输出指令即可。在进行Windows编程时,可以使用大量已经建立的格式在资源文件中存储数据。链接程序把二进制资源文件与C+编译程序的输出组合起来,生成一个可执行文件。资源文件可以包括位图、图标、菜单定义、对话框布局和字符串等等。一般情况下,使用所见即所得工具来编辑资源。例如,在布置一个对话框时,可以使用资源和可编辑框来选择需要在对话框中放置的元素(按钮、列表框等),并且用鼠标来确定元素的位置和大小。3.1.2 VC+应用程序创建过程VC+开发工具包含了两个完整的Windows应用程序开发系统。一个是只使用 Win32API函数开发C+语言的Windows程序;另一个是在MFC类库应用程序框架范围内的C+编程。使用MFC类库编程接口也可以直接调用一些Win32函数。本课题采用了第二种方法进行应用程序的开发。如无特殊说明,一般指基于MFC类库的开发。图3-1概括了VC+应用程序创建过程。Visual C+Resource.hWindows头文件资源脚本文件(RC)资源编译器源文件位图、图标和其他资源资源文件(RES)运行时头文件MFC头文件编译器OBJ文件链接程序可执行文件Windows运行库和MFC库资源编译代码编译图3-13.1.3 VC+集成开发环境介绍VC十+被称为可视化集成开发环境是由于在VC+中能够执行如下的功能:第一,生成不用编写代码的起始应用程序;第二,通过许多不同方法查看项目文件;第三,编辑源文件和包含文件;第四,建立应用程序的可视界面(菜单和对话框);第五,编译和链接;第六,运行时调试应用程序。下面介绍几个VC+中的常用组件:(l)应用程序向导(Appwizard)。Appwizard是一个标准的C+源代码生成器。它通过一系列的对话框来提示用户输入所需创建的程序的信息。然后APPWizard生成一些文件,这些文件构成程序的框架。由APPwizard生成的程序是一个基本的Windows程序,它生成的是基本代码,用户应在此基础上完善自己内容。(2)类向导(Classwizard)。Classwizard是一个交互式工具,主要进行类代码的维护。用来建立新的类,定制类,把消息映射为类成员函数,或者把控制框映射为类变量成员。在开发程序时,可用Classwizard建立程序所需要的类,包括消息处理和消息映射例程(用于定位处理消息的代码)。(3)资源视图(ResourceView)。ResourceView包含了项目中所有的层次列表,用于编辑和管理应用程序中用到的各种可视元素,包括快捷键、对话框、图标、菜单、字符串、工具栏等。(4)类视图(ClassView)。ClassView用于显示项目中所有的类信息,主要是定制现有的类和建立新的类,并在每个类中,显示了成员函数和成员变量,还可以完成添加、删除、定位的功能。(5)文件视图(FileView)。FileView视图同ClassView非常相似,将项目中的所有文件(C+源文件、头文件、资源文件、Help文件等)以视图的形式分类显示。在视图中可以显示和编辑源文件和头文件。3.2数据库技术系统开发平台选择VC+,它是目前比较流行的可视化开发环境之一,集成了一些实用的组件,方便了编程工作。利用ADO技术可以方便的连接数据库,并通过SQL语言完成对数据的相关操作。3.2.1 VC+6.0开发数据库技术的特点VC+作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。VC+作为一种程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化的资源编辑功能。在使用VC+开发应用程序的过程中,系统生成了大量的各种类型的文件,为今后系统开发、调试奠定了基础。VC+的MFC类库实际上是Windows下编程的一套最为流行的类库。MFC的框架结构大大方便了编程工作,它合理的封装了Win32 API函数,并设计了一套方便的消息映射机制,这套机制本身比较庞大和复杂。VC+6.0提供了多种数据库访问技术ODBC API、 MFC ODBC、DAO、OLEDB、ADO等。(l)简单性VC+6.0中提供了MFC类库、ATL模板等一系列工具,用于帮助程序员快速的建立应用程序,大大简化了应用程序的设计过程。使用这些技术,只需要编写很少的代码就可以开发一个数据库应用程序。(2)灵活性VC+6.0提供的开发环境可以使程序员根据自己的需要设计应用程序的界面和功能,VC+6.0还提供了丰富的类库和方法。(3)访问速度快为了解决ODBC开发数据库应用程序访问数据库速度慢的问题,VC+6.0提供了新的访问技术OLEDB和ADO,它们都是基于COM接口的技术,使用这种技术可以直接对数据库的驱动程序进行访问,这大大提高了对数据库的访问速度。本课题使用的就是ADO访问方法。(4)可扩展性VC+6.0提供了OLE技术和ActiveX技术,这种技术可以增强应用程序的能力。这两种技术可以使应用程序组件化,增强程序的可扩展性。(5)访问不同种类数据源传统的ODBC技术只能访问关系型数据库,在VC+6.0中,提供了OLEDB访问技术,不仅可以访问关系型数据库,还可以访问非关系型数据库。3.2.2 SQL语言概述SQL(Structured Query Language)数据库结构化查询语言出现于20世纪70年代中期,是一种十分重要的标准化数据库语一言。目前,各种数据库管理系统几乎都支持SQL或提供SQL接口。SQL数据库结构化查询语一言集数据定义、数据查询、数据操纵和数据控制功能于一体,数据定义功能是指定义数据库的结构,包括定义基本表、定义视图和第一索引三部分,数据操纵是指对关系中的具体数据进行增、删、改等操作,数据控制是指对数据访问权限的授予或撤销。目前,绝大多数流行的关系型数据库管理系统都采用了SQL语一言标准,本文中用ADO访问Access数据库进行的相关操作就使用了SQL语言。下面介绍SQL语言的常用命令及特点。(l)SQL语一言常用命令 1)SQL的查询功能,SQL查询语句也称为SELECT命令,其功能是从一个或多个表中检索数据。基本格式为:SELECT查询目标FROM表1,表2,WHERE条件表达式GROUP BY分组列名HAVING组选择条件表达式ORDER BY排序项序其中SELECT用来说明要查询的数据项;FROM说明要查询的数据来自哪个或哪些表;WHERE说明查询的条件;GROUPBY用于对查询结果进行分组;HAVING短语必须跟随GROUPBY使用,用于限定分组满足的条件;ORDERBY短语用来对查询的结果进行排序。2)SQL的数据定义功能,SQL数据定义功能包含了表结构的定义、修改与删除以及视图的创建与删除。其中表结构的定义格式为:CREATE TABLE(,)NULL/NOT NULLCHECK!ERRORDEFAULT PRIMARYKEY/UNIQUEREFERENCESTAG,(,)少)说明:NULL/NOT NULL表示定义该字段是否允许空值。CHECKERROR表示定义字段规则及违反规则后的提示信息。DEFAULT表示指定该字段值默认值。PRIMARYKEY/UNIQUE表示主键或唯一索引。REFERENCESTAG表示定义参考完整性。3)表结构修改格式为:ALTERTABLEADD/ALTERCOLUMN字段名1(,)NULL/NOT NULLCHECKERRORDEFULTPRIMARYKEY/UNIQUEREFERENCESTAG标识1NOCPTRANS说明:ADDCOLUMN表示要添加一个字段,字段名1是给出要添加字段名字。ALTERCOLUMNOpen(“Provider=Mierosoft.Jet.OLEDB.4.0;DataSource = test.mdb“,”“,”“,adModeUnknown):/连接数据库/上面一句中连接字串中的Provide是针对ACCESS2000环境的,对于ACCESS97,需要改为: provider=Mierosoft.Jet.OLEDB.3.5l; Cateh(_com_error e)/捕捉异常 CString errormessage;errormessage.F0rmat(“连接数据库失败!rn错误信息:%s”e.ErrorMessage():AfxMessageBox(errormessage);/显示错误信息在这段代码中是通过Connection对象的Open方法来进行连接数据库的,下面是该方法的原型: HRESULTConnection15 :Open(_bstr_t ConnectionString,_bstr_t UserID,_bstr_t Password, long Options);上述函数中参数ConnectionString为连接字串;参数UserID是用户名;参数Password是登陆密码;参数Options是连接选项,用于指定Connection对象对数据的更新许可权,一般情况下Options可以是如下几个常量:adModeUnknown:缺省:当前的许可权未设置。adModeRead:只读adModeWrite:只写adModeReadWrite:可以读写adModeShareDenyRead:阻止其它Connection对象以读权限打开连接adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接adModeShareExelusive:阻止其它Connection对象以读写权限打开连接adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接下面给出一些常用的连接方式供大家参考:第一种,通过JET数据库引擎对ACCESSZOOO数据库的连接:M_pConneetionOpen(“Provider=Microsojl.Jor.OLEDB.4.O;DataSouree=C:test.mdb”,“”,“”,adModeUnknown);第二种,通过DSN数据源对任何支持 ODBC的数据库进行连接:M_pConneetionOpen(“DataSouree=adotest;UID=sa;PWD=;”,“”,“”,adModeUnknown);第三种,不通过DSN对SQL SERVER数据库进行连接:M_pConnectionOpen(“driver=SQLServer;Server=127.0.0.1;DATABASE=Vckbase;UID=sa;PWD=139”,“”,adModeUnknown);其中Server是SQL服务器的名称,DALABASE是库的名称。Connection对象除了Open()方法外还有许多方法,比如说ConnectionTimeOut与State。ConnectionTimeOut用来设置连接的超时时间,需要在Open()之前调用,例如:m_pConnectionConnectionTimeOut=5;/设置超时时间为5秒m_pConnectionOpen(“DataSouree=adotest:”,“”,“”,adModeUnknown);State属性指明当前Connection对象的状态,0表示关闭,1表示己经打开,可以通过读取这个属性来作相应的处理,例如:if(m_pConnectionState)m_pConnectionClose();/如果己经打开了连接则关闭它。3.3 单片机与PC串口通信技术3.3.1 数据通信的概念在实际工作中,计算机的CPU与外部设备(简称外设)之间常常要进行信息交换;一台计算机与其他计算机之间也往往要交换信息。数据通信就是以传送数据为业务的通信。即是说,通信系统所操纵的对象是数据而不是别的。数据通信方式由两种,即并行数据通信和串行数据通信。通常根据信息传递的距离决定采用哪种通信方式。例如,在PC机与外部设备(如打印机等)通信时,如果距离小于30米。可采用并行数据通信方式;当距离大于30米时,则要采用串行数据通信方式。8051单片机具有并行和串行两种基本数据通信方式。两种通信方式的原理、优点、缺点、应用对比列举如下表:表3-1 两种通信方式的比较3.3.2 串行通信的传送方式根据通信在通信线路上的传输方向及其与时间的关系,串行通信可分为三种方式:单工/半双工/全双工方式。(1)单工传输:数据始终只能在一个方向上传输,任何时间不能进行反向传输。如广播电视。(2)半双工传输:数据允许在设备间两个方向上传输,但在某一时刻数据只被允许在一个方向传输即设备间只有一条传输通道,所以信号只能分时传输。如对讲机;在同一时刻只能进行一个方向上传输而不能进行双向传输,但在不同时刻可以。(3)全双工传输:克服半双工通讯发送方式和接收方式之间切换所花费的时间提高传输速率,为此在此基础上增加一条传输通道,允许数据同时在两个方向上传输,称为全双工。电话系统、计算机网络等大多数通信系统都是全双工方式。3.3.3 串行通信的通信方式串行通信有两种基本通信方式,即异步通信和同步通信。(1)异步通信异步通信是起止式传输,它是利用起止方法来保持收发双方同步的。 a)每次只能传输一个编码字符,可以连续发送多个字符,可以随即进行单独发送。b)起始位表示字符传输的开始,长度为1bit(“0”);停止位表示字符传输的结束,长度1bit,1.5bit,2bit(“1”)。c)发送端数据格式如下所示:其中空闲位可有可无。有空闲位时,若空闲位为“1”,线路处于等待状态。存在空闲位正是异步通信的特征之一。在帧格式中,一个字符由4个部分组成:起始位、数据位、奇偶校验位和停止位。首先是一个起始位“0”,然后是58位的数据(规定低位在前,高位在后),接下来的奇偶校验位(可省略),最后是停止位“1”。起始位“0”信号只占用一位,用来通知接收设备一个待接收的字符开始到来,线路上在不传送字符时应保持为“1”。接收端不断检测线路的状态,若连续为“1”以后又侧到一个“0”,就知道发来一个新字符,应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以后的接收能正确进行。起始位后面紧接着就是数据位,它可以是58位。奇偶校验只占一位,但在字符中也可以规定不同奇偶校验位,则这时这一位就可省去。也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址、数据等)。停止位用来表征字符的技术,它一定是高电位(逻辑“1”)。停止位可以是1位,1.5位或2位。接收端收到停止位后,知道上一字符已传送完毕,同时,也为接收下一个字符做好准备只要再收到“0”就是新的字符的起始位。若停止位以后不是紧接着传送下一个字符,则让线路上保持为“1”。例如,规定用ASC编码,字符为7位,加1个奇偶校验位、1个起始位、1个停止位,则一帧共10位。d)接收端:通过检测起始位和停止位来判断新近到达的字符,保持收发双方每传输一个字符就重新校验一次同步关系,不易造成时钟误差。e)应用:低速传输系统,因为其传输效率较低,如传输一个ASC码,数据代码7位,1位起止位,2位停止位,1位校验位,其效率7/(7+1+1+2)64且字符之间还可能有空隙。异步传输是字符内的同步,字符间的异步。图5-2 ASCII码传输示意图(2)同步通信同步传输不是以字符而是以数据块为传输单位,其传输速率较高。同步通信中,在数据开始传送前用同步字符来指示(常约定12个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。a)每次传输多个字符(数据块)且它们之间没间隙以及起始位,停止位。b)保持收发同步,在数据块之前加上前文,在数据之后加上后文帧(frame)。c)接收端:检测帧中的前文和后文(特定的标志序列)保持与发送端同步。d)数据格式:前文和后文的具体格式视传输控制规程而定,有面向字符与面向比特型两种方案。e)同步传输每次传送的是一个完整的数据帧,发送端无需在字符间加入附加位和间隙,因而同步传输的效率比异步传输的效率高。但由于收发双方需建立准确的同步关系,所以实现起来比较复杂。3.3.4 串行通信的过程及通信协议(1)串行通信的过程通常把通信过程分为3段,即主机与从机的连接挂钩、握手阶段,发送(接收)阶段以及结束阶段。连接阶段主要是完成通信联络任务,实现主机与从机间的点对点通信。若连接正确,然后便可以开始发送或接收数据。在发送或接收数据过程中,选择校验方法,对数据的传输进行校验。结束阶段则是当通信系统出错或误码次数越限时宣告通信失败而结束通信。PC机和89C51单片机双向传送数据代码和功能代码。数据代码是通信过程必须传送的目的代码;功能代码是应答信号(如PC机要向单片机发数据,PC机允许单片机发数据,有误码重发等),以及表征数据特征和数量的代码。(2)串行通信协议通信协议是通信双方必须共同遵守的包括数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等作出统一规定的约定。只有双方都能正确地识别并遵守这些规定之后,才能顺利地进行通信。a)起始位。当通信线上没有数据被传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传给接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起的作用就是使设备同步,通信双方必须在传送数据位前协调同步。b)数据位。当接收设备收到起始位后,紧接着就会收到数据位。数据位从最低有效位被接收到移位寄存器只能欧冠,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次在接收设备中被转换位并行数据。c)奇偶校验位。数据位发送完之后,便可以发送奇
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医疗建筑工程行业当前市场规模及未来五到十年发展趋势报告
- 2025年激光医疗行业当前发展趋势与投资机遇洞察报告
- 2025年办公设备租赁行业当前发展现状及增长策略研究报告
- 支气管镜细胞学病理课件
- 支架监理基础知识培训课件
- 撰写调查报告的意义课件
- 2025新版现代企业管理试题库(含答案)
- 2024年精神病学主治医师专业实践能力考试题(附含答案)
- 2025年注册安全工程师考试化工(中级)安全生产专业实务试卷及解答参考
- 2025年餐饮服务食品安全管理人员专业知识检验试卷B卷含答案
- 2023年安徽省五蒙高速公路开发有限公司招聘笔试题库及答案解析
- (完整版)淡水生物资源调查技术规范
- 养老机构放弃抢救及心肺复苏同意书、安宁服务协议
- 皮肤、伤口、造口护理(临床护理实践指南)
- 防范化解露天矿山安全生产风险
- 新员工安全培训试题2
- 2022年中原出版传媒投资控股集团有限公司招聘笔试题库及答案解析
- TSG 81-2022 场(厂)内专用机动车辆安全技术规程
- 水利水电工程建筑物技术讲座课件
- 代课教师聘用合同(5篇)
- 光学课程设计望远镜系统结构参数设计说明
评论
0/150
提交评论