单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第7章串口通信,*,第7章串口通信,2024/11/16,第7章串口通信,第7章串口通信2023/10/9第7章串口通信,1,并行通信:,传送的数据的各位同时发送,并排传输,同时被接收。,控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。,引言,串行通信,传送数据的各位按分时顺序一位一位地传送(即一位一位的发送和接收)。,特点,:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。,八个人站成一排一起通过,八个人站成一纵队一一通过,第7章串口通信,2,并行通信:传送的数据的各位同时发送,并排传输,同时被接收。控,7.1.1 串行通信的基本概念,一、异步通信与同步通信,1、异步通信,异步通信,是指通信的,发送与接收设备使用各自的时钟,控制数据的发送和接收过程。以帧作为传送单位,每一帧由起始位、数据位、校验位和停止位组成,结构如图。,第7章串口通信,3,7.1.1 串行通信的基本概念 第7章串口通信3,2,.同步方式,同步方式仅在,开始用若干字符作为同步号令,,然后连续发送数据,如图所示。,由于没有在每一个字符中,配置起始、停止位,所以结构紧凑,传输效率高、速度快,,其组成如下图所示:,同步传输方式比异步传输方式速度快,这是它的优势。但同步传输方式也有其缺点,即它必须要用一个时钟来协调收发器的工作,所以它的设备也较复杂。,例如IIC通信,SPI通信等,第7章串口通信,4,2.同步方式 同步传输方式比异步传输方式速度快,这是它的优势,二、串行通信的传输方向,1、单工,单工,是指数据传输仅能沿,一个方向,,不能实现反向传输。,2、半双工,半双工,是指数据传输可以沿,两个方向,,但需要分时进行。,3、全双工,全双工,是指数据可以,同时进行双向,传输。,单工,半双工 全双工,第7章串口通信,5,二、串行通信的传输方向 单工,四、串行通信的错误校验,1、,奇偶校验,在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。,3、,循环冗余校验,2、,代码和校验,送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,相符则无差错,否则即认为传送过程中出现了差错。,第7章串口通信,6,四、串行通信的错误校验 3、循环冗余校验2、代码和校验第7,五、传输速率与传输距离,1、传输速率,波特率bps(bit per second)定义:,每秒传输数据的位数,即:,1波特=1位/秒(1bps),如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),10位240个/秒=2400 bps,相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。,第7章串口通信,7,五、传输速率与传输距离 相互通信的甲乙双方必须具有相同的,7.2,80C51的串行口,有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送缓冲器1个,因为发送时CPU是主动的,不会产生重叠错误。,7.2.1,80C51串行口的结构,第7章串口通信,8,7.2 80C51的串行口 有两个物理上独立的接,数据缓冲器SBUF,发送数据,通过指令MOV SBUF,A将数据写入SBUF,然后串,口,自动,将数据按事先设置的方式及速率从TXD(P3.1)端口输出,数据发送完毕,串口向CPU申请中断,且通过硬件将TI置1,表示发送已经结束,等待写入第二帧数据。,接收数据,当有数据送给单片机串口时,串口按事先设置的方式及速率,自动从,端口RXD(P3.0)接收数据,数据校验正确后送SBUF,一帧数据接收完毕 RI=1,串口向CPU请求中断且表示接收已经结束。单片机只要通过执行:,MOV A,SBUF,第7章串口通信,9,数据缓冲器SBUF第7章串口通信9,串行口的控制寄存器,MCS-51的串行口有,四种,工作方式,用户可以通过对串行控制寄存器SCON编程来设定。此外,还有波特率控制寄存器PCON,必须详细了解这些特殊功能寄存器,才能正确应用串行通信接口。,1串行口控制寄存器SCON,特殊功能寄存器SCON的地址为,98H,,具有位地址,可,位寻址,,复位时为00H,其格式如下:,SM0、SM1:串行口的方式选择位,见表7-1。,第7章串口通信,10,串行口的控制寄存器 MCS-51的串行口有四种工,SM2:方式2和方式3的多机通信控制位;,REN:允许串行接收位。,TB8:在方式2和方式3中,发送的第9位数据,需要时由软件置位或复位。,RB8:在方式2和方式3中,接收到的第9位数据;,在方式1时,RB8是接收到的停止位;在方式0,不使用RB8。,TI:发送中断标志。,TI必须由软件清“0”,RI:接收中断标志,,RI必须由软件清“0”。,第7章串口通信,11,SM2:方式2和方式3的多机通信控制位;第7章串口通信11,PCON中只有一位SMOD与串行口工作有关,:,SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。,PCON的其他位为掉电方式控制位,详见2.8节,第7章串口通信,12,PCON中只有一位SMOD与串行口工作有关:S,6.2.3,80C51串行口的工作方式,一、方式0:串口扩展为并口,1)波特率固定为 发送位数据等于一个机器周期。,2)不论是发送还是接收,数据都是从RXD(P3.0)端出入。TXD端而作为同步移位脉冲输出端。,3)工作于方式0时,可将串行接口扩展为并行接口。,1、方式0输出,第7章串口通信,13,6.2.3 80C51串行口的工作方式 一、方式0:串口,2、方式0输入,方式0接收和发送电路,第7章串口通信,14,2、方式0输入 方式0接收和发送电路第7章串口通,一、方式0,必须注意,:在,接收,时,除了设置SCON控制字为,方式0,外,还应设置允许接收控制位,REN为“1”,,清除RI中断标志,才能启动接收器工作。,方式0工作时,必须使SCON控制字的SM2位(多机通信控制位),为“0,”,从而不影响TB8和RB8位。由于,波特率固定,,故无需用定时器提供。但以中断方式传输数据时,CPU响应中断,不会自动清除TI、RI标志,,所以在中断服务程序中,必须由指令将TI、RI清“0”。,第7章串口通信,15,一、方式0必须注意:在接收时,除了设置SCON控制字为方式0,二、方式1:,8位异步通信,接口,方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位(低位在前),1位停止位。,1、方式1输出,第7章串口通信,16,二、方式1:8位异步通信接口 1、方式1输出第7章,2、方式1输入,第7章串口通信,17,2、方式1输入第7章串口通信17,(1)发送:,CPU向发送缓冲器SBUF写入一个数据后,便启动串行口在TXD端输出帧信息,先发送起始位“0”,接着从,低位,开始依次输出8位数据,最后输出停止位。发送完一帧信息后,发送中断标志TI置“1”,向CPU请求中断。,(,2)接收:,当,允许接收位REN,置“1”后,接收器便采样,RXD端电平,,当采样到“1”到“0”的跳变时,启动接收器接收。计数器的16个状态把1位时间等分成16份,并在第7、8、9个计数状态时,采样RXD电平。因此,每一位的数值采样三次,取其中至少有两次相同的值为确认值。启动后,如果三次采样的确认值不是“0”,则起始位无效,复位接收电路重新检测。如果确认值为“0”,起始位有效,则开始按从,低位到高位,的顺序接收一帧的数据信息。,必须注意,,在,方式1接收中,设置有,数据辨识功,能:只有同时满足以下两个条件时,接收到的数据才有效,才会将数据装入SBUF,并置RI为“1”,向CPU请求中断;否则,所接收的数据帧无效。当SM2=1时,接收到的停止位“1”装入RB8中。,RI=0。,接收到停止位为“1”,。,第7章串口通信,18,(1)发送:CPU向发送缓冲器SBUF写入一个数据后,便启,方式1的特点:,1)波特率可变,串口波特率由定时器,T1,产生,,T1工作于方式2,,并决定于T1定时时间,而T1的定时时间决定于装入的时间常数,N,因此可根据,时间常数,N推出,波特率,即,2),传送数据为,8,位,连同一位起始位、一位停止位组成一帧,即一帧为,10,位,发送由,TXD,输出,接收由,RXD,输入,可构成全双工的串行通信端口。,例:设计波特率为4800b/s,晶振频率为11.0592MHz,定时器T1工作在方式2,SMOD0,则计数器初值为,。,第7章串口通信,19,方式1的特点:第7章串口通信19,三、方式2和方式3,方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,。,方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。,第7章串口通信,20,三、方式2和方式3 方式2和方式3时起始位1位,数,3方式2、方式3,串行口工作在,方式2、方式3时,,为,9位异步,通信口,1帧信息由,11位,组成,即1位起始位、8位数据D0D7(低位在前)、1位可编程的第9位D8(发送时,第9位为SCON中的TB8;接收时,第9位为SCON中的RB8)及1位停止位,如图7-10所示。,图7-10 方式2、方式3数据格式,(1)发送:,当CPU向发送缓冲器SBUF写入一个数据后,便立即启动发送器发送。先发送起始位“0”,接着从低位开始依次输出8位数据,再发送SCON中的,TB8,,最后输出停止位。发送完一帧信息后,发送中断标志TI置“1”,向CPU请求中断。,(2)接收:,使用与方式1类似的方法识别起始位。,必须注意,,方式2、方式3接收中也设置有数据辨识功能:只有同时满足以下两个条件时,接收到的数据才有效,才能将接收到的数据装入SBUF和RB8,并置RI为“1”;否则,所接收的数据帧无效。,RI=0。,接收到的停止位为“1”。,方式2、方式3的区别,:方式2的波特率为,f,osc/32或,f,osc/64,而方式3的波特率可变。,第7章串口通信,21,3方式2、方式3图7-10 方式2、方式3数据格式(1,三、串口工作方式 2、3,方式2、3的工作性能,1)方式2波特率固定,并等于。,方式3波特率计算方法同方式1,即等于。,2),一帧数据为,11,位,包括,1,位起始位、,8,位数据位、,1,位可编程位、,1,位停止位。数据位低位在前高位在后,第,9,位可编程位发送时从,SCON,中的,TB8,取出,接收时第,9,位存,SCON,中的,RB8,。,第7章串口通信,22,三、串口工作方式 2、3第7章串口通信22,第四节 串口初始化编程,一、,计算波特率,串口方式0,串口方式1和串口方式3,串口方式2,第7章串口通信,23,第四节 串口初始化编程 一、计算波特率第7章串口通,第7章串口通信,24,第7章串口通信24,二、对SCON、PCON、TMOD初始化,以设计一8051单片机控制系统为例,设主振频率为12MHz,要求串口发送数据为8位、波特率为1200bps.则初始化步骤为:,1.先按波特率要求,计算T1的时间常数N,设SMOD=1。,已知主振频率为12MHz,