MCS-51单片机串行接口及其应用.ppt

上传人:本田雅阁 文档编号:2893458 上传时间:2019-06-02 格式:PPT 页数:32 大小:488.02KB
返回 下载 相关 举报
MCS-51单片机串行接口及其应用.ppt_第1页
第1页 / 共32页
MCS-51单片机串行接口及其应用.ppt_第2页
第2页 / 共32页
MCS-51单片机串行接口及其应用.ppt_第3页
第3页 / 共32页
MCS-51单片机串行接口及其应用.ppt_第4页
第4页 / 共32页
MCS-51单片机串行接口及其应用.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《MCS-51单片机串行接口及其应用.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机串行接口及其应用.ppt(32页珍藏版)》请在三一文库上搜索。

1、,5.2 MCS-51串行接口及其应用,上页,下页,回目录,串行通信:,指数据一位一位按顺序传送,串行通信方式:,单工,半双工,全双工,MCS-51内部有一个全双工的串行通信接口,串行通信:,一、串行通信的两种基本方式,1、异步传送方式,一帧数据:,一个字符在异步传送中称为一帧数据,一帧数据由4部分组成: 起始位、数据位、奇偶位、停止位,一帧数据,起始位,数据位,奇偶位,停止位,第n个字符,第n+1个字符,上页,下页,回目录,为逻辑“0”信号,占用一位,用来通知接收设备,一个新的字符开始了,数据位:,起始位:,奇偶位:,58位。数据的最低位在前,最高位在后。,紧跟在最高位之后,占用一位,奇偶校

2、验时,根据协议置“1”或“0”,停止位:,为逻辑“1”信号,占用1位或2位,当接收端收到停止位时,表示一帧数据结束。,一帧数据,起始位,数据位,奇偶位,停止位,第n个字符,第n+1个字符,2、同步传送方式,数据结构:,在传送大量数据时,为了提高传送信息的效率,采用一个数据块共用一个同步字作为起始位的格式,叫同步通信方式,用发、收双方规定的同步字来作为数据块的开始和结束,二、MCS-51串行口结构,1、数据缓冲器SBUF,包括物理上独立的发送缓冲器、接收缓冲器,发送缓冲器:只能写入不能读出,接收缓冲器:只能读出不能写入,二者共用一个地址99H,2、串行口控制寄存器,字节地址为98H,可位寻址,位

3、地址为98H9FH,SM0 SM1 SM2 REN TB8 RB8 TI RI,SCON (98H),(1)SM0、SM1:串行口工作方式选择位。,0 0 0 移位寄存器方式(用于I/O扩展),0 1 1 8位UART,波特率可变,1 0 2 9位UART,波特率为fosc/32或fosc/64,1 1 3 9位UART,波特率可变,(2)SM2 多机通信控制位 用于方式2或方式3中。 如果SM2=1,只有当接收到的第9位数据(RB8)为“1”时,才将接收到的前8位数据送入SBUF,并置“1” RI,产生中断请求;当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。 如果SM

4、2=0,则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并置“1” RI,产生中断请求。,REN:允许接收控制位。,由软件置“1”时,允许接收。,置“0”时,禁止接收,TB8:发送的第9位数据 方式2和3时,TB8是要发送的第9位数据,可作为奇偶 校验位使用,也可作为地址帧或数据帧的标志。 =1为地址帧, =0为数据帧,RB8:,在方式2和方式3中要接收的第9位数据,在方式1时,如SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8,TI:,发送中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位的开始时置“1”,必须由软件清“0”,RI

5、:,接收中断标志。在方式0串行接收第8位结束时由硬件置“1”,或在其他方式中串行接收停止位的开始时置“1”,必须由软件清“0”,上页,下页,回目录,3、特殊功能寄存器PCON,其字节地址87H,没有位寻址功能。,PCON(87H),SMOD:波特率选择位。SMOD=1时,波特率加倍,三、串行口工作方式,1、方式0,同步移位寄存器输入/输出方式,常用于外接移位寄存 器,以扩展并行I/O口。 8位数据为一帧,不设起始位和停止位,先发送或接收 最低位。,74LS164,数据输出,移位脉冲,方式0 发送,一个数据写入SBUF,串口将数据从RXD输出(波特率fosc/12),TXD输出同步移位信号,发送

6、完TI置1,D7 D0,图5-12 方式0扩展I/O口硬件逻辑图,方式0的波特率为:波特率=fosc/12,方式0 接收,REN置1,串口将数据从RXD输入(波特率fosc/12),TXD输出同步移位信号,发送完RI置1,上页,下页,回目录,图5-12 方式0扩展I/O口硬件逻辑图,2、方式1,波特率可变的8位异步通信接口方式。,波特率=2SMOD/32T1溢出率,方式1发送,CPU 执行一条写SBUF指令,就启动了串口发送,方式1接收,允许接收位REN被置“1”后,接收器就开始工作,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。,3

7、、方式2,9位异步通信接口方式。传送一帧数据信息为11位,波特率=2SMOD/64fosc,方式2发送,数据由TXD端输出,附加的第9位数据由SCON中的TB8提供。 CPU 执行一条写SBUF指令,就启动了串口发送,发送完TI置1,方式2接收,与方式1相似,REN被置“1”后,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。,4、方式3,9位异步通信接口方式。传送一帧数据信息为11位,波特率= 2SMOD/32T1的溢出率,方式3发送,数据由TXD端输出,附加的第9位数据由SCON中的TB8提供。 CPU 执行一条写SBUF指令,就启

8、动了串口发送,发送完TI置1,方式3接收,与方式1相似,REN被置“1”后,跳变检测器以波特率16倍的速率采样RXD端的电平,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收。,四、波特率的设计,方式0的波特率是固定的:,波特率=fosc/12,方式2波特率取决于SMOD,波特率=2SMOD/32T1的溢出率,方式2波特率=2SMOD/64 fosc,SMOD=0时,波特率=fosc/64,SMOD=1时,波特率=fosc/32,方式1、3波特率取决于T1的溢出率,SMOD=0时,波特率= T1的溢出率/32,SMOD=1时,波特率= T1的溢出率/16,上页,下页,回目录,定时器1作波

9、特率发生器,T1的溢出率=计数速度/(2K-初值),K为定时器T1的位数,K=13(方式0) K=16(方式1) K=8(方式2、3),T1为计数器时:,T1为定时器时:,T1的溢出率=fosc/ 12(2K-初值),工作于方式1、3时波特率:,波特率=2SMOD/32T1的溢出率,= 2SMOD fosc/ 32 12(2K-初值),(1)利用方式0扩展并行I/O口 例:利用51单片机的串行口外接74LS164扩展8位并行输出口。电路图如下图所示,8位并行输出口的各位分别接一个发光二极管,要求发光二极管按从左到右的顺序,以一定的时间间隔依次循环发光,试编程实现。,5.4.4 串行口的应用,参

10、考程序如下: ORG 0000H LJMP MAIN ORG 2000H MAIN: CLR P1.0 MOV SCON,#00H SETB P1.0 MOV A,#80H BACK1: MOV SBUF,A,BACK2: JNB TI,BACK2 CLR TI LCALL DELAY RR A SJMP BACK1,C51参考程序如下: #include “reg51.h” Sbit P1_0 =P10; /void delay(void) Void main() Unsigned char led; P1_0=0; SCON=0; P1_0=1; Led=0x80; While(1) SB

11、UF=led;,While(!TI) TI=0; delay(); led=led1; If(led=0) Led=0x80; ; Return; ,利用51单片机的串行口外接74ls165扩展8位并行输入口, 如图所示要求通过8位输入口读入一个字节数据存入R2中,汇编语言源程序: ORG 0000H; LJMP MAIN; ORG 2000H; MAIN: CLR P1.0; SETB P1.0; BACK: MOV SCON,#10H; BACK1:JNB RI,BACK1; CLR RI; MOV A,SBUF; MOV R2,A; SJMP $;,C51参考程序: #include “

12、reg51.h” Sbit P1_0=P10; Void main() Volatile unsigned char led; P1_0=0; P1_0=1; SCON=0x10; While(!RI) RI=0; led=SBUF; While(1); Return; ,(2)利用方式1实现点对点的异步通信 例:编程将甲机片内RAM 50H5FH单元中的数据向乙机发送,在发送之前将数据块长度N发送给乙机,当发送完N个字节后,再发送一个累加效验和。乙机接收数据进行累加和校验,如果和发送方的累加和一致,发送数据“00”,表示接收正确,如果不一致,发数据FFH,甲机再重发,乙机接收的数据存入片内7

13、0H7FH单元中。设波特率为2400,fosc=6MHz,试编程实现。 参考程序如下:,甲机发送程序 TRT:MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV SCON,#50H RPT:MOV R0,#50H MOV R2,#10H MOV R3,#00H MOV SBUF,R2 BACK1:JNB TI,BACK 1 CLR TI BACK2:MOV A,R0 MOV SBUF,A ADD A,R3,MOV R3,A INC R0 BACK3:JNB TI,BACK 3 CLR TI DJNZ R2,BACK 2 MOV SBUF

14、,R3 MOV R3,#0 BACK4:JNB TI,BACK4 CLR TI BACK5:JNB RI,BACK5 CLR RI MOV A,SBUF JNZ RPT RET,乙机接收程序 RSU:MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV SCON,#50H BACK:MOV R0,#70H BACK1:JNB RI,BACK1 CLR RI MOV A,SBUF MOV R2,A MOV R3,#00H BACK2:JNB RI,BACK2 CLR RI MOV A,SBUF MOV R0,A INC R0,ADD A,R

15、3 MOV R3,A DJNZ R2,BACK 2 BACK3:JNB RI,BACK3 CLR RI MOV A,SBUF XRL A,R3 MOV R3,#00H JZ BACK5 MOV SBUF,#0FFH BACK4:JNB TI,BACK4 CLR TI AJMP BACK BACK5:MOV SBUF,#00H BACK6:JNB TI,BACK6 CLR TI RET,甲机发送C51参考程序: #include “reg51.h” Void main() Volatile unsigned char rev; Unsigned char *pt,chk,len; TMOD=0x

16、20; TH1=0xF3; TL1=0xF3; TR1=1; SCON=0x50; Do Pt=0x50; Len=0x10; Chk=0; SBUF=len; While(!TI) TI=0; Do,SBUF=*pt; Chk=chk+*pt; Pt+; While(!TI) TI=0; Len-; while(len0); SBUF=chk; While(!TI) TI=0; While(!RI) RI=0; Rev=SBUF; while(rev!=0); Return;,乙机接收C51参考程序: #include “reg51.h” Void main() Volatile unsig

17、ned char rev; Unsigned char *pt,chk,len; Bit stat; TMOD=0x20; TH1=0xF3; TL1=0xF3; TR1=1; SCON=0x50; Do pt=0x70; while(!RI) RI=0; Rev=SBUF; Len=rev; Chk=0; do While(!RI),RI=0; Rev=SBUF; *pt=rev; Pt+; Chk=chk+rev; Len-; while(len0); While(!RI) RI=0; Rev=SBUF; If (Rev=chk) SBUF=0; Else SBUF=0xff; While

18、(!TI) TI=0; while(rev!=chk); Return; ,(3)利用方式2、方式3与多机通信 串行口控制寄存器SCON中的SM2位为方式2、方式3的多机通讯控制位。在多机通讯中起着非常重要的作用。一个典型的多机通讯系统硬件连接如下图所示。,当串行口以方式2、方式3发送时,数据的第9位是可编程位,即可以通过程序改变TB8的状态,以区分当前所发送的是地址还是数据,TB8=1时发送地址,TB8=0时发送数据。 发送方发送的第9位TB8,将被接收方的第9位,即RB8所接收。接收时,如果接收方的SM2=1,则只有接收到的RB8=1,即传送的是地址时,才能激活RI,接收数据才有效。如果接

19、收方的SM2=0,则无论接收到的RB8的状态如何,均能激活RI,接收到的数据有效。 利用串行口方式2、方式3的这个特点便可以实现多机通讯。,上图为一主多从结构的多机通讯系统,主机和从机应设置成相同的方式,使用相同的波特率。其工作通讯过程简单描述如下: 主机发出要求与之通讯的从机地址信号,并使TB81。 将所有从机的SM2都置为1,将接收到的第9位的状态送入从机的RB8,使RB81。 所有满足SM21、RB8=1条件的从机都能激活RI,进入各自的中断服务程序,在从机的中断服务程序中判断主机发出的地址信号是否与本从机号相同,若相同则将其SM2设为0,并将本机地址发回主机作为应答,否则不动作。 主机发出需传送的数据。并使TB8=0。,所有从机均接收到该数据帧,其第9位进入RB8,即RB8=0。对于地址号与主机发出的地址不相符的那些从机,由于其SM2=1,而接收到的第9位使它们的RB8都为0,因此都不能激活RI,使得接收到的数据自然丢失。 地址号与主机发出的地址相同的那台从机SM20,这就使得不管接收到的第9位为何值,都能激活RI,接收到的数据有效。 通过以上6步,可完成主机与从机的一对一通讯。当主机需与其他从机联系时,则正与主机通讯的这台从机应恢复SM2=1,主机可再发出地址帧寻址其他从机。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1