280 likes | 379 Views
第 6 章 MCS-51 串行接口. 6.1 串行通信的基本概念 6.2 MCS-51 串行口的结构 6.3 串行口的工作方式 6.4 应用举例 6.5 串行通信接口设计. 退出. 6.1 串行通信的基本概念. 6.1.1 并行通信与串行通信 计算机的 CPU 与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。 1 .并行通信 数据字节的各位同时传送的通信方式。并行通信的优点是数据传送速度快,缺点是占用的传输线条数多,适用于近距离通信。. 2 .串行通信
E N D
第6章 MCS-51串行接口 • 6.1 串行通信的基本概念 • 6.2 MCS-51串行口的结构 • 6.3 串行口的工作方式 • 6.4 应用举例 • 6.5 串行通信接口设计 退出
6.1 串行通信的基本概念 • 6.1.1 并行通信与串行通信 • 计算机的CPU与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。 • 1.并行通信 • 数据字节的各位同时传送的通信方式。并行通信的优点是数据传送速度快,缺点是占用的传输线条数多,适用于近距离通信。
2.串行通信 • 数据字节的各位一位一位地依次传送的通信方式。串行通信的速度慢,但占用的传输线条数少,适用于远距离的数据传送。 • 3. 波特率 • 每秒钟传送的二进制数据的位数。 • 4. 异步通信格式
6.2 MCS-51串行口的结构 • 62.1 串行口的构成 发送/接收缓冲器:SBUF 物理上是独立的两个缓冲器。 MOV SBUF, A; 数据由TXD(P3.1 即第11引脚)送出 MOV A,SBUF;数据由RXD(P3.0 即第10引脚)接收 特殊功能寄存器SCON(98H), PCON(87H) 可以用软件改变两者的内容来控制工作方式和波特率。
6.2.2 串行口控制寄存器SCON 1.串行口的方式选择位SM0、SMl
2.允许方式2和方式3进行多机通信控制位SM2 • 在方式2或方式3中,若SM2=0,而接收到的第9位数据为0,1,接收。 • 若SM2=1,而接收到的第9位数据为0,则不接收,为1,则接收。 • 在方式0时,SM2必须是0。 • 在方式1时,若SM2=1,则只有收到有效的停止位时才会接收。 • 3.允许串行接收位REN • REN=1允许串行接收,REN=0则禁止串行接收。 • 4.TB8 • 是工作在方式2和方式3时,要发送的第9位数据。 • 5.RB8 • 当工作在方式2和方式3时,为接收到的第9位数据。
6.发送结束标志位TI • 每当发送完一帧串行信息,就由硬件置1。 • 7.接收结束标志位RI • 串行接收到停止位的中间点时由硬件置1。 • 6.2.3 特殊功能寄存器PCON • 特殊功能寄存器PCON,格式如下: • SMOD为波特率系数选择位。其作用是使波特率加倍。
波特率 一. 工作方式2时,波特率取决于PCON中的 SMOD位的值,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,波特率为fosc的1/32,用公式表示为: 工作方式2波特率=(2SMOD/64)×fosc
二 . 方式1与方式3的波特率 波特率=定时器T1的溢出率/n;而溢出率=1/溢出周期; 溢出周期=12/fosc *(终值-初值)。因此,当定时器/计数器T1作于自动重装初值方式2时,终值为256。 若波特率已给定,就可以确定定时器T!的初值TLl和THl。
6.3 串行口的工作方式6.3.2 工作方式1 串行口方式1的时序 (a)发送时序;(b)接收时序
6.3.2 工作方式2,3 串行口方式2、3的时序
6.4 串行口的应用举例 【例5-1】方式1。有两台8031单片机相距很近,直接将它们的串行口相连,1#机的TXD接2#机的RXD,2#机的TXD接1#机的RXD,二机的GND相连。 二机的晶振频率均为11.0592MHZ,通信的波特率为4500bps。现将第一台8031单片机片内RAM40H~5FH单元内的数据,串行发送到第二台8031单片机片内RAM60H~7FH单元中。
1#单片机发送程序: TX: MOV TMOD , #20H • MOV TH1 , #0FAH • MOV TL1 , #0FAH • SETB TR1 ;波特率的设定 • MOV SCON , #40H ;设定工作方式1发送 • MOV R0 , #40H;设发送数据的地址指针 • MOV R2 , #20H;设发送数据长度 LOOP: MOV A , @R0;取发送数据送A MOV SBUF , A;启动发送 WAIT: JNB TI , WAIT;判发送中断标志 • CLR TI • INC R0 • DJNZ R2 , LOOP • RET
2#单片机接收程序: RX: MOV TMOD , #20H • MOV TH1 , #0FAH • MOV TL1 , #0FAH • SETB TR1 • MOV SCON , #50H;设定工作方式1接收 • MOV R0 , #60H • MOV R2 , #20H LOOP: JNB RI , LOOP;等待接收数据 • CLR RI MOV A , SBUF;读入一帧数据 MOV @R0 , A;接收正确 INC R0 • DJNZ R2 , LOOP • RET
【例5-2】附加的第9位----奇偶校验位。 • 有两台8031单片机相距很近,直接将它们的串行口相连,1#机的TXD接2#机的RXD,2#机的TXD接1#机的RXD,二机的GND相连。二机的晶振频率均为11.0592MHZ。 • 现将第一台8031单片机片内RAM40H~5FH单元内的数据,串行发送到第二台8031单片机片内RAM60H~7FH单元中。
方式2:波特率为fosc/64 • 1#单片机发送程序: TX: MOV SCON , #80H ;设定工作方式2发送 • MOV R0 , #40H;设发送数据的地址指针 • MOV R2 , #20H;设发送数据长度 LOOP: MOV A , @R0;取发送数据送A MOV C , PSW.0 MOV TB8 , C;奇偶位送TB8 • MOV SBUF , A;启动发送 WAIT: JNB TI , WAIT;判发送中断标志 • CLR TI • INC R0 • DJNZ R2 , LOOP • RET
2#单片机接收程序:出错时,F0=1 RX: MOV SCON , #90H;设定工作方式2接收 • MOV R0 , #60H • MOV R2 , #20H LOOP: JNB RI , LOOP;等待接收数据 • CLR RI MOV A , SBUF;读入一帧数据 JB PSW.0 , PP1;判接收端奇偶 • JB RB8 , ERROR ;判发送端奇偶 • SJMP RIGHT PP1: JNB RB8 , ERROR;接收出错 RIGHT: MOV @R0 , A;接收正确 INC R0 • DJNZ R2 , LOOP • RET ERROR: SETB PSW.5;置出错标志 • RET
方式3:波特率为4500bps • 在上述方式2的程序开始,加上波特率设定指令: MOV TMOD , #20H • MOV TH1 , #0FAH • MOV TL1 , #0FAH • SETB TR1 • 其它同。
【例5-3】附加的第9位----多机通信。 • 设计一个主从方式的多机通信系统,其中有一个8031系统为主机,n个8031应用系统为从机。不考虑口驱动问题。 • 一、硬件组成:如图所示。主机的RXD端与所有从机的TXD端相连,主机的TXD端与所有从机的BXD端相连。
二、软件设计依据: • SM2=1 RB8=1, 接收。 RB8=0,不接收 • SM2=0 RB8=1, RB8=0, 均接收。 • (1)主机向从机发送地址信息时,其附加的第9个数据位规定为1;主机向从机发送的数据信息(包括向从机下达的命令),其第9位规定为0。 • (2)从机在建立与主机通信之前,随时处于对通信线路的监听状态(SM2=1),因此只能收到主机发送的地址信息(第9位为1),非地址信息被丢失。 • (3)从机收到地址后应进行识别。是否主机呼叫本站,如果地址符号,即可确认是呼叫本站。这时从机应解除监听状态,令SM2=0;其它从机由于地址不符,仍处于监听状态,继续保持SM2=1,所以无法接收主机的数据。
主机程序:(设呼叫#1号从机) MASTR:MOV PCON,#80H • MOV SCON,#98H ;设串行口为方式2,TB8=1 • MOV R0,#30H ;发送数据块地址指针 • MOV R2,#10H ;块长度计数初值 • MOV A,#01H ;从机地址#01 MOV SBUF,A ;发呼叫地址 WAIT1: JBC TI,PP1 • SJMP WAIT1 PP1: CLR TB8 ;清地址标志,发送数据 • MOV A,@R0 • MOV SBUF,A WAIT2: JBC TI,PP2 SJMP WAIT2 PP2: INC R0 DJNZ R2,PP1 RET
#1从机响应呼叫的联络程序: SLAVE:MOV PCON,#80H MOV SCON,#0B0H;设串行口方式2,SM2=1,REN=1 MOV R0,#30H MOV R2, #10H SRR1: JBC RI,SRR2 ; 等待主机发送(监听) SJMP SRR1 SRR2: MOV A, SBUF; 取出呼叫地址 XRL A, #01H JNZ SRR1; 不是本机地址,继续监听 CLR SM2; 是本机地址,解除监听,可以取其它数据 SRR3: JBC RI, PP3; 等待主机数据 SJMP SRR3 PP3: MOV A, SBUF MOV @R0,A INC R0 DJNZ R2, SRR3 RET
5.5 串行通信接口设计 • 5.5.1 通信双方的硬件设计:如果通信双方的通信距离很近,可以将单片机的串行口直接相连,以实现全双工的双机通信,如图所示。
如果通信距离比较远,将TTL电平转换成RS—232C或423或422电平,以提高传输可靠性。如果通信距离再增加,必须在系统中配置调制—解调器或采取其它措施。如果通信距离比较远,将TTL电平转换成RS—232C或423或422电平,以提高传输可靠性。如果通信距离再增加,必须在系统中配置调制—解调器或采取其它措施。 • 如:MCl488发送器将TTL电平转换成RS-232C电平,MCl489接收器将RS-232C电平转换成TTL电平电路:
5.5.2 RS-232C接口电平调整 • RS-232C逻辑与TIL、MOS逻辑电平不同。逻辑0: +5至+15V之间; 逻辑1:-5至-15V之间。抗干扰性能好。 • 目前RS-232C与TTL的电平转换最常用的芯片是1488、1489,其内部结构与管脚如图所示。
5.5.3 RS—423接口电平调整 • RS—423标准提供最高传输速率为100kB/s,最大传送距离为12m的单向单端数据传输。 逻辑1:4V至6V; 逻辑0:-6V 至-4V • TTL和RS-232C的电平调整电路连接如图所示。电路中采用的驱动器和接收器分别为3691和26L32。
5.5.4 RS—422接口电平调整 • RS—422标准提供单向平衡传输线路传送数据。传输率最大为10MB/s,最大传输距离可达120m,如果采用较低传输速率,则可在最大距离为1200m之间传送数据,这个标准允许驱动器输出为土2V到6V。 • 接口信号电平转换调整电路如图。电路中采用的驱动器和接收器分别为3691和26L32