第7章串行接口通信7.1概述7.2MCS-51单片机的串行通信接口7.3串行口的四种工作方式7.4串口综合应用举例在实际工作中,计算机的CPU和外部设备之间常要进行数据交换,一台计算机与其他计算机之间也往往要交换数据,所有的这些信息交换都称为通信。常用的通信方式有两大类:串行通信和并行通信。目前串行通信协议有很多种:USB、I2C、RS-232、SPI等都是串行通信协议。并行通信协议有SPP、EPP、ECP等。通常需要根据信息传送的距离决定采用那种通信方式,例如PC与外部设备(如打印机等)通信时,如果距离小于30m,可以采用并行通信方式,当距离大于30m时,则要采用串行通信方式。7.1概述并行通信是指数据的各位同时进行传送(发送或接收)的通信方式,其优点是传送速度快,其缺点是数据有多少位,就要有多少根数据传送线,同时还必须有必要的控制线。并行通信在位数多、传送距离远就不太合适了。串行通信指数据是一位一位的按顺序传送的通信方式,它的突出优点是只需要很少的传输线(根据不同的串行通信协议,数据传输线有所不同),这样大大降低了传送成本,特别适用于远距离通信,其缺点是传送速度较慢。对串行通信主要涉及以下几个概念:串口通信的数据传输方向、同步和异步通信、波特率等并行通信和串行通信一般情况下,串行数据传输是在两个通信端之间进行的。其数据传输方向通常有三种:单工、半双工和全双工。上面三种方式分别对应了:单行道、独木桥、双向车道的通行方式7.1.1数据传输方向7.1.2同步和异步通信1异步通信异步串行通信是以帧的形式发送字符数据,异步串行通信有连续发送字符和不连续发送字符两种方式,当连续发送字符时,每一帧信息由起始位、数据位、奇偶校验位和停止位组成,其帧结构如图7-1所示。起始位数据位奇偶校验位停止位下一个字符的起始位0多种数据位形式0/110图7-1字符连续传送的异步通信数据传输格式同步通信不同于异步通信,同步通信在数据传输开始前用同步字符(常约定1~2个),并由同步时钟来实现发送和接收端同步。即同步通信使用数据块传送信息,而不是字节,省去了每个字节的起始位和停止位等数据,直到通信结束。同步通信在每个数据块传输的开始使用同步字符,使接收和发送同步。其通信格式如图7-3所示2同步通信同步字符1同步字符2数据图7-3同步通信数据传输格式7.1.3波特率波特率是衡量数据传送速率的指标,其定义为单位时间内传送的信息量,信息量的单位为bit,时间单位为秒,则1波特=1位/秒=1bit/s=1bps。例如,在异步通信中使用1位起始位,8位数据位,无奇偶校验位,1位停止位。即一帧数据长度为10bit,如果在应用中要求数据传送的速率是1秒传送120帧字符,则传送波特率为1200波特。在异步串行通信双方中,接收和发送方必须使用相同的波特率才能正确传输数据7.2MCS-51单片机的串行通信接口7.2.1串行通信接口结构7.2.2串行口控制寄存器SCON和PCON7.2.1串行通信接口结构1、串行口控制寄存器SCONMCS-51单片机串行通信方式的选择、接收和发送控制以及串行口的状态标志等均通过对特殊功能寄存器SCON编程来实现。SCON控制字的各位定义如图7-3所示SM0SM1SM2RENTB8RB8TIRI图7-3SCON控制字格式7.2.2串行口控制寄存器SCON和PCON2、电源控制寄存器PCONPCON是为了在CHMOS的80C51单片机上实现电源控制而附加的。PCON中的最高位SMOD与串行口工作有关,如图7-5所示图7-5电源控制寄存器PCONSMOD(PCON.7)——波特率倍增位。在串行口方式1、方式2和方式3时,波特率和SMOD成正比,亦即当SMOD=1时,波特率提高一倍。复位时,SMOD=07.3串行口的四种工作方式7.3.1串口工作方式07.3.2串口工作方式17.3.3串口工作方式27.3.4串口工作方式37.3.1串口工作方式01方式0的帧结构2方式0时的波特率3方式0工作基本原理4串行口方式0应用举例1方式0的帧结构方式0为同步移位寄存器输入/输出方式。可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。串行数据通过RXD输入或输出,而TXD用来输出移位脉冲或外接部件的同步脉冲。方式0是以8位数据为一帧,不设起始位和停止位,先发送或接收最低位,其帧格式如图7-6所示D0D1D2D3D4D5D6D7…………………图7-6方式0的帧格式2方式0时的波特率/12oscf方式0时,每个机器周期产生一个移位脉冲,发送或接收一位数据,因此方式0的波特率固定为3方式0工作基本原理方式0的发送过程:当执行一条将数据写入发送缓冲器SBUF的指令,CPU将数据写入到发送缓冲器SBUF时,串行口将8位数据以固定的波特率由RXD引脚输出,同时由TXD引脚输出频率为fosc/12的同步脉冲,字符发送完毕,置中断标志T1=1,向CPU申请中断。3方式0工作基本原理方式0的接收过程:控制字除设置为方式0外,还应设置接收允许控制位REN=1,清除RI中断标志,接收器启动后,RXD为数据输入端,TXD为同步信号输出端,接收器以固定的波特率采样RXD引脚输入的数据信息。当接收完8位数据后又重新置RI=1。4串行口方式0应用举例例7.1:将片内RAM的30H单元中的内容经CD4094并行输出。分析:CD4094是一种8位串行输入、并行输出的同步移位寄存器,CLK为同步脉冲输入端,STB为控制端,若STB=0,则8位并行数据输出端关闭,但允许串行数据从DATA输入,若STB=1,则DATA输入端关闭,但允许8位数据并行输出。CD4094与单片机连接电路如图7-7所示。RXDTXDP1.0DATACLKSTB8051数据输出移位输出D0D1D2D3D4D5D6D7图7-7串口扩展并行I/O口例7.1源程序:MAIN:MOVSCON,#00H;设置工作模式0MOVA,30HMOVSBUF,A;发送30H单元内容CLRP1.0WAIT:JNBTI,WAIT;判断是否发送完毕CLRTISETBP1.0SJMP$7.3.2串口工作方式11方式1的帧结构2方式1时的波特率3方式1工作基本原理4串行口方式1应用举例1方式1的帧结构方式1是以10位数据为一帧,设1位起始位“0”,8位数据位,1位停止位“1”,先发送或接收最低位,其帧格式如图7-8所示图7-8方式0的帧格式D0D1D2D3D4D5D6D7起始位“0”停止位”1”2方式1时的波特率方式1的移位时钟脉冲由定时器T1的溢出率决定,因此,串行口方式1的波特率由定时器T1的溢出率与SMOD值同时决定。即方式1的波特率如式7-3所示8213212[2(1)]SMODoscfTH方式的波特率=7-33方式1工作基本原理方式1的发送过程:除设置SCON寄存器为方式1和TI=0外,还需要利用定时器T1来完成波特率的设置,当执行数据写入发送缓冲器SBUF的命令时,就启动了发送器开始发送。发送电路自动在8位发送字符前后分别添加1位起始位和1位停止位。并在发送移位时钟(其频率即是用户设置的波特率)作用下在TXD引脚依次发送一帧信息,发送完后自动维持TXD为高电平,发送完毕后硬件置位TI,并在中断服务程序中由软件将TI复位。3方式1工作基本原理方式1的接收过程:方式1接收操作必须在SCON寄存器中REN位为1、RI为0、工作模式设置为1的前提下进行,同时还必须利用定时器T1来完成波特率的设置。当上述设置完成后,MCS-51单片机的CPU会自动对RXD引脚采样。采样频率为波特率的16倍,当检测到起始位(RXD上检测到1→0的跳变,即起始位)时,接收电路对RXD引脚采样启动串口数据接收。3方式1工作基本原理方式1的收发流程4串行口方式1应用举例例7.3设有A、B两个单片机,采用中断方式编程实现如下串行通信功能的程序。双机通信电路如图7-9所示。时钟振荡频率为11.0592MHz。图7-9双机通信A机:将首地址为ADDRT的长度为LEN个单元的数据块顺序向B机发送,波特率为2400。B机:将接收到的LEN个单元的数据块顺序存储在以ADDRR的数据缓冲区中8213212[2(1)]SMODoscfTH方式的波特率=616111.0592*1024003212(256)11.0592*10125612*32*2400256122444THTHFHA机发送源程序:LENEQU30HADDRTEQU31HORG0000HLJMPMAINORG0023HLJMPINT_COMMORG0030HMAIN:MOVSCON,#40HMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR1SETBEASETBESMOVR2,#LENMOVR0,#ADDRTMOVA,@R0MOVSBUF,ALJMP$;中断服务子程序INT_COMM:CLRTIDJNZR2,LOOPCLRESLJMPENDCOMMLOOP:INCR0MOVA,@R0MOVSBUF,AENDCOMM:RETIENDB机接收源程序:LENEQU30HADDRREQU31HORG0000HLJMPMAINORG0023HLJMPINT_COMMORG0030HMAIN:MOVSCON,#50HMOVTMOD,#20HMOVTH1,#0F4HMOVTL1,#0F4HSETBTR1SETBEASETBESMOVR2,#LENMOVR0,#ADDRRLJMP$;中断服务子程序INT_COMM:CLRRIMOVA,SBUFMOV@R0,ADJNZR2,LOOPCLRESLJMPENDCOMMLOOP:INCR0ENDCOMM:RETIEND