1、异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。

java 串口 异步改同步 串口的同步和异步_数据块

2、同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,既保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。 

3、面向字符的同步格式 :此时,传送的数据和控制信息都必须由规定的字符集(如ASCII码)中的字符所组成。图中帧头为1个或2个同步字符SYN(ASCII码为16H)。SOH为序始字符(ASCII码为01H),表示标题的开始,标题中包含源地址、目标地址和路由指示等信息。STX为文始字符(ASCII码为02H),表示传送的数据块开始。数据块是传送的正文内容,由多个字符组成。数据块后面是组终字符ETB(ASCII码为17H)或文终字符ETX(ASCII码为03H)。然后是校验码。典型的面向字符的同步规程如IBM的二进制同步规程BSC。

java 串口 异步改同步 串口的同步和异步_数据块_02

4、面向位的同步格式 :此时,将数据块看作数据流,并用序列01111110作为开始和结束标志。为了避免在数据流中出现序列01111110时引起的混乱,发送方总是在其发送的数据流中每出现5个连续的1就插入一个附加的0;接收方则每检测到5个连续的1并且其后有一个0时,就删除该0。

java 串口 异步改同步 串口的同步和异步_异步通信_03

5、典型的面向位的同步协议如ISO的高级数据链路控制规程HDLC和IBM的同步数据链路控制规程SDLC。同步通信的特点是以特定的位组合“01111110”作为帧的开始和结束标志,所传输的一帧数据可以是任意位。所以传输的效率较高,但实现的硬件设备比异步通信复杂。

6、串行通信的传输方向

①单工是指数据传输仅能沿一个方向,不能实现反向传输。

②半双工是指数据传输可以沿两个方向,但需要分时进行。

③全双工是指数据可以同时进行双向传输。

7、信号的调制与解调:利用调制器(Modulator)把数字信号转换成模拟信号,然后送到通信线路上去,再由解调器(Demodulator)把从通信线路上收到的模拟信号转换成数字信号。由于通信是双向的,调制器和解调器合并在一个装置中,这就是调制解调器MODEM。

8、传输速率

比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:10位×240个/秒 = 2400 bps

9、传输距离与传输速率的关系

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps 时最大距离下降到只有76m(约250英尺)。

10、RS-232C接口

RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。机械特性:RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)

java 串口 异步改同步 串口的同步和异步_java 串口 异步改同步_04

11、RS-232功能特性

 

java 串口 异步改同步 串口的同步和异步_寄存器_05

12、采用RS-232C接口存在的问题

①传输距离短,传输速率低:RS-232C总线标准受电容允许值的约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米)。最高传送速率为20Kbps。

②有电平偏移:RS-232C总线标准要求收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。

③抗干扰能力差:RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中。为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。

13、80C51的串行口结构:有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。

java 串口 异步改同步 串口的同步和异步_异步通信_06

14、80C51串行口的控制寄存器:  

SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

java 串口 异步改同步 串口的同步和异步_嵌入式_07

SM0和SM1为工作方式选择位,可选择四种工作方式:

java 串口 异步改同步 串口的同步和异步_嵌入式_08

15、在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。

java 串口 异步改同步 串口的同步和异步_嵌入式_09

16、串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下:

确定T1的工作方式(编程TMOD寄存器);

计算T1的初值,装载TH1、TL1;

启动T1(编程TCON中的TR1位);

确定串行口控制(编程SCON寄存器);

串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。



java 串口 异步改同步 串口的同步和异步_java 串口 异步改同步_10

java 串口 异步改同步 串口的同步和异步_java 串口 异步改同步_11

View Code


1 #include<reg52.h>
 2 unsigned int flag,a;
 3 void mian()
 4 {
 5     TMOD=0X20;//确定定时器1的工作方式为2
 6     TH1=0XFD;  //设置波特率
 7     TL1=0XFD;  //设置波特率
 8     TR1=1;     //开定时器
 9     REN=1;    //允许接收
10     SM0=0;
11     SM1=1;
12     EA=1;
13     ES=1;
14     while(1)
15     {
16     /*if    (RI==1)
17         {
18         RI=0;
19         P1=SBUF;
20         }     */
21         if (flag==1)
22         {
23             ES=0;
24             flag=0;
25             SBUF=a;
26             while(!TI);
27             TI=0;
28             ES=1;    
29         }
30     }
31 }
32 void chuankou()    interrupt 4
33 {
34     RI=0;
35     P1=SBUF;
36     a=SBUF;
37     flag=1;
38 }