RS232通信编程实验指导书.docx

上传人:b****8 文档编号:11131109 上传时间:2023-02-25 格式:DOCX 页数:67 大小:536.57KB
下载 相关 举报
RS232通信编程实验指导书.docx_第1页
第1页 / 共67页
RS232通信编程实验指导书.docx_第2页
第2页 / 共67页
RS232通信编程实验指导书.docx_第3页
第3页 / 共67页
RS232通信编程实验指导书.docx_第4页
第4页 / 共67页
RS232通信编程实验指导书.docx_第5页
第5页 / 共67页
点击查看更多>>
下载资源
资源描述

RS232通信编程实验指导书.docx

《RS232通信编程实验指导书.docx》由会员分享,可在线阅读,更多相关《RS232通信编程实验指导书.docx(67页珍藏版)》请在冰豆网上搜索。

RS232通信编程实验指导书.docx

RS232通信编程实验指导书

目录

0引言2

1理论背景3

1.1串口通讯的概念及接口电路3

1.2传输速率与传输距离5

1.2.1波特率5

1.2.2发送/接收时钟6

1.2.3波特率因子7

1.2.4传输距离7

1.3奇偶校验8

1.4网络通信的数据包(帧)9

1.4.1HDLC的帧结构10

1.4.2点对点协议PPP的帧结构11

1.5调制解调器(MODEM)和流控制12

1.5.1调制解调器(MODEM)12

1.5.2流控制14

2技术背景17

2.1RS-23217

2.1.1电气特性18

2.1.2连接器的机械特性20

2.1.3RS-232的接口信号22

2.2远距离通信26

2.2.1采用Modem(DCE)和电话网通信时的信号连接26

2.2.2采用专用电话线通信28

2.3近距离通信28

2.3.1零Modem的最简单连线(3线制)29

2.3.2零Modem标准连接30

3设计过程32

3.1串行通信材料32

3.1.1串行通信端口32

3.1.2串口通信线32

3.2总体设计概念与功能描述34

3.2.1总体设计概念34

3.2.2字节传输35

3.2.3文本文件传输36

4设计成果与运行过程38

4.1实时信息交互功能38

4.2文本和文件的传输47

5总结82

0引言

在各种单片机应用系统设计中,如智能仪器仪表、各类手持设备、GPS接收器等,都会遇到怎样与PC机进行通讯的问题。

在数据量不大、传输速率要求不高的情况下,一般都采用串行通讯方式,即通过与PC机配置的RS-232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。

例如南天加密键盘,它是南天自主开发的新产品,采用扫描式16键金属键盘,用单片机与DES芯片实现管理和控制,通过RS232通讯口与PC机相连。

它是针对南天自助产品而研制的,可对键盘敲入的键码加密,以密文形式送到PC机,确保通信过程中的数据加密,有效地保护键盘交易信息的安全。

本课题以计算机科学与技术专业的理论知识为基础,以计算机通信技术为支撑,在全面掌握计算机通信基本理论和基本技术的基础上,利用RS—232接口接口规范,设计与实现一个计算机通信系统。

串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。

 提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。

实际上1992年CrescentSoftwareInc.公司专为VB设计了MSCOMM.VBX用户通信控件,它提供了通过串口发送和接收数据的串行通信能力,不但包括了全部WindowsAPI中关于串行通信的16个函数所完成的功能,而且开拓了更多的使用户设计方便的对象属性来满足不同用户不同业务的需求。

所以只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通讯,甚至其实现方法和C、汇编相比,要更加快捷方便。

这也是为什么我们这次设计所用的编程工具是VB6.0。

通过这些控件能实现两台计算机之间的串行通信其中包括字节,文本,文件等信息。

1理论背景

1.1串口通讯的概念及接口电路

随着计算机系统的应用和微机网络的发展,通信功能越来越显的重要。

这里所说的通信是只计算机与外界的信息交换。

因此,通信即包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。

由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。

对于那些与计算机相距不远的人-机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。

在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。

所以串行接口是微机应用系统常用的接口。

许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU与接口之间仍按并行方式工作。

图1.1串行通信传输位

串行通信的概念

所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。

这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。

由于CPU与接口之间按并行方式传输,接口与外设之间按串行方式传输,因此,在串行接口中,必须要有“接收移位寄存器”(串→并)和“发送移位寄存器”(并→串)。

典型的串行接口的结构如图1.2所示。

图1.2典型的串行接口的结构

在数据输入过程中,数据一位一位地从外设进入接口的“接收移位寄存器”,当“接收移位寄存器”中已接收完1个字符的各位后,数据就从“接收移位寄存器”进入“数据输入寄存器”。

CPU从“数据输入寄存器”中读取接收到的字符。

(并行读取,即D7~D0同时被读至累加器中)。

“接收移位寄存器”的移位速度由“接收时钟”确定。

在数据输出过程中,CPU把要输出的字符(并行地)送入“数据输出寄存器”,“数据输出寄存器”的内容传输到“发送移位寄存器”,然后由“发送移位寄存器”移位,把数据一位一位地送到外设。

“发送移位寄存器”的移位速度由“发送时钟”确定。

接口中的“控制寄存器”用来容纳CPU送给此接口的各种控制信息,这些控制信息决定接口的工作方式。

“状态寄存器”的各位称为“状态位”,每一个状态位都可以用来指示数据传输过程中的状态或某种错误。

例如,用状态寄存器的D5位为“1”表示“数据输出寄存器”空,用D0位表示“数据输入寄存器满”,用D2位表示“奇偶检验错”等。

能够完成上述“串<-->并”转换功能的电路,通常称为“通用异步收发器”(UART:

UniversalAsynchronousReceiverandTransmitter),典型的芯片有:

Intel8250/8251,16550。

1.2传输速率与传输距离

1.2.1波特率

在串行通信中,用“波特率”来描述数据的传输速率。

所谓波特率,即每秒钟传送的二进制位数,其单位为bps(bitspersecond)。

它是衡量串行数据速度快慢的重要指标。

有时也用“位周期”来表示传输速率,位周期是波特率的倒数。

国际上规定了一个标准波特率系列:

110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。

例如:

9600bps,指每秒传送9600位,包含字符的数位和其它必须的数位,如奇偶校验位等。

大多数串行接口电路的接收波特率和发送波特率可以分别设置,但接收方的接收波特率必须与发送方的发送波特率相同。

通信线上所传输的字符数据(代码)是逐为位传送的,1个字符由若干位组成,因此每秒钟所传输的字符数(字符速率)和波特率是两种概念。

在串行通信中,所说的传输速率是指波特率,而不是指字符速率,它们两者的关系是:

假如在异步串行通信中,传送一个字符,包括12位(其中有一个起始位,8个数据位,2个停止位),其传输速率是1200b/s,每秒所能传送的字符数是1200/(1+8+1+2)=100个。

图1.3波特率

1.2.2发送/接收时钟

在串行传输过程中,二进制数据序列是以数字信号波形的形式出现的,如何对这些数字波形定时发送出去或接收进来,以及如何对发/收双方之间的数据传输进行同步控制的问题就引出了发送/接收时钟的应用。

在发送数据时,发送器在发送时钟(下降沿)作用下将发送移位寄存器的数据按串行移位输出;在接收数据时,接收器在接收时钟(上升盐)作用下对来自通信线上串行数据,按位串行移入移位寄存器。

可见,发送/接收时钟是对数字波形的每一位进行移位操作,因此,从这个意义上来讲,发送/接收时钟又可叫做移位始终脉冲。

另外,从数据传输过程中,收方进行同步检测的角度来看,接收时钟成为收方保证正确接收数据的重要工具。

为此,接收器采用比波特率更高频率的时钟来提高定位采样的分辨能力和抗干扰能力。

1.2.3波特率因子

在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位。

一般几个时钟脉冲移位一次。

要求:

接收时钟/发送时钟是波特率的16、32或64倍。

波特率因子就是发送/接收1个数据(1个数据位)所需要的时钟脉冲个数,其单位是个/位。

如波特率因子为16,则16个时钟脉冲移位1次。

例:

波特率=9600bps,波特率因子=32,则接收时钟和发送时钟频率=9600×32=297200Hz。

1.2.4传输距离

串行通信中,数据位信号流在信号线上传输时,要引起畸变,畸变的大小与以下因素有关:

波特率——信号线的特征(频带范围)

传输距离——信号的性质及大小(电平高低、电流大小)

当畸变较大时,接收方出现误码。

在规定的误码率下,当波特率、信号线、信号的性质及大小一定时,串行通信的传输距离就一定。

为了加大传输距离,必须加调制解调器。

图1.4传输信号的频谱特性

1.3奇偶校验

串行数据在传输过程中,由于干扰可能引起信息的出错,例如,传输字符‘E’,其各位为:

0100,0101=45H

D7D0

由于干扰,可能使0变为1,这种情况,我们称为出现了“误码”。

我们把如何发现传输中的错误,叫“检错”。

发现错误后,如何消除错误,叫“纠错”。

最简单的检错方法是“奇偶校验”,即在传送字符的各位之外,再传送1位奇/偶校验位。

可采用奇校验或偶校验。

奇校验:

所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数,如:

10110,0101

00110,0001

偶校验:

所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如:

10100,0101

00100,0001

奇偶校验能够检测出信息传输过程中的部分误码(1位误码能检出,2位及2位以上误码不能检出),同时,它不能纠错。

在发现错误后,只能要求重发。

但由于其实现简单,仍得到了广泛使用。

有些检错方法,具有自动纠错能力。

如循环冗余码(CRC)检错等。

1.4网络通信的数据包(帧)

在网络通信中,“包”(Packet)和“帧”(Frame)的概念相同,均指通信中的一个数据块。

对于具体某种通信网络,一般使用术语“帧”。

一种网络的帧格式可能与另一种网络不同,通常使用术语“包”来指一般意义的帧。

串行通信的数据格式有面向字符型的数据格式,如单同步、双同步、外同步;也有面向比特型的数据格式,这种以帧为单位传输,每帧由六个部分组成,分别是标志区、地址区、控制区、信息区、帧校验区和标志区。

串行通信协议属于ISO国际参考标准的第三层,数据链路层。

数据链路层必须使用物理层提供给它的服务。

物理层所做的工作是接收个一个原始的比特流,并准备把它交给目的地。

不能保证这个比特流无差错。

所接收的比特的数量也许少于,也许等于或多于所传递的比特的数量,它们具有不同的值。

一直要上到数据链路层才能进行检测,如果需要的话,纠正错误。

对于数据层,通常的方法是把比特流分成离散的帧,并对每一帧计算出校验。

当一帧到达目的地后重新计算校验和实,如果新算出的校验和不同于帧中所包括的值,数据链路层就知道出现差错了,从而会采取措施处理差错(即,丢弃坏帧,并发回一个差错报告)。

 

数据链路层的任务是在两个相邻接点间的线路上无差错地传送以帧为单位的数据。

每一帧包括数据和必要的控制信息。

人们发现,对于经常产生误码的实际链路,只要加上合适的控制规程,就可以使通信变为比较可靠的。

如IBM公司推出了著名的体系结构SNA,在SNA的数据链路规程采用了面向比特的规程SDLC,后来ISO把它修改后称为HDLC,译为高级数据链路控制。

在INTERNET中,用户与ISP(INTERNET服务提供者)之间的链路上使用得最多的协议就是SLIP和PPP。

下面就简单介绍HDLC帧结构以及PPP帧结构:

1.4.1HDLC的帧结构

从网络层交下来的分组,变成为数据链路层的数据。

这就是图1.5中的信息字段。

信息字段的长度没有具体规定。

数据链路层在信息字段的头尾各加上24bit的控制信息,这样就构成了一个完整的帧。

HDLC规定了一个帧的开头(即首部中的第一个字节)和结尾(即尾部中的最后一个字节)各放入一个特殊的标记,作为一个帧的边界。

这个标记就叫做标志字段F。

标志字段F为6个连续1加上两边各一个0共8位。

地址字段A也是8个比特,它一般被写入次站的地址。

帧校验序列FSC字共占16位,采用CRC-CCITT生成多项式。

控制字段功8位,是最复杂的字段,HDLC的许多重要功能都要靠控制字段来实现。

根据其前面两个比特的取值,可将HDLC的许多帧划分为三大类,即信息帧、监督帧和无编号帧。

图1.5HDLC的帧结构

1.4.2点对点协议PPP的帧结构

PPP帧格式和HDLC的相似,PPP帧的前3个字段和最后两个字段和HDLC的格式是一样的。

PPP不是面向比特的,因而所有的PPP帧的长度都是整数个字节。

与HDLC不同的是多了一个2个字节的协议字段。

当协议字段为0X0021时,信息字段就是IIP数据报。

若为0XC021,则信息字段是链路控制数据,而0X8021表示这是网络控制数据。

其结构视图如图1.6所示。

 

图1.6点对点协议PPP的帧结构

1.5调制解调器(MODEM)和流控制

虽然这次设计只是为了通过串行通信实现双机互联,但提到串行通信就不得不提一下调制解调器(MODEM)和流控制

1.5.1调制解调器(MODEM)

计算机的通信是要求传送数字信号,而在进行远程数据通信时,通信线路往往是借用现存的公用电话网,但是,电话网是为300~3400HZ之间的音频信号设计的,这对二进制数据的传输不适合。

为此,在发送时,需要将二进制信号调制成相应的音频信号,以适合在电话网上传输。

在接收后时,需要对音频信号进行调解还原成数字信号。

因此,在发送端使用调制器(Modulator)把数字信号转换为模拟信号,(该模拟信号携带了数据信号,称为载波信号),模拟信号经通信线传送到接收方,接收方再以解调器(Demodulator),把模拟信号变为数字信号。

大多数情况下,调制器和解调器合在一个装置中,称为“调制解调器”Modem。

在通信中,Modem起着传输信号的作用,是一种数据通信设备(DataCommunicationequipment),简称DCE或称数传机(Dataset),接收设备和发送设备称为数据终端设备(dataterminalequipment),简称DTE。

加入Modem后,通信系统的结构如图1.7所示。

图1.7加入Modem后通信系统的结构

调制信号的方法有:

把采用调频方式的称为FSK——对应频移键控FSK类型的MODEM;

把采用调相方式的称为PSK——对应移键控PSK类型的MODEM;

把采用调幅方式的称为ASK——对应振幅键控ASK类型的MODEM。

当波特率小于300时,一般采用频移控键(FSK)调制方式,或者称为两态调频。

它的基本原理是把“0”和“1”的两种数字信号分别调制成不同频率的两个音频信号。

其原理图如图1.8所示。

 

图1.8频移控键(FSK)调制方式原理图

两个不同频率的模拟信号f1和f2,分别经过电子开关S1、S2送到运算放大器A的输入端相加点。

电子开关的通/断由外部控制,并且当加高电平时,接通;加低电平时,断开。

利用被传输的数字信号(即数据)去控制开关。

当数字信号为“1”时,使电子开关S1接通,送出一串频率较高的模拟信号f1;当数字信号为“0”时,使电子开关S2接通,送出一串频率较低的模拟信号f2。

于是这两个不同频率的信号经运算放大器相加后,在运算放大器的输出端,就得到了调制后的两种频率的音频信号。

1.5.2流控制

我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解一点这方面的知识是有好处的。

那么,流控制在串行通讯中有何作用,在编制串行通讯程序怎样应用呢?

1、流控制在串行通讯中的作用

这里讲到的“流”,当然指的是数据流。

数据在两个串口之间传输时,常常会出现丢失数据的现象,或者两台计算机的处理速度不同,如台式机与单片机之间的通讯,接收端数据缓冲区已满,则此时继续发送来的数据就会丢失。

现在我们在网络上通过MODEM进行数据传输,这个问题就尤为突出。

流控制能解决这个问题,当接收端数据处理不过来时,就发出“不再接收”的信号,发送端就停止发送,直到收到“可以继续发送”的信号再发送数据。

因此流控制可以控制数据传输的进程,防止数据的丢失。

 PC机中常用的两种流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和软件流控制XON/XOFF(继续/停止),下面分别说明。

2、硬件流控制

硬件流控制常用的有RTS/CTS流控制和DTR/DSR(数据终端就绪/数据设置就绪)流控制。

硬件流控制必须将相应的电缆线连上,用RTS/CTS(请求发送/清除发送)流控制时,应将通讯两端的RTS、CTS线对应相连,数据终端设备(如计算机)使用RTS来起始调制解调器或其它数据通讯设备的数据流,而数据通讯设备(如调制解调器)则用CTS来起动和暂停来自计算机的数据流。

这种硬件握手方式的过程为:

我们在编程时根据接收端缓冲区大小设置一个高位标志(可为缓冲区大小的75%)和一个低位标志(可为缓冲区大小的25%),当缓冲区内数据量达到高位时,我们在接收端将CTS线置低电平(送逻辑0),当发送端的程序检测到CTS为低后,就停止发送数据,直到接收端缓冲区的数据量低于低位而将CTS置高电平。

RTS则用来标明接收设备有没有准备好接收数据。

   常用的流控制还有DTR/DSR(数据终端就绪/数据设置就绪)。

我们在此不再详述。

由于流控制的多样性,我个人认为,当软件里用了流控制时,应做详细的说明,如何接线,如何应用。

3、软件流控制

由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。

一般通过XON/XOFF来实现软件流控制。

常用方法是:

当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出XOFF字符(十进制的19或Control-S,设备编程说明书应该有详细阐述),发送端收到XOFF字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出XON字符(十进制的17或Control-Q),发送端收到XON字符后就立即开始发送数据。

一般可以从设备配套源程序中找到发送的是什么字符。

   应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

2技术背景

在讨论RS-232接口标准的内容之前,先说明两点:

首先,RS-232标准最初是远程通信连接数据终端设备DTE(DataTerminalEquipment)与数据通信设备DCE(DataCommunicationEquipment)而制定的。

因此这个标准的制定,并未考虑计算机系统的应用要求。

但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。

显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。

有了对这种背景的了解,我们对RS-232标准与计算机不兼容的地方就不难理解了。

其次,RS-232标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。

由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。

2.1RS-232

RS-232标准(协议)的全称是EIA-RS-232标准,其中EIA(ElectronicIndustryAssociation)代表美国电子工业协会,RS(RecommendedStandard)代表推荐标准,232是标识号,它规定连接电缆和机械、电气特性、信号功能及传送过程。

常用物理标准还有EIA�RS-232-C、EIA�RS-422-A、EIA�RS-423A、EIA�RS-485。

这里只介绍EIA�RS-232-C(简称232,RS232)。

例如,目前在IBMPC机上的COM1、COM2接口,就是RS-232接口。

2.1.1电气特性

EIA-RS-232对电器特性、逻辑电平和各种信号线功能都作了规定。

在TxD和RxD上:

逻辑1(MARK)=-3V~-15V

             逻辑0(SPACE)=+3V~+15V

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)=+3V~+15V

信号无效(断开,OFF状态,负电压)=-3V~-15V

图2.11488和1489的内部结构和引脚

以上规定说明了RS-232标准对逻辑电平的定义。

对于数据(信息码):

逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平告语+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3V~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。

EIA-RS-232与TTL转换:

EIA-RS-232是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。

因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232与TTL电路之间进行电平和逻辑关系的变换。

实现这种变换的方法可用分立元件,也可用集成电路芯片。

目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。

MAX232芯片可完成TTL←→EIA双向电平转换,图2.1显示了1488和1489的内部结构和引脚。

MC1488的引脚

(2)、(4,5)、(9,10)和(12,13)接TTL输入。

引脚3、6、8、11输出端接EIA-RS-232。

MC1498的14的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。

具体连接方法如图2.2所示。

图中的左边是微机串行接口电路中的主芯片UART,它是TTL器件,右边是EIA-RS-232连接器,要求EIA高电压。

因此,RS-232所有的输出、输入信号都要分别经过MC1488和MC1498转换器,进行电平转换后才能送到连接器上去或从连接器上送进来。

 

图2.21488和1489连接方法

2.1.2连接器的机械特性

连接器:

由于RS-232并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。

下面分别介绍两种连接器。

(1)DB-25

PC和XT机采用DB-25型连接器。

DB-25连接器定义了25根信号线,分为4组:

①异步通信的9个电压信号(含信号地SG)2,3,4,5,6,7,8,20,22

②20mA电流环信号9个(12,13,14,15,16,17,19,23,24)

③空6个(9,10,11,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1