精华内容
下载资源
问答
  • 串行通信和并行通信的区别分析
    千次阅读
    2021-08-02 10:28:02

    什么是串行通信

    串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。

    什么是并行通信

    在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行通信。

    串行通信和并行通信的区别分析

    4d87c5d4d963c73aed0a46cba7c8b15c.png

    串行通信和并行通信的区别分析

    一、并行通信。

    并行通信端口,即LPT1,俗称打印口,因为它常接打印机,它是同时传送八路信号,一次并行传送完整的一个字节信息。

    二、串行通信。

    串行通信端口,即COM1、COM2,一般接鼠标,外置Modem或其他串口设备。它在一个方向上只能传送一路信号,一次只能传送一个二进制位,传送一个字节信息时,只能一位一位地依次传送。

    通讯

    两个设备之间的交流

    通信:并行通信和串行通信

    并行通信在同一时刻发送多位数据

    串行通信用一根线在不同的时刻发送8位数据

    并行通信

    优点发送速度快

    缺点传输距离短资源占用多

    串行通信

    优点传输距离远占用资源少

    缺点发送速度慢

    通信的方式

    1.单工通信只能接受或者发送收音机遥控器

    2.半双工通信在同一时刻只能发送或者接收对讲机

    3.全双工通信在同一时刻既能接收又能发送电话

    4.协议

    数据发送的格式

    Rs232协议:

    例如:发送8位数据0x12;

    发送数据之前先发送一个开始位

    开始位+数据位+奇偶校验位+停止位

    开始位1位低电平

    数据位5~8位用的最多的是8位

    奇偶校验位1位

    停止位1~2位1位1.5位2位

    奇偶校验奇校验通过查看数据中1的个数

    例如选择奇校验

    发送的数据为01011110

    1的个数为基数那么奇偶校验位为0

    如果发送的数据位10101010

    1的个数为偶数那么奇偶校验位为1

    发送方通过发送数据中1的个数,如果为奇数,那么奇偶校验位位0否则为1

    接收方当接收到数据,通过查看数据中1的个数+奇偶校验位1的个数

    如果为奇数,代表数据发送成功,否则失败

    停止位1位2位1.5位

    数字芯片时间通过时钟脉冲

    1位=1个脉冲

    2位=2个脉冲

    1.5位=1.5个脉冲

    3.串口的硬件连接

    4.51单片机中的硬件连接图

    1.ttl电平

    00v~1.5v

    12.5~5v

    更多相关内容
  • 工程中常用的串行通信有RS-232、RS-422、RS-485,这个标准都 是由EIA/TIA定义的,有关个标准更加细节的内容,可以参考TIA的网站。 最早的数据网络就是在个标准下传输数据的。电脑通过COM口 与Modem相连,如果...
  • 电信设备-一种串行数据通信总线的检错方法串行数据通信总线.zip
  •  在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括...
  • 1 引言  个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。... 在通信领域内,有两种数据通信方式:并行通信和串行通信。随着
  • 串行通信技术,是指通信双方按位进行,遵守时序的一种通信方式。串行通信中,将数据按位依次传输, 每位数据占据固定的时间长度,即可使用少数几条通信线路就可以完成系统间交换信息,特别适用于计算机与计算机、...
  • 1 引言  个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。... 在通信领域内,有两种数据通信方式:并行通信和串行通信。随着
  • 摘要:文章介绍了CYPRESS半导体公司推出的一用于点对点之间高速串行数据通信的发送芯片CY7B923的原理及应用。较详细的介绍了CY7B923的管脚功能、内部组成、工作原理及工作方式。同时给出了一个实际电路来说明其...
  •  在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括...
  • 摘要:介绍了CYPRESS半导体公司推出的一用于点对点之间的高速串行数据通信接收芯片CY7B933的原理及应用。详细说明了其管脚功能、内部组成、工作原理及工作方式。给出了一个由CY7B933构成的实际接收电路及设计方法...
  • 笔者在实际开发中,查阅了有关资料,总结出如下两常用而有效的串行通道扩展方法。  2.1 基于SP2538的扩展方法  SP2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于UART串口通信的外围智能模块及...
  • 电信设备-一种串行通信数据校验方法.zip
  • 本文介绍一用单片机普通I/O 口实现串行通信方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。  1.串行接口的基本通信方式  串行接口的有异步和同步两基本通信方式。异步通信采用...
  • 串行通信三种方式

    千次阅读 2019-10-06 19:27:38
    基本的通讯方式有并行通讯和串行通讯两. 一条信息的各位数据被同时传送的通讯方式称为并行通讯.并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用...

    串行通讯的基本概念:与外界的信息交换称为通讯.基本的通讯方式有并行通讯和串行通讯两种.

    一条信息的各位数据被同时传送的通讯方式称为并行通讯.并行通讯的特点是:各数据位同时传送,传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,且只适用于近距离(相距数米)的通讯.

    一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯.串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,成本低但送速度慢.串行通讯的距离可以从几米到几千米.

    根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种.信息只能单向传送为单工;信息能双向传送但不能同时双向传送称为半双工;信息能够同时双向传送则称为全双工.

    串行通讯又分为异步通讯和同步通讯两种方式.在单片机中,主要使用异步通讯方式.

    MCS_51单片机有一个全双工串行口.全双工的串行通讯只需要一根输出线和一根输入线.数据的输出又称发送数据(TXD),数据的输入又称接收数据(RXD).串行通讯中主要有两个技术问题,一个是数据传送、另一个是数据转换.数据传送主要解决传送中的标准、格式及工作方式等问题.数据转换是指数据的串并行转换.具体说,在发送端,要把并行数据转换为串行数据;而在接收端,却要把接收到的串行数据转换为并行数据.

    1. 单工/半双工和全双工的定义

    如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工.

    如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输.

    如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工.

    电话线就是二线全双工信道. 由于采用了回波抵消技术,双向的传输信号不致混淆不清.双工信道有时也将收、发信道分开,采用分离的线路或频带传输相反方向的信号,如回线传输.

    -------->

    <-------->

    -------->

    A---------B

    A----------B

    A---------B

     

     

    <--------

    单工

    半双工

    全双工

    2. 串口通讯—全双工和半双工方式

    在串行通信中,数据通常是在两个站(如终端和微机)之间进行传送,按照数据流的方向可分成三种基本的传送方式:全双工、半双工、和单工.但单工目前已很少采用,下面仅介绍前两种方式.

    • 全双工方式(full duplex)

    当数据的发送和接收分流,分别由两根不同的传输线传送时,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工制,如图1所示.在全双工方式下,通信系统的每一端都设置了发送器和接收器,因此,能控制数据同时在两个方向上传送.全双工方式无需进行方向的切换,因此,没有切换操作所产生的时间延迟,这对那些不能有时间延误的交互式应用(例如远程监测和控制系统)十分有利.这种方式要求通讯双方均有发送器和接收器,同时,需要2根数据线传送数据信号.(可能还需要控制线和状态线,以及地线).

    图1

    比如,计算机主机用串行接口连接显示终端,而显示终端带有键盘.这样,一方面键盘上输入的字符送到主机内存;另一方面,主机内存的信息可以送到屏幕显示.通常,往键盘上打入1个字符以后,先不显示,计算机主机收到字符后,立即回送到终端,然后终端再把这个字符显示出来.这样,前一个字符的回送过程和后一个字符的输入过程是同时进行的,即工作于全双工方式.

    • 半双工方式(half duplex)

    若使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工制,如图2所示.采用半双工方式时,通信系统每一端的发送器和接收器,通过收/发开关转接到通信线上,进行方向的切换,因此,会产生时间延迟.收/发开关实际上是由软件控制的电子开关.

    图2

     

    当计算机主机用串行接口连接显示终端时,在半双工方式中,输入过程和输出过程使用同一通路.有些计算机和显示终端之间采用半双工方式工作,这时,从键盘打入的字符在发送到主机的同时就被送到终端上显示出来,而不是用回送的办法,所以避免了接收过程和发送过程同时进行的情况.

    目前多数终端和串行接口都为半双工方式提供了换向能力,也为全双工方式提供了两条独立的引脚.在实际使用时,一般并不需要通信双方同时既发送又接收,像打印机这类的单向传送设备,半双工甚至单工就能胜任,也无需倒向.

    本文转自:http://cs.nju.edu.cn/yangxc/dcc2003.files/jszc-sub/comif-03.htm

    转载于:https://www.cnblogs.com/FREMONT/p/9830656.html

    展开全文
  • 在计算机系统中,CPU和外部通信有两种通信方式:并行通信串行通信。并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。
  • 串口通信是一广泛使用且实用的通信方式,介绍RS232串行通信的联结...结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软件,实现了企业生产线产品测试平台和嵌入式EMB主控机的串行数据通信
  • 摘要:结合单片机和Matlab两者的优点,基于事件驱动的中断通信机制,提出一Matlab环境下PC机与单片机实时串行通信数据处理的方法;完成单片机数据采集系统与PC机的RS-232/RS-485串行通信及其通信数据的分析处理...
  • 摘要:为了适应全数字化自动控制更加广泛的应用,采用现场可编程门阵列(FPGA)对异步串行通信控制器(UART)进行多模块的系统设计的方法,... 异步串行通信(UART)是一广泛应用的串行数据传输协议,UART的要求是传
  • 摘要:结合单片机和Matlab两者的优点,基于事件驱动的中断通信机制,提出一Matlab环境下PC机与单片机实时串行通信数据处理的方法;完成单片机数据采集系统与PC机的RS-232/RS-485串行通信及其通信数据的分析处理...
  • 引言串行通信串行数据传输,实现FPGA与PC的串行通信在实际中,特别是在FPGA的调试中有着很重要的应用。调试过程一般是先进行软件编程仿真,然后将程序下载到芯片中验证设计的正确性,目前还没有更好的工具可以在...
  • 摘要:为了适应全数字化自动控制更加广泛的应用,采用现场可编程门阵列(FPGA)对异步串行通信控制器(UART)进行多模块的系统设计的... 异步串行通信(UART)是一广泛应用的串行数据传输协议,UART的要求是传输线
  • 在现代工控自动化领域中就大量采用了串行通信方式来实现计算机对远程串行设备的监控管理, 本文通过对串行通信方式及串行通信软件实现方法的分析, 提出了一简单有效可行的串行通信软件设计方法, 供大家参考。...
  • 单片机串行通信

    千次阅读 2020-08-07 12:11:42
    计算机与外部设备的通信方式有两,一是并通信、二是串行通信串行通信有:单工、半双工(常用)、全双工。速度可以用波特率度量,其单位为 位每秒——bps 串行通信又可以分为两:同步、异步。 异步通信:以...

    串行通信

    计算机与外部设备的通信方式有两种,一是并通信、二是串行通信。
    串行通信有:单工、半双工(常用)、全双工。速度可以用波特率度量,其单位为 位每秒——bps
    串行通信又可以分为两种:同步、异步。

    异步通信:以字符(或字节)为单位组成数据帧进行的传送称为异步通信。一帧数据可由:起始位、数据位、可编程校验位、停止位。

    同步通信:数据以块为单位连续进行的传送称为同步通信。在发送第一块数据时,首先发送同步信号,保证发送器和接收器之间的同步。之后发送的连续的数据块中,就不需要再发送同步信号了。

    串行口控制器

    内部结构

    C51 内部有一个可编程的全双工串行通信接口,也可以用作通用异步接收/发送器、同步位移寄存器。它可以设置不同的数据格式(8、10、11 位)、波特率,并通过 RXD(P3.0)和 TXD(P3.1)与外界通信。

    其接口由数据缓冲器 SBUF、串行控制寄存器 SCON、接收位移寄存器、发送控制器、接收控制器组成。并且,其还与定时器 T1 和单片机内部总线相关。

    两个 SBUF 在物理上相互独立,但具有共同的地址 99H,通过读写指令来区分 SBUF。

    发送控制器的作用是,在门电路和 T1 的配合下,将 SBUF 中的并行数据,转为串行数据,并自动添加起始位、可编程为、停止位。这一过程结束后,中断请求标志位 TI=1,用以通知 CPU 将 SBUF 中的数据输出到 TXD(P3.1)引脚。

    接收控制器的作用是,在接收移位寄存器、T1 的配合下,使来自 RXD 的串行数据,转换为并行数据,并自动消除起始位、可编程位、停止位。这一过程结束后,将 RI =1,通知 CPU 将 RXD 中接受的数据,保存到 SBUF 中。

    单片机在接收数据时,需要通过移位寄存器、接收控制器的双重缓冲。这样可以防止 CPU 因为及时将第一帧数据读走,而引起两帧数据重叠造成的 error。

    定时器 T1 的作用是产生用以收发过程中,节拍控制的通信时钟。下降沿将数据移位;上升沿对应数据位采样。

    串行口控制寄存器

    用于串行通信的两个 SFR 有:SCON、PCON
    SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI
    TB8、RB8:发送、接收数据位第九位。
    REN:允许和禁止接收控制维。REN=1 时为允许接口接收数据。
    SM2:多机通信控制位。
    SM0、SM1:决定串行口通信工作方式。

    SM1SM0工作方式说明
    00工作方式 08位同步位移寄存器
    01工作方式 110位同步位移寄存器
    10工作方式211位同步位移寄存器
    11工作方式 311位同步位移寄存器

    PCON:SMOD(位7)
    SMOD——波特率选择位。

    C51 单片机的串行通信口以 T1 为波特率发生器。T1 溢出脉冲可以有两种分频——16/32分频。波特率的计算公式如下:
    波 特 率 = 1 t × 2 S M O D 32 = f o s c 12 × ( 2 n − α ) × 2 S M O D 32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^n-\alpha)}\times\frac{2^{SMOD}}{32} =t1×322SMOD=12×(2nα)fosc×322SMOD

    工作方式0

    不用于串行通信,而用于——扩展接口,具体电路如下:
    在这里插入图片描述
    此时:RXD 作为数据的发送/接收端口;TXD 作为时钟(十二分频晶振)的输出端。利用下面的代码,即可操纵流水灯:

    #include<reg51.h>
    void delay() {	                        //延时
        unsigned int i;
        for (i=0; i<20000; i++) {}
    }
    
    void main() { 
        unsigned char index, LED;            //定义LED指针和显示字模
        SCON = 0;           	             //设置串行模块工作在方式0
        while (1) {      
    	   LED=0x7f;
    	   for (index=0; index < 8; index++) {
    	        SBUF = LED;                  //控制L0灯点亮
    	        do {} while(!TI);            //通过TI查询判别数据是否输出结束
                LED = ((LED>>1)|0x80);       //左移1位,末位置1
    			TI=0;
    			delay();  
     	   }
        }
    }
    

    工作方式 1

    工作方式 1~ 3 都是用于串行通信的。工作方式 1 输出 10 位的数据,通常用于点对点通信,采用 3 线式连接。即 RXD 对 TXD、TXD 对 RXD、地对地。

    首先是设置通信时钟波特率:
    波 特 率 = 1 t × 2 S M O D 32 = f o s c 12 × ( 2 n − α ) × 2 S M O D 32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^n-\alpha)}\times\frac{2^{SMOD}}{32} =t1×322SMOD=12×(2nα)fosc×322SMOD
    之后,设置波特率发生器 T1。通过 TMOD(GATE C/T M1 M0)设置工作方式,通过 TH1 TL1 设置预设值;通过 PCON(SMOD,不可为寻址)设置波特率选择位。

    设置 SCON(RI TI REN SM0 SM1)设置工作方式等。

    数据经过 TXD(P3.1)发出,通过 RXD 和 接收移位寄存器缓冲输入。

    一般波特率发生器 T1 以工作方式 2 为主。也即:
    波 特 率 = 1 t × 2 S M O D 32 = f o s c 12 × ( 2 8 − α ) × 2 S M O D 32 波特率=\frac{1}{t}\times\frac{2^{SMOD}}{32}=\frac{f_{osc}}{12\times(2^8-\alpha)}\times\frac{2^{SMOD}}{32} =t1×322SMOD=12×(28α)fosc×322SMOD

    工作方式2

    特点:

    • TB8 RB8 可以自动添加到数据位中。TB8 的内容可以由用户设置,可以是藉由校验位,也可以是其他控制位。
    • 通信时钟频率是固定的,计算公式为:
      波 特 率 = 2 S M O D 64 × f o s c 波特率=\frac{2^{SMOD}}{64}\times f_{osc} =642SMOD×fosc
    • 发送完成后,SBUF 为空时,TI 自动置 1;接受完成时(SBUF 为空),但 RI 的状态需要由 SM2 和 RB8 共同决定。若 SM2 = 1,那么 RB8 =1 时,才能使得 RI = 1;若 SM2 = 0,则无论 RB8 为何值,都可以使得 RI=1。

    一般用于双机通信。

    工作方式 3

    一般用于多机通信。结合了 工作方式 1可以设置波特率的优点,又结合了工作方式 2 可以通过 SM2 实现多机通信。

    主机发送数据时,需要向所有的单片机都发送数据。但是,在发送第一帧数据之前,需要将目标从机的地址数据发送给所有从机,称为地址信息。地址信息的第九位为 1,数据信息的第九位为 0。

    从机在收到地址信息后,由于 RB8=1,所以无论如何都可以触发 RI = 1,也就是触发中断。在中断程序中,从机对比信息地址以及自身的地址,若匹配,则使得 SM2 = 0。若不符合,则设置 SM2 = 1。

    由于数据信息的第九位为 0,那些地址不匹配(SM2=1)的从机,就会拒绝主机发出的数据信息。从而,实现主机到目标从机的信息传递。

    展开全文
  • 在远距离数据通信中,一般采用串行通信方式,它具有占用通信线少、成本低等优点。目前RS 232串口是PC机与通信工业中应用最广泛的一种串行接口,它应用于点对点通信模式,实际使用中多采用最简单的三线方式连接,即两...
  • 随着数据交互需求的进一步提高,对串行通信通信...本文探讨一基于串行通信,简单、高效的通信协议的制定方法,并通过实例代码实现了串行通信数据的高效传输。实验结果证明,该协议有效提高了串行通信通信效率。
  • 在现代工控自动化领域中就大量采用了串行通信方式来实现计算机对远程串行设备的监控管理, 本文通过对串行通信方式及串行通信软件实现方法的分析, 提出了一简单有效可行的串行通信软件设计方法, 供大家参考。...
  • 串口通信是一广泛使用且实用的通信方式,介绍 RS232 串行通信...结合实际应用,在约定双方串行通信协议的基础上,运用 C 语言开发的串行通信软 件,实现了企业生产线产品测试平台和嵌入式 EMB 主控机的串行数据通信
  • 基于VisualC++6.0集成开发环境提供的ActiveX控件和API这2串口通信方法,设计了串口通信的一实时性分析系统。该系统的硬件包括一个单片机系统,用于数据串行发送,以及2台PC机,分别用于基于ActiveX控件和API的...
  • 51单片机——串行通信

    千次阅读 2021-08-28 23:03:37
    本文首先介绍了并行通信串行通信的概念,然后对串行通信进行详细的介绍。然后介绍了51单片机的串行通信口的结构与原理,最后介绍了串行通信的四方式,并介绍了如何计算波特率。

    目录

    1 概述

    1.1 并行通信和串行通信

    1.2 串行通信的两种方式

    1.2.1 异步通信

    1.2.2 同步通信

    1.3 串行通信的数据传送方向

    2 串行通信口的结构与原理

    2.1 串行通信口的结构

    2.2 串行通信口的工作原理

    2.2.1 接收数据过程

     2.2.2 发送数据过程

    3 串行通信口的控制寄存器

    3.1 串行控制寄存器(SCON)

    3.2 电源控制寄存器(PCON)

    4 四种工作方式与波特率的设置

    4.1 方式0

    4.1.1 方式0-发送数据

    4.1.2 方式0-接收数据

    4.2 方式1

    4.2.1 方式1-发送数据

    4.2.2 方式1-接收数据

    4.3 方式2

    4.3.1 方式2-发送数据

    4.3.2 方式2-接收数据

    4.4 方式3

    4.5 波特率的设置

    4.5.1 方式0的波特率

    4.5.2 方式2的波特率

    4.5.3 方式1和方式3的波特率


    1 概述

            通信的概念比较广泛,在单片机技术中,单片机与单片机单片机与其他设备之间的数据传输称为通信。

    1.1 并行通信和串行通信

            根据数据传输方式的不同,可将通信分并行通信串行通信两种。同时传输多位数据的方式称为并行通信。同时传输一位数据的方式称为串行通信

            如图1(a)所示,在并行通信方式下,单片机中的8位数据10011101通过8条数据线同时送到外部设备中。并行通信的特点是数据传输速度快,但由于需要的传输线多,故成本高,只适合近距离的数据通信。逐位传输数据的方式称为串行通信。

            如图1(b)所示,在串行通信方式下,单片机中的8位数据10011101通过一条数据线逐位传送到外部设备中。串行通信的特点是数据传输速度慢,但由于只需要一条传输线,故成本低,适合远距离的数据通信。

    图1 通信方式 

    1.2 串行通信的两种方式

            串行通信又可分为异步通信同步通信两种。51系列单片机采用异步通信方式。

    1.2.1 异步通信

            在异步通信中,数据是一帧一帧传送的。异步通信如图2 所示,这种通信是以帧为单位进行数据传输,一帧数据传送完成后,可以接着传送下一帧数据,也可以等待,等待期间为空闲位(高电平)。

    图2 异步通信

            (1)帧数据格式

            在串行异步通信时,数据是以帧为单位传送的。异步通信的帧数据格式如图3所示。从图中可以看出,一帧数据由起始位、数据位、奇偶校验位和停止位组成。 

     图3 异步通信的帧数据格式

            ① 起始位。

            表示一帧数据的开始,起始位一定为低电平。当单片机要发送数据时,先送一个低电平(起始位)到外部设备,外部设备接收到起始信号后,马上开始接收数据。

            ② 数据位。

            它是要传送的数据,紧跟在起始位后面。数据位的数据可以是5~8位,传送数据时是从低位到高位逐位进行的。

            ③ 奇偶校验位。

            该位用于检验传送的数据有无错误。奇偶校验是检查数据传送过程中是否发生错误的一种校验方式,分为奇校验和偶校验。奇校验是指数据位和校验位中“1”的总个数为奇数,偶校验是指数据位和校验位中“1”的总个数为偶数。以奇校验为例,若单片机传送的数据位中有偶数个“1”,为保证数据和校验位中“1”的总个数为奇数,奇偶校验位应为“1”,如果在传送过程中数据位中有数据产生错误,其中一个“1”变为“0”,那么传送到外部设备的数据位和校验位中“1”的总个数为偶数,外部设备就知道传送过来的数据发生错误,会要求重新传送数据。数据传送采用奇校验或偶校验均可,但要求发送端和接收端的校验方式一致。在帧数据中,奇偶校验位也可以不用。

            ④ 停止位。

            它表示一帧数据的结束停止位可以是1位、1.5位或2位,但一定为高电平。一帧数据传送结束后,可以接着传送第二帧数据,也可以等待,等待期间数据线为高电平(空闲位)。如果要传送下一帧,只要让数据线由高电平变为低电平(下一帧起始位开始),接收器就开始接收下一帧数据。

            (2)51系列单片机的几种帧数据方式

            51 系列单片机在串行通信时,根据设置的不同,其传送的帧数据有以下四种方式:

            ① 方式0。

            称为同步移位寄存器输入/输出方式,它是单片机通信中较特殊的一种方式,通常用于并行I/O接口的扩展,这种方式中的一帧数据只有8位(无起始位、停止位)。

            ② 方式1。

            在这种方式中,一帧数据中有1位起始位、8位数据位和1位停止位,共10位

            ③ 方式2。

            在这种方式中,一帧数据中有1位起始位、8位数据位、1位可编程位和1位停止位,共11位。

            ④ 方式3。

            这种方式与方式2相同,一帧数据中有1位起始位、8位数据位、1位可编程位和1位停止位它与方式2的区别仅在于波特率(数据传送速率)设置不同

    1.2.2 同步通信

            在异步通信中,每一帧数据发送前要用起始位,结束时要用停止位,这样会占用一定的时间,导致数据传输速度较慢。为了提高数据传输速度,在计算机与一些高速设备进行数据通信时,常采用同步通信。同步通信的帧数据格式如图4所示。

     图4 同步通信的帧数据格式

            从图中可以看出,同步通信的数据后面取消了停止位,前面的起始位用同步信号代替,在同步信号后面可以跟很多数据,所以同步通信传输速度快。但由于在通信时要求发送端和接收端严格保持同步,这需要用复杂的电路来保证,所以单片机很少采用这种通信方式。

    1.3 串行通信的数据传送方向

            串行通信根据数据的传送方向可分为三种方式:单工方式半双工方式全双工方式。这三种传送方式如图5所示。

    图5 数据传送方式 

            ① 单工方式。在这种方式下,数据只能向一个方向传送。单工方式如图5(a)所示,数据只能由发送端传输给接收端。

            ② 半双工方式。在这种方式下,数据可以双向传送,但同一时间内,只能向一个方向传送,只有一个方向的数据传送完成后,才能往另一个方向传送数据。半双工方式如图5(b)所示,通信的双方都有发送器和接收器,一方发送时,另一方接收,由于只有一条数据线,所以双方不能在发送的同时进行接收。

            ③ 全双工方式。在这种方式下,数据可以双向传送,通信的双方都有发送器和接收器,由于有两条数据线,所以双方在发送数据的同时可以接收数据。全双工方式如图5(c)所示。

    2 串行通信口的结构与原理

            单片机通过串行通信口可以与其他设备进行数据通信,将数据传送给外部设备或接受外部设备传送来的数据,从而实现更强大的功能。

    2.1 串行通信口的结构

            51单片机的串行通信口的结构如图6所示。

     图6 串行通信口的结构

            与串行通信口有关的部件主要有:

            ① 两个数据缓冲器SBUF。

            SBUF是可以直接寻址的特殊功能寄存器(SFR),它包括发送SBUF和接收SBUF发送SBUF用来发送串行数据,接收SBUF用来接收数据,两者共用一个地址(99H)。在发送数据时,该地址指向发送SBUF;而在接收数据时,该地址指向接收SBUF。

            ② 输入移位寄存器。

            在接收控制器的控制下,将输入的数据逐位移入接收SBUF

            ③ 串行控制寄存器 SCON。

            SCON 的功能是控制串行通信口的工作方式,并反映串行通信口的工作状态

            ④ 定时器T1。

            T1用作波特率发生器,用来产生接收和发送数据所需的移位脉冲,移位脉冲的频率越高,接收和传送数据的速率越快

    2.2 串行通信口的工作原理

            串行通信口有接收数据和发送数据两个工作过程,下面以图6所示的串行通信口结构为例来说明这两个工作过程。

    2.2.1 接收数据过程

            在接收数据时,若RXD端(与P3.2引脚共用)接收到一帧数据的起始信号(低电平),SCON寄存器马上向接收控制器发出允许接收信号,接收控制器在定时器/计数器T1产生的移位脉冲信号控制下,控制输入移位寄存器,将 RXD 端输入的数据由低到高逐位移入输入移位寄存器中,数据全部移入输入移位寄存器后,移位寄存器再将全部数据送入接收 SBUF中,同时接收控制器通过或门向CPU发出中断请求,CPU马上响应中断,将接收SBUF中的数据全部取走,从而完成了一帧数据的接收。后面各帧的数据接收过程与上述相同。

     2.2.2 发送数据过程

            相对于接收过程来说,串行通信口发送数据的过程较简单。当CPU要发送数据时,只要将数据直接写入发送SBUF中,就启动了发送过程。在发送控制器的控制下,发送门打开,先发送一位起始信号(低电平),然后依次由低到高逐位发送数据,数据发送完毕,最后发送一位停止位(高电平),从而结束一帧数据的发送。一帧数据发送完成后,发送控制器通过或门向CPU发出中断请求,CPU响应中断,将下一帧数据送入SBUF,开始发送下一帧数据

    3 串行通信口的控制寄存器

            串行通信口的工作受串行控制寄存器SCON电源控制寄存器PCON的控制。

    3.1 串行控制寄存器(SCON)

            SCON 寄存器用来控制串行通信的工作方式及反映串行通信口的一些工作状态。SCON寄存器是一个8位寄存器,它的地址为98H,其中每位都可以位寻址。SCON寄存器各位的名称和地址如下。

            ① SM0、SM1位:串行通信口工作方式设置位

            通过设置这两位的值,可以让串行通信口工作在四种不同的方式,具体见表1,这几种工作方式在后面将会详细介绍。

    表1 串行通信口工作方式设置位及其功能

            ② SM2位:用来设置主-从式多机通信

            当一个单片机(主机)要与其他几个单片机(从机)通信时,就要对这些位进行设置。当SM2=1时,允许多机通信;当SM2=0时,不允许多机通信。

            ③ REN位:允许/禁止数据接收的控制位

            当REN=1时,允许串行通信口接收数据;当REN=0时,禁止串行通信口接收数据。

            ④ TB8位:方式2、3中发送数据的第9位

            该位可以用软件规定其作用,可用作奇偶校验位,或在多机通信时,用作地址帧或数据帧的标志位,在方式0和方式1中,该位不用。

            ⑤ RB8位:方式2、3中接收数据的第9位

            该位可以用软件规定其作用,可用作奇偶校验位,或在多机通信时,用作地址帧或数据帧的标志位,在方式1中,若SM2=0,则RB8是接收到的停止位。

            ⑥ TI位:发送中断标志位

            当串行通信口工作在方式0时,发送完8位数据后,该位自动置“1”(即硬件置“1”),向CPU发出中断请求,在CPU响应中断后,必须用软件清0在其他几种工作方式中,该位在停止位开始发送前自动置“1”,向CPU发出中断请求,在CPU响应中断后,也必须用软件清0,以准备开始发送下一帧数据

            ⑦ RI位:接收中断标志位

            当串行通信口工作在方式0时,接收完8位数据后,该位自动置“1”,向CPU发出接收中断请求,在CPU响应中断后,必须用软件清0在其他几种工作方式中,该位在接收到停止位期间自动置“1”,向CPU发出中断请求,在CPU响应中断取走数据后,必须用软件对该位清0,以准备开始接收下一帧数据。在上电复位时,SCON各位均为“0”。

    3.2 电源控制寄存器(PCON)

            PCON寄存器是一个8位寄存器,它的字节地址为87H,不可位寻址并且只有最高位SMOD与串行通信口控制有关。PCON寄存器各位的名称和字节地址如下。

            SMOD位:波特率设置位。

            在串行通信口工作在方式1~3时起作用。若SMOD=0,波特率不变;当SMOD=1时,波特率加倍。在上电复位时,SMOD=0。

    4 四种工作方式与波特率的设置

            串行通信口有四种工作方式工作在何种方式受SCON寄存器的控制。在串行通信时,要改变数据传送速率(波特率),可对波特率进行设置

    4.1 方式0

            当SCON寄存器中的SM0=0、SM1=0时,串行通信口工作在方式0

            方式0称为同步移位寄存器输入/输出方式,常用于扩展I/O端口。在单片机发送或接收串行数据时,通过RXD端发送数据或接收数据,而通过TXD端送出数据传输所需的移位脉冲

            在方式0时,串行通信口又分两种工作情况:发送数据和接收数据。

    4.1.1 方式0-发送数据

            当串行通信口工作在方式0时,若要发送数据,通常在外部接8位串/并转换移位寄存器74LS164,具体连接电路如图7所示。其中RXD端用来输出串行数据,TXD端用来输出移位脉冲,P1.0端用来对74LS164进行清0

     图7 串行通信在方式0时的数据发送电路

            在单片机发送数据前,先从P1.0引脚发出一个清0信号(低电平)到74LS164的CLR引脚,对其进行清0,让D7~D0全部为“0”然后单片机在内部执行写SBUF指令,开始从RXD端(P3.0引脚)送出8位数据,与此同时,单片机的TXD端输出移位脉冲到74LS164的CLK引脚,在移位脉冲的控制下,74LS164接收单片机RXD端送到的8位数据(先低位后高位),数据发送完毕,在74LS164的D7~D0端输出8位数据。另外,在数据发送结束后SCON寄存器的发送中断标志位TI自动置“1”

    4.1.2 方式0-接收数据

            当串行通信口工作在方式0时,若要接收数据,一般在外部接8位并/串转换移位寄存器74LS165,具体连接电路如图8 所示。在这种方式时,RXD端用来接收输入的串行数据,TXD端用来输出移位脉冲,P1.0端用来对74LS165的数据进行锁存

     图8 串行通信口在方式0时的数据接收电路

            在单片机接收数据前,先从 P1.0 引脚发出一个低电平信号到74LS165 的S/\overline{L}\引脚,让74LS165锁存由D7~D0端输入的8位数据,然后单片机内部执行读SBUF指令,与此同时,单片机的TXD端送移位脉冲到74LS165的CLK1引脚,在移位脉冲的控制下,74LS165中的数据逐位从RXD端送入单片机,单片机接收数据完毕,SCON寄存器的接收中断标志位RI自动置“1”。

            在方式0中,串行通信口发送和接收数据的波特率都是fosc/12

    4.2 方式1

            当SCON寄存器中的SM0=0、SM1=1时,串行通信口工作在方式1

            在方式1时,串行通信口可以发送和接收每帧10位的串行数据其中TXD端用来发送数据,RXD端用来接收数据。

            在方式1中,一帧数据中有10位,包括1位起始位(低电平)、8位数据位(低位在前)和1位停止位(高电平)。在方式1时,串行通信口又分两种工作情况:发送数据和接收数据。

    4.2.1 方式1-发送数据

            在发送数据时,若执行写SBUF指令,发送控制器在移位脉冲(由定时器/计数器T1产生的信号再经16或32分频而得到)的控制下,先从TXD端送出一个起始位(低电平),然后再逐位将8位数据从 TXD 端送出,当最后一位数据发送完成,发送控制器马上将SCON的TI位置“1”,向CPU发出中断请求,同时从TXD端输出停止位(高电平)

    4.2.2 方式1-接收数据

            在方式1时,需要设置SCON中的REN=1,串行通信口才允许接收数据。由于不知道外部设备何时会发送数据,所以串行通信口会不断检测RXD端,当检测到RXD端有负跳变(由“1”变为“0”)时,说明外部设备发来了数据的起始位,于是启动RXD端接收,将输入的8位数据逐位移入内部的输入移位寄存器。8位数据全部进入输入移位寄存器后,如果满足RI位为“0”、SM2位为“0”(若SM2不为“0”,但接收到的数据停止位为“1”也可以)的条件,输入移位寄存器中的8位数据才可以放入SBUF,停止位的“1”才能送入SCON的RB8位中,RI位就会被置“1”,向CPU发出中断请求,让CPU取走SBUF中的数据,如果条件不满足,输入移位寄存器中的数据将无法送入SBUF而丢弃,重新等待接收新的数据

    4.3 方式2

            当SCON寄存器中的SM0=1、SM1=0时,串行通信口工作在方式2

            在方式2时,串行通信口可以发送和接收每帧11位的串行数据,其中1位起始位、8位数据位、1位可编程位和1位停止位。TXD端用来发送数据,RXD端用来接收数据

            在方式2时,串行通信口又分两种工作情况:发送数据和接收数据。

    4.3.1 方式2-发送数据

            在方式2时,发送的一帧数据有11位,其中有9位数据,第9位数据取自SCON中的TB8位。在发送数据前,先用软件设置TB8位的值,然后执行写SBUF指令(如MOV SBUF,A),发送控制器在内部移位脉冲的控制下,从TXD端送出一个起始位(低电平),然后逐位送出8位数据,再从TB8位中取出第9位并送出,当最后一位数据发送完成,发送控制器马上将SCON的TI位置“1”,向CPU发出中断请求,同时从TXD端输出停止位(高电平)

    4.3.2 方式2-接收数据

            在方式2时,同样需设置SCON的REN=1,串行通信口才允许接收数据,然后不断检测RXD端是否有负跳变(由“1”变为“0”),若有,说明外部设备发来了数据的起始位,于是启动RXD端接收数据。当8位数据全部进入输入移位寄存器后,如果RI位为“0”、SM2位为“0”(若SM2不为“0”,但接收到的第9位数据为“1”也可以),输入移位寄存器中的8位数据才可以送入SBUF,第9位会放进SCON的RB8位,同时RI位置“1”,向CPU发出中断请求,让CPU取走SBUF中的数据,否则输入移位寄存器中的数据将无法送入SBUF而丢弃

    4.4 方式3

            当SCON中的SM0=1、SM1=1时,串行通信口工作在方式3方式3与方式2一样,传送的一帧数据都为11位,工作原理也相同,两者的区别仅在于波特率不同,方式2的波特率固定为fosc/64或fosc/32,而方式3的波特率则可以设置

    4.5 波特率的设置

            在串行通信中,为了保证数据的发送和接收成功,要求发送方发送数据的速率与接收方接收数据的速率相同,而将双方的波特率设置相同就可以达到这个要求。在串行通信的四种方式中,方式0的波特率是固定的,而方式1~方式3的波特率则是可变的波特率是数据传送的速率,它用每秒传送的二进制数的位数来表示,单位符号是bit/s

    4.5.1 方式0的波特率

            方式0的波特率固定为时钟振荡频率的1/12,即方式0的波特率 = fosc/12

    4.5.2 方式2的波特率

            方式2的波特率由PCON寄存器中的SMOD位决定

            当SMOD = 0时,方式2的波特率为时钟振荡频率的1/64;

            当SMOD = 1时,方式2的波特率加倍,为时钟振荡频率的1/32,即

    方式2的波特率 = fosc*2^{SMOD}/64

    4.5.3 方式1和方式3的波特率

            方式1和方式3的波特率除了与SMOD位有关,还与定时器/计数器T1的溢出率有关。方式1和方式3的波特率可用下式计算:

    方式1、3的波特率 = T1的溢出率·2^{SMOD}/32

            T1的溢出率是指定时器/计数器T1在单位时间内计数产生的溢出次数,也即溢出脉冲的频率

            在将定时器/计数器T0设作工作方式3时,T1可以工作在方式0、方式1或方式2三种方式下。

            当T1工作于方式0时,它对脉冲信号(由时钟信号fosc经12分频得到)进行计数,计到2^{13}时会产生一个溢出脉冲到串行通信口作为移位脉冲;

            当T1工作于方式1和2时,则分别要计到2^{16}2^{8}−X(X为T1的初值,可以设定)才产生溢出脉冲。

            如果要提高串行通信口的波特率,可让T1工作在方式2,因为该方式计数时间短,溢出脉冲频率高,并且能通过设置T1的初值来调节计数时间,从而改变T1产生的溢出脉冲的频率(又称T1的溢出率)。

            当T1工作在方式2时,T1两次溢出的时间间隔,也即T1的溢出周期为

    T1的溢出周期 = (2^{8}− X)·12/ fosc

            T1的溢出率为溢出周期的倒数,即

    T1的溢出率 = fosc/[12·(2^{8}− X)]

            故当T1工作在方式2时,串行通信口工作方式1、3的波特率为

            方式1、3的波特率 = (2^{SMOD}/32)·fosc/[12·(2^{8}− X)] 

            由上式可推导出T1在方式2时,其初值X为

    X = 2^{8}− (2^{SMOD}·fosc)/(384·波特率)

            举例:单片机的时钟频率fosc=11.0592MHz,现要让串行通信的波特率为2400bit/s,可将串行通信口的工作方式设为1、T1的方式设为2,并求出T1应设的初值。

            求T1初值的过程如下。

            先进行寄存器设置:为了让波特率不倍增,将 PCON 寄存器中的数据设为00H,这样SMOD位就为“0”;设置TMOD寄存器中的数据为20H,这样T1就工作在方式2。再计算并设置T1的初值:

    X = 2^{8}2^{SMOD}·fosc/384·波特率 = 256 −(2^{0}× 11.0592 × 10^{6})/(384 × 2400)= 244

            十进制数244转换成十六进制数为F4H,将T1的初值设为F4H。

            由于设置波特率和初值需要计算,比较麻烦,一般情况下可查表来进行设置。常见的波特率设置见表2。

    表2 常用的波特率设置

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 116,638
精华内容 46,655
关键字:

串行数据通信的三种方法