1、第7章 单片机串行口及应用 学习目标(1)熟悉单片机串口的工作方式。(2)掌握单片机串口波特率的设置方法(3)掌握单片机串口引脚信号功能及连线。(4)掌握单片机双机通信。学习重点和难点(1)单片机硬件结构。(2)奇偶校验在单片机中的实现方法。(3)串口通信中正确接收和发送的程序写法。(4)多机通信及协议的设计方法。7.1 串行通信的基本概念T0 T1 T2 T3 T4 T5 T6时钟D0D1D5D6D7:10110T7接收设备发送设备选通状态01101101011011017.1.1 异步通信和同步通信 1异步通信2同步通信 在同步通信中,发送端首先发送同步字符,紧接着连续传送数据(即数据块)
2、,字符与字符之间没有间隙。同步通信时建立发送方时钟对接收方时钟的直接控制,使数据传送完全同步。同步通信传送速度较快,但硬件结构比较复杂;异步通信的特点是硬件结构较简单,但传送速度较慢。MCS-51 单片机采用异步通信方式。7.1.2 串行通信的方式 串行通信有单工通信、半双工通信和全双工通信 3 种方式。单工通信:数据只能单方向地从一端向另一端传送。例如,目前的有线电视节目,只能单方向传送。半双工通信:数据可以双向传送,但任一时刻只能向一个方向传送。也就是说,半双工通信可以分时双向传送数据。例如,目前的某些对讲机,任一时刻只能一方讲,另一方听。全双工通信:数据可同时向两个方向传送。全双工通信效
3、率最高,适用于计算机之间的通信。7.1.3 传输速率与传输距离 数据的传输速率可以用比特率或波特率描述。比特率是每秒钟传送的信息量,单位是:位秒(bps)。波特率是每秒传送的码元数,单位是:波特(Baud)。对于二进制基带传输,波特率和比特率在数量上相等,通常,用波特率描述计算机串行通信应用中的传输速率。标准波特率数值为:110、300、600、1200、1800、2400、4800、9600、14.4k、19.2k、28.8k、33.6k、56k。串行通信的传输距离与波特率及传输线的电气特性有关。在电气特性不变的情况下,传输距离随传输速率的增加而减小。7.1.4串行通信的差错校验 1奇偶校验
4、 2代码和校验 3循环冗余校验7.2 MCS-51单片机串行口 7.2.1 串行口结构1 1S SB BU UF F发发送送控控制制器器接接收收控控制制器器移移位位寄寄存存器器逻逻辑辑控控制制T TI IR RI IT TX XD DR RX XD D去去中中断断逻逻辑辑S SM MO OD D0 01 1T TH H1 1T TL L1 12 21 16 6SBUFT1溢溢出出率率写写SBUF读读SBUF9 99 9H H9 99 9H H7.2.2 80C517.2.2 80C51串行口的控制寄存器串行口的控制寄存器SM0SM0和和SM1SM1:工作方式选择位:工作方式选择位7654321
5、0SCONSM0SM1SM2RENTB8RB8TIRI字节地址:字节地址:98HSM0SM1方方 式式说说 明明波特率波特率000移位寄存器移位寄存器fosc/1201110位位UART(8位数据)位数据)可变可变10211位位UART(9位数据)位数据)fosc/64或或fosc/3211311位位UART(9位数据)位数据)可变可变2023-5-1111 SM0、SM1:串行口工作方式控制位,对应 4 种工作方式 SM2:多机通信控制位,主要用于工作方式 2 和工作方式 3。REN:允许接收控制位。当 REN=1 时,允许接收;当 REN=0 时,禁止接收。此位由软件置 1 或清零。TB8
6、:在方式 2 和方式 3 中,此位为发送数据的第 9 位,在多机通信中作为发送地址帧或数据帧的标志。也可作为奇偶校验位。RB8:接收数据的第 9 位。在方式 2 和方式 3 中,接收到的第 9 位数据放在 RB8 中。也可作为奇偶校验位。TI:发送中断标志位。在一帧数据发送完时置位。TI=1,申请中断,说明发送缓冲器 SBUF已空,CPU 可以发送下一帧数据。中断被响应后,TI 不能自动清零,必须由软件清 0。RI:接收中断标志位。在接收到一帧有效数据后,由硬件置位。RI=1,申请中断,表示一帧数据接收结束,并已装入接收缓冲器 SBUF 中,CPU 响应中断,取走数据。RI 不能自动清零,必须
7、由软件清零。波特率倍增设置波特率倍增设置 电源控制寄存器电源控制寄存器PCON PCON SMODSMOD:波特率倍增位。在串行口方式:波特率倍增位。在串行口方式1 1、方式、方式2 2、方式、方式3 3时,时,波特率与波特率与SMODSMOD有关,当有关,当SMOD=1SMOD=1时,波特率提高一倍。复时,波特率提高一倍。复位时,位时,SMOD=0SMOD=0。76543210PCONSMOD字节地址:字节地址:97H2023-5-11147.2.3 串行口的工作方式 在串行口的4种工作方式中,串行通信一般使用方式1、方式2和方式3,方式0主要用于扩展并行输入输出口。【例 7-1】8051
8、单片机时钟振荡频率为 11.0592MHz,选用定时器 T1(方式 2)作波特率发生器,波特率为 4800bit/s,求定时器 T1 的初值 X。解:设波特率控制位 SMOD=0,则:X=256(11.0592106(0+1)/(3844800)=250=FAH 所以(TH1)=(TL1)=FAH 系统晶振频率选用 11.0592MHz,是为了使初值为整数,从而产生精确的波特率。7.3 串行口应用 7.3.1 串行口方式0的应用【例7-2】用8051串行口外接CD4094扩展8位并行输出口,如图6-15所示,8位并行口的各位都接一个发光二极管,要求使发光二极管呈流水灯状态。汇编语言参考程序:O
9、RG 2000H START:MOV SCON,#00H ;置串行口工作方式0 MOV A,#80H ;最高位灯先亮 CLR P1.0 ;关闭并行输出 OUT0:MOV SBUF,A ;开始串行输出 OUT1:JNB TI,OUT1;输出完否 CLR TI ;输出完毕,清TI标志,以备下次发送 SETB P1.0 ;打开并行口输出 ACALL DELAY ;延时 RR A ;循环右移 CLR P1.0 ;关闭并行输出 JMP OUT0 ;循环(注:此处省略DELAY延时子程序)C语言参考程序:#include sbit P1_0=P10;void delay()/延时程序略 void main
10、()SCON=0 x00;/置串行口工作方式0 A=0 x80;/最高位灯先亮 P1_0=0;/关闭并行输出 while(1)SBUF=A;/开始串行输出 while(!TI);/输出完否 TI=0;P1_0=1;/打开并行口输出 delay();/延时一段时间 A=A1;/循环右移 if(A=0)A=0 x80;P1_0=0;/关闭并行输出 (注:此处省略DELAY延时子程序)7.3.2 串行口方式1的应用双机通信TXDRXD80C51TXDRXD80C51GNDGND7.3.3 串行口方式2和方式3的应用多机通信本章小结 单片机之间、单片机与计算机之间交换信息有串行通信和并行通信两种方式。并行通信的特点是传送控制简单、速度快,但随着通信距离的增加,并行通信的线路成本远远高于串行通信,串行通信已成为集散控制、多机系统和现代测控系统中常用的通信方式。串行通信有异步通信和同步通信两种方式。80C51 单片机串行口有4 种工作方式:同步移位寄存器输入/输出方式、8位异步通信方式及波特率不同的两种9 位的异步通信方式。方式0 和方式2 的波特率是固定的,方式1 和方式3 的波特率是可变的,由定时器T1 的溢出率来决定。