《单片机原理及应用8051单片机的串行口.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用8051单片机的串行口.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、80518051单片机的串行口单片机的串行口 本节主要介绍串行通信概念及51系列单片机的串行口问题,将具体介绍以下内容:51单片机串行口-串行口结构、串行口的控制寄存器、串行口的工作方式、应用举例。串行通信基础-基本概念串行通信基础串行通信基础 串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。所谓数据传送就是指数据以什么形式进行传送。所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。单片机的串行通信使用的是异步串行通信,所谓异步单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接
2、收端使用的不是同一个时钟。异步串行就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。通信通常以字符(或者字节)为单位组成字符帧传送。1 1、字符帧的帧格式、字符帧的帧格式 字字符符帧帧由由四四部部分分组组成成,分分别别是是起起始始位位、数数据据位位、奇奇偶偶校校验验位、停止位。位、停止位。1 1)起起始始位位:位位于于字字符符帧帧的的开开头头,只只占占一一位位,始始终终位位逻逻辑辑低低电电平平,表表示示发发送送端端开始发送一帧数据。开始发送一帧数据。2 2)数数据据位位:紧紧跟跟起起始始位位后后,可可取取5 5、6 6、7 7、8 8位,低位在前
3、,高位在后。位,低位在前,高位在后。3 3)奇偶校验位:占一位,用于对字符传)奇偶校验位:占一位,用于对字符传送作正确性检查。奇偶校验位是可选择送作正确性检查。奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。验和无校验,由用户根据需要选定。4 4)停停止止位位:末末尾尾,为为逻逻辑辑“1 1”高高电电平平,可可取取1 1、1.51.5、2 2位位,表表示示一一帧帧字字符符传传送送完毕。完毕。2.2.数据传送速率数据传送速率 串串行行通通信信的的速速率率用用波波特特率率来来表表示示,所所谓谓波波特特率率就就是是指指一一秒秒钟钟
4、传传送送数数据据位位的的个个数数。每每秒秒钟钟传传送送一一个个数数据据位就是位就是1 1波特。即:波特。即:1 1波特波特1bps1bps(位(位/秒)秒)。在在串串行行通通信信中中,数数据据位位的的发发送送和和接接收收分分别别由由发发送送时时钟钟脉脉冲冲和和接接收收时时钟钟脉脉冲冲进进行行定定时时控控制制。时时钟钟频频率率高高,则则波波特特率率高高,通通信信速速度度就就快快;反反之之,时时钟钟频频率率低低,波波特率就低,通信速度就慢。特率就低,通信速度就慢。80518051单片机串行口的特殊功能寄存器单片机串行口的特殊功能寄存器1.1.串行口控制寄存器(串行口控制寄存器(SCONSCON)S
5、CONSCON是是MCS-51MCS-51单单片片机机的的一一个个可可位位寻寻址址的的专专用用寄寄存存器器,用用于于串串行行数数据据通通信信的的控控制制。单单元元地地址址为为98H98H,位位地地址址为为98H98H9FH9FH。寄寄存存器器的的内内容容及及位位地地址址表示如下:表示如下:位地址 9FH 9EH9DH9CH 9BH9AH 99H98H位符号 SM0 SM1SM2RENTB8RB8TIRISCON中各位说明如下:中各位说明如下:1)SM0、SM1串串行行口口工工作作方方式式选选择位择位其状态组合和对应工作方式为:其状态组合和对应工作方式为:SM0SM1工作方式工作方式00方式方式
6、001方式方式110方式方式211方式方式32 2)SMSM2 2允许方式允许方式2 2、3 3的多机通信控制位的多机通信控制位 在在方方式式2 2和和3 3中中,若若SMSM2 21 1且且接接收收到到的的第第九九位位数数据据(RBRB8 8)为为1 1,才才将将接接收收到到的的前前8 8位位数数据据送送入入接接收收缓缓冲冲寄寄存存器器SBUFSBUF中中,并并置置位位RIRI产产生生中中断断请请求求;否否则则丢丢弃弃前前8 8位位数数据据。若若 SMSM2 20 0,则则不不论论第第九九位位数数据据(RBRB8 8)为为1 1还还是是为为0,0,都都将将前前8 8位位送送入入接接收收SBU
7、FSBUF中中,并并产产生生中中断断请请求。求。方式方式0 0时,时,SMSM2 2必须置必须置0 0。3 3)RENREN允许接收位允许接收位 RENREN0 0 禁止接收数据禁止接收数据 RENREN1 1 允许接收数据允许接收数据4 4)TBTB8 8发送第发送第9 9位数据位数据 在在方方式式2 2、3 3时时,TBTB8 8的的内内容容是是要要发发送送的的第第9 9位位数数据据,其值由用户通过软件来设置。其值由用户通过软件来设置。5 5)RBRB8 8接收的第接收的第9 9位数据位数据 在方式在方式2 2、3 3时,时,RBRB8 8是接收的第是接收的第9 9位数据。位数据。在方式在
8、方式1 1时,时,RBRB8 8是接收的停止位是接收的停止位 在方式在方式0 0时,不使用时,不使用RBRB8 86 6)TITI发送中断标志位发送中断标志位 在方式在方式0 0时,发送完第时,发送完第8 8位数据后,该位由硬件置位。位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。TITI1 1表表示示帧帧发发送送结结束束,其其状状态态既既可可供供软软件件查查询询使使用用,也可请求中断。也可请求中断。TITI由软件清由软件清“0 0”。7 7)RIRI接收中断标志位接收中断标志位 在方式在方式0 0时,接收完第时,接收完第8 8
9、位数据后,该位由硬件置位。位数据后,该位由硬件置位。在其它方式下,接收到停止位之前,该位硬件置位。在其它方式下,接收到停止位之前,该位硬件置位。RIRI1 1表表示示帧帧接接收收结结束束,其其状状态态既既可可供供软软件件查查询询使使用用,也可请求中断。也可请求中断。RIRI由软件清由软件清“0 0”。2.电源控制寄存器(PCON)PCON不可位寻址,字节地址为87H。它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器。其内容如下:与串行通信有关的只有与串行通信有关的只有D D7 7位(位(SMODSMOD),),该位为波特率倍增位,该位为波特率倍增位,当当SMOD=1SMOD=
10、1时,串行口波特率增加一倍,当时,串行口波特率增加一倍,当SMOD=0SMOD=0时,串行口波特时,串行口波特率为设定值。当系统复位时,率为设定值。当系统复位时,SMOD=0SMOD=0。位序位序D7D6D5D4D3D2D1D0位符号位符号SMOD/GF1GF0PDIDL80518051单片机串行通信工作方式单片机串行通信工作方式 方式方式0 0和方式和方式2 2的波特率是固定的,而方式的波特率是固定的,而方式1 1和方式和方式3 3的波的波特率是可变的,由特率是可变的,由T1T1的溢出率决定。的溢出率决定。SM0 SM1方式方式功能说明功能说明波特率波特率0 0方式方式0移位寄存器方式移位寄
11、存器方式fosc/120 1方式方式18位位UART可变可变1 0方式方式29位位UARTfosc/64 或者或者fosc/321 1方式方式39位位UART可变可变串串行行口口的的工工作作方方式式由由SM0SM0和和SM1SM1确确定定,编编码码和和功功能能如如下下表表所示所示串行工作方式串行工作方式0 01.1.数据发送数据发送 当数据写入当数据写入SBUFSBUF后,数据从后,数据从RXDRXD端在移位脉冲(端在移位脉冲(TXDTXD)的的 控制控制下,逐位移入下,逐位移入74LS16474LS164,74LS16474LS164能完成数据的串并转换。当能完成数据的串并转换。当8 8位位
12、数据全部移出后,数据全部移出后,TITI由硬件置位,发生中断请求。若由硬件置位,发生中断请求。若CPUCPU响应中响应中断,则从断,则从0023H0023H单元开始执行串行口中断服务程序,数据由单元开始执行串行口中断服务程序,数据由74LS16474LS164并行输出。其接口逻辑如下图所示。并行输出。其接口逻辑如下图所示。2.2.数据接收数据接收 要要实实现现数数据据接接收收,必必须须首首先先把把SCONSCON中中的的允允许许接接收收位位RENREN设设置置为为1 1。当当RENREN设设置置为为1 1时时,数数据据就就在在移移位位脉脉冲冲的的控控制制下下,从从RXDRXD端端输输入入。当当
13、接接收收到到8 8位位数数据据时时,置置位位接接收收中中断断标标志志位位RIRI,发发生生中中断断请请求求。其其接接口口逻逻辑辑如如下下图图所所示示。由由逻逻辑辑图图可可知知,通通过过外外接接74LS16574LS165,串串行口能够实现数据的并行输入。行口能够实现数据的并行输入。串行工作方式串行工作方式1 1 方式方式1 1为为1010位为一帧的异步串行通信方式。其帧格式为位为一帧的异步串行通信方式。其帧格式为1 1个个起始位、起始位、8 8个数据位和个数据位和1 1个停止位。如下图所示。个停止位。如下图所示。1.1.数据发送数据发送 数数据据写写入入SBUFSBUF后后,开开始始发发送送,
14、此此时时由由硬硬件件加加入入起起始始位位和和 停停止止位位,构构成成一一帧帧数数据据,由由TXDTXD串串行行输输出出。输输出出一一帧帧数数据据后后,TXDTXD保保持持在在高高电电平平状状态态下下,并并将将TITI置置位位,通通知知CPUCPU可可以以进进行行下下一一个字符的发送。个字符的发送。2.2.数据接收数据接收 当当REN=1REN=1且且接接收收到到起起始始位位后后,在在移移位位脉脉冲冲的的控控制制下下,把把接接收收到到的的数数据据移移入入接接收收缓缓冲冲寄寄存存器器(SBUFSBUF)中中,停停止止位位到到来来后后,把把停停止止位送入位送入RBRB8 8中,并置位中,并置位RIR
15、I,通知通知CPUCPU接收到一个字符。接收到一个字符。3.3.波特率的设定波特率的设定 工作在方式工作在方式1 1时,其波特率是可变的,波特率的计算公式为:时,其波特率是可变的,波特率的计算公式为:其中,其中,SMODSMOD为为PCONPCON寄存器最高位的值,其值为寄存器最高位的值,其值为1 1 或或0 0。当定时器当定时器1 1作波特率发生器使用时,选用工作方式作波特率发生器使用时,选用工作方式2 2(即自(即自动加载定时初值方式)。选择方式动加载定时初值方式)。选择方式2 2可以避免通过程序反复装入可以避免通过程序反复装入定时初值所引起的定时误差,使波特率更加稳定。假定计数初定时初值
16、所引起的定时误差,使波特率更加稳定。假定计数初值为值为X X,则计数溢出周期为:则计数溢出周期为:溢出率为溢出周期的倒数。则波特率的计算公式为:溢出率为溢出周期的倒数。则波特率的计算公式为:实际使用中,波特率是已知的。因此需要根据波特率的计实际使用中,波特率是已知的。因此需要根据波特率的计算公式求定时初值算公式求定时初值X X。用户只需要把定时初值设置到定时器用户只需要把定时初值设置到定时器1 1,就能得到所要求的波特率。就能得到所要求的波特率。串行工作方式串行工作方式2 2 方方式式2 2为为1111位位为为一一帧帧的的异异步步串串行行通通信信方方式式。其其帧帧格格式式为为1 1个个起起始位
17、、始位、9 9个数据位和个数据位和1 1个停止位。如下图所示。个停止位。如下图所示。在在方方式式2 2下下,字字符符还还是是8 8个个数数据据位位,只只不不过过增增加加了了一一个个第第9 9个数据位(个数据位(D D8 8),而且其功能由用户确定,是一个可编程位。而且其功能由用户确定,是一个可编程位。在在发发送送数数据据时时,应应先先在在SCONSCON的的TBTB8 8位位中中把把第第9 9个个数数据据位位的的内内容准备好。这可使用如下指令完成:容准备好。这可使用如下指令完成:SETB TBSETB TB8 8 ;TBTB8 8位置位置“1 1”CLR TB CLR TB8 8 ;TBTB8
18、 8位置位置“0 0”发发送送数数据据(D D0 0DD7 7)由由MOVMOV指指令令向向SBUFSBUF写写入入,而而D D8 8位位的的内内容容则则由由硬硬件件电电路路从从TBTB 8 8中中直直接接送送到到发发送送移移位位器器的的第第九九位位,并并以以此此来来启启动动串串行行发发送送。一一个个字字符符帧帧发发送送完完毕毕后后,将将TITI位位置置“1 1”,其其他他过过程与方式程与方式1 1相同。相同。方方式式2 2的的接接收收过过程程也也于于方方式式1 1基基本本类类似似,所所不不同同的的只只在在第第9 9数数据据位位上上,串串行行口口把把接接收收到到的的前前8 8个个数数据据位位送
19、送入入SBUF,SBUF,而而把把第第九九数数据据位送入位送入RBRB。方式方式2 2的波特率时固定的,而且有两种。一种是晶振频率的的波特率时固定的,而且有两种。一种是晶振频率的三十二分之一;另一种是晶振频率的六十四分之一。即三十二分之一;另一种是晶振频率的六十四分之一。即fosc/32fosc/32和和fosc/64fosc/64。如用公式表示则为:如用公式表示则为:由此公式可知,当由此公式可知,当SMODSMOD为为0 0时,波特率为时,波特率为fosc/64fosc/64,当,当SMODSMOD为为1 1时,波特率为时,波特率为fosc/32fosc/32 串行工作方式串行工作方式3 3
20、 方式方式3 3同方式同方式2 2几乎完全一样,只不几乎完全一样,只不过方式过方式3 3的波特率是可变的,有用户来确的波特率是可变的,有用户来确定。其波特率的确定同方式定。其波特率的确定同方式1 1。例例1 1 已知已知80518051的串行口采用方式的串行口采用方式1 1进行通信,晶进行通信,晶振频率为振频率为11.0592MHz11.0592MHz,选用定时器,选用定时器T1T1作为波作为波特率发生器,特率发生器,T1T1工作于方式工作于方式2 2,要求通信的波,要求通信的波特率为特率为96009600,计算,计算T1T1的初值。的初值。设设SmodSmod=0,=0,计算计算T1T1的初
21、值如下:的初值如下:X=253=FDHX=253=FDH例2 利用利用8051串行口将片内串行口将片内40H4FH单元单元中的数据发送出去,串行口工作于方式中的数据发送出去,串行口工作于方式2,TB8作为奇偶位。作为奇偶位。在数据写入发送缓冲器之前,先将数据的在数据写入发送缓冲器之前,先将数据的奇偶位写入奇偶位写入TB8,这样使第,这样使第9位数据作为校位数据作为校验位。验位。编程如下:编程如下:TRS:MOV SCON,#80H TRS:MOV SCON,#80H ;设置串行口工作方式;设置串行口工作方式2 2 MOV PCON,#80H MOV PCON,#80H ;波特率为;波特率为fo
22、sc/32fosc/32 MOV R0,#40H MOV R0,#40H ;设置片内数据指针;设置片内数据指针 MOV R2,#10H MOV R2,#10H ;数据长度送;数据长度送R2R2LOOP:MOV A,R0 LOOP:MOV A,R0 ;取数据送;取数据送A A MOV C,P MOV C,P ;奇偶位送;奇偶位送TB8TB8 MOV TB8,C MOV TB8,C MOV SBUF,A MOV SBUF,A ;启动发送;启动发送WAIT:JBC TI,CONT WAIT:JBC TI,CONT ;判发送完标志;判发送完标志 SJMP WAITSJMP WAITCONT:INC R
23、0CONT:INC R0 DJNZ R2,LOOP DJNZ R2,LOOP ;发送;发送1616个数据个数据例3 编写一个编写一个80518051串行口工作方式串行口工作方式2 2的接收程序,核对校的接收程序,核对校 验位,并进行接收正确和错误的判断和处理。验位,并进行接收正确和错误的判断和处理。REV:MOV SCON,#90H REV:MOV SCON,#90H ;设置工作方式;设置工作方式2 2,允许接收,允许接收LOOP:JBC RI,READ LOOP:JBC RI,READ ;等待接收数据并清;等待接收数据并清0 RI0 RI SJMP LOOP SJMP LOOP READ:MOV A,SBUF READ:MOV A,SBUF ;读入一帧数据;读入一帧数据 JB PSW.0,ONE JB PSW.0,ONE ;判接收端奇偶位;判接收端奇偶位 JB RB8,ERR JB RB8,ERR ;判发送端奇偶位;判发送端奇偶位 SJMP RIGHTSJMP RIGHTONE:JNB RB8,ERRONE:JNB RB8,ERRRIGHT:.RIGHT:.;接收正确处理;接收正确处理ERR:.ERR:.;接收出错处理;接收出错处理