单片机串行通信.ppt
第第5 5章章 单片机串行通信单片机串行通信 串行通信概述串行通信概述5.1串行口及控制寄存器串行口及控制寄存器5.2串行通信方式串行通信方式 5.3串行通信举例串行通信举例 5.45.1 5.1 串行通信概述串行通信概述5.1.1 串行通信基本原理5.1.2 RS-232C总线标准5.1.3 串行接口电路5.1.1 5.1.1 串行通信基本原理串行通信基本原理(a)并行通信 (b)串行通信串行通信的基本特征是数据逐位顺序进行传送串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定(如:同步方式、通讯速率、串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平数据块格式、信号电平等)不同,形成了多种等)不同,形成了多种串行通信的协议与接口标准。串行通信的协议与接口标准。常见的有:常见的有:通用异步收发器通用异步收发器(UART)(UART)本课程介绍的串口本课程介绍的串口通用串行总线(通用串行总线(USB)USB)通用串行总线通用串行总线I I2 2C C总线总线InterIntegratedCircuitCANCAN总线总线ControllerAreaNetworkSPISPI总线总线SerialPeripheralInterfaceRS-485RS-485,RS-232CRS-232C,RS422ARS422A标准标准等等等等5.1.1 5.1.1 串行通信基本原理串行通信基本原理串行通讯的两种通讯串行通讯的两种通讯异步通讯:异步通讯:字符为单位进行传送,字符为单位进行传送,利用起利用起始位表示字符的开始,用停止位表示字符始位表示字符的开始,用停止位表示字符结束。结束。D0D1D2D3D4D5D6D7D010P0起始位数据位D0D7校验位 结束位第n个字符(帧)(1)起始位:位于字符帧开头,只占一位,为逻辑起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示低电平,用于向接收设备表示发送端开始发送一帧信息。发送端开始发送一帧信息。(2)数据位:紧跟起始位之后,用户根据情况可取数据位:紧跟起始位之后,用户根据情况可取5位、位、6位、位、7位或位或8位,低位在位,低位在前高位在后。前高位在后。(3)奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。是偶校验,由用户决定。(4)停止位:位于字符帧最后,为逻辑停止位:位于字符帧最后,为逻辑1高电平。通常可取高电平。通常可取1位、位、1.5位或位或2位,用于位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧作准备。向接收端表示一帧字符信息已经发送完,也为发送下一帧作准备。串行通信的数据传送率串行通信的数据传送率传送率:数据传送速度传送率:数据传送速度 波特率(波特率(baud ratebaud rate):):异步通信中数据传输速异步通信中数据传输速率的单位,其含义每秒传送多少位二进制数率的单位,其含义每秒传送多少位二进制数 例:数据传送的速率为例:数据传送的速率为120120个字符每秒,每个字个字符每秒,每个字符有符有1 1个起始位、个起始位、8 8个数据位和一个停止位组成,个数据位和一个停止位组成,则其传送波特率为:则其传送波特率为:串行通信的制式串行通信的制式在串行通信中数据是在两个站之间进行传送的,在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工按照数据传送方向,串行通信可分为单工(simplex)、半双工()、半双工(halfduplex)和全双工)和全双工(fullduplex)三种制式。)三种制式。(1)RS-232C是一种电压型总线标准,以不同极是一种电压型总线标准,以不同极性的电压表示逻辑值:性的电压表示逻辑值:3V25V表示逻辑表示逻辑“1”(mark);+3V+25V表示逻辑表示逻辑“0”(space)。(2)标准数据传送速率有)标准数据传送速率有50,75,110,150,300,600,1200,2400,4800,9600,19200波波特等。特等。(3)采用标准的)采用标准的25芯插头座(芯插头座(DB-25)进行连接,)进行连接,该插头座也称为该插头座也称为RS-232C连接器。连接器。5.1.2 RS-232C5.1.2 RS-232C总线标准总线标准 RS-232C信号引脚RS-232C标准总线为25根,采用标准的D型25芯插头座。各引脚的排列如图所示。DTE:数据终端设备(如个人计算机)DCE:数据电路终接设备(如调制解调器)12345678910111213141516171819202122232425方向 名称 第2路发送数据 发送时钟 第2路接收数据 接收时钟未用 第2路请求发送 数据终端就绪 数据信号检测 振铃指示 数据信号速率选择 发送时钟未用未用保护地 N.A发送数据 到DCE接收数据 到DCE请求发送 到DCE允许发送 到DTE数据置位就绪 到DTE信号地 N.A载波检测 到DTE留作调试用第2路载波检测 到DTE第2路允许发送 到DTE名称 方向到DCE到DTE到DTE到DTE到DCE到DCE到DTE到DTE到DCE到DCERS-232C主要串行通信信号1)数据传送信号)数据传送信号发送数据(发送数据(TDX)接收数据(接收数据(RXD)2)调制解调控制信号)调制解调控制信号请求发送(请求发送(RTS)清除发送(清除发送(CTS)数据通信设备准备就绪(数据通信设备准备就绪(DSR)数据通信终端准备就绪(数据通信终端准备就绪(DTR)3)定位信号)定位信号接收时钟(接收时钟(RXC)发送时钟(发送时钟(TXC)4)信号地()信号地(SG)和保护地()和保护地(PG)5.1.3 串行接口电路数据转换由串行接口电路实现,这种电路数据转换由串行接口电路实现,这种电路也称为通用异步接收发送器(也称为通用异步接收发送器(UART)。)。从原理上说,一个从原理上说,一个UART应包括发送器电应包括发送器电路、接收器电路和控制电路等内容,其主路、接收器电路和控制电路等内容,其主要功能如下。要功能如下。1、数据的串行化(并数据的串行化(并-串串)/反串行化反串行化(串串-并)并)2、错误检验、错误检验5.2.1 5.2.1 串口寄存器结构串口寄存器结构5.2.2 5.2.2 串行通信控制寄存器串行通信控制寄存器MCS-51内部有两个独立的接收、发送缓冲内部有两个独立的接收、发送缓冲器器SBUF。SBUF属于特殊功能寄存器。发属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地只能读出不能写入,二者共用一个字节地址(址(99H)。串行口的结构如图所示)。串行口的结构如图所示5.2 MCS-515.2 MCS-51单片机的串行口及控制寄存器单片机的串行口及控制寄存器5.2.1 5.2.1 串口寄存器结构串口寄存器结构SBUF(发)SBUF(收)发送控制器 TI接收控制器 RI移位寄存器波特率发生器T11A累加器(门)移位寄存器RxDTxD去申请中断P3.1P3.0两个同名的接收两个同名的接收/发送缓冲寄存器发送缓冲寄存器SBUFSBUF 指令指令 MOV SBUFMOV SBUF,A A 启动一次数据发送启动一次数据发送,可向可向SBUFSBUF再发送下一个数再发送下一个数 指令指令 MOV AMOV A,SBUF SBUF 完成一次数据接收完成一次数据接收,SBUF,SBUF可再接收下一个数可再接收下一个数接收接收/发送数据发送数据,无论是否采用中断方式工作无论是否采用中断方式工作,每每接收接收/发送一个数据都必须用指令对发送一个数据都必须用指令对 RI/TI RI/TI 清清0 0,以备下一次收,以备下一次收/发。发。1.串行口控制寄存器串行口控制寄存器SM0SM0,SM1SM1:串行口串行口4 4种工作方式的选择位。种工作方式的选择位。0 0 0 0 方式方式0 0:8 8位移位寄存器位移位寄存器I/O,I/O,波特率固定为波特率固定为fosc/12fosc/12 0 1 0 1 方式方式1 1:8 8位位UARTUART,波特率可变,波特率可变,按公式计算按公式计算 1 0 1 0 方式方式2 2:9 9位位UARTUART,波特率固定,波特率固定=foscfosc x1/32 x1/32或或1/641/64 1 1 1 1 方式方式3 3:9 9位位UARTUART,波特率可变,按公式计算,波特率可变,按公式计算5.2.2 5.2.2 串行通信控制器串行通信控制器SCON9FH9EH9DH9CH9BH9AH99H98H98HSM0SM1SM2RENTB8RB8TIRISM2:多机通信控制位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。第第9位位数数据据(D8):=0时时说说明明本本帧帧为为地地址址帧帧,=1时时,说说明明本本帧帧为为数据帧。数据帧。RENREN:串行口接收允许控制位:串行口接收允许控制位 =1=1 表示允许接收;表示允许接收;=0=0 禁止接收。禁止接收。TB8TB8:方式:方式2 2、3 3中,是要发送的第中,是要发送的第9 9位数据。位数据。多机通信中多机通信中,TB8=0,TB8=0 表示发送的是数据;表示发送的是数据;TB8=1 TB8=1 表示发送的是地址。(奇偶校验)表示发送的是地址。(奇偶校验)RB8RB8:在方式:在方式2 2、3 3中,是收到的第中,是收到的第9 9位数据。位数据。在多机通信中在多机通信中,用作区别地址帧用作区别地址帧/数据帧的数据帧的 标志。(奇偶校验)标志。(奇偶校验)RI,TIRI,TI:串行口收串行口收/发数据申请中断标志位发数据申请中断标志位 1 1 申请中断;申请中断;0 0 不申请中断不申请中断电源控制寄存器电源控制寄存器 PCONPCONSMODSMOD:在串行口工作方式在串行口工作方式 1 1、2 2、3 3 中,是波特率加倍位中,是波特率加倍位 =1=1 时,波特率加倍时,波特率加倍 =0=0 时,波特率不加倍。时,波特率不加倍。(在在PCONPCON中只有这一个位与串口有关中只有这一个位与串口有关)GF1,GF0GF1,GF0:用户可自行定义使用的通用标志位用户可自行定义使用的通用标志位特殊功能寄存器特殊功能寄存器PCONPCON不能按位寻址不能按位寻址97HSMOD GF1 GF0 PD 1DLPCONPCON主主要要是是为为CHMOS型型单单片片机机的的电电源源控控制制而而设设置置的的专专用用寄寄存存器器,不不可可以以位位寻寻址址,字字节节地地址址为为87H。在在HMOS的的8051单单片片机机中中,PCON除除了了最最高高位位以以外外,其其它它位位都都是是虚虚设设的的。其其格式如图所示。格式如图所示。5.3 MCS-51单片机串行通信工作方式工作方式工作方式0 0:8 8位移位寄存器位移位寄存器I/OI/O方式方式发送:发送:SBUFSBUF中的串行数据由中的串行数据由RxDRxD逐位移出;逐位移出;TxDTxD输出移位时钟,频率输出移位时钟,频率=fosc1/12=fosc1/12;每送出每送出8 8位数据位数据 TITI就自动置就自动置1 1;需要用软件清零需要用软件清零 TITI。接收:串行数据由接收:串行数据由RxDRxD逐位移入逐位移入SBUFSBUF中;中;TxDTxD输出移位时钟,频率输出移位时钟,频率=fosc1/12=fosc1/12;每接收每接收 8 8位数据位数据RIRI就自动置就自动置1 1;需要用软件清零需要用软件清零 RIRI。经常配合经常配合“串入并出串入并出”“”“并入串出并入串出”移位移位 寄存器一起使用扩展接口寄存器一起使用扩展接口方式方式0 0工作时,多用查询方式编程:工作时,多用查询方式编程:发送:发送:MOV SBUFMOV SBUF,A A 接收:接收:JNB RIJNB RI,$JNB TI JNB TI,$CLR RI$CLR RI CLR TI MOV A,SBUF CLR TI MOV A,SBUF复位时复位时,SCON,SCON 已经被清零已经被清零,缺省值缺省值:方式方式0 0。接收前接收前,务必先置位务必先置位 REN=1 REN=1 允许接收数据。允许接收数据。工作方式工作方式1 1:8:8位位UART(1+8+1UART(1+8+1位位)波特率可变波特率可变常用于串行通讯。除发常用于串行通讯。除发/收收8 8位数据外,还位数据外,还 在在D0D0位前有一个起始位位前有一个起始位“0 0”;在在D7D7位后有一个停止位位后有一个停止位“1 1”。方式方式1 1工作时:工作时:发送端自动添加一个起始位和一个停止位;发送端自动添加一个起始位和一个停止位;接收端自动去掉一个起始位和一个停止位。接收端自动去掉一个起始位和一个停止位。波特率可变波特率可变 用定时器用定时器T1T1作波特率发生器:作波特率发生器:公式:波特率公式:波特率 =(2 2SMODSMOD/32/32)T1T1的溢出率的溢出率工作方式工作方式29 9位位UART UART 两种波特率两种波特率由于波特率固定由于波特率固定,常用于单片机间通讯。常用于单片机间通讯。数据由数据由8+18+1位组成,通常附加的一位位组成,通常附加的一位 (TB8/RB8)(TB8/RB8)用于用于“奇偶校验奇偶校验”。方式方式2 2的波特率的波特率 =foscfosc 2 2SMODSMOD/64/64 即即:f foscosc 1/32 1/32 或或 f foscosc 1/64 1/64 两种两种奇偶校验是检验串行通信双方传输的数据正确与否的一个措奇偶校验是检验串行通信双方传输的数据正确与否的一个措施,并不能保证通信数据的传输一定正确。施,并不能保证通信数据的传输一定正确。换言之:如果换言之:如果奇偶校验发生错误,表明数据传输一定出错奇偶校验发生错误,表明数据传输一定出错了;如果奇偶校验没有出错,绝不等于数据传输完全正确。了;如果奇偶校验没有出错,绝不等于数据传输完全正确。奇校验:奇校验:8 8位有效数据连同位有效数据连同1 1位附加位中,二进制位附加位中,二进制“1”1”的个的个数为奇数数为奇数偶校验:偶校验:8 8位有效数据连同位有效数据连同1 1位附加位中,二进制位附加位中,二进制“1”1”的个的个数为偶数数为偶数约定发送采用约定发送采用奇校验奇校验 若发送的若发送的8 8位有效数据中位有效数据中“1 1”的个数为偶数,的个数为偶数,则要人为添加一个附加位则要人为添加一个附加位“1 1”一起发送;一起发送;若发送的若发送的8 8位有效数据中位有效数据中“1 1”的个数为奇数,的个数为奇数,则要人为添加一个附加位则要人为添加一个附加位“0 0”一起发送。一起发送。约定接收采用约定接收采用奇校验奇校验 若接收到的若接收到的9 9位数据中位数据中“1 1”的个数为奇数,的个数为奇数,则表明接收正确,取出则表明接收正确,取出8 8位有效数据即可;位有效数据即可;若接收到的若接收到的9 9位数据中位数据中“1 1”的个数为偶数,的个数为偶数,则表明接收出错!应当进行出错处理。则表明接收出错!应当进行出错处理。采用采用偶校验时,处理方法与奇校验相反偶校验时,处理方法与奇校验相反工作方式工作方式39 9位位UART UART 波特率可变波特率可变串口方式串口方式3 3和方式和方式2 2唯一的区别是波特率机唯一的区别是波特率机制不同制不同。方式方式2 2的波特率固定为时钟周期的的波特率固定为时钟周期的3232或或6464分分频,不可变。此工作方式与其他串行通讯频,不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。设备连接困难,因此不常用。方式方式3 3的波特率可变,按前面的公式计算:的波特率可变,按前面的公式计算:波特率波特率=(2=(2SMODSMOD/32)/32)T1T1的溢出率的溢出率波特率的计算波特率的计算波特率波特率=(2=(2SMODSMOD/32)/32)T1T1的溢出率的溢出率溢出率:溢出率:T1T1溢出的频繁程度溢出的频繁程度 即:即:T1T1溢出一次所需时间的倒数。溢出一次所需时间的倒数。波特率波特率 =初值初值X=2n-2SMOD fosc32 12(2n-X)2SMOD fosc32 波特率 12常用波特率和常用波特率和T1T1初值查表初值查表串口波特率串口波特率(方式方式1,3)foscSMOD位位(PCON中中)定时器定时器T1C/T方式方式初值初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F4H6006MHz0020E8H1106MHz00272H串行口方式串行口方式0 0输出输出,在串行口外接移位寄存器在串行口外接移位寄存器,构成显示器接构成显示器接口口.如图所示如图所示,三片三片74LS16474LS164串接成串接成2424位并行输出移位寄存器位并行输出移位寄存器,每片每片74LS16474LS164接一个共阳极接一个共阳极8 8段段LEDLED显示器显示器,构成三维数据显示构成三维数据显示,这里这里P1.0P1.0作串行输出选择信号作串行输出选择信号(只有只有P1.0P1.0为高时为高时,串行同步信串行同步信号号TXDTXD才能输出才能输出),),这种显示器称为静态显这种显示器称为静态显,CPU,CPU不必为显示服不必为显示服务而频繁执行扫描任务务而频繁执行扫描任务.设显示缓冲区设在设显示缓冲区设在DISBUFDISBUF开始的区开始的区域中域中.解:解:1.1.确定工作方式确定工作方式 (SCONSCON)0000 0000B0000 0000B90H 90H;串行口以方式串行口以方式0 0输出输出5.4 5.4 串行口通信实例串行口通信实例P1.0TXDRXD8051e74LS1643 4g5f6 10d11c12b13aLED0e74LS1643 4g5f6 10d11c12b13aLED1e74LS1643 4g5f6 10d11c12b13aLED2&8989895V5V1.21.21.2DISPLY:MOVSCON,#00H;选择串行口为方式选择串行口为方式0 0发送发送MOVR7,#3H;字节计数字节计数MOVR0,DISBUF;R0R0指向显示缓冲区指向显示缓冲区SETBP1.0;选通选通TXDTXD同步移位时钟同步移位时钟L1:MOVA,R0;区要显示的数区要显示的数ADDA,#13;地址调整地址调整MOVCA,A+PC;查字形表查字形表MOVSBUF,A;开始发送开始发送JNBT1,$;等待一帧发送完等待一帧发送完CLRTI;清发送中断标志清发送中断标志INCR0;修改显示缓冲区指针修改显示缓冲区指针DJNZR7,L1;三个三个LED实现完了否实现完了否?CLRP1.0;关关TXDRET;返回返回TABLE:DB11H,D7HDB18H,D8H把内部把内部RAM40h5FHRAM40h5FH单元的单元的ASCIIASCII码码,在最高位在最高位D7D7加上奇偶校验加上奇偶校验位后由甲机发送到乙机位后由甲机发送到乙机,波特率为波特率为1.2K,1.2K,晶振晶振foscfosc=11.059MHz.=11.059MHz.解解:1):1)设置甲机为串行方式设置甲机为串行方式1 1发送状态发送状态,SCON40H;,SCON40H;乙机为乙机为串行方式串行方式1 1接受状态接受状态,SCON50H.,SCON50H.2)2)甲乙机用定时器甲乙机用定时器T1T1工作在方式工作在方式2 2波特率发生器波特率发生器,波特波特率为率为1.2K,1.2K,当当foscfosc=11.059MHz,=11.059MHz,重装初值为重装初值为E8H.E8H.定时器定时器T1T1方式方式字字TMOD20H.TMOD20H.3)ASCII 3)ASCII码码奇偶校验位的加入奇偶校验位的加入,可采用以下程序实现可采用以下程序实现:MOV A,#ASCII ;P=0,MOV A,#ASCII ;P=0,偶数个偶数个“1”1”1,1,奇数个奇数个“1”1”MOV C,P ;MOV C,P ;CPL C ;CPL C ;奇校验奇校验 MOV ACC.7,C ;MOV ACC.7,C ;在在D7D7加上奇校验位加上奇校验位甲机软件甲机软件:MOV TMOD,#32MOV TMOD,#32;定时器定时器T1T1为方式为方式2 2MOV TL1,#0E8HMOV TL1,#0E8H;MOVMOVTH1,#0E8HTH1,#0E8H;赋初值赋初值SETBSETBTR1TR1;启动启动T1T1MOVMOVSCON,#40HSCON,#40H;串行口方式串行口方式1 1MOVMOVR0,#40HR0,#40H;R0;R0作指针作指针MOV R1,#32MOV R1,#32;发送发送3232个字节个字节NEXT:NEXT:MOV A,R0MOV A,R0;取取ASCIIASCII码码LCALL SOUTLCALL SOUT;转到发送子程序转到发送子程序INCINCR0R0;修改指针修改指针DJNZ R1,NEXTDJNZ R1,NEXT;未发送完则继续未发送完则继续乙机软件乙机软件:MOV TMOD,#32 MOV TMOD,#32;定时器定时器T1T1为方式为方式2 2MOV TL1,#0E8HMOV TL1,#0E8H;MOVMOVTH1,#0E8HTH1,#0E8H;赋初值赋初值SETBSETBTR1TR1;启动启动T1T1MOVMOVR0,#60HR0,#60H;ASCII;ASCII码首址指针码首址指针MOV R1,#32MOV R1,#32;接受接受3232个字节个字节NEXT:NEXT:LCALL SINLCALL SIN;转到接受子程序转到接受子程序JNCJNCERRERR;若若“1”1”的个数位偶则出错的个数位偶则出错MOVMOVR0,AR0,A;接受到的字符存入缓冲区接受到的字符存入缓冲区DJNZ R1,NEXTDJNZ R1,NEXT;未完则继续未完则继续SIN:MOV SCON,50;JNB T1,$;MOV A,SBUF;MOV C,P ;ANL A,#7FH;RET ;