2020/2/16MCS-51单片机原理与应用1本章导读–本章主要介绍串行通信的基本概念以及相关的串行接口标准,详细讲述了MCS-51单片机串口的结构、组成、特点和应用,以及通过模拟I2C总线接口时序对I2C器件进行读写。通过相关的程序实例,使读者对于单片机之间以及单片机与PC机之间的通信架构和程序编写有初步的理解和掌握。第7章MCS-51串行接口与I2C总线2020/2/16MCS-51单片机原理与应用2通信:在计算机系统中主机与外设之间及主机系统与主机系统之间的数据交换。通信有并行通信和串行通信两种基本方式。单片机经常作为下位机,被广泛地应用于测控系统中。单片机将采集和检测到的各种数据,通过通信接口传递给上位机PC,再通过通信接口将各种指令和控制信息下达到单片机中。单片机通信目的就是要将多个远程的单片机、计算机以及各种外围设备进行互联,通过通信协议和通信方式,传输和处理交换的信息。既可通过一台计算机来控制和监视多台单片机系统,也可实现多台单片机之间的互联,组成不同的控制系统,适应不同的应用场合。7.1串行通信的基本概念2020/2/16MCS-51单片机原理与应用3并行通信的特点:就是将多个数据位同时进行传输,传输的数据有多少位,就相应地有多少根传输线,较适合于短距离的数据通信。串行通信的特点:就是只用一根数据线进行传输,多位数据必须在一根数据线上顺序地进行传送。适合于多数位、长距离通信的场合。从图7.1中可看到,传送一个8位的二进制数10110011B,对于发送设备来说,需要7.1.1通信方式12020/2/16MCS-51单片机原理与应用4首先将其做并行到串行的转换,然后用8个时钟周期(T1~T8)将其全部发送至接收设备;接收设备每个时钟周期接收到1位数据,需要8个时钟周期才能全部接收完毕,然后再经过串行到并行的转换,才算最终完成了这个8位数据的传输。串行通信中要解决好发送设备与接收设备之间的同步问题,否则会造成某些数据位的丢失而通信失败。根据采用的同步方式的不同,将串行通信进一步分为同步串行通信和异步串行通信两种。异步串行通信方式:是将传输的数据按照某种位数进行分组(通常以8位的字节为单位),在每组数据的前面和后面分别加上一位起始位和一位停止位,根据需7.1.1通信方式22020/2/16MCS-51单片机原理与应用5要还可以在停止位前加一位校验位,并且停止位的长度还可以增加。这样组合而成的一组数据被称为一帧。图7.2是异步串行通信的数据传送格式。异步串行通信方式的结构简单,但是数据的传送量增加很多,导致传输效率不高,一般用在对传输速率要求不高的应用中。同步串行通信方式不再以字节为单位,而是以数据块7.1.1通信方式32020/2/16MCS-51单片机原理与应用6为单位,每个数据块可以有多个字节构成,只在每个数据块的前后加上起始位和停止位,这样减少了需要额外传输的控制数据的长度,自然也就提高了传输的效率。同步通信方式的软硬件的复杂程度也随之上升,价格比较昂贵,一般只在传输速率要求较高系统使用。串行通信按照信息在设备间的传输方向,还可分为单工、半双工和全双工三种方式。分别如图7.3。单工方式:通信双方在任一时刻,只能单方向的传送数据。如图7.3(a),通信方A只能作为发送方,而通信方7.1.1通信方式42020/2/16MCS-51单片机原理与应用7B只能作为接收方,不能互换。半双工方式:通信双方可通过传输线交替地进行双向传输,每个通信方都可以作为发送方或接收方,但在任一时刻,不能同时作为发送方和接收方。如图7.3(b)。全双工方式:通信双方通过两条传输线进行互连,两者之间的数据可以同时进行发送和接收。MCS-51单片机在硬件上具有全双工的结构。波特率:单位时间里传输的二进制代码的位数,单位是b/s或bps(位/秒)。例如:每秒钟传输120个字符,每个字符由10个二进制位(其中1个起始位、8个数据位和一个停止位),其波特率为:120字符/秒×10位/字符=1200位/秒。7.1.2波特率12020/2/16MCS-51单片机原理与应用8同步通信中数据传输的波特率就是同步时钟的频率;而异步通信的时钟频率可以是波特率的整数倍。UART通用异步收发器:能完成异步串行通信的器件。异步串行通信接口有RS-232、RS-422和RS-485接口等。1.RS-232C标准RS-232C标准是常用的一种串行通信接口标准,它定义了数据终端设备DTE和数据通信设备DCE间接口规范。RS-232C接口标准采用的是标准的25针D型连接器,如图7.4,RS-232C连接器的引脚定义如表7.1。在使用时,经常采用9针连接器,9针D型连接器的引脚定义如表7.1中第1列括号内所示,其外观如图7.5所示。7.1.3串行通信总线标准及其接口12020/2/16MCS-51单片机原理与应用9RS-232C电平范围:逻辑“1”:-5V~-15V之间;逻辑“0”:+5V~+15V之间。由于逻辑“1”和逻辑“0”电平的范围相差很大,因此在传输中的抗干扰能力较强。RS-232C是一种串行通信的接口标准,它以位为单位进行串行传输。规定了波特率作为传输的速度单位。波特率有300、600、1200、2400、9600、19200bps等。分图(a)是用于计算机方的公插外观,分图(b)是用于通信设备方的母插的外观。7.1.3串行通信总线标准及其接口22020/2/16MCS-51单片机原理与应用107.1.3串行通信总线标准及其接口32020/2/16MCS-51单片机原理与应用112.RS-422A接口标准RS-422A的接口标准是在RS-232C的25个引脚的基础上,增加到了37个引脚,从而在功能上比RS-232C多了10种新功能。它仅使用+5V作为工作电压,同时采用了差动收发方式。差动收发需要一对平衡差分信号线,逻辑“1”和逻辑“0”是由两根信号线之间的电位差来表示的。因此,相比RS-232C的单端收发方式来说,RS-422A在抗干扰性方面得到了明显的增强。3.RS-485A接口标准RS-485A接口标准跟RS-422A基本上一样,只是RS-485A工作方式是半双工,而RS-422A则是全双工。所以,RS-485A只需要一对平衡差分信号线。RS-485A也采用差动收发的方式,输出阻抗低,无接地回路,所以抗7.1.3串行通信总线标准及其接口32020/2/16MCS-51单片机原理与应用12干扰性也相当好,传输速率可以达到10Mbps。MCS-51型单片机的接收缓冲器和发送缓冲器在物理上是分开的,可通过访问特殊功能寄存器SBUF来访问UART。接收缓冲器具有双缓冲的功能,即它在接收第一个数据字节后,能接收笫二个数据字节。但在接收完第二个字节后,若笫一个数据字节还未取走,那么该数据字节将丢失。MCS-51型单片机串行口的结构示意如图7.6。7.2串行口的结构与控制7.2.1串行口的结构12020/2/16MCS-51单片机原理与应用13波特率发生器:提供发送和接收所需的时钟信号,主要由T1、T2及内部一些控制开关和分频器组成。SBUF:串行口缓冲寄存器,包括发送寄存器和接收寄存器。在逻辑上,SBUF只有一个,同时代表发送和接收寄存器,且具有相同的单元地址99H。在物理上,SBUF其实有两个,通过读写控制访问不同的物理空间。SCON:串行口控制寄存器,主要用于设置串行口的工作方式和参数。并-串转换电路:将发送数据转换成串行输出到发送端TXD上。串-并转换电路:将串行接收到的数据打包成一个8位的并行数据,然后写入到接收缓冲寄存器中。7.2.1串行口的结构22020/2/16MCS-51单片机原理与应用14发送TI/接收RI标志:构成了中断请求信号。当串行口工作在中断模式时,该中断请求信号会触发串口中断,使用户程序进入到0023H的串口中断的入口处。1.串行口控制寄存器SCONSCON控制:串行通信的方式选择、接收和发送控制及串口标志,可位寻址,字节地址是98H,位地址为9FH~98H,寄存器及位地址表示如表7.2所示:7.2.2串行口的控制12020/2/16MCS-51单片机原理与应用15各位功能的具体说明如下:(1)SM0、SM1:串行口工作方式选择位,其不同组合所对应的工作方式如表7.3。(2)SM2:多机通信控制位,主要用于方式2和方式3。①工作方式0时,必须设置SM2=0。②工作方式1时,若SM2=1,则只有在接收到有效停止位时,才使RI置1,以便接收下一帧数据。7.2.2串行口的控制22020/2/16MCS-51单片机原理与应用16③工作方式2和3时,发送设置SM2=1,以发送第9位TB8=1作为地址帧标志,用来寻找从机;以TB8=0作为数据帧标志,进行数据通信。若SM2=0,接收到一帧数据后,不论RB8是0还是1,都置位RI,接收到的数据装入SBUF中。(3)REN:允许接收位。REN=1,允许串行接收;REN=0,禁止串行接收。该位由软件置位或复位。(4)TB8:方式2和方式3中要发送的第9位数据。在多机通信中,该位被用来区分数据帧和地址帧。(5)RB8:方式2和3中接收到的第9位数据。RB8存放的是接收到的第9位,方式1中接收到的是停止位,方式0不使用该位。7.2.2串行口的控制32020/2/16MCS-51单片机原理与应用17(6)TI:发送中断标志位。方式0中,发送完第8位后,由硬件置位。在其他方式处于发送停止位时,由硬件置位。TI=1表示该帧发送结束,可通过软件查询TI标志位,或请求中断。TI为必须由软件清零。(7)RI:接收中断标志位。方式0中,接收完第8位后,由硬件置位。在其他方式接收到停止位时,由硬件置位。RI=1表示该帧接收完毕,可通过软件查询RI标志位,或请求中断。RI必须由软件清零。系统复位后,SCON寄存器的所有位都被清除。2.电源控制寄存器PCONPCON的最高位SMOD与串行口控制有关,其它位与掉电方式有关。PCON寄存器的字节地址为87H,没有位7.2.2串行口的控制42020/2/16MCS-51单片机原理与应用18地址,其内容如表7.4。在HMOS的单片机中,该寄存器除最高位SMOD外,其他都是虚设的。7.2.2串行口的控制52020/2/16MCS-51单片机原理与应用197.3串行口的工作方式1SMOD:串行通信波特率系数控制位。SMOD=1:波特率加倍;SMOD=0:波特率和2SMOD成正比。系统复位后,SMOD=0。PCON寄存器不能进行位寻址。MCS-51系列单片机的串行接口有4种工作方式可供选择,由SM0和SM1决定,可通过编程进行设置。1.工作方式0SM0、SM1均为0,为方式0移位寄存器方式。数据的接收和发送都通过RXD引脚进行,TXD引脚输出同步时钟脉冲作为移位寄存器的工作时钟。单片机还可外接移位寄存器来扩展I/O口,也可外接同步输入输出设备。方式0的数据格式为8位,低位在前,高位在后,波特率是。12/oscf2020/2/16MCS-51单片机原理与应用20方式0的发送过程:首先将数据写入发送SBUF,单片机会自动将数据串行地从RXD引脚发送,每发送1位数据,TXD引脚就会相应地发出一个脉冲信号,频率为晶振频率的1/12,起到一个同步的作用。发送结束时,置位标志位TI,若串口中断是开放的,将向CPU发中断请求。用户可将TI作为发送是否结束的标志。方式0的接收过程:接收前必须预先设置REN=1(允许7.3串行口的工作方式22020/2/16MCS-51单片机原理与应用21接收),此时引脚RXD被设置成数据输入端,接收移位寄存器会将RXD上的数据一位一位的写入串行缓冲器。当8位数据接收完成后,RI被置位1,若中断是开放的,会同时向CPU发中断请求。用户可将RI作为接收是否结束的标志。2.工作方式1SM0=0、SM1=1为方式1。方式1为异步通信方式,数据帧的格式为1个起始位,8个数据位和1个停止位,共10位。7.3串行口的工作方式32020/2/16MCS-51单片机原理与应用227.3