实验四基于单片机的串行通信 实验目的 1.了解串行通信的基本知识; 2.掌握用单片机串行口实现串行通信的方法。 二、实验器材 微机、示波器、万用表、电源、AEDK仿真开发系统,面包板一块,MAX202C芯片一块, 电容、电阻、导线若干 三、实验原理 此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见 本讲义实验七 1.串行通信的异步和同步传送方式 CPU与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。 通信的基本方式可分为并行通信和串行通信两类。并行通信是指数据各位同时并行传 送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图4.1所示) 在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。但 当多位数据远程传输时,传输线路的开销就成为突出问题。由于串行通信只需一对传输线 并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本 一般而言,串行通信的传送速度明显低于并行通信。 数据 计 算 计算机或外设 算 计算机或外设 机 (a)并行通信 (b)串行通信 图4.1通信方式示意图
25 实验四 基于单片机的串行通信 一、 实验目的 1. 了解串行通信的基本知识; 2. 掌握用单片机串行口实现串行通信的方法。 二、 实验器材 微机、示波器、万用表、电源、AEDK 仿真开发系统,面包板一块,MAX202C 芯片一块, 电容、电阻、导线若干。 三、 实验原理 此处仅介绍与本实验内容密切相关的串行通信基本知识,其它有关基本知识介绍请见 本讲义实验七。 1. 串行通信的异步和同步传送方式 CPU 与其外部设备之间的信息交换或计算机之间的信息交换均可被称为“通信”。 通信的基本方式可分为并行通信和串行通信两类。并行通信是指数据各位同时并行传 送的通信方式,而串行通信是指数据逐位顺序串行传送的通信方式(如图 4.1 所示)。 在并行通信中,由于有多根传输线并行传送数据,因此传送速度快、通信速率高。但 当多位数据远程传输时,传输线路的开销就成为突出问题。由于串行通信只需一对传输线, 并且可以利用电话线等现有通信信道作为传输介质,因而可以大大降低传输线路的成本。 一般而言,串行通信的传送速度明显低于并行通信。 D0 数据 D1 D2 D3 D4 D5 D6 D7 控制线 信号地 (a)并行通信 (b)串行通信 图 4.1 通信方式示意图 计 算 机 计 算 机 或 外 设 计 算 机 或 外 设 计 算 机
串行通信分为异步传送和同步传送两类。异步通信是一种字符再同步的通信方式,而 同步通信是靠识别同步字符来实现数据的发送和接收的。 (1)异步传送方式 异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的 内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。②通信双方用 各自的时钟源来控制发送和接收。③通信双方按异步通信协议传输字符 异步通信格式如图42所示,每个字符由起始位、数据位、奇偶校验位和停止位四个 部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。 空闲位 起 校停起 数据位 验止始 数据位 校停 验止空闲位 位位 第n个字符帧 第n+1个字符帧 图42异步通信的字符帧格式 ●起始位:为“0”信号,占1位。起始位的作用有两个:①表示一个新字符帧的开始 即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停 止位后有一个“0”,就知道将发来一个新的字符帧。②用以同步接收端的时钟,以保 证后续的接收能正确进行。 数据位:紧接于起始位后面,它可以占5、6、7或8位不等,数据的位数依最佳传送 速率来确定。如所传数据为ASCI码字符,则常取7位。数据位传输的顺序,总是最 低位(LSB)D在先 ●奇偶校验位:在数据位之后,占1位。它用来检验信息传送否有错。它的状态常由发 送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校 验位中逻辑“1”的个数必须是偶数:若为奇校验,则数据位和校验位中逻辑“1”的 个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送 过程是否有错。 停止位:用“1”来表征一个字符帧的结束。停止位可以占1位、1.5位或2位不等。 接收端收到停止位时,表明这一字符己接收完毕,也表明下一个字符帧可能到来。若 停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态 图42既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。 串行通信的一个重要指标是波特率。它定义为每秒钟传送二进制数码的位数(亦称波 特率),以“位/秒”(bps)为单位。在异步通信中, 波待率=(每个字符帧的位数)×(每秒传送的字符数) 常用的波特率有600、1200、2400、4800、9600、19200(bps)等。 由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会 产生接收错误。时钟频率应比波特率高,时钟频率与波特率的比一般选16:1或者64:1 采用较高频率的时钟,在一位数据内就有16或64个时钟,就可以保证捕捉正确的信号
26 串行通信分为异步传送和同步传送两类。异步通信是一种字符再同步的通信方式,而 同步通信是靠识别同步字符来实现数据的发送和接收的。 (1) 异步传送方式 异步传送的特点是:①数据以字符方式随机且断续地在线路上传送(但在同一字符的 内部的传送是同步的)。各字符的传送依发送方的需要可连续,也可间断。②通信双方用 各自的时钟源来控制发送和接收。③通信双方按异步通信协议传输字符。 异步通信格式如图 4.2 所示,每个字符由起始位、数据位、奇偶校验位和停止位四个 部分顺序组成。这四个部分组成异步传输中的一个传输单元,即字符帧。 z 起始位:为“0”信号,占 1 位。起始位的作用有两个:①表示一个新字符帧的开始。 即线路上不传送字符时,应保持为“1”。接收端检测线路状态连续为“1”后或在停 止位后有一个“0”,就知道将发来一个新的字符帧。②用以同步接收端的时钟,以保 证后续的接收能正确进行。 z 数据位:紧接于起始位后面,它可以占 5、6、7 或 8 位不等,数据的位数依最佳传送 速率来确定。如所传数据为ASCII码字符,则常取 7 位。数据位传输的顺序,总是最 低位(LSB)DB 0B在先。 z 奇偶校验位:在数据位之后,占 1 位。它用来检验信息传送否有错。它的状态常由发 送端的奇偶校验电路确定。奇偶位的值取决于校验类型,若为偶校验,则数据位和校 验位中逻辑“1”的个数必须是偶数;若为奇校验,则数据位和校验位中逻辑“1”的 个数必须是奇数。也可以规定不用奇偶校验位,或用其它的校验方法来检验信息传送 过程是否有错。 z 停止位:用“1”来表征一个字符帧的结束。停止位可以占 1 位、1.5 位或 2 位不等。 接收端收到停止位时,表明这一字符已接收完毕,也表明下一个字符帧可能到来。若 停止位以后不是紧接着传送下一个字符帧,则让线路上保持为“1”,即空闲等待状态。 图 4.2 既表示一个字符紧接一个字符传送的情况,又表示两个字符间有空闲位的情况。 串行通信的一个重要指标是波特率。它定义为每秒钟传送二进制数码的位数(亦称波 特率),以“位/秒”(bps)为单位。在异步通信中, 波待率=(每个字符帧的位数)×(每秒传送的字符数) 常用的波特率有 600、1200、2400、4800、9600、19200(bps)等。 由于异步通信双方各用自己的时钟源,若时钟频率等于波特率,则频率稍有偏差就会 产生接收错误。时钟频率应比波特率高,时钟频率与波特率的比一般选 16:1 或者 64:1。 采用较高频率的时钟,在一位数据内就有 16 或 64 个时钟,就可以保证捕捉正确的信号。 1 1 0 D0 D1 D2 D3 D4 D5 D6 D7 C 1 0 DO D1 D2 D3 D4 D5 D6 D7 C 1 1 1 空闲位 数据位 起 始 位 校 验 位 停 止 位 起 始 位 数据位 校 验 位 停 止 位 空闲位 第 n 个字符帧 第 n+1 个字符帧 图 4.2 异步通信的字符帧格式
因此,在异步通信中,收发双方必须事先约定两件事:一是规定字符帧格式,即规定 字符各部分所占的位数,是否采用校验,以及校验的方式等;二是规定所采用的波特率以 及时钟频率和波特率间的比例关系。异步传送由于不传送同步时钟脉冲,所以设备比较简 单,实现起来方便,它还可根据需要连续地或有间隙地传送数据,对各字符间的间隙长度 没有限制。缺点是在数据字符串中要加上起同步作用的起始位和停止位,降低了有效数据 位的传送速率,仅适合于低速通信的场合。 (2)同步传送方式 同步传送方式以许多字符或许多位组成的数据块为传输单位连续地传送数据。在通信 开始以后,发送端连续发送字符,接收端也连续接收字符,直到一个数据块传送结束。同 步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步 字符SYNC来指示,这就提高了数据传送的效率,其符号格式如图43所示。同步通信可 以分为单同步字符方式和双同步字符方式,图4.3(a)为双同步字符方式,图43(b)为 单同步字符方式,同步字符之后是连续的数据块。同步字符可以由用户约定,当然也可以 采用ASCI码中规定的SYN代码,即16H。按同步方式通信时,在发送时要插入同步字 符,接收方检测到同步字符时,即准备开始接收,因此,硬件设备需有插入同步字符和相 应的检测手段,设备较复杂。在同步传送时,无论接收或发送,都要求统一时钟。为了保 证接收正确无误,发送方除了传送数据外还要把时钟信号同时传送出去。同步传送的优点 是传送速率较高,可达56K波特或更高。 +同步字符1同步字符2 一同步字符 L「「数据「数据 图43同步传送符号格式 2.Mcs-51系列单片机的串行通信接口 MCS一51系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收 和发送器,也可作为同步移位寄存器用。该串行口有4种工作模式(详见下文26)。片内 的定时器/计数器可用作波特率发生器。接收、发送均可工作在查询方式或中断方式。 2.1串行通信接口结构 MCS一51系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲 器SBUF,对外也有两条独立的收、发信号线RxD(P3.0)和TxD(P3.1)。可以同时发送、 接收数据,实现全双工传送。发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不 能读出,接收缓冲器只能读出不能写入。两个缓冲器占用同一个端口地址(99H)。具体对 哪一个缓冲器进行操作,取决于所用的指令是发送还是接收 接收是双缓存的,以避免在接收下一帧数据之前,CPU未能及时响应接收中断,未把
27 因此,在异步通信中,收发双方必须事先约定两件事:一是规定字符帧格式,即规定 字符各部分所占的位数,是否采用校验,以及校验的方式等;二是规定所采用的波特率以 及时钟频率和波特率间的比例关系。异步传送由于不传送同步时钟脉冲,所以设备比较简 单,实现起来方便,它还可根据需要连续地或有间隙地传送数据,对各字符间的间隙长度 没有限制。缺点是在数据字符串中要加上起同步作用的起始位和停止位,降低了有效数据 位的传送速率,仅适合于低速通信的场合。 (2) 同步传送方式 同步传送方式以许多字符或许多位组成的数据块为传输单位连续地传送数据。在通信 开始以后,发送端连续发送字符,接收端也连续接收字符,直到一个数据块传送结束。同 步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步 字符 SYNC 来指示,这就提高了数据传送的效率,其符号格式如图 4.3 所示。同步通信可 以分为单同步字符方式和双同步字符方式,图 4.3(a)为双同步字符方式,图 4.3(b)为 单同步字符方式,同步字符之后是连续的数据块。同步字符可以由用户约定,当然也可以 采用 ASCII 码中规定的 SYN 代码,即 16H。按同步方式通信时,在发送时要插入同步字 符,接收方检测到同步字符时,即准备开始接收,因此,硬件设备需有插入同步字符和相 应的检测手段,设备较复杂。在同步传送时,无论接收或发送,都要求统一时钟。为了保 证接收正确无误,发送方除了传送数据外还要把时钟信号同时传送出去。同步传送的优点 是传送速率较高,可达 56K 波特或更高。 (a) (b) 图 4.3 同步传送符号格式 2. MCS-51系列单片机的串行通信接口 MCS 一 51 系列单片机内部有一个可编程的全双工串行通信口,可作为通用异步接收 和发送器,也可作为同步移位寄存器用。该串行口有 4 种工作模式(详见下文 2.6)。片内 的定时器/计数器可用作波特率发生器。接收、发送均可工作在查询方式或中断方式。 2.1 串行通信接口结构 MCS 一 51 系列单片机内部的串行通信口,有二个物理上相互独立的接收、发送缓冲 器 SBUF,对外也有两条独立的收、发信号线 RxD(P3.0)和 TxD(P3.1)。可以同时发送、 接收数据,实现全双工传送。发送缓冲器和接收缓冲器不能互换,发送缓冲器只能写入不 能读出,接收缓冲器只能读出不能写入。两个缓冲器占用同一个端口地址(99H)。具体对 哪一个缓冲器进行操作,取决于所用的指令是发送还是接收。 接收是双缓存的,以避免在接收下一帧数据之前,CPU 未能及时响应接收中断, 未把 同步字符 1 同步字符 2 同步字符 数据 数据
上一帧数据取走而产生两帧数据重叠的问题。而对于发送器,因为发送时CPU是主动的, 不会产生写重叠的问题,所以不需要双缓存。 与串行通信口有关的寄存器有多个,除SBUF之外,还有SCON、PCON、I和定时 器/计数器,用校验方式进行通信,有时也会用到程序状态字寄存器PSW。 22串行口控制寄存器Sc0N SCON用于控制和监视串行口的工作状态,定义如下 表4.2S0ON寄存器 (MSB) (LSB) SMO SMI SM2 REN TB8 RB8TI SM0和SM1:串行口工作模式选择位,对应四种模式,见表43。 在模式0时,SM2不用,应设置为0。 在模式1时,SM2一般也应设置为0。若SM2=1,则只有收到有效停止位才会激活 RI,并自动发出串行口中断请求(设中断是开放的),若没有接收到有效停止位,则 RI清零。 在模式2或模式3下,SM2的设置与字符帧第九位的作用有关。①在第九位用作奇 偶位的情形,应置SM2=0。②在第九位用于表示是地址帧还是数据帧的多机通信情 形,若SM2=1和RB8=1时,RI不仅被激活,而且可以向CPU请求中断;若SM2 =0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活。SM2在多机 通信中的使用方法,详见本讲义P34的有关主从式多机通信过程的说明 表4.3串行口工作模式选择 SMO SM1 模式 功能 波特率 0 01 同步移位寄存器 for/12 0 8位UART 可变 9位UART fosc/64或fosc/32 9位UART REN:允许接收控制位,由软件置位或清除。REN=1则允许接收,REN=0,禁止接收。 TB8:该位是模式2和3中要发送的第九位数据。在许多通信协议中,该位是奇偶位, 可以按需要由软件置位或清除。在多机通信中,该位用于表示是地址帧还是数据帧 RB8:该位是模式2和3中已接收的第九位数据(可能是奇偶位,或是地址帧数据帧 标识位)。在模式1中,若SM2=0,RB8是已接收的停止位。在模式0中,RB8未用。 ●T:发送中断标志。在模式0中,在发送完第8位数据时,由硬件置位:在其他模式 中,在发送停止位之初,由硬件置位,申请中断,CPU响应中断后,发送下一帧数据 在任何模式中,都必须由软件清除T ●R:接收中断标志。在模式0中,接收第8位数据结束时,由硬件置位;在其他模式 中,在接收停止位的半中间,由硬件置位,申请中断,要求CPU取走数据。但在模式
28 上一帧数据取走而产生两帧数据重叠的问题。而对于发送器,,因为发送时 CPU 是主动的, 不会产生写重叠的问题,所以不需要双缓存。 与串行通信口有关的寄存器有多个,除 SBUF 之外,还有 SCON、PCON、IE 和定时 器/计数器,用校验方式进行通信,有时也会用到程序状态字寄存器 PSW。 2.2 串行口控制寄存器 SCON SCON 用于控制和监视串行口的工作状态,定义如下: 表 4.2 SCON 寄存器 (MSB) (LSB) SM0 SM1 SM2 REN TB8 RB8 TI RI z SM0 和 SM1:串行口工作模式选择位,对应四种模式,见表 4.3。 z SM2: 在模式 0 时,SM2 不用,应设置为 0。 在模式 1 时,SM2 一般也应设置为 0。若 SM2=1,则只有收到有效停止位才会激活 RI,并自动发出串行口中断请求(设中断是开放的),若没有接收到有效停止位,则 RI 清零。 在模式 2 或模式 3 下,SM2 的设置与字符帧第九位的作用有关。① 在第九位用作奇 偶位的情形,应置 SM2=0。② 在第九位用于表示是地址帧还是数据帧的多机通信情 形,若 SM2=1和 RB8=1 时,RI 不仅被激活,而且可以向 CPU 请求中断;若 SM2 =0,串行口以单机发送或接收方式工作,TI 和 RI 以正常方式被激活。SM2 在多机 通信中的使用方法,详见本讲义 P.34 的有关主从式多机通信过程的说明。 表 4.3 串行口工作模式选择 SM0 SM1 模 式 功 能 波 特 率 0 0 0 1 1 0 1 1 0 1 2 3 同步移位寄存器 8 位 UART 9 位 UART 9 位 UART fB OSCB/12 可变 fB OSCB/64 或fB OSCB/32 可变 z REN:允许接收控制位,由软件置位或清除。REN=1 则允许接收, REN=0, 禁止接收。 z TB8:该位是模式 2 和 3 中要发送的第九位数据。在许多通信协议中, 该位是奇偶位, 可以按需要由软件置位或清除。在多机通信中, 该位用于表示是地址帧还是数据帧。 z RB8:该位是模式 2 和 3 中已接收的第九位数据 (可能是奇偶位, 或是地址帧/数据帧 标识位)。在模式 1 中, 若 SM2=0, RB8 是已接收的停止位。在模式 0 中, RB8 未用。 z TI:发送中断标志。在模式 0 中, 在发送完第 8 位数据时, 由硬件置位;在其他模式 中, 在发送停止位之初, 由硬件置位,申请中断, CPU 响应中断后, 发送下一帧数据。 在任何模式中, 都必须由软件清除 TI. z RI:接收中断标志。在模式 0 中, 接收第 8 位数据结束时, 由硬件置位;在其他模式 中, 在接收停止位的半中间, 由硬件置位,申请中断, 要求 CPU 取走数据。但在模式
1中,SM2=1时,若未接收到有效的停止位,则不会对R置位。在任何模式中,都必 须由软件清除RI 2.3电源控制寄存器Pc0N中的波特率倍增控制位SMoD PCON中有与串行口通信波特率有关的控制位SMOD,SMOD=1时波特率加倍。 24允许中断寄存器|E的串行口中断控制位ES IE中的ES位为串行口中断控制位,ES=1且总中断允许位EA=1时,允许串行口中断 25定时器/计数器1作波特率发生器 在模式1和模式3下, 2 SMOD 波特率=2×(定时器/计数器溢出速率) 3212×(256-TH1) 其中⌒x为晶振频率,THl为定时器1的重装载值,定时器/计数器1工作于自动重装载 模式,即模式2。定时器1中断应禁止 2.6串行口的工作模式 串行口的四种工作模式中,模式1、2、3用于通信,模式0主要用于I/0口扩展。 模式0 在模式0状态下,串行口为同步移位寄存器方式,其波特率固定为fa/12。RxD(P3.0) 端输入/输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。发送、接 收的是8位数据,低位在先。 模式1 串行口工作在模式1,为8位异步通信口,即一字符帧由10位组成:1位起始位、8 位数据位和1位停止位。 模式1发送 写SBUF 起姆包顶止位 图4.4模式1发送时序 图4.4示意模式1的发送时序。模式1的发送是在发送中断标志TI=0时,由一条写 SBUF的指令启动发送控制器的SEN端,使SEND=0。启动发送后,串行口能自动地插入
29 1 中, SM2=1 时, 若未接收到有效的停止位, 则不会对 RI 置位。在任何模式中,都必 须由软件清除 RI. 2.3 电源控制寄存器 PCON 中的波特率倍增控制位 SMOD PCON 中有与串行口通信波特率有关的控制位 SMOD,SMOD=1 时波特率加倍。 2.4 允许中断寄存器 IE 的串行口中断控制位 ES IE 中的 ES 位为串行口中断控制位,ES=1 且总中断允许位 EA=1 时,允许串行口中断。 2.5 定时器/计数器 1 作波特率发生器 在模式 1 和模式 3 下, 其中fB oscB为晶振频率, TH1 为定时器 1 的重装载值.,定时器/计数器 1 工作于自动重装载 模式, 即模式 2。定时器 1 中断应禁止。 2.6 串行口的工作模式 串行口的四种工作模式中,模式 1、2、3 用于通信,模式 0 主要用于 I/O 口扩展。 模式 0 在模式 0 状态下,串行口为同步移位寄存器方式,其波特率固定为fB oscB/12。RxD(P3.0) 端输入/输出数据,而TxD(P3.1)线专用于输出时钟脉冲给外部移位寄存器。发送、接 收的是 8 位数据,低位在先。 模式 1 串行口工作在模式 1,为 8 位异步通信口,即一字符帧由 10 位组成:1 位起始位、8 位数据位和 1 位停止位。 模式 1 发送 图 4.4 模式 1 发送时序 图 4.4 示意模式 1 的发送时序。模式 1 的发送是在发送中断标志 TI=0 时,由一条写 SBUF 的指令启动发送控制器的 SEND 端,使 SEND=0。启动发送后,串行口能自动地插入一 32 12 ( ) 256 1 2 TH fosc SMOD × − = × 波特率 ( ) 定时器/计数器溢出速率 32 2 = × SMOD