《第8章 80C51单片机串行通信》由会员分享,可在线阅读,更多相关《第8章 80C51单片机串行通信(25页珍藏版)》请在金锄头文库上搜索。
1、教学基本要求:(1)、了解串行通信的基础知识;(2)、熟悉单片机串行口的结构及工作原理;(3)、掌握单片机串行通信控制寄存器的功能;(4)、掌握单片机串行通信的工作方式;教学重点:(1)、串行控制寄存器SCON的功能;(2)、串行工作方式0、1;教学难点: (1)、串行工作方式1的程序设计;,第8章 80C51单片机串行通信,8.1 串行通信基础知识,8.1.1 异步通信和同步通信 在计算机系统中, CPU和外部通信有以下两种方式:(a)并行通信:各数据位同时传送,速度快、效率高;(b)串行通信:数据传送按位顺序进行,成本低、速度慢; 串行通信又分为异步和同步方式,单片机中常使用异步通信方式。
2、,(1)异步串行通信的字符格式 异步串行通信以字符为单位,即一次传送一个字符。 异步串行通信的字符格式如下:,(a)信息两种状态分别以mark和space标志,“mark”译为“标号”对应逻辑“1”状态,在发送器空闲时,数据线应保持在mark状态;“space”译为“空格”,对应逻辑“0”状态。 (b)起始位:发送器是通过发送起始位而开始一个字符的传送,起始位使数据线处于“SPACE”状态。 (c)数据位:起始位之后就传送数据。 在数据位中、低位在前(左)、高位在后(右)。数据位可以是5、6、7或8位。 (d)奇偶校验位:用于对字符传送作正确性检查,3种可能:奇、偶或无校验。 (e)停止位:处
3、于最后,用以标志一个字符传送的结束,它对应于mark状态,停止位可能是1,1.5或2位。,(f)位时间:一个数据位的时间宽度。 (g)帧(frame):从起始位到停止位结束的时间。 (2)异步串行通信的信号形式 (a)近程通信:采用数字信号直接传送形式,即在传送过程中不改变原数据代码的波形频率。 (b)远程通信:采用频率调制法,即以不同频率的载波信号代表数字信号的两种不同电平状态,也称频带传送方式,因此,应采用调制解调器(modem)。(3)串行通信的数据通路形式 (a)单工形式 (b)半双工形式 (c)全双工形式,(4)串行通信的传送速率 波特率:每秒传送数据位的数目(bps)位/秒 1波特
4、=1bps(位/秒),(5)串行接口电路 串行接口电路也称之为通用异步接收发送器(UART)。 电路组成:(1)接收器; (2)发送器; (3)控制器;主要功能:(1)数据串行化/反串行化,并行数据串行数据; (2)格式信息的插入,滤除; 格式信息:启始位,奇偶位,停止位。 (3)错误检验 用于检验数据通信过程是否正确。,8.2 80C51串行口,8.2.1 80C51串行口硬件结构 80C51串行口硬件结构如图所示,SBUF:串行口寄存器,专用寄存器,包括发送寄存器和接收寄存器,具有同一地址(99H)。 串行发送时:向SBUF写入数据; 串行接收时:从SBUF读出数据; 移位寄存器:与接收寄
5、存器构成双缓冲结构。 在接收方式下,串行数据通过引脚RXD(P3.0)进入,由于接收SBUF和移位寄存器构成了双缓冲结构,所以,在数据接收过程中,可以避免出现帧重叠错误。 在发送方式下,串行数据通过引脚TXD(P3.1)送出。在发送数据时,CPU处于主动状态,不会发生帧重叠错误,因此,发送电路不需要双缓冲结构。,MCS-51单片机串行口结构如图所示,8.2.2 串行口控制机制 与串行通信有关的控制寄存器共有3个:(1)串行控制寄存器SCON(字节地址:98H;位地址:9FH98H) SCON的格式如下:,各位功能说明如下:(a)SM0,SM1:串行口工作方式选择位,(b)SM2:多机通信控制位
6、 多机通信控制位,用于方式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。,(c)REN:允许接收位 它由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。(d)TB8:发送数据位8 在方式2和方式3中, TB8的内容是要发送的第9位数据,其值由用户通过软件置位或复位。
7、 在双机通信时,TB8可做奇偶校验位使用; 在多机通信时,常以TB8位的状态表示主机发送的是地址帧还是数据帧(TB8=0,数据帧;TB8=1,地址帧)。(e)RB8:接收数据位8 在方式2和方式3中,RB8的内容是接收到的第9位数据,代表着接收数据的某种特征(与TB8功能类似)。,(f)TI发送中断标志位 在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之前由硬件置位。因此,TI=1,表示帧发送结束。可用指令JBC TI,rel来查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后,必须由软件清除TI(TI=0)。 (g)RI:接收中断标志位 在方式0中,接收完8
8、位数据后,由硬件置位;在其它方式中,在接收停止位时由硬件置位。因此,RI=1,表示帧接收结束。同TI一样,也可以通过JBC RI,rel来查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后,必须由软件清除RI。,(2)电源控制寄存器PCON(字节地址87H) 电源控制寄存器PCON是为CHMOS型单片机的电源控制而设置的。SMOD:串行口波特率的倍增位。SMOD= 1:串行口波特率加倍,系统复位后SMOD=0。,(3)中断允许寄存器IE(字节地址0A8H,位地址0AFH0A8H) ES:串行中断允许位;(a)ES=0:禁止串行中断 (b)ES=1:允许串行中断,8.3 80C51串行
9、口工作方式,MCS-51单片机的串行口有4种工作方式,基本情况如下:,从表中可以看出,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,其值由定时器T1的溢出率控制。,8.3.1 串行工作方式0 在方式0下,串行口作为同步移位寄存器使用,波特率固定为fosc/12 ,RXD(P3.0):数据移位的出入口;TXD(P3.1):提供移位时钟脉冲。 移位数据发送,接收以8位为一帧,不设起始位和停止位,低位在前,高位在后。,(1)数据发送与接收 使用方式0实现数据的移位输入输出时,实际上把串行口变成为并行口使用。 串行口作为并行口输入输出使用时,必须要有“并入串出”(CD4014、74
10、LS165)和“串入并出”(CD4094、74LS164)移位寄存器的配合。,(a)串行口作并行口实现数据输出,(b)串行口作并行口实现数据输入,(2)应用举例 例:使用CD4094的并行输出端接8支发光二极管,利用它的串入并出功能,把发光二极管从左向右依此点亮,并反复循环之。假设发光二极管为共阴极型,电路如图所示。,解:当串行口把8位状态码串行移位输出后,TI置1,如把TI作状态查询标志,则可使用查询法进行程序设计。 ORG 1000H MOV SCON, #00H;串行口方式0工作 CLR ES; MOV A, #80H;发光二极管从左亮起 DELR:CLR P1.0; 关闭(关)并行输出
11、 MOV SBUF, A; 串行输出 JNB TI, $; 状态查询 SETB P1.0; 开启并行输出 ACALL DELAY; 状态维持(DELAY延时子程序) CLR TI; 清发送中断标志 RR A; 发光右移 AJMP DELR; 继续 END思考题:如采用中断方法,应如何修改程序?,8.3.2 串行工作方式1,串行工作方式1是10位为一帧的异步串行通信方式,这种工作方式是为双机通信而准备的。帧格式包括1个起始位,8个数据位和1个停止位。 数据发送:是由一条写发送寄存器(SBUF)的指令开始,随后在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式,然后在移位脉冲的作用下,由T
12、XD端串行输出。一个字符帧发送完后,使TXD输出线维持在1状态下,并将SCON寄存器的TI位置1,通知CPU可以接着发送下一个字符。 数据接收:SCON的REN位应处于允许接收状态,即REN1。在此前提下,串行口采样RXD端,当采样到从1到0的状态跳变时,就认为已接收到起始位。随后在移位脉冲的控制下,把接收到的数据位移入接收寄存器中。直到停止位到来之后置位中断标志位RI,通知CPU从SBUF取走接收到的一个字符。,8.3.3 串行工作方式2 和3,串行工作方式2和3都是11位为一帧的串行通信方式,即1个起始位、9个数据位和1个停止位。 在这两种工作方式下,字符还是8个数据位,只不过增加了一个第
13、9数据位(D8),它是一个可编程位,其功能由用户设定。 在发送数据时,应予先在串行口控制寄存器SCON的TB8位中把第9个数据位的内容准备好。 这两种工作方式的数据接收过程也与方式1基本类似,不同点仍在第9数据位上,串行口把接收到的前8个数据位移入SBUF,而把第9数据位送SCON的RB8。 串行工作方式2和3是为多机通信而准备的。两者的工作过程相同,差别仅在于波特率的设置,方式2的波特率是固定的,而方式3的波特率可由用户根据需要设定,设定方法与方式1相同。,8.4.2 80C51的波特率,1. 串行工作方式0的波特率串行工作方式0的波特率是固定的,其值为波特率=fosc/122. 串行工作方
14、式2的波特率串行工作方式2的波特率也是固定的,但有两个数值。计算公式为: 波特率=fosc2smod/64 其中smod是串行口波特率倍增位SMOD的值。这两种固定的波特率可根据需要选择,而选择的方法是设置PCON寄存器中SMOD位的状态。,3. 串行工作方式1和方式3的波特率,串行工作方式1和方式3的波特率不是固定的,可以根据需要设置。80C51是以定时器T1作为波特率发生器,以T1溢出脉冲产生串行口的移位脉冲。因此,在这两种工作方式中,通过计算T1的计数初值就可以实现波特率的设置。假定定时器的计数初值为X,则计数溢出周期为: (12/fosc)(256-X) 溢出率为溢出周期的倒数,则波特率计算公式为: 波特率(2smod/32)(定时器1溢出率)(2smod/32)fosc/12(256-X) 根据上述波特率计算公式,得出计数初值的计算公式为: X256-fosc(2smod)/(384波特率) 当定时器T1作波特率发生器使用时,应选择方式2(即8位自动加载方式) 。,