Chapter8:串行口:《单片机》笔记

Chapter8:串行口

8.1 串行通信的基本概念

在数据采集or工业控制的过程中,很多个小的单片机送往前方采集数据【工业现场等】,远离主机。现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。

8.1.1 数据通信2种方式:并行/串行通信

  • 串行通信:所传送数据的各位按顺序一位一位地发送或接收。三根线、发送、接收、地。
    特点:速度慢,成本低,适合远距离传输。

  • 并行通信: 所传送数据的各位同时发送或接收,数据有多少位就需要多少根数据线。
    特点: 速度快,成本高,适合近距离传输。
    Chapter8:串行口:《单片机》笔记

8.1.2 串行通信细分为2种方式:异步/同步通信

异步通信:将数据分成一帧一帧,每一帧里面包含:起始位、数据位、校验位、结束位。【要知道】

一开始都是高电平,然后突然来个低电平,就知道数据来了。奇偶校验位,最后高电平结束。
Chapter8:串行口:《单片机》笔记
同步通信:两个同步字符、然后直接一堆数据位、最后来个校验位。【了解一下】
Chapter8:串行口:《单片机》笔记

8.1.3 单工、半双工、全双工通信

  1. 单工:一端只能发送,另一端只能接收。
    Chapter8:串行口:《单片机》笔记
  2. 半双工:通信双方,在某一时刻,只能一个发送一个接收数据。
    Chapter8:串行口:《单片机》笔记
  3. 全双工:通信双方可以同时发送和接收数据。
    Chapter8:串行口:《单片机》笔记
  • 51单片机属于:异步 全双工 通信

8.1.4 串行接口的任务

  1. 实现数据格式化:

    CPU发出的数据是并行数据,接口电路应实现不同串行通信方式下的数据格式化任务

  2. 进行串、并转换

    在发送端,接口将CPU送来的并行数据转换成串行数据进行传送;而在接收端,接口要将接 收到串行数据变成并行数据送往CPU,由CPU进行处理。

  3. 控制数据传输的速率(波特率)

    每秒能传输多少二进制代码。发送方A和接收方B的波特率要一致。

  4. 进行传送错误检测

    传送的数据自动生成校验码,接收的时候根据校验码判断是否出错。

  • 总结: 51单片机内有一个全双工的异步通信接口,通过对串行接口写控制字TCON可以选择其数据格式,同时内部有波特率发生器,提供可选的波特率,可完成双机通信多机通信

8.1.5 串行通信接口

串行接口通常分为2种类型:

  1. 串行通信接口:设备之间的互连接口。
  2. 串行扩展接口(ch11-我们不做要求):设备内部器件之间的互连接口

8.1.6 波特率和发送接收时钟

  1. 波特率:

    单位时间内传送的信息量,以每秒传送的二进制位数为单位。 bit/s (bps)
    如:100字符/秒,1个字符8位有效位,3位辅助位(起始、停止、校验),共11位,
    波特率: 100×11=1100(波特)平均每位传送占用时间 Td = 1/1100=0.909ms

  2. 发送、接收时钟:
    在串行传输中,二进制数据序列是以数字波形出现的,发送时在发送时钟作用下将发送移位寄存器的数据串行移位输出;在接收时,在接收时钟的作用下将通信线上传来的数据串行移入移位寄存器,所以发送时钟和接收时钟也可称作移位时钟。能产生时钟的电路称为波特率发生器

  3. 固定/可变 波特率

    • 在单片机中,发送/接收时钟可以由系统时钟 fosc 产生,这种波特率称为固定波特率方式。【由晶振决定】
    • 也可以由单片机内部定时器T1 产生, T1 工作于自动再装入 8 位定时方式(方式 2),由于定时器的计数初值可以人为改变,T1 产生的时钟频率也就可变,这种称为可变波特率方式
    • 单片机串行通信的波特率选择因工作方式不同而不同

8.1.7 通信线的连接

  • 两个设备要进行通信,距离和速度的关系。通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离。不同的通信距离,串行通信电路有不同的连接方法.

  • 近距离:1.5m,直接连起来。

  • 远距离:15m就比较远了,我们要加上电平转换(RS-232C)。

  • 超远距离:1KM以上,要加调制解调器Modem。

8.1.8 关于RS-232C 和 MAX232芯片

  • 主要的引脚有三个:

    引脚3 TXD —数据发送
    引脚2 RXD —数据接收
    引脚5 GND — 地

  • 其他的引脚:都是为了连接更加稳定,握手信号。

  • 设备之间通信的距离 < 15 m ,最大传输速率 20Kb/s

  • 电气特性:采用负逻辑。“1”对应负电压,“0”对应正电压。【要知道】

  • TTL电平和RS-232C的转换:使用专用的集成电路来进行转换。

  • MAX232芯片:可以双向转换,且只要加 +5V 电压就行了。【常用】

8.1.9 单片机串行通信电路

  1. 单片机和单片机通信:
    Chapter8:串行口:《单片机》笔记
  2. 单片机和PC机的通信:
    Chapter8:串行口:《单片机》笔记

8.2 串行通信接口结构和工作原理

51单片机有一个可编程的全双工异步串行通信接口,它可作异步串行通信(UART)用,也可作同步移位寄存器,其帧格式可有8位、10位或l l位,并能设置各种波特率,给使用者带来很大的灵活性。

8.2.1 串行口内部结构

Chapter8:串行口:《单片机》笔记

8.2.2 串行通信的传送过程

Chapter8:串行口:《单片机》笔记

8.2.3 波特率的设定

波特率发生器可以有两种选择:

  1. 定时器T1作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率。
  2. 以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率

8.3 串行通信的控制寄存器

51单片机串行口是一个可编程的接口,编程时主要是对两个特殊功能寄存器SCON 和PCON的控制。

8.3.1 串行口控制寄存器 SCON(98H)

Chapter8:串行口:《单片机》笔记

8.3.2 电源控制寄存器PCON(87H)

Chapter8:串行口:《单片机》笔记

8.4 串行口的工作方式

8.4.1 方式0

Chapter8:串行口:《单片机》笔记

8.4.2 方式1

Chapter8:串行口:《单片机》笔记

8.4.3 方式2

Chapter8:串行口:《单片机》笔记

8.4.4 方式3

Chapter8:串行口:《单片机》笔记

8.5 串行口的应用编程

8.5.1 固定/可变波特率、查询/中断方式

  • 串行口的波特率有两种方式:

    1. 固定波特率【晶振一定,这个就定】

    2. 可变波特率【要先确定T1计数初值,并初始化】

  • 串行通信的编程方式:

    1. 查询方式: 查TI或RI 是否为“1”

    2. 中断方式:如果预先开了中断,当TI、RI 为“1”,会自动产生中断。
      Chapter8:串行口:《单片机》笔记

8.5.2 查询方式

  • 《发送》流程图:

    为什么用方式2?:会自动装入常数,精度高。
    Chapter8:串行口:《单片机》笔记

  • 《接收》流程图
    Chapter8:串行口:《单片机》笔记

8.5.3 中断方式

  • 中断方式的初始化编程同查询方式,不同的是要开中断,即置位EA和ES,编写中断服务程序。

  • 《发送》流程图
    Chapter8:串行口:《单片机》笔记

  • 《接收》流程图
    Chapter8:串行口:《单片机》笔记

8.5.4 编程举例

*具体代码见ppt

例8-1:两台单片机互相发送接收。

例8-2:一台单片机自己发给自己,自己接收。

例8-4:方式0,扩展I/O接口。接8个数码管,使内部数据存储器58H~5FH单元的内容依次显示在8个数码管上。

8.5.5 多机通讯

  • 要保证主机与所选择的从机实现可靠地通讯,必须保证串口具有识别功能。
    SCON中的SM2位就是满足这一条件而设置的多机通讯控制位。
    原理:在串行口以方式2(或方式3)接收时,若SM2=1,表示置多机通讯功能位,这时有两种可能:
    (1)接收到的第9位数据为1时,数据才装入SBUF,并置中断标志RI=1向CPU发出中断请求;
    (2)接收到的第9位数据为0时,则不产生中断标志,信息将抛弃。

  • 若SM2=0,则接收的第9位数据不论是0还是1,都产生RI=1中断标志,接收到的数据装入SBUF中。
    应用上述特性,便可实现MCS-51的多机通讯。

  • 设多机系统中有一主机和3个8031从机,如下图。
    主机的RXD与从机的TXD相连,主机TXD与从机的RXD端相连。从机地址分别为00H、01H、02H。

Chapter8:串行口:《单片机》笔记

  • 多机通讯工作过程:
    (1)从机串行口编程为方式2或方式3接收,且置“1”SM2和REN位,使从机只处于多机通讯且接收地址帧的状态。
    (2)主机先将从机地址(即准备接收数据的从机)发给各从机, 主机发出的地址信息的第9位为1,各从机接收到的第9位信息RB8为1,且由于SM2=1,则置“1” RI,各从机响应中断,执行中断程序。在中断程序中,判主机送来的地址是否和本机地址相符合,相符则该从机清“0”SM2位,准备接收主机的数据或命令;若不符,则保持SM2=1状态。

    (3)接着主机发送数据帧,此时各从机串行口接收到 的RB8=0,只有地址相符合的从机系统(即SM2=0的从机)才能**RI,从而进入中断,在中断程序中接收主机的数据(或命令); 其它的从机因SM2=1,又RB8=0不**中断标志RI,不能进入中断,接收的数据丢失。
    前图所示的多机系统是主从式,由主机控制多机之间 的通讯,从机和从机的通讯只能经主机才能实现。