《单片机基础第三版第八章串行通信教材》由会员分享,可在线阅读,更多相关《单片机基础第三版第八章串行通信教材(30页珍藏版)》请在金锄头文库上搜索。
1、 第八章 单片机串行数据通信 8.1 串行通信的基础知识 串行数据通信要解决两个关键技术问题,一个是数据传送 ,另一个是数据转换。所谓数据传送就是指数据以什么形式进 行传送。所谓数据转换就是指单片机在接受数据时,如何把接 收到的串行数据转化为并行数据,单片机在发送数据时,如何 把并行数据转换为串行数据进行发送。 8.1.1 数据传送 单片机的串行通信使用的是异步串行通信,所谓异步 就是指发送端和接收端使用的不是同一个时钟。异步串行通信 通常以字符(或者字节)为单位组成字符帧传送。字符帧由发 送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。 1. 字符帧的帧格式 字符帧由四部分组成,分别是起
2、始位、数据位、奇偶 校验位、停止位。如图8.1所示: 1) 起始位:位于字符帧的开头,只占一位,始终位 逻辑低电平,表示发送端开始发送一帧数据。 2) 数据位:紧跟起始位后,可取5、6、7、8位,低 位在前,高位在后。 3)奇偶校验位:占一位,用于对字符传送作正确性检查 ,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、 偶校验和无校验,由用户根据需要选定。 4)停止位:末尾,为逻辑“1”高电平,可取1、1.5、2位, 表示一帧字符传送完毕。 图8.1 字符帧格式 2. 传送的速率 串行通信的速率用波特率来表示,所谓波特率就是指 一秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特。 即
3、:1波特1bps(位/秒) 。 在串行通信中,数据位的发送和接收分别由发送时钟 脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高 ,通信速度就快;反之,时钟频率低,波特率就低,通信速度 就慢。 8.1.2 数据转换 串行接口电路为用户提供了两个串行口缓冲寄存器( SBUF),一个称为发送缓存器,它的用途是接收片内总线送 来的数据,即发送缓冲器只能写不能读。发送缓冲器中的数据 通过TXD引脚向外传送。另一个称为接收缓冲器,它的用途是 向片内总线发送数据,即接收缓冲器只能读不能写。接收缓冲 器通过RXD引脚接收数据。因为这两个缓冲器一个只能写,一 个只能读,所以共用一个地址99H。串行接口电
4、路如图8.2所示 。 图8.2 MCS-51串行口寄存器结构 8.2 MCS-51单片机串行通信的控制寄存器 1. 串行口控制寄存器(SCON) SCON是MCS-51单片机的一个可位寻址的专用寄存器, 用于串行数据通信的控制。单元地址为98H,位地址为98H9FH 。寄存器的内容及位地址表示如下: 位地址 9FH 9EH9DH9CH 9BH9AH 99H98H 位符号 SM0 SM1SM2RENTB8RB8TIRI 各位的说明如下: 1) SM0 、SM1串行口工作方式选择位 其状态组合和对应工作方式为: SM0 SM1 工作方式 0 0 方式0 0 1 方式1 1 0 方式2 1 1 方式
5、3 2) sM2允许方式2、3的多机通信控制位 在方式2和3中,若SM21且接收到的第九位数据( RB8)为1,才将接收到的前8位数据送入接收SBUF 中,并 置位RI产生中断请求;否则丢弃前8位数据。若 SM20,则不 论第九位数据(RB8)为1还是为0,都将 前8位送入接收SBUF 中,并产生中断请求。 方式0时,SM2必须置0。 3) REN允许接收位 REN0 禁止接收数据 REN1 允许接收数据 4) TB8发送数据位8 在方式2、3时,TB8的内容是要发送的第9位数据,其 值由用户通过软件来设置。 5) RB8接收数据位8 在方式2、3时,RB8是接收的第9位数据。 在方式1时,R
6、B8是接收的停止位 在方式0时,不使用RB8 6) TI发送中断标志位 在方式0时,发送完第8位数据后,该位由硬件置位。 在其它方式下,于发送停止位之前,由硬件置位。 因此,TI1表示帧发送结束,其状态既可供软件查询 使用,也可请求中断。 TI由软件清“0”。 7) RI接收中断标志位 在方式0时,接收完第8位数据后,该位由硬件置位。 在其它方式下,于接收到停止位之前,该位由硬件置 位。 因此,RI1表示帧接收结束,其状态既可供软件查 询使用, 也可请求中断。 RI由软件清“0”。 2. 电源控制寄存器(PCON) PCON不可位寻址,字节地址为87H。它主要是 为CHMOS型单片机80C51
7、的电源控制而设置的专用寄存 器。其内容如下: 与串行通信有关的只有D7位(SMOD),该位为波特率倍增 位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串 行口波特率为设定值。当系统复位时,SMOD=0。 位序D7D6D5D4D3D2D1D0 位符号SMOD/GF1GF0PDIDL 8.3 MCS-51单片机串行通信工作方 式 串行口的工作方式由SM0和SM1确定,编码和功能如表8 -1所示。 方式0和方式2的波特率是固定的,而方式1和方式3的波特 率是可变的,由T1的溢出率决定。 SM0 SM1方式功能说明波特率 0 0方式0移位寄存器方式fosc/12 0 1方式18位UAR
8、T可变 1 0方式29位UARTfosc/64 或者fosc/32 1 1方式39位UART可变 表8-1 串行口工作方式 8.3.1 串行工作方式0 1. 数据输出(发送) 当数据写入SBUF后,数据从RXD端在移位脉冲(TXD )的 控制下,逐位移入74LS164,74LS164能完成数据的串并转 换。当8位数据全部移出后,TI由硬件置位,发生中断请求。若 CPU响应中断,则从0023H单元开始执行串行口中断服务程序, 数据由74LS164并行输出。其接口逻辑如图8.3所示。 图8.3接口逻辑 2. 数据输入(接收) 要实现接收数据,必须首先把SCON中的允许接收位 REN设置为1。当RE
9、N设置为1时,数据就在移位脉冲的控制下, 从RXD端输入。当接收到8位数据时,置位接收中断标志位RI, 发生中断请求。其接口逻辑如图8.4所示。由逻辑图可知,通过外 接74LS165,串行口能够实现数据的并行输入。 图8.4 外接移位寄存器输入 【例8-1】使用74LS164的并行输出端接8支发光二极管 ,利用它的串入并出功能,把发光二极管从左到右依次点亮,并 反复循环。假定发光二极管为共阴极接法。 图8.5 电路设计 解:电路如图8.5。软件部分如下: ORG0000H LJMPMAIN ORG1000H MAIN:MOVSCON,#00H ;串行口工作在方式0 CLRES ;禁止串行中断
10、MOVA, #80H ;发光二极管从左 边亮起 DELR:CLRP1.0 ;关闭并行输出 MOVSBUF, A ;串行输出 WAINT: JNBTI, WAIT ;状态查询 SETBP1.0 ;开启并行输出 ACALLDELAY ;调用延时子程序 CLRTI ;清发送中断标志 RRA ;发光右移 AJMPDELR ;继续 EDN 8.3.2 串行工作方式1 方式1为10位为一帧的异步串行通信方式。其帧格式为 1个起始位、8个数据位和1个停止位。如图8.6所示。 图8.6 方式1的帧格式 1. 数据输出(发送) 数据写入SBUF后,开始发送,此时由硬件加入起始位和 停止位,构成一帧数据,由TXD
11、串行输出。输出一帧数据后, TXD保持在高电平状态下,并将TI置位,通知CPU可以进行下 一个字符的发送。 2. 数据输入(接收) 当REN=1且接收到起始位后,在移位脉冲的控制下, 把接收到的数据移入接收缓冲寄存器(SBUF)中,停止位到来 后,把停止位送入RB8中,并置位RI,通知CPU接收到一个字符 。 3. 波特率的设定 工作在方式1时,其波特率是可变的,波特率的计算公 式为: 其中,SMOD为PCON寄存器最高位的值,其值为1 或0。 当定时器1作波特率发生器使用时,选用工作方式2( 即自动加载定时初值方式)。选择方式2可以避免通过程序反复 装入定时初值所引起的定时误差,使波特率更加
12、稳定。假定计 数初值为X,则计数溢出周期为: 溢出率为溢出周期的倒数。则波特率的计算公式为: 实际使用中,波特率是已知的。因此需要根据波特率的计 算公式求定时初值X。用户只需要把定时初值设置到定时器1, 就能得到所要求的波特率。 4. 应用举例(用方式1实现双机串行通信) (1)通信双方的硬件连接 作为应用系统首先要研究通信双方如何连接。一种办 法是把两片8051的串行口直接相连,一片8051的TXD与另一片的 RXD相连,RXD与另一片的TXD相连,地与地连通。由于8051 串行口的输出是TTL电平,两片相连所允许的距离极短。 (2)通信双方的软件约定 为实现双机通信,我们规定如下: 假定A
13、机为发送机,B机为接收机。 当A机发送时,先送一个“AA”信号,B机收到后回答一 个“BB” 信号,表示同意接收。 当A机接收到“BB”后,开始发送数据,每发送一次 求一次“检 查和”,假定数据块长16个字节,起始地址为30H ,一个数据块发送完后再发出“检查和”。 B机接收的数据并转存到数据区,起始地址也为30H,同 时每接收一次也计算一次“检查和”,当一个数据块收齐后,再接 收A机发来的“检查和”,并将它与B机的“检查和”进行比较。若 两者相等,说明接收正确,B机回答一个00;若两者不相等,说 明接收不正确,B机回答一个FF,请求重发。 A机收到00的答复后,结束发送。若收到的答复非0,则 重新将数据发送一次。 双方均以1200波特的速率传送。假设晶振频率为6MHz ,计算定时器1的计数初值: 为使波特率不倍增,设定PCON寄存器的SMOD=0,则 PCON00H . (3)基本的通信程序 设计程序框图如图8.7所示。 图8.7 双机通信程序结构图 根据结构图设计出下述通信程序: A机通信程序: ASTART:MOV TMOD,#20H ;设定定时器1工作