第7章--串行口.pptx_第1页
第7章--串行口.pptx_第2页
第7章--串行口.pptx_第3页
第7章--串行口.pptx_第4页
第7章--串行口.pptx_第5页
已阅读5页,还剩134页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 串 行 口,7.1 串行通信的基础知识 7.2 MCS-51的串行I/O口及控制寄存器 7.3 串行口的工作方式 7.4 波特率的设计 7.5 MCS-51串行口的应用 7.6 MCS-51串行口的多机通信,教学目的和要求,本章首先介绍串行通信的基本概念,然后重点讨论MCS-51系列单片机串行口的特点和用法,要求掌握串行口的概念、MCS-51串行口的结构、原理及应用。,串行通信和基础知识,并行通信与串行通信 并行通信:数据的各位同时传送。 特点:传送速度快、效率高,但有多少数据位就需多少根数据线,因此传送成本高,适合近距离传输。 在集成电路芯片的内部、同一插件板上各部件之间同一机箱内各

2、插件板之间的数据传送都是并行的。,串行通信和基础知识,串行通信和基础知识,串行通信:数据一位一位顺序传送。 特点:数据传送按位顺序进行,最少只需一根传输线即可完成,成本低但速度慢。 计算机与远程终端或终端与终端之间的数据传送通常都是串行的。 串行通信的距离可以从几米到几千公里。,串行通信和基础知识,串行通信和基础知识,异步通信和同步通信: 异步通信:数据通常是以字符(字节)为单位组成字符帧传送的。 发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。,串行通信和基础知识,字符帧由发送端一帧一帧地发送

3、,通过传输线由接收设备一帧一帧地接收。 发送端和接收端可以有各自的时钟来控制数据的发送和接收。 一个字符在异步传送中又称为一帧数据,字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位四部分组成。,串行通信和基础知识,串行通信和基础知识,帧格式: 起始位:为逻辑“0”信号,位于字符帧开头,占一位,表示发送端开始发送一帧信息。 数据位:紧跟起始位之后就是数据位。在数据位中,低位在前(左),高位在后(右)。,串行通信和基础知识,奇偶校验位:此位位于数据位之后,仅占1位,用于对字符传送作正确性检查。 奇偶校验位有3种可能的选择,即奇、偶或无校验,由用户根据需要选定。,串行通信和基础知识,停止位:为

4、逻辑“1”信号,此位位于字符帧末尾,表示一帧字符信息已发送完毕。 停止位可以是1、1.5或2位,在实际应用中由用户根据需要确定。,串行通信和基础知识,异步通信的优点:不需要传送同步脉冲,字符帧的长度也不受限制,故所需设备简单。 异步通信的缺点:字符帧中因包含有起始位和停止位而降低了有效数据的传输效率。,串行通信和基础知识,同步通信:是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。 信息帧含有若干个数据字符既数据块。信息帧由同步字符、数据字符和校验字符三部分组成。,串行通信和基础

5、知识,同步通信的缺点:要求发送时钟和接收时钟保持严格同步,故发送时钟除应和发送的波特率保持一致外,还要求把它同时传送到接收端去。 故这种方式对硬件要求较高。,串行通信和基础知识,串行通信的制式: 按照数据传送的方向,串行通信可分为3种制式,即单工、半双工和全双工。 1.单工(Simplex)制式 A端(或B端)固定为发送站,B端(或A端)固定为接收站,数据只能从A站(或B站)发至B站(或A站),数据传送是单向的。 因此,只需要一条数据线。,串行通信和基础知识,2.半双工(Half Duplex)制式 数据传送是双向的,但任一时刻数据只能是从A站发至B站,或者从B站发至A站,也就是说只能是一方发

6、送另一方接收。 因此,A、B两站之间只要一条信号线和一条接地线。 收发开关是由软件控制的,通过半双工通信协议进行功能换。,串行通信和基础知识,3.全双工(Full Duplex)制式 数据传送也是双向的。 A、B两站都可以同时发送和接收数据。 因此,工作在全双工制式下的A、B两站之间至少需要三条传输线:一条用于发送,一条用于接收,一条用于信号地线。,串行通信和基础知识,串行通信和基础知识,波特率:指每秒钟传送二进制数码的位数(亦称比特数),单位是b/s。 波特率是串行通信的重要指标,用于表征数据传送的速率。波特率越高,数据传输速度越快。 字符的实际传送速率是指每秒钟内所传字符帧的帧数,与字符帧

7、格式有关。,串行通信和基础知识,例如,波特率为2400b/s的通信系统,若采用图7-2(a)的字符帧,则字符的实际传送速率为2400/11=218.18帧/s; 若采用图7-2(b)的字符帧,则字符的实际传送速率为2400/14=171.43帧/s。,MCS-51串行口的结构,串行口的结构: MCS-51串行口结构框图如图7-4所示。 主要由两个物理上独立的串行数据缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。 两个特殊功能寄存器SCON和PCON用来控制串行口的工作方式和波特率。,MCS-51串行口的结构,串行口的结构,串行口的结构,发送缓冲寄存器SBUF只能写

8、,不能读;接收缓冲寄存器SBUF只能读,不能写。 两个缓冲寄存器共用一个地址99H,可以用读/写指令区分。 串行发送时,通过“MOV SBUF,A”写指令,CPU把累加器A的内容写入发送的SBUF(99H),再由TxD引脚一位一位地向外发送;,MCS-51串行口的结构,串行接收时,接收端从RxD一位一位地接收数据,直到收到一个完整的字符数据后通知CPU,再通过“MOV A,SBUF”读指令,CPU从接收的SBUF(99H)读出数据,送到累加器A中。 发送和接收的过程可以采用中断方式,从而可以大大提高CPU的效率。,串行口的结构,在进行通讯时,外界数据是通过引脚RxD(P3.0,串行数据接收端)

9、和引脚TxD(P3.1,串行数据发送端)与外界进行串行通信。 输入数据先进入输入移位寄存器,再送入接收SBUF。在此采用了双缓冲结构。,串行口的控制寄存器,串行口控制寄存器SCON: SCON是MCS-51的一个可位寻址的SFR,串行数据通信的方式选择、接收和发送控制以及串行口的状态标志均由专用寄存器SCON控制和指示。 复位时所有位被清0。SCON的格式如下:,串行口的控制寄存器,SCON各位功能说明如下: 1.SM0、SM1:串行口工作方式选择位。 2.SM2:在方式2和方式3中用于多机通信控制。 3.REN:允许接收位。 REN=0,禁止接收;REN=1,允许接收。 该位由软件置位或复位

10、。,串行口的控制寄存器,4.TB8:在方式2、3时,是发送的第9位数据,也可作奇偶校验位。在多机通信中,TB8位的状态表示主机发送的是地址还是数据。TB8=0为数据,TB8=1为地址。该位由软件置位或复位。 5.RB8:在方式2、3时,RB8存放接收到的第9位数据。方式1时,若SM2=0,则RB8存放接收到的停止位;在方式0时,不使用RB8。,串行口的控制寄存器,6.TI:发送中断标志位。在方式0时,发送第8位数据结束时由硬件置位;其他方式在停止位之前置位。TI在发送前必须由软件清0。TI=1,表示发送帧结束,可供软件查询,也可请求中断。 7.RI:接收中断标志。方式0时,接收第8位数据结束时

11、由硬件置位。其他方式下,接收到停止位的中间位置时置位。RI在接收一帧字符之后必须由软件清0,准备接收下一帧数据。RI=1,表示帧接收结束。RI可供软件查询,也可请求中断。,串行口的控制寄存器,电源控制寄存器PCON: PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,地址为87H。 PCON的最高位SMOD是串行口波特率倍增位。当SMOD=1时波特率加倍,复位时,SMOD=0。PCON的格式如下:,串行口的控制寄存器,中断允许控制寄存器IE(A8H) IE寄存器各位定义如下: 其中,ES为串行口中断允许控制位,ES=1允许RI/T1中断。ES=0,禁止RI/TI中断。,串行口的控

12、制寄存器,中断优先级寄存器IP(B8H) IP寄存器各位定义如下: 其中,PS为串行口中断优先级控制位,该位为“1”,串行口设定为高优先级。,串行口的工作方式,MCS-51串行口有0、1、2、3四种工作方式。 串行口方式0: 在方式0下,串行口为同步移位寄存器方式,波特率固定为fOSC/12。 这时的数据传送,无论是输入还是输出,均由RxD(P3.0)端完成,而由TxD(P3.1)端输出移位时钟脉冲。,串行口的工作方式,发送和接收一帧的数据为8位二进制,不设起始位和停止位,低位在前,高位在后。 一般用于I/O口扩展。 帧格式如下:,串行口的工作方式,1.方式0发送 方式0发送时,执行任何一条以

13、SBUF为目的寄存器的指令,串行口即将8位数据以振荡频率的十二分之一的波特率,将数据从RxD端串行发送出去。 2.方式0接收 方式0接收时,在同时满足REN=1和RI=0的条件下,以读SBUF寄存器的指令开始。,串行口的工作方式,方式0发送时序,方式0接收时序,串行口的工作方式,方式0下,SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件置“1”TI或RI中断标志位,CPU响应中断。 TI或RI标志位须由用户软件清“0”,可采用如下指令: CLR TI;TI位清“0” CLR RI ;RI位清“0” 方式0时,SM2位(多机通讯控制位)必须为0。,串行口的工作方式,串行口方式1:

14、 在方式1下,串行口为10位通用异步通信接口。 一帧信息包括1位起始位(0)、8位数据位(低位在前)和1位停止位(1)。 TXD是发送端,RXD是接收端。 其传送波特率可调。,串行口的工作方式,方式1发送时序,方式1接收时序,串行口的工作方式,方式1发送: 串行口以方式1发送时,数据由TXD端输出,任何一条以SBUF为目的寄存器的指令都启动一次发送,发送条件是TI=0。 发送开始时内部SEND信号变为有效电平,随后由TXD端输出自动加入的起始位,此后每过一个时钟脉冲,由TXD端输出一个数据位,8位数据发送完后,置位TI。 TI置1是通知CPU可发下一个字符。,串行口的工作方式,方式1接收: 方

15、式1接收时,数据从RXD端输入。当REN置“1”后,就允许接收器接收,接收器便以波特率的16倍速率采样RXD端电平。 当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取其中两次相同的值,以确认是否是真正的起始位(负跳变)的开始。,串行口的工作方式,在方式1的接收器中设置有数据辨识功能,当同时满足以下两个条件时,接收的数据才有效,且实现装载SBUF、把RB8及RI置“1”,接收控制器再次采样RXD的负跳变,以便接收下一帧数据。这两个条件是: RI0,即上一帧数据接收完成时; SM20或接收到的停止位1。 如果上述条件任一不满足,所接收的数据无效,接

16、收控制器不再恢复。,串行口的工作方式,串行口方式2和串行口方式3: 串行口工作在方式2、3时,为11位异步通信口,发送、接收一帧信息由11位组成,即1位起始位(0)、数据8位(低位在前)、1位可编程位(第9数据位)和1位停止位(1)。 发送时,可编程位(TB8)可设置0或1,该位一般用做效验位或地址位/数据位标志; 接收时,可编程位送入SCON中的RB8。,串行口的工作方式,在接收器完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF。 (1)SM2=0或接收到的第9位数据位RB8=1时。 (2)RI=0,意味着接收缓冲器为空。 当上述两个条件满足时,接收到的数据送入SBUF(接

17、收缓冲器),第9位数据送入RB8,并置“1”RI。若不满足这两个条件,接收的信息将被丢弃。,串行口的工作方式,方式2、3发送时序,方式2、3接收时序,串行口的工作方式,方式2、3的区别在于:方式2的波特率为fosc/32或fosc/64,而方式3的波特率可变。 方式2、3发送时,数据由TXD端输出,附加的第9位数据为SCON中的TB8。 方式2、3接收时,可编程位送入SCON中的RB8。,波特率的设计,波特率的设计: 方式0和方式2: 在方式0时,每个机器周期发送或接收一位数据,因此波特率固定为单片机时钟频率的1/12(即fosc/12),且不受SMOD的影响。 若晶振频率fosc=12MHz

18、时,则波特率=fosc/12=12MHz/12=1Mb/s,即1s移位一次。,波特率的设计,方式2的波特率取决于PCON中的SMOD之值,当SMOD=0时,波特率为fOSC的1/64;若SMOD=1时,则波特率为fOSC的1/32。即: 波特率 =,波特率的设计,方式1和方式3: 方式1、方式3的波特率可变,由定时器T1的溢出率与SMOD的值共同决定。即: 波特率2SMOD/32(定时器1溢出率) 其中溢出率取决于计数速率和定时器的预置值。 对T1初始化时,写入方式控制字 (TMOD)00100000B。,波特率的设计,这样每过“256-X”个机器周期,定时器T1就会产生一次溢出。 溢出周期=

19、(256-X)12/fosc 溢出率为溢出周期之倒数,因此,波特率的公式还可写成: 波特率(2SMOD/32)fosc/12(256-X),波特率的设计,实际应用时,总是先确定波特率,再计算定时器1的定时初值。 根据上述波特率的公式,得出计算定时器方式3的初值的公式为: X256(2SMODfosc)/(384波特率),波特率的设计,例:已知8051单片机时钟频率为11.0592MHz,选用定时器T1工作方式2作波特率发生器,波特率为2400波特,求初值。 解:设波特率控制位SMOD=0,则 244=0F4H,定时器T1产生的常用波特率,MCS-51串行口的应用,利用串行口方式0作I/O口扩展

20、: 串行口方式0是同步移位寄存器的通信方式,它主要用于扩展I/O口。 利用它可以把串行口设置成“并入串出”的并行输入口,或“串入并出”的并行输出口。 把串行口变为并行输出口使用时,要有一个8位“串入并出”的同步移位寄存器配合(例如CD4094或74LS164)。,串行口的应用,串行口变为并行输出口,串入并出同步移位寄存器,MCS-51串行口的应用,当使用74LS164作扩展输出口时,要注意74LS164的输出无控制端,在串行输入过程中,其输出端的状态会不断变化。 故在某些应用场合,在74LS164与输出装置之间,还应加上输出可控的缓冲级,以便串行输入过程结束后再输出。,串行口的应用,例:根据图

21、7-8的线路连接,编写在数码管上循环显示09这10个数字的程序。 本题利用定时器控制每个数字的显示时间,每秒显示一位。系统晶振频率为11.0592MHz。 ORG 0000H AJMP START ORG 000BH AJMP IT0 ORG 0030H START:MOV SP,#40H,MCS-51串行口的应用,MOV TMOD,#01H MOV TL0,#00H MOV TH0,#4BH ;延时50ms的常数 MOV R0,#00H MOV 30H,#20 ;延时1s的常数 MOV SCON,00H SETB TR0 SETB ET0 ;开中断 SETB EA SJMP $,MCS-51

22、串行口的应用,IT0:CLR TR0 MOV TL0,#00H MOV TH0,#4BH SETB TR0 DJNZ 30H,EXIT ;20*50ms MOV 30H,#20 MOV DPTR,#1000H ;置七段码表的基址 MOV A,R0 ;置偏移量 MOVC A,A+DPTR,MCS-51串行口的应用,CLR TI MOV SBUF,A INC R0 CJNE R0,#0AH,EXIT ;判是否到表尾 MOV R0,#00H EXIT:RETI ORG 1000H DATA:DB C0H,F9H,A4,B0H,99H ;0-9段码 DB 92H,82H,F8H,80H,90H,串行口

23、变为并行输入口使用时,要有一个8位“并入串出”功能的同步移位寄存器(CD4014或74LSl65)与串行口配合使用。,MCS-51串行口的应用,例:根据图7-9电路,编写从16位扩展口读入10个字节数据,并把它们转存到内部RAM的20H29H中。,解:本例是利用8051的3根端口线扩展为16个输入端端口线的实用电路。理论上讲,继续串接74LS165可以扩展更多的输入口,但扩展的越多,端口的操作速度会越慢。,MCS-51串行口的应用,ORG 1000H START:MOV SP,#60H MOV R7,#05H ;置循环次数 MOV R6,#02H ;置并入的字节数 MOV R0,#20H ;设

24、片内RAM指针 REC0:CLR P1.0 ;并行置入16位数据 SETB P1.0 ;允许串行移位输出 MOV SCON,#10H,MCS-51串行口的应用,REC1:JNB RI,REC1 CLR RI MOV A,SBUF MOV R0,A ;片内RAM指针20H INC R0 DJNZ R6,REC1 ;并入的字节数2 MOV R6,#02H DJNZ R7,REC0 ;循环次数5 RET,用串行口进行异步通信,串行口工作在方式1、2、3时,都用于异步通信。 它们之间的主要差别在于字符帧格式和通信波特率的不同。双机异步通讯的连接线路见图7-10。,用串行口进行异步通信,例:用查询法编写

25、串行口方式1下的发送程序。 设单片机主频为11.059MHz,采用定时器1方式2作波特率发生器,波特率为1200 b/s; 发送数据在片内RAM的20H-3FH单元,要求在最高位上加奇校验位后由串行口发送。,用串行口进行异步通信,解:根据发送的波特率1200b/s,取SMOD=0,通过下式计算得到TH1和TL1的时间常数初值X为 X=256-11.05910620/(3841200) =232=0E8H 所谓奇偶校验方法就是在发送时,在每一个字符的最高位(方式1)或最高位之后(方式2、3)都附加一个奇偶校验位。,用串行口进行异步通信,ORG 0000H START:MOV SP,#60H MO

26、V TMOD,#20H ;定时器T1为方式2 MOV TH1,#0E8H ;给T1赋初值 MOV TL1,#0E8H SETB TR1 ;启动T1 MOV PCON,#00H ;令SMOD=0 MOV SCON,#40H ;串行口为方式1 MOV R0,#20H ;字符块始址送R0 MOV R2,#32,用串行口进行异步通信,D01:MOV A,R0 ;发送字符送A MOV C,PSW.0 ;奇偶校验位送C CPL C ;形成奇校验位送C MOV ACC.7,C ;使A中成为奇数1 MOV SBUF,A ;启动发送 JNB TI,$ CLR TI INC R0 ;字符块始址送R0 DJNZ R

27、2,D01 ;32个字符未发完转到D01 ED:SJMP ED,用串行口进行异步通信,例:请用中断法编写串行口方式3下的接收程序。设单片机的主频为11.059MHz,波特率为1200b/s,串行口接收器把接收到的32个字节数据存入片外2000H-201FH单元。 接收过程要求判偶效验标志RB8。若出错(不是偶数)置F0标志为1,正确置F0标志为0,然后返回。 解:根据波特率和主频选SMOD=0,按公式计算得TH1和TL1的初值为0E8H。,用串行口进行异步通信,ORG 0000H AJMP START ORG 0023H AJMP SPIN ORG 0030H START:MOV SP,#60

28、H MOV TMOD,#20H ;T1工作于方式2 MOV TH1,#0E8H ;设置时间常数初值 MOV TL1,#0E8H,用串行口进行异步通信,SETB TR1 ;启动T1 MOV DPTR,#2000H ;接收数据区始址 MOV R2,#32 ;接收32个字节数 MOV PCON,#00H ;使SMOD=0 MOV SCON,#0D0H ;串行口工作于方式3接收 SETB EA SETB ES STOP:SJMP STOP ;等待串行中断,用串行口进行异步通信,接收中断服务程序: ORG 0100H SPIN:CLR RI ;接收完后清RI MOV A,SBUF ;数据块长度字节选送A

29、 JNB PSW.0,PZ ;等于零,偶数 JNB RB8,ERR SJMP YES PZ:JB RB8,ERR,用串行口进行异步通信,YES:MOVX DPTR,A ;存入数据区 INC DPTR DJNZ R2,RIGH ;接收完32个字节? CLR PSW.5 CLR EA CLR ES RIGH:RETI ERR:SETB PSW.5 CLR EA CLR ES RETI,例:设有甲、乙两台两台单片机,编写程序,两台单片机间实现如下串行通信功能: 甲机作为发送机,将首地址为ADDRT的128字节的外部RAM数据块顺序向乙机发送; 乙机作为接收机,将接收到的128字节数据顺序存放在以首址

30、为ADDRR的外部RAM中。 假设系统时钟为11.0592MHz。,甲机发送程序: #include #define uchar unsigned char Uchar xdata ADDRT128; /在外部RAM定义128个单元 uchar num=0; /声明计数变量 uchar *p /指向发送数据区的指针,void main() SCON=0 x40; /串口为方式1 PCON=0 x00; TMOD=0 x20; /T1初始化为方式2 TL1=0 xfd ; /设置波特率为9600 bit/s TH1=0 xfd; TR1=1; /启动定时器T1,ES=1; /开放串行口中断 EA

31、=1; p=ADDRT; /设置传送数据的首地址 SBUF=*p; /启动串行口发送 while(1); /等待中断 ,void uart_int(void) interrupt 4 /*串行中断*/ TI=0; /*清发送中断标志TI */ num+; /*修改字节数指针*/ if(num=0 x7f)ES=0; /*若发送完则禁止串口中断*/ else /*修改地址指针,发送下一个数据*/ p+; SBUF=*p; ,乙机接收程序: include #define uchar unsigned char uchar xdata ADDRR128; uchar num=0; /声明计数变量

32、uchar *p /指向接收缓冲区的指针 void main() SCON=0 x50; /串口方式1,允许接收 PCON=0 x00;,TMOD=0 x20; /T1初始化为方式2 TL1=0 xfd; /波特率为9600 bit/s TH1=0 xfd; TR1=1; /启动定时器T1 ES=1; /开放串行口中断 EA=1; p=ADDRR; /设置接收数据的首地址 while(1); /等待中断 ,Void uart_int(void) interrupt 4 RI=0; *p = SBUF; num+; if(num=0 x7f) ES=0; else p+; ,利用8031串行口发

33、送和接收数据,并将接收的数据通过扩展I/O口74LS273输出到发光二极管显示,结合延时来模拟一个循环彩灯。 include #include #define out_port XBYTE0 xcfa0 void delay(unsigned int t) for(;t0;t-); ,void main(void) char transmit = 0, receive; TMOD = 0 x20; TL1 = 0 xf2; TH1 = 0 xf2; PCON = 0; SCON = 0 x50; TR1 = 1; while(1) TI = 0; SBUF = transmit; while(

34、RI),receive, RI = 0; receive = SBUF; if(receive8) out_port = (1receive); else out_port = (1(15-receive); transmit+; if(transmit=16) transmit = 0; delay(3000); ,甲机和乙机通讯双方均采用2400波特的速率传送,甲机发送数据,乙机接收数据。 双机开始通讯时,甲机发送一个呼叫信号“06”,询问乙机是否可以接收数据;乙机收到呼叫信号后,若同意接收数据则发回“00”作为应答,否则发“15”表示暂不能接收数据; 甲机只有收到乙机的应答信号“00”后

35、才可把要发送的数据发送给乙机,否则继续向乙机呼叫,直到乙机同意接收。,乙机根据接收到的“校验和”判断已接收到的数据是否正确。 若接收正确,向甲机回发“0F”信号,否则回发“F0”信号给甲机。 甲机只有接到信号“0F”才算完成发送任务,否则继续呼叫,重发数据。,#include #include #define out_port XBYTE0 xcfe8 void delay(unsigned int t) for(;t0;t-); ,void main(void) char transmit = 0,receiv; TMOD = 0 x20; TL1 = 0 xf2; TH1 = 0 xf2;

36、 PCON = 0; SCON = 0 x50; TR1 = 1; while(1), TI = 0; SBUF = transmit; while(RI) RI = 0; receiv = SBUF; if(receiv=0;receiv-) out_port = (11)|1); ,else for(;receiv7;receiv-) out_port = 0 xff1; transmit+; if(transmit=16) transmit = 0; delay(30000); ,MCS-51双机异步通讯,双机通信也称为点对点的串行异步通信。利用单片机的串行口,可以进行单片机与单片机、单

37、片机与通用微机间的点对点的串行通信。 1TTL电平信号直接传输 如果采用TTL电平直接在电缆(或双绞线)上传输信息,传输距离一般不超过1m。例如8051与扩展的串行打印机的连接就是这样。这时双方的串行口可以直接相连。,MCS-51双机异步通讯,TTL电子元器件组成电路使用的电平: 规定输出高电平2.4V,输出低电平=2.0V,输入低电平=0.8V,噪声容限是0.4V。 CMOS电平:1逻辑电平电压接近于电源电压,0逻辑电平接近于0V。而且具有很宽的噪声容限。,MCS-51双机异步通讯,TTL管与CMOS管差异: 1.CMOS是场效应管构成,TTL为双极晶体管构成。2.CMOS的逻辑电平范围比较

38、大(515V),TTL只能在5V下工作。3.CMOS的高低电平之间相差比较大、抗干扰性强,TTL则相差小,抗干扰能力差。4.CMOS功耗很小,TTL功耗较大(15mA/门)。5.CMOS的工作频率较TTL略低,但是高速CMOS速度与TTL差不多相当。,MCS-51双机异步通讯,TTL和COMS电路比较:1)TTL电路是电流控制器件,而CMOS电路是电压控制器件。2)TTL电路的速度快,传输延迟时间短(5-10ns),但是功耗大。CMOS电路的速度慢,传输延迟时间长(25-50ns),但功耗低。CMOS电路本身的功耗与输入信号的脉冲频率有关,频率越高,芯片集越热,这是正常现象。,MCS-51双机

39、异步通讯,3)CMOS电路的锁定效应:CMOS电路由于输入太大的电流,内部的电流急剧增大,除非切断电源,电流一直在增大。这种效应就是锁定效应。当产生锁定效应时,CMOS的内部电流能达到40mA以上,很容易烧毁芯片。,MCS-51双机异步通讯,2.RS-232C电平信号传输 RS-232C是广泛使用的串行总线标准。RS-232C标准规定了传送的数据和控制信号的电平。 (1)数据线上的信号电平 mark(逻辑1):+3+25V space(逻辑0):-3-25V (2)控制和状态线上的信号电平 ON(逻辑0):+3+25V(接通) OFF(逻辑1):-3-25V(接通),双机异步通讯,RS-232

40、C电平与TTL电平显然是不匹配的。为了实现RS-232C电平与TTL电平的连接,必须进行信号电平转换。 实现RS-232C标准电平与TTL电平间相互转换的接口芯片,目前常用的一种是MAX232。 如果传输的距离在15m之内,就应该采用RS-232电平信号传输。微机的串口采用的就是RS-232电平。,MCS-51双机异步通讯,MAX232的芯片引脚见图7-11。,MCS-51双机异步通讯,MCS-51双机异步通讯,管脚说明如下: C0+、C0-、C1+、C1-是外接电容端; R1IN、R2IN是2路RS-232C电平信号接收输入端; RlOUT、R2OUT是2路转换后的TTL电平接收信号输出端,

41、送8051的RXD接收端; TlIN、T2IN是2路TTL电平发送输入端,接8051的TxD发送端;,MCS-51双机异步通讯,TlOUT、T2OUT是2路转换后的发送RS-232C电平信号输出端,接传输线; V+经电容接电源+5V; V-经电容接地。 这种连接的传输介质一般采用双绞线,通信距离一般不超过15m,传输率小于20kB/s。,双机异步通讯,RS-232插头的引脚信号,双机异步通讯,TTL/RS-485转换芯片,RS-485双机通信接口电路,MCS-51双机异步通讯,双机通信编程举例 例:按照图7-12的接口电路,分别编制发送通信程序和接收通信程序。 (1)通信双方的约定 假定A机为

42、发送者,B机为接收者。假定数据块长度为16个字节,数据缓冲区起始地址是40H。,MCS-51双机异步通讯,通信过程: 当A机开始发送时,先送一个“0AAH”信号,B机收到后回答一个“55H”,表示同意接收。 当A机收到“55H”后,开始发送数据,在发送数据之前将数据块长度发送给乙机,当发送完16个字节,向乙机发送一个“校验和”。 校验和方法是针对数据块进行的。在数据发送时,发送方对块中数据简单求和,产生一单字节校验字符(校验和)附加到数据块结尾。,MCS-51双机异步通讯,B机接收数据并将其转储到数据缓冲区。 起始地址也为40H,每接收到一个数据也计算一次“校验和”。当收齐一个数据块后,再接收

43、A机发来的“校验和”,并将它与B机求出的“校验和”进行比较。 若两者相等,说明接收正确,B机回答“00H”;若两者不等,说明接收不正确,B机回答“0FFH”,请求重发。,双机异步通讯,A机收到00H的回答后,结束发送。若收到的答复非零,则将数据再重发一次。 双方约定的传输波特率若为1200b/s,若双方的fosc=11.0592MHz,T1工作在定时方式2,(TH1)=(TL1)=0E8H,PCON寄存器的SMOD位为0。,双机异步通讯,A机:发AAH、收55H、发数据长度、发数据、发效应和、收00H结束 (收FFH重发数据) B机:收AAH(没收到AAH发AAH等待 )、发55H、收数据长度

44、、收数据、算效应和、比较效应和、发00H或FFH,MCS-51双机异步通讯,(2)用于A机发送的通信子程序 ORG 1000H SENDA:MOV TMOD,#20H ;设T1为定时方式2 MOV TH1,#0E8H ;设定波持率 MOV TL1,#0E8H MOV PCON,#00H SETB TR1 ;启动T/C1 MOV SCON,#50H ;串行口工作在方式1 T1A: MOV SBUF,#0AAH ;发送联络信号,双机异步通讯,S1A:JBC TI,R1A ;等待发送出去 SJMP S1A R1A:JBC RI,R2A ;等待B机回答 SJMP R1A R2A:MOV A,SBUF

45、;接收联络信号 XRL A,#55H JNZ T1A ;B机未好,继续联络 T2A:MOV SBUF,#16 ;发送数据的个数 JNB TI,$ CLR TI,双机异步通讯,MOV R0,#40H ;R0指向缓冲区首址 MOV R7,#10H ;装载计数初值 MOV R6,#00H ;清校验和寄存器 T3A:MOV SBUF,R0 ;发送一个数据字节 MOV A,R6 ADD A,R0 ;求校验和 MOV R6,A ;保存校验和 INC R0 S2A:JBC TI,T4A SJMP S2A,MCS-51双机异步通讯,T4A:DJNZ R7,T3A ;判数据块发送完否 MOV SBUF,R6 ;发送校验和 S4A:JBC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论