17 串行接口与C51编程
19
17.3.3 串行口控制寄存器SCON SCON用来控制串行口的工作方式和状态,可以位寻址,字 节地址为98H。 其格式如图17.9所示。
SCON 9FH 9EH 9DH
图17.9
9CH
9BH
9AH 99H
RB8 TI
98H
RI
SCON的各位定义
SM0 SM1 SM2 REN TB8
SM0、SM1:串行工作方式选择位。定义如下表17.1所示
7
17.1.2 串行通信的制式
在串行通信中数据是在两个站之间进行传送的,按照数据 传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种制式。图17.4为三种 制式的示意图。 单工:只允许单方向传送,只需一条数据线。 半双工 :接收和发送分时双向进行,只需一条数据线(如对讲 机)。 全双工 :甲、乙两机之间数据的发送和接收可以同时进行,通 信必须使用二根数据线(如固定电话) 。
10
17.2.1 RS-232C接口 RS-232C是使用最早、应用最多的一种异步串行通信总线 标准。它是美国电子工业协会(EIA)1962年公布、1969年最 后修订而成的。其中RS表示Recommended Standard,232是该 标准的标识号,C表示最后一次修订。 RS-232C主要用来定义计算机系统的一些数据终端设备 (DTE)和数据电路终接设备(DCE)之间的电气性能。例如 CRT、打印机与CPU的通信大都采用RS-232C接口,MCS-51单片 机与PC机的通信也是采用该种类型的接口。由于MCS-51系列单 片机本身有一个全双工的串行接口,因此该系列单片机用RS232C串行接口总线非常方便。 RS-232C串行接口总线适用于:设备之间的通信距离不大于 15米,传输速率最大为20kB/s。
SM0 SM1 工作方式
功
能
波特率
0
0 1
0
1 0
方式0
方式1 方式2
8位同步移位寄存器
10位UART 11位UART
fosc/12
可变 fosc/64或fosc/32
1
1
方式3
11位UART
可变
20
SCON
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM2:多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收时,若SM2=1, 且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1。 在方式2、3处于接收或发送方式,若SM2=0,不论接收到第9位RB8为0还是为1, TI,RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有收到有效的停止 位后,RI置1。在方式0中,SM2应为0。 REN:允许串行接收位。由软件置位或清零。REN=1时,允许接收,REN=0时,禁止接 收。 TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位,可做奇偶校验位。 在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数 据帧时TB8为0。 RB8:接收数据的第9位。功能同TB8。 TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其他方式中, 在发送停止位之初由硬件置位。因此TI是发送完一帧数据的标志,可以用指令来查询 是否发送结束。TI=1时,也可向CPU申请中断,响应中断后都必须由软件清除TI。 RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其他方式中, 在接收停止位的中间由硬件置位。同TI一样,也可以通过指令来查询是否接收完一帧 数据。RI=1时,也可申请中断,响应中断后都必须由软件清除RI。 SCON中的低2位与中断有关,在中断的有关章节中有论述。
4
17.1.1.3 80C51的帧格式 80C51串行口通过编程可设置4种工作方式,三种帧格式。 方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。 方式1以10位为一帧传输,设有一个起始位“0”,8个数据位和一个停 止位“1”。 方式2和3以11位为一帧传输,设有1个起始位“0”,8个数据位,1个可 编程位(第九数据位)D8和1个停止位“1”。 17.1.1.4 波特率(baud rate) 异步通信的另一个重要指标为波特率。 波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为bit/s, 即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越 快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内 所传字符帧的帧数,和字符帧格式有关。 异步通信的优点: 通常,异步通信的波特率为50~9600bit/s。 异步通信的优点是不需要传送同步时钟,字符帧长度不受限制,故设备简 单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。
17
17.3.1 MCS-51单片机的串行口结构 MCS-51单片机内部有两个独立的接收、发送缓冲器SBUF, SBUF 属于特殊功能寄存器。发送缓冲器只能写入不能读 出,接收缓冲器只能读出不能写入,二者共用一个字节地址 (99H)。串行口的结构如图17.8所示。
18
特殊功能寄存器
与MCS-51串行口有关的特殊功能寄存器有SBUF,SCON, PCON,下面对它们分别详细介绍。 17.3.2 串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收、发送寄存器,一个用 于存放接收到的数据,另一个用于存放欲发送的数据,可同时 发送和接收数据。两个缓冲器共用一个地址99H,通过对 SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进 行操作。CPU在写SBUF时,就是修改发送缓冲器;读SBUF, 就是读接收缓冲器的内容。 接收或发送数据,是通过串行口对外的两条独立收发信号 线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、 接收数据,为全双工制式。
13
17.2.4 RS-232C总线规定 RS-232C标准总线为25根,采用标准的D型25芯插头座。各 引脚的排列如图17.7所示。 此外,与RS-232C相匹配的连接器还有DB-15和DB-9,其引 脚的定义也各不相同。
14
在RS-232的通讯标准中是以一个25针的接口来定义的,并 在早期的计算机如PC或XT机型上广泛使用,但在AT机以后的机 型上,实际均采用了9针的简化版本应用,现在所说的232通讯 均默认为9针的接口。图一显示了9针通讯的接口管脚名称,以 下是各管脚的说明: 1 载波检测(CD) 2 接受数据(RXD) 3 发出数据(TXD) 4 数据终端准备好(DTR) 5 信号地线(SG) 6 数据准备好(DSR) 7 请求发送(RTS) 8 清除发送(CTS) 15 9 振铃指示(RI)
第17章 串行通信及实验
17.1 串行通信基础 计算机与外部的信息交换称为“通信”。 在单片机系统中,CPU和外部通信有两种通信方式:并行 通信和串行通信。并行通信,即数据的各位同时传送,如图 17.1(a)所示;串行通信,即数据一位一位顺序传送,如图 17.1(b)所示。
1
串行通信的优点与缺点
两种基本通信方式比较起来,串行通信方式能够节省传输 线,特别是数据位数很多和远距离数据传送时,这一优点更为 突出;串行通信方式的主要缺点是传送速度比并行通信要慢。 17.1.1 串行通信的分类 按照串行数据的时钟控制方式,串行通信可分为同步通信 和异步通信两类。 在异步通信中,接收端是依靠字符帧格式来判断发送端是 何时开始发送,何时结束发送的。字符帧格式是异步通信的一 个重要指标。
实际应用中,电子工程师在设计计算机与外围设备的通信 时,通常在9针的基础再进行简化,只用其中的2、3、5三个管 脚进行通信。这三个管脚分别是接收线、发送线和地线,在一 般情况下即可满足通讯的要求,计算机和外部通讯的接线方法 如图:
值得注意的是,图中2、3两脚是交叉互联的,这很容易理 解,因为一个设备的发送线必须联接到另外一台设备的接收线 上,反之亦然。
2
17.1.1.1 异步通信
异步通信(Asynchronous Communication) 在异步通信中,数据通常是以字符为单位组成字符帧传送 的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在 前,高位在后,通过传输线被接收端一帧一帧地接收。发送端 和接收端由各自独立的时钟来控制数据的发送和接收,这两个 时钟彼此独立,互不同步。 17.1.1.2 字符帧(Character Frame) 字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停 止位等四部分组成,如图17.2所示。
9
17.2 串行通信总线标准及其接口
在单片机应用系统中,数据通信主要采用异步串行通信。 在设计通信接口时,必须根据需要选择标准接口,并考虑传输 介质、电平转换等问题。采用标准接口后,能够方便地把单片 机和外设、测量仪器等有机地连接起来,从而构成一个测控系 统。例如当需要单片机和PC机通信时,通常采用RS-232接口进 行电平转换。 异步串行通信接口主要有三类: RS-232接口;RS-449、 RS-422和RS-485接口以及20mA电流环。下面介绍较常用的RS232接口标准。
16
简单的全双工系统 在最简单的全双工系统中,仅用发送数据、接收数据和 信号地三根线即可,对于MCS-51单片机,利用其RXD(串行数 据接收端)线、TXD(串行数据发送端)线和一根地线,就可 以构成符合RS-232C接口标准的全双工通信口。 17.3 MCS-51单片机的串行接口 MCS-51单片机的内部有一个可编程全双工串行通信接口, 它具有UART的全部功能,该接口不仅可以同时进行数据的接收 和发送,也可做同步移位寄存器使用。该串行口有4种工作方 式,帧格式有8位、10位和11位,并能设置各种波特率。本节 将对其结构、工作方信息格式标准 RS-232C采用串行格式,如图17.5所示。该标准规定:信息 的开始为起始位,信息的结束为停止位;信息本身可以是5、6、 7、8位再加一位奇偶位。如果两个信息之间无信息,则写 “1”,表示空。