1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,一、串行与并行通信,并行通信,数据各位同时传送,串行通信,数据各位一位一位顺序传送,第七章,89C51,串行口及串行通信技术,7.1,串行通信基本知识,二、串行通信的传输方式,单工:单方向,半双工:发送接收分时进行,全双工:发送接收同时进行,三、异步和同步通信,同步通信特点:发送和接收时钟始终保持严格同步。由发送一方用同步字符指示每一同步数据流的开始。发送方不得间断发送数据,否则插入同步字符。,起始位 数据位 奇偶校验位 终止位,异步通信特点:数据是一帧一帧的传送。规定了字符数据的传送格式。用,“,起始位,
2、终止位,”,指示每一个传输数据的开始和结束。每个数据都以相同的帧格式传输。,同步通信数据格式,异步通信数据格式,四、通信数据的差错检测,(,1,)奇偶校验 在数据位后附加一个奇偶校验位,该位可为“,0,”,或“,1,”,,以保证整个字符(包括校验位)中“,1”,的个数为偶数(,偶校验,)或为奇数(,奇校验,)。接收方按约定检查数据是否正确。,(,2,)校验和,发送方对数据块简单求和,产生一个单字节校验字符,(,校验和,)附加到数据块的结尾。接收方对收到的数据求和后与收到的校验和进行比较,不同则有误。,(,3,)返回检验 收到数据全部返回。,五、波特率,数据传送速率,用每秒传送位数表示。,
3、例:电传机最快传送速率为,10,字符,/,秒,每个字符,11,位,则波特率为,11,位,/,字符,10,字符,/,秒,=110,位,/,秒,六、串行通信的过程及通信协议,串并转换与设备同步,两个通信设备在串行线路上成功地实现通信必须解决两个问题:,一是串并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;,二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。,发送时的并,-,串转换,接收时的串,-,并转换,进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。,设备同步对通信双方有两个共同要求:,一是通信双方必须
4、采用统一的编码方法;,二是通信双方必须能产生相同的传送速率。,串行通信协议,通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。,起始位,数据位,奇偶校验位,停止位,波特率设置,挂钩(握手)信号约定,串行通信接口电路功能:,CPU,并行输出,CPU,并行输入,串行发送,串行接收,Universal,Asychronous,Receiver /Transmitter,通用异步接收器,/,发送器,UART,Universal Synchronous Receiver /Transmitter,通用同步接收器,/,发送器,USRT,通用同步,/,异步,接收器,/,发送器,USART,7.
5、2,串行口及应用,典型串行接口芯片:,INS8250 8251,MCS-51,的串行通信口特点:,片内一个全双工串行口,四种方式编程选择,波特率由软件控制、片内定时器产生,接收,/,发送均可工作在查询或中断方式,一、,89C51,串行口,1.,结构,89C51,通过引脚,RXD,(,P3.0,,串行数据接收端)和引脚,TXD,(,P3.1,,串行数据发送端)与外界进行通信。,串行口内部结构示意简图,2.,串行口控制字及特殊功能寄存器,(,1,),SBUF,串行数据缓冲器,发送缓冲器,接收缓冲器,同名同地址,99H,串行发送与接收的速率与移位时钟同步。,89C51,用定时器,T1,作为串行通信的
6、波特率发生器,,T1,溢出率经,2,分频(或不分频)后又经,16,分频作为串行发送或接收的移位脉冲。移位脉冲的速率即是波特率。,CPU,发送数据,SUBF TXD(P3.1),串行输出,CPU,接收数据,SUBF RXD(P3.0),接收数据,(,2,),PCON,电源控制寄存器(,87H,),SMOD,D7 D6 D5 D4 D3 D2 D1 D0,PCON,波特率选择,其它定义位,字节地址,87H,SMOD,1,,,串口方式,1,2,或,3,,波特率提高一倍。,可用,MOV,PCON,,,80H,;,或,MOV,87H,,,80H,;使,SMOD,置,1,用于波特率选择,(,3,)串口控制
7、寄存器,SCON,(,98H,),位地址,9F 9E 9D 9C 9B 9A 99 98,SM,0,SM,1,SM,2,REN TB8 RB8 TI RI,位,D7 D6 D5 D4 D3 D2 D1 D0,SCON,字节地址,98H,串行口操作方式选择位,00,方式,0,01,方式,1,10,方式,2,11,方式,3,允许方式,2,、,3,的多机通信使能位,允许串行接收位,1,允许接收;,0,禁止接收,方式,2,、,3,中要发送的第,9,位数据,可编程,方式,2,、,3,中接收到的第,9,位数据。,发送中断标志,接收中断标志,3.,串行接口工作方式,串口工作方式由,SM0,,,SM1,决定,
8、见下表:,串行口方式选择,SM,0,SM,1,0 0,0 1,1 0,1 1,方式,0,1,2,3,功能说明,移位寄存器方式,8位UART,9位UART,9位UART,波特率,fosc/12,可变,fosc/64或fosc/32,可变,方式,1,、,3,的波特率:,波特率(,2,SMOD,/32,),T1,溢出率,=,(,1,)方式,0,同步移位寄存器方式,RxD,(,P3.0,),串行发送或接收数据,,TxD,(,P3.1,),输出同步移位脉冲,,数据传送以,8,位为一帧,最低有效位,LSB,居先,,波特率为,方式,0,接收电路及时序,说明,:,方式,0,发送或接收完,8,位数据后由硬件置位
9、发送中断标志,TI,或接收中断标志,RI,。,CPU,响应中断请求转入中断服务程序时并不清,TI,或,RI,。,中断标志,TI,或,RI,要用,程序来清,0,。具体做法:,CLR,TI,CLR,RI,或,ANL,SCON,,,0FEH,ANL,SCON,,,0FDH,来实现。,以方式,0,工作时,SM2,位(多机通信控制位)必须为,0.,()方式,1,8,位异步通信方式,TxD,(,P3.1,)发送数据,,RxD,(,P3.0,)接收数据,,一帧信息,10,位,D0 D1 D2 D3 D4 D5 D6 D7,起,始,位,停,止,位,波特率,方式,1,发送和接收时序,()方式,2,9,位异步通信
10、接口,D0 D1 D2 D3 D4 D5 D6 D7 D8,起,始,位,停止位,TxD,(,P3.1,)发送数据,,RxD,(,P3.0,)接收数据,,一帧信息,11,位,波特率,(,4,)方式,3,9,位异步通信接口,TxD,(,P3.1,)发送数据,,RxD,(,P3.0,)接收数据,,一帧信息,11,位,D0 D1 D2 D3 D4 D5 D6 D7 D8,起,始,位,停止位,波特率,方式,2,、方式,3,发送和接收时序,4.,串行口波特率设置,方式,0,:波特率,=,为时钟频率,由硬件决定,方式,2,:波特率,=,SMOD,为特殊功能寄存器,PCON,最高位,由软件决定,.,T1,溢出
11、率:,T1,溢出次数每秒,方式,,3,:波特率,T1,溢出一次所需时间,(,2,8,-N,),12/fosc,T1,溢出率,=1/,溢出一次所需时间,=,波特率,=,初始化步骤,MOV TMOD,#20H,MOV TH1,#,XX,H ;,定时器初始化(如果波特率和定,MOV TL1,#,XX,H;,时器有关),SETB TR1,MOV PCON,#,80,H;,串行口初始化,根据工作方式和波,MOV SCON,#,50,H;,特率等决定,SETB EA;,中断开放,SETB ES,二、,89C51,串行口应用,1.,串行口方式,0,的应用,例,1,:用,89C51,串行口外接,164,串入,
12、并出移位寄存器扩展,8,位并行口;,8,位并行口的每位都接一个发光二极管,要求发光二极管从左到右以一定延迟轮流显示,并不断循环。设发光二极管为共阴极接法。,解:设数据串行发送采用中断方式,显示的延迟通过调用延迟程序,DELAY,来实现。,串入并出电路,ORG 0023H ;,串行口中断入口,AJMP SBR ;,转入串行口中断服务程序,ORG 2000H ;,主程序起始地址,MOV SCON,#00H ;,串行口方式,0,初始化,MOV A,#8,0,H ;,最左一位发光二极管先亮,CLR P1.0 ;,关闭并行输出,MOV SBUF,,,A ;,开始串行输出,LOOP:SJMP$;,等待中断
13、SBR :SETB P1.0 ;,启动并行输出,ACALL DELAY ;,显示延迟一段时间,CLR TI ;,清发送中断标志,RR A ;,准备右边一位显示,CLR P1.0 ;,关闭并行输出,MOV SBUF,A ;,再一次串行输出,RETI ;,中断返回,例,2,:用,89C51,串行口外加移位寄存器,165,或,166,扩展,8,位输入口,输入数据由,8,个开关提供,另有一个开关,K,提供联络信号。当,K=0,时,表示要求输入数据,输入的,8,位为开关量,,并入串出电路,对,RI,采用查询方式来编写程序,当然,先要查询开关,K,是否闭合。,程序清单:,START:MOV SCON,#
14、10H ;,串行口方式,0,初始化,JB,P1.1,$;,开关,K,未闭合,等待,SETB P1.0 ;P/S=1,并行置入数据,CLR P1.0 ;PS=0,开始串行移位,JNB RI,$;,查询,RI,CLR RI ;,查询结束,清,RI,MOV A,SBUF ;,读数据到累加器,ACALL LOGSIM ;,进行逻辑模拟,SJMP START ;,准备下一次模拟,2.,串行口方式,1,的应用,例,3,:在,8051,片内,RAM304FH,单元中有,32,个字节的数据,若采用方式,1,进行串行通信,波特率为,1200bit/s,,,f,osc,=6MHz(SMOD=0),,用查询和中断两
15、种方式编写发送,/,接收程序对。,解:,T1,为方式,2,由:波特率,=,位地址,9F 9E 9D 9C 9B 9A 99 98,SM,0,SM,1,SM,2,REN TB8 RB8 TI RI,SCON,允许接收,0 1 0 1 0 0 0 0=50H,禁止接,收,0 1 0 0 0 0 0 0=40H,查询方式,发送:,ORG 0000H,AJMP MAIN,ORG 0030H,MAIN:,MOV TMOD,#20H,MOV TL1,#0F3H,MOV TH1,#0F3H,SETB TR1,MOV SCON,#40H,HERE:JNB TI,HERE,MOV PCON,#00H,CLR T
16、I,MOV R0,#30H INC R0,MOV R7,#20H DJNZ R7,LOOP,LOOP:MOV A,R0 SJMP$,MOV SBUF,A END,查询方式,接收:,ORG 0000H,AJMP MAIN,ORG 0030H,MAIN:,MOV TMOD,#20H,MOV TL1,#0F3H,MOV TH1,#0F3H,SETB TR1,MOV SCON,#50H,MOV A,SBUF,MOV PCON,#00H,MOV R0,A,MOV R0,#30H INC R0,MOV R7,#20H DJNZ R7,HERE,HERE:JNB RI,HERE SJMP$,CLR RI E
17、ND,中断方式,ORG 0000H MOV A,R0 AJMP MAIN MOV SBUF,A,ORG 0023H,CLR F0,AJMP,SER,WAIT:JB F0,HERE,ORG 0030H AJMP WAIT,MAIN:MOV SP,#60H HERE:AJMP HERE,MOV TMOD,#20H,SER,:,CLR TI,MOV TH1,#0F3H,INC R0,MOV TL1,#0F3H,MOV A,R0,SETB TR1,MOV SBUF,A,MOV SCON,#40H,DJNZ R7,HE,MOV R0,#30H,SETB F0,MOV R7,#31;20H,CLR ES,
18、SETB,EA,HE:,RETI,SETB,ES,END,发送:,中断方式,ORG 0000H,AJMP MAIN,ORG 0023H,CLR F0,AJMP,SER,WAIT:JB F0,HERE,ORG 0030H AJMP WAIT,MAIN:MOV SP,#60H HERE:AJMP HERE,MOV TMOD,#20H,SER,:,CLR RI,MOV TH1,#0F3H,MOV A,SBUF,MOV TL1,#0F3H,MOV R0,A,SETB TR1,INC R0,MOV SCON,#50H,DJNZ R7,HE,MOV R0,#30H,SETB F0,MOV R7,#20H,
19、CLR ES,SETB EA,HE:,RETI,SETB,ES,END,接收:,例,4,:设计一个发送程序,将,50H5FH,单元中的数据从串行口输出(方式,2,),,TB8,做奇偶校验位。,解:波特率,=2,SMOD,fosc/64=2,1,fosc/64=fosc/32,位地址,9F 9E 9D 9C 9B 9A 99 98,SM,0,SM,1,SM,2,REN TB8 RB8 TI RI,SCON,SCON =1 0 0 0 0 0 0 0=80H,PCON =1 0 0 0 0 0 0 0=80H,3.,串行口方式,2,的应用,查询方式,发送:,ORG 0000H,AJMP MAIN,
20、ORG 0030H,MAIN:MOV SCON,#80H WAIT:JBC TI,CONT,MOV PCON,#80H SJMP WAIT,MOV R0,#50H CONT:INC R0,MOV R7,#10H DJNZ R7,LOOP,LOOP:MOV A,R0 SJMP$,MOV C,,,P END,MOV TB8,,,C,MOV SBUF,A,4.,串行口方式,3,的应用,例,5,:编制一个接收程序,将接收的,16B,数据送入片内,RAM,的,5OH5FH,单元中。设串行口工作于方式,3,,波特率为,2400b/s,。,解:方式,3,为,11,位异步通信方式,波特率取决于,TI,的溢出率
21、查,表,7,2,(,p165,),可知,当晶振为,11.059MHz,,波特率为,2400b/s,时,可取,SMOD=0,。,TH1=0F4H,。,MAIN:MOV TMOD,#20H ;,设,TI,工作于模式,2,MOV TH1,#0F4H ;,赋循环计数初值,MOV TL1,#0F4H ;,赋计数值,SETB TR1 ;,启动定时器,TI,MOV R0,#50H ;,首地址送,R0,MOV R7,#10H ;,数据长度送,R7,MOV SCON,#0D0H ;,串行口工作与方式,3,,可接收,MOV PCON,#00H ;,设,SMOD=0,WAIT:JBC RI,PR1 ;,接收完一帧
22、数据,清,RI,,转,PR1,SJMP WAIT ;,否则等待,PR1:MOV A,SBUF ;,读入数据,JNB P,PNP ;P=0,,转,PNP,JNB RB8,PER ;P=1,,,RB8=0,,转出错处理,SJMP RIGHT,PNP:JB RB8,PER ;P=0,,,RB8=1,,转出错处理,RIGHT:MOV R0,A ;,数据送内存,INC R0 ;,修改地址指针,DJNZ R7,WAIT ;,未完,继续接收下一个数据,CLR PSW.5 ;,置正确接收完毕标志,F0=0,RET,PER:SETB PSW.5,RET,例,6,:甲机向乙机发送,128,个字节的数据。乙机收到后
23、做校验,正确则存储数据并回送,“,00,”,给甲机;不正确则回送,“,FF,”,给甲机,甲机将重新发送,直至全部发送完毕。,7.3 89C51,与,89C51,点对点异步通信,甲机,软件流程图,乙机,参数确定,a.,晶振,6MHz,,串口工作方式,3,9,位,UART,,每帧数据,11,位(,1,位起始、,8,位数据、,1,位奇偶校验、,1,位停止),b.,波特率,2400,定时初值,取,SMOD=1,得,c.,发送数据存于外部数据存储器,4000H,407FH,单元,接收的数据存于外部数据存储器,4000H,开始的单元,甲机程序清单,ORG 0000H,LJMP MAIN,ORG 0023H
24、LJMP SERVE1,ORG 0100H,MAIN,:,MOV TMOD,#20H,MOV TH1,#0F3H,MOV TL1,#0F3H,SETB TR1,MOV PCON,#80H,MOV SCON,#0D0H,MOV DPTR,#4000H,MOV R0,#80H,SETB ES,SETB EA,MOVX A,DPTR,MOV C,P,MOV TB8,C,MOV SUBF,A,HERE,:,SJMP HERE,SERVE1,:,JBC RI,LOOP,CLR TI,SJMP ENDT,LOOP,:,MOV A,,,SBUF,CLR C,SUBB A,#01H,JC LOOP1,MOV
25、X A,DPTR,MOV C,P,MOV TB8,C,MOV SUBF,A,SJMP ENDT,LOOP1,:,INC DPTR,MOVX A,DPTR,MOV C,P,;,MOV TB8,C,;,MOV SUBF,A,DJNZ R0,ENDT,CLR ES,ENDT,:,RETI,乙机程序清单,ORG 0000H,LJMP MAIN,ORG 0023H,LJMP SERVE2,ORG 0100H,MAIN,:,MOV TMOD,#20H,MOV TH1,#0F3H,MOV TL1,#0F3H,SETB TR1,MOV PCON,#80H,MOV SCON,#0D0H,MOV DPTR,#40
26、00H,MOV R0,#80H,SETB ES,SETB EA,HERE,:,SJMP HERE,SERVE2,:,JBC RI,LOOP,CLR TI,SJMP ENDT,LOOP,:,MOV A,,,SBUF,MOV C,P,JC LOOP1,ORL C,RB8,;为偶数,看收到的,RB8,是否为“,0”,JC LOOP2,;,C=TB8=“1”,则发来为奇数,奇偶错,SJMP LOOP3,;否则正确转,LOOP3,LOOP1,:,ANL C,RB8,;奇数则看收到的,RB8,是否为“,1”,JC LOOP3,;,C=TB8=“1”,校验正确转,LOOP3,LOOP2,:,MOV A,#0
27、FFH,;发“出错”应答,MOV SBUF,A,SJMP ENDT,LOOP3,:,MOVX DPTR,,,A,;存收到的数据,MOV A,,,#00H,;发“正确”应答信号,MOV SBUF,,,A,INC DPTR,;准备收下一个数据,DJNZ R0,,,ENDT,CLR ES,ENDT,:,RETI,7.4 89C51,与PC,机间通信,一、单片机,与PC,机通信的接口电路,利用,PC,机配置的异步通信适配器,可以很方便地完成,PC,机与,89C51,单片机的数据通信。,PC,机与,89C51,单片机最简单的连接是零调制,3,线经济型,这是进行全双工通信所必须的最少数目的线路。,由于,8
28、9C51,单片机输入、输出电平为,TTL,电平,而,IBMPC,机配置的是,RS232C,标准串行接口,二者的电气规范不一致,因此,要完成,PC,机与单片机的数据通信,必须进行电平转换。,现在采用,MAX232,单芯片实现,89C51,单片机与,PC,机的,RS232C,标准接口通信电路。,MAX232,芯片是,MAXIM,公司生产的、包含两路接收器和驱动器的,IC,芯片,适用于各种,EIA-232C,和,V.28,V.24,的通信接口。,MAX232,芯片内部有一个电源电压变换器,可以把输入的,+5V,电源电压变换成为,RS-232C,输出电平所需的,+10V,电压。所以,采用此芯片接口的串行通信系统只需单一的,+5V,电源。,在实际应用中,,MAX232,芯片对电源噪声很敏感。因此,,VCC,必须要对地加去耦电容,C5,,其值为,0.lF,。电容,C1,,,C2,,,C3,,,C4,取同样数值的钽电解电容,1.0F/16V,,用以提高抗干扰能力,在连接时必须尽量靠近器件。,MAX232,芯片引脚图,MAX232,典型工作电路图,采用,MAX232,接口串行通信电路,






