串口通讯
前言
计算机是一种现代化的信息处理工具,它对信息进行处理并提供结果,其结果(输出)取决于所接收的信息(输入)及相应的处理算法。 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。
一.通讯理论
串行通信和并行通信
并行通信:将数据字节的各位用多条数据线同时进行传送。 串行通信:将数据字节分成一位一位的形式在一条传输线上逐个地传送。
串行通信
串行通信又分为异步通信和同步通信。
同步通信:
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。
发送方对接收方的同步可以通过两种方法实现:外同步和自同步。
外同步:外同步法使指由发送端发送专门的同步信息(常被称为导频),接收端把这个导频提取出来作为同步信号的方法。外同步法主要在载波同步及位同步系统中应用。 自同步:发送端不发送专门的同步信息,接收端设法从接收到的信号中提取同步信息的方法。效率高,但收端设备相对外同步法较为复杂。
异步通信:
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
异步通信特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2-3位用于起止位,各帧之间还有间隔,因此传输效率不高。
串行通信的传输方向:
单工:数据传输仅能沿一个方向,不能实现反向传输。 半双工:数据传输可以沿两个方向,但需要分时进行。 全双工:是指数据可以同时进行双向传输。
串行通信的错误校验:
1.奇偶校验 2.代码和校验 3.循环冗余校验
串行通信的接口标准:
一,RS-232C:RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
1.机械特性 RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头) 2.功能特性 3.过程特性 过程特性规定了信号之间的时序关系,以便正确地接收和发送数据。
远程通信连接: 近程通信连接: RS-232C电平与TTL电平转换驱动电路: 4.采用RS-232C接口存在的问题: a.传输距离短,传输速率低 RS-232C总线标准受电容允许值约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米)。最高传输速率为20Kbps
b.有电平偏移 RS-232C总线标准要i去收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。
c.抗干扰能力差 RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中,为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。
二,RS-422A接口 RS-422A输出驱动器为双端平衡驱动器。如果其中一条线为逻辑“1”状态,另一条线就为逻辑“0”,比采用单端不平衡驱动对电压的放大倍数大一倍。差分电路能从地线干扰中拾取有效信号,差分接收器可以分辨200mV以上的电位差。若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互抵消,因此可以避免或大大减弱地线干扰和电磁干扰的影响。RS-422A传输速率(90Kbps)时,传输距离可达1200米。
三,RS-485接口
RS-485是RS-422A的变型:RS-422A用于全双工,而RS-485则用于半双工。RS-485是一种多发送器标准,在通信线路上最多可以使用32对差分驱动器/接收器。如果在一个网络中连接的设备超过32个,还可以使用中继器。 RS-485的信号传输采用两线间的电压来表示逻辑1和逻辑。由于发送方需要两根传输线,接收方也需要两根传输线。传输线采用差分信道,所以它的干扰抑制性极好,又因为它的阻抗低,无接地问题,所以传输距离可达1200米,传输速率可达1Mbps。 RS-485是一点对多点的通信接口,一般采用双绞线的结构。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL.RS-485的电平转换。在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成,上位机为普通的PC机,负责监控下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态以及工业现场被控设备的工作状况。系统中各节点(包括上位机)的识别是通过设置不同的站地址来实现的。
二.串口通讯实现
1.打开串口; 2.设置串口模式; 3.设置波特率; 4.运用串口;
初始化部分:
晶振频率是11.0592MHz; 定时器1设置为模式2,8位自动重装 打开串口,设置模式1; 波特率算法:
TMOD=0x21;
SCON=0x50;
PCON=0x80;
TH1=0xFA;
TL1=0xFA;
ES=1;
TR1=1;
串口中断设置:
void SerialPortInterrupt(void)interrupt 4
{
u8 numData=0;
if(RI)
{
DDCBuffer[numData]=SBUF;
RI = 0;
}
SBUF=DDCBuffer[numData];
while(!TI);
TI=0;
}
结果:
|