目录
7.1 串行通信概述
1、并行通信和串行通信(数据通信的两种常用形式)
(1)并行方式——数据的各位同时发送或同时接收。
并行传送特点:传送速度快,但因需要多根传输线,故一般只在近距离通信中使用。
(2)串行方式——数据的各位依次逐位发送或接收。
串行传送特点:传输速度慢,但因只需较少传输线,故适合于远距离通信。
按照传输数据流向,串行通信具有3种传输形式:
实际应用中,尽管多数串行通信接口电路具有全双工功能,但仍以半双工为主(简单实用)。
2、波特率
在串行通信的数据是按位进行传送的 ,数据传输速率用波特率指标衡量。
波特率:每秒发送二进制数码的位数,即bps (位/秒)
国际推荐波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等(此时的晶振频率为11.0592MHz)。
串行通信的收发双方必须采用相同的波特率。
3、异步通信和同步通信(串行通信基本通信方式)
(1)异步通信——以字符为单位组成字符帧进行的数据传送。
一帧数据由起始位、数据位、[可编程位]和停止位构成
起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据。
数据位:要传输的数据信息,可以是字符或数据,一般为5~8位,由低位到高位依次传送。
可编程位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的联络信息。
停止位:位于数据位末尾,占1位,始终为高电平,用于向接收端表示1帧数据已发送完毕。
异步通信特点:
对收发双方的时钟精度要求较低(收发双方不同步时,能依靠在每帧开始时的不断对齐,自行纠正偏差);
传送速度较低(每个字节都要建立一次同步)。
(2)同步通信——数据以块为单位进行的数据传送
在发一组数据时,只在开始用若干个同步字符作为双方的号令,然后连续发送整组数据。
同步通信特点:
传输效率高(以数据块为单位连续传送,数据结构紧凑);
对通信硬件要求高(要求双方有准确的时钟)。
本章不涉及同步通信问题
7.2 MCS-51的串口控制器
7.2.1串行口内部结构
51内部有1个可编程的全双工串行通信接口,可作为通用异步接收/发送器(UART),也可作为同步移位寄存器,还可作为串并转化器(现在生产的电脑上无接口)。
它的数据帧格式为8位、10位和11位3种,可设置多种不同的波特率。
结构组成:SBUF发 +SBUF收 +发送控制器 +接收控制器 +接收移位寄存器 +波特率发生器 +SCON +RXD(P3.0)+TXD(P3.1)
数据缓冲器SBUF:
在物理上是相互独立的,一个用于发送数据(SBUF发)、一个用于接收数据(SBUF收)。
共用一个地址(99H),通过读写指令区别是对哪个SUBF的操作。
发送控制器:
在门电路和定时器T1的配合下,将SBUF发中的并行数据转为串行数据,并自动添加起始位、可编程位、停止位。
这一过程结束后自动使发送中断请求标志位TI置1,表明已将SBUF发中的数据输出到TXD引脚,即SBUF发为空。
接收控制器:
在输入移位寄存器和定时器T1的配合下,使来自RXD引脚的串行数据转为并行数据,并自动过滤掉起始位、可编程位、停止位。
这一过程结束后自动使接收中断请求标志位RI置1,表明接收的数据已存入SBUF收,即SBUF收为满 。
定时器T1:
产生节拍控制用的通信时钟信号(波特率时钟);
发送数据时,时钟的下降沿对应于数据移位输出;
接收数据时,通信时钟的上升沿对应于数据位采样。
RXD和TXD引脚:
用于串行信号或时钟信号的传入或传出。
7.2.2串行口控制寄存器
(1) 串口控制寄存器SCON(98H)
强调:TI和RI硬件置1后,需用软件方式清零(查询或中断法皆如此)
SM2、TB8、RB8主要用于多机通讯或数据校验
复位后默认状态:串行方式0,禁止接收,SBUF发为满,SBUF收为空,…
(2) 电源控制寄存器PCON(87H)
SMOD可使由T1产生的波特率时钟频率加倍
复位后默认状态:波特率不加倍
通信时钟波特率原理
T1溢出脉冲有两种分频路径:16分频或32分频;
SMOD是决定分频路径的逻辑开关;波特率取决于T1的定时参数(a,n,fosc)和SMOD参数。
串口通信在不同工作方式时的波特率是不同的,上述波特率只适用于方式1和方式3。
7.3 串行工作方式0及其应用
串行通信的4种工作方式
方式0——8位同步移位寄存器方式
串行口
方式0
8位数据为一帧,不设起始位和停止位,先发送或接收最低位。
数据传输波特率固定为十二分频晶振fosc/12
由RXD引脚(P3.0)输入或输出数据
TXD引脚(P3.1)输出fosc/12时钟信号
方式0主要用于串并转换——I/O口数量不足时,可通过串口方式0进行扩展,但需要相应的扩展芯片配合。
实例1 利用74LS164扩展并行输出口,并实现LED由上向下循环。
(解析见“单片机_第7章 实例”或本专栏文章“单片机_介绍”中的网站中的PPT和实例)
7.4 串行工作方式1及其应用
方式1—— 10位数据异步通讯方式
方式1
一帧信息 = 1个起始位(0)+8位数据位+1个停止位(1)
指定T1为波特率时钟发生器, 一般选择定时方式2(此处的n=8)
发送数据由TXD(P3.1)输出,接收数据由RXD(P3.0)输入,初始化(RI、TI、REN、SM0、SM1)
方式1主要用于点对点(两机)通信
近距离串行传输
接线关系:主机TXD、RXD分别与外设RXD、TXD相接;两机共地
远距离串行传输
利用RS-232C进行电平转换——(1:-5~-15V,0:+5~+15V)
异步通信编程初始化
7.5 串行工作方式2及其应用
方式2——11位数据异步通信方式
方式2
SCON
发送时由硬件方式将TB8作为可编程位插入数据帧中;
接收时由硬件方式将数据帧的可编程位存入RB8中。
一帧信息 = 1个起始位(0)+8位数据位+ 1个可编程位(P) +1个停止位(1) 。
可编程位的作用——用于奇偶校验或多机通信标识。
方式2的波特率为固数值(即,通信时钟初始化仅需要设置PCON,与T1无关):
SUBF发为空时TI自动置1;SUBF收为满时RI的状态要由SM2和RB8共同决定。
若SM2=1,当RB8为1时,SUBF收为满可使RI置1;若RB8为0,则SUBF收为满也无法使RI置1。
若SM2=0,则无论RB8为何值, SUBF收为满都能使RI置1。
方式2用于固定波特率的奇偶校验(单机通讯)或多机通讯
奇偶校验原理:
例如,发送数据为0x45(0100 0101B),其奇偶校验值P=1(奇数个1),将P→TB8,发送时可连同数据0x45一起发出。接收端可自动将其可编程位放入RB8中。
只要将待测数据送入Acc即可由硬件求出奇偶校验值(使P赋值),再与RB8进行比较便可判断收发过程是否有误。
7.6 串行工作方式3及其应用
方式3——11位数据异步通信方式
方式3
方式3的波特率为可变的(其余方面皆与方式2相同)
方式3用于可变波特率的奇偶校验(单机通讯)或主从式通讯
主机与各从机之间能实现双向通信,而各从机之间不能直接通信,只能通过主机才能沟通。
多机通信做法:
主机向所有从机发送包含n#从机信息的地址帧;
所有从机都核查该地址帧,只有n#从机修改本机SM2 ;
主机发送数据帧,但只有n#从机能够接收到数据信息。
关键:
主机第1次发出的信息要能被所有的从机响应,而第2次的信息只能被n#从机所响应——多机通信控制位SM2对串行中断请求的管理功能。
多机通信原理:
(a) 所有从机都先使自己的SM2=1,而主机在发送的地址帧信息时先使TB8=1。这样,所有从机都能产生中断请求,并能接收到主机发来的地址信息;
(b) 各从机将主机发来的地址与本机地址编号相比较。若与本机相符(即命中) ,则该从机使自己的SM2=0,其余从机仍旧保持SM2=1;
(c) 主机接着发送TB8=0的数据帧信息。此时只有命中机(SM2=0)有中断请求,其它从机均无反映。
本章小结
1. 串行通信的数据是按位进行传送的,每秒传送的二进制数码的位数称为波特率。串行通信只需要一对传输线就可以实现通信,其特点是通信成本低,但传送速度较慢。串行通信可分为单工、半双工和全双工3种制式。以字符或字节为单位组成数据帧进行的传送称为异步通信,以数据块为单位连续进行的传送称为同步通信。
2. MCS-51内置有可编程的全双工异步串行通信接口,包括两个在物理上是相互独立的数据缓冲器SBUF,两个串口控制寄存器,即SCON和PCON。定时器T1作为波特率信号发生器。
3. 方式0是同步移位寄存器方式,采用8位数据帧格式,没有起始位和停止位,先发送或接收最低位。方式О主要用于单片机IO接口的扩展。
4. 方式1采用10位数据帧格式,包括1个起始位,8个数据位和1个停止位。方式1主要用于点对点通信。
5. 方式2和方式3采用11位数据帧格式,包括1个起始位、8个数据位、1个可编程位、1个停止位。方式2和方式3的差异在于前者波特率为固定值,而后者为可变值,主要用于奇偶校验或多机主从式通信。