1、1第6章 MCS-51串行口及应用 主要内容n 串行口的结构n 串行口的工作方式n 波特率的计算n 简单应用2 6.1.1 并行通信和串行通信计算机采用二进制数字(位)表示数据,数据从一台计算机向另一台计算机传输称为通信。数据通信有两种方式:并行通信和串行通信。6.1 数据通信的基本概念D7D6D5D4D3D2D1I/O AD7D6D5D4D3D2D1I/O B并行通信TXDI/O AI/O BRXD串行通信3 6.1 数据通信的基本概念 6.1.2 串行通信方式 串行通信有单工通信、半双工通信和全双工通信3 种方式。接收器发送器AB 单工通信 4 6.1 数据通信的基本概念 6.1.2 串行
2、通信方式 串行通信有单工通信、半双工通信和全双工通信3 种方式。接收器发送器接收器发送器AB半双工方式 5 6.1 数据通信的基本概念 6.1.2 串行通信方式 串行通信有单工通信、半双工通信和全双工通信3 种方式。半双工方式 6(一)异步方式 6.1 数据通信的基本概念 6.1.3 数据通信的同步方式D0 D1 D2 D3 D4 D5 D6 D7 0/1起始位停止位校验位数据数据帧异步方式的一帧数据格式 起始位:表示一个字符的开始停止位:表示字符的结束数据位:N位,在起始位之后、停止位之前。通信时,数据从低位开始传送。奇偶校验位:紧跟在数据位之后一位,用于有限差错检测,保证数据传输的正确性。
3、当数据不需进行奇偶校验时,此位可省略。7(一)异步方式 6.1 数据通信的基本概念 6.1.3 数据通信的同步方式D0 D1 D2 D3 D4 D5 D6 D7 0/1起始位停止位校验位数据数据帧D0 D1 D2 D3 D4 D5 D6 D7 0/1起始位111 1校验位停止位空闲位数据111 1空闲位1数据帧异步通信中数据传送格式 8(一)异步方式 在异步通信时,通信的双方必须遵守以下基本约定:(1)字符格式必须相同;(2)通信速率必须相同。6.1 数据通信的基本概念 6.1.3 数据通信的同步方式9(一)异步方式 串行通信的速率也称为波特率,波特率是指每秒传送二进制代码的位数,单位为位/秒
4、(bit/s)。假设一台设备的数据传送速率为240字符/秒,异步通信方式时,字符格式位为:1位起始位,8位数据位,1位停止位,则波特率为:24010=2400 bit/s 每一个二进制代码位的传送时间为波特率的倒数:异步通信的波特率一般在5019200 bit/s 之间。6.1 数据通信的基本概念 6.1.3 数据通信的同步方式ms417.024001dT10(二)同步方式 每个数据位占用的时间都相等,发送器按照一个基本相同的时间单位发送一个数据位,接收器必须与传输符号同步,使采样的定时脉冲周期与码元相匹配,即发送时钟与接收时钟必须同步。在同步方式时,是以块的形式传送,数据块中的数据之间没有间
5、隔。传送数据块时,在数据块之前加上同步字符(SYN),紧接着连续传送数据,并用准确的时钟来保证发送端与接收端的同步,当线路空闲不断地发送同步字符。一个大的数据块可以分解成若干个小的数据块,每个小数据块之间依靠同步字符来区别。6.1 数据通信的基本概念 6.1.3 数据通信的同步方式116.2 MCS51 单片机的串行口 6.2.1 MCS51 单片机的串行口结构 MCS51单片机串行口内部结构 12 串行口的工作有多种方式,由串行口控制寄存器(SCON)、波特率控制寄存器(PCON)及SBUF实现数据的接收和发送,在工作过程中,需要提供接收和发送的频率信号。在接收方式下,串行数据通过RXD(P
6、3.0)进入单片机。当接收控制器检测到接收端RXD的负跳变时,启动接收过程,则串行口按照程序设定的格式、以一定的频率(波特率)接收一帧数据,接收完毕,数据存入接收缓冲器SBUF中,并置RI为1。在发送方式下,通过CPU执行“MOV SBUF,A”指令启动发送过程,数据由TXD(P3.1)一位一位的发出,发送完最后一位,将TI置1。6.2 MCS51 单片机的串行口 6.2.1 MCS51 单片机的串行口结构 异步方式13(一)串行口控制寄存器(SCON,98H):用来设置串行口的工作方式和指示串行口的工作状态。SM0SM1 SM2RENTB8RB8TIRID7 D6 D5 D4 D3 D2 D
7、1 D0串行口工作方式多机通信选择位允许接收选择位 发送数据的第8位接收数据的第8位接收中断标志发送中断标志6.2 MCS51 单片机的串行口 6.2.2 串行口的控制接收到接收到/发送完标志发送完标志方式方式2 2第第8 8位数据位数据允允许许接接收收接收工作方式接收工作方式14(1)SM0、SM1:串行口操作方式选择位。6.2 MCS51 单片机的串行口 6.2.2 串行口的控制(2)SM2:方式2和3的多机通信控制位。方式2或3中,SM21,只有当RB81,才会将接收到的数据送入SBUF,并置RI为1。否则,将接收到的数据丢弃。而SM20,不论RB8是否为1,都将前8位数据存入SBUF,
8、并置RI为1。SCON各位的定义:156.2 MCS51 单片机的串行口 6.2.2 串行口的控制(3)REN:允许串行接收位。REN1允许接收,REN0禁止接收。(4)TB8:方式2和3时要发送的第9位数据。TB8可作为奇偶校验位。在多机通信中作为发送地址帧或数据帧的标志。TB81,表示该发送帧为地址帧,表示该发送帧为地址帧,TB80,表示该发送帧为数据帧。表示该发送帧为数据帧。(5)RB8:方式2或3中接收的第9位数据 可能是奇偶校验位或地址/数据标识位;方式1中,如果SM20,RB8是接收到的停止位,在方式0中,不使用RB8。(6)TI、RI:中断标志位 RI1标志着接收到一帧数据。RI
9、必须由软件清零。TI1标志着发送完一帧数据。TI必须由软件清零。SCON各位的定义:16(二)电源控制寄存器(PCON,87H)SMOD:波特率倍增选择位。串行口工作在方式1、方式2、方式3时,如果采用定时/计数器T1产生波特率,则SMOD设置为1,波特率提高一倍;SMOD0,波特率不会提高。6.2 MCS51 单片机的串行口 6.2.2 串行口的控制波特率选择位PCONSMODGF1GF0PDIDLD7D6D5D4D3D2D1D0单元地址:87H17(一)串行口工作方式0 在方式0时,串行口作为同步移位寄存器使用,此时,RXD作为移位寄存器的出口和入口,TXD提供移位时钟脉冲,频率为振荡器频
10、率的1/12。移位数据的发送和接收以8位为一组,低位在前,高位在后。6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式18(一)串行口工作方式06.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式MOV SBUF,ATI=1发送结束发送结束接收结束接收结束RI=1MOV A,SBUF19(二)串行口工作方式1 10位为一帧的异步串行通信方式,1位起始位,8位数据,1位停止位。发送和接收频率可设定。TXD为发送端,RXD为接收端,数据以一定的频率发送,由定时/计数器提供。6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式20(二)串行口工作方式1串行口方式
11、1的时序6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式MOV SBUF,ATI=1发送结束发送结束接收结束接收结束RI=1MOV A,SBUF21 发送和接收频率(波特率 Baud Rate)的设定 通常采用定时/计数器T1的方式2产生波特率,以避免计数初始常数的重新装入。定时/计数器的溢出率(Timer Overflow Rate)的倒数为定时/计数器的溢出周期,即定时时间。设计数初始值为X,定时时间为 为晶体振荡器的频率。Rate)Overflow(Timer322RateBaudSMODX)2(128oscDftoscf6.2 MCS51 单片机的串行口 6.2.3 串
12、行口的控制方式22 波特率 Baud Rate 定时/计数器的初始时间常数为:X)2(12322RateBaud8SMODoscfRateBaud123222XSMOD8oscf6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式23(三)串行口工作方式2 11位为一帧的异步串行通信方式,1位起始位,9位数据,1位停止位。发送和接收频率是固定的:有两种情况,SMOD1,波特率为晶体振荡器频率的1/32;SMOD0,波特率为晶体振荡器频率的1/64。发送时,数据的第8位由TB8设置,而接收时,数据的第8位被放置在RB8中。接收和发送原理过程与方式1相同。支持多机通信方式。oscf64
13、2RateBaudSMOD6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式24(三)串行口工作方式2串行口方式2、3的时序6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式MOV SBUF,ATI=1发送结束发送结束接收结束接收结束RI=1MOV A,SBUF25(四)串行口工作方式3 11位为一帧的异步串行通信方式,1位起始位,9位数据,1位停止位。通信过程与方式2相同,不同的是它的波特率是可变的,计算过程与方式1相同。方式3支持多机通信方式。6.2 MCS51 单片机的串行口 6.2.3 串行口的控制方式26 串行口工作方式0的功能相当于一个移位寄存器,常用于
14、实现串行并行、并行串行数据格式之间的转换,因此,可以与具有并行输入串行输出、串行输入并行输出功能的芯片结合扩展并行I/O口。常用的具有并行输入串行输出功能的TTL芯片有74LS165、74HC165,CMOS芯片有CD4094。具有串行输入并行输出功能的TTL芯片有74LS164、74HC164,CMOS芯片为CD4014。6.3 串行口的应用 6.3.1 并行I/O口扩展 276.3 串行口的应用 6.3.1 并行I/O口扩展 74LS165MCS-5174LS165EG FHACDBDSQHQHLS/CLK CLK INHRXDTXDP1.0EG FHACDBCLK INHCLKLS/采用
15、2片74LS165扩展的2个8位并行输入输出接口电路(一)并行输入口扩展28接收1个字节296.3 串行口的应用 6.3.1 并行I/O口扩展(二)并行输出口扩展74LS164MCS-51QEQGQFQHQAQCQDQB74LS164AACLKRXDTXDP1.0BBCLRCLKCLRQEQGQFQHQAQCQDQB采用串行口扩展的16位并行输出接口电路 30发送1个字节31 MCS-51单片机提供3种异步通信方式,与之通信的设备可以是MCS-51系列的单片机、或者其它系列的单片机或计算机。3种异步通信方式中,最常用的是方式1和方式3,其通信的波特率是可变的,用户可以根据实际情况进行选择。不论
16、哪种方式,在软件设计时,都可以采用查询方式和中断方式实现,其数据帧的格式可以根据实际情况确定。在通信时,必须保证通信双方采用相同的波特率和数据格式。6.3 串行口的应用 6.3.2 串行口异步通信32例:A、B两台MCS-51单片机进行单工串行通信,A机工作在发送状态,B为接收状态,现将A机片内RAM从30H单元开始存储的16个字节的数据发送到B机,并存储在片内RAM20H单元开始的区域。A、B单片机的晶振频率均为11.0592MHz,拟采用通信波特率为9600 bit/s。6.3 串行口的应用 6.3.2 串行口异步通信(一)方式1的应用33 在数据通信之前,需要进行以下初始化编程:(1)确
17、定定时/计数器T1的工作方式,设置TMOD。通常定时/计数器T1设定为方式2,定时模式。(2)根据波特率,计算定时/计数器T1的计数初始值,分别装入TH1和TL1。(3)启动定时/计数器T1,SETB TR1。(4)确定串行口工作方式,设置SCON,接收时置REN1。(5)如果采用中断方式,则开放CPU中断(EA1)、允许串行口中断(ES1)。6.3 串行口的应用 6.3.2 串行口异步通信(一)方式1的应用34TXDGNDRXDGNDMCS-51(A)MCS-51(B)MCS-51单片机单工串行通信 6.3 串行口的应用 6.3.2 串行口异步通信(一)方式1的应用35THATTHAT S ALL!S ALL!THANK YOU!THANK YOU!