《片机的串行通信技术.ppt》由会员分享,可在线阅读,更多相关《片机的串行通信技术.ppt(56页珍藏版)》请在三一办公上搜索。
1、第7章 单片机的串行通信技术,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用举例,7.1 串行通信概述 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率的概念和串行通信的传输方向 7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用举例,7.1 串行通信概述,常用的数据通信包括两种形式:并行通信和串行通信。,并行通信,(1)并行方式数据的各位同时发送或同时接收。传送速度快,但因需要多根传输线,故一般只在近距离通 信中使用。,7.1.1 数据通信,串行通信,(2)
2、串行方式数据的各位依次逐位发送或接收。传输速度慢,但因只需较少传输线,故适合于远距离通信。,7.1 串行通信概述 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率的概念和串行通信的传输方向 7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用举例,7.1 串行通信概述,7.1.2 异步通信和同步通信,在串行数据通信中,有同步通信和异步通信两种方式。,一帧数据由起始位、数据位、可编程位和停止位构成特点收发双方不同步时,能够依靠在每帧开始时的不断对齐,自行纠正偏差,故对收发双方的时钟精度要求较低,但因每个字节都要建立一次同步,所以工
3、作速度较低。,1.异步通信以字符为单位组成字符帧进行的数据传送,2.同步通信,同步通讯数据格式数据以块为单位连续传送。,在发一组数据时,只在开始用若干个同步字符作为双方的号令,然后连续发送整组数据。,特点数据是以数据块为单位连续传送的,结构紧凑,传输效率高,但要求双方有准确的时钟,对硬件要求高。,7.1 串行通信概述 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率的概念和串行通信的传输方向 7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用举例,7.1 串行通信概述,7.1.3 波特率的概念和串行通信的传输方向,波特率为每秒
4、钟发送二进制数码的位数,即b/S(位/秒)。,在串行通信中,数据传输速率的快慢,通过波特率来衡量。,例如,在异步通信中传输速度为360字符/秒,每个字符又包含10位,则波特率为:360字符/秒*10位/字符 3600波特,标准波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等。,三种传输形式:单工、半双工、全双工,在串行通信中,按照传输数据的流向,可分成三种传输形式:,单工通信 半双工通信 全双工通信 Simplex Half Duplex Full Duplex,80C51 内部设有一个全双工串行接口,收发双方角色固定不能互换,收发双方角色可
5、换但需切换,收发双方互不影响双向通信,RXDReceive Data接收数据 TXDTransmit Data发送数据,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器 串行口的结构组成 串行口控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,7.1 串行口的结构组成,若干寄存器:两个数据缓冲器SBUF(99H)+串行控制寄存器SCON(98H)+移位寄存器+.。,两个引脚:数据接收RXD(P3.0)和数据发送TXD(P3.1)。,内部数据并行写入SBUF发数据串行送出中断标志位TI硬件置1CPU响应中断TI软件清零,写入下
6、一数据,CPU,(1)发送数据过程(中断法),外界数据串行送入移位寄存器数据并行送入SBUF收标志位RI硬件置1CPU响应中断RI软件清零,读走数据,CPU,(2)接收数据的过程(中断法),数据传送将串行数据按一定节拍(同步时钟脉冲)输出到传输线上,或从传输线上读入。,同步时钟信号可由系统时钟或定时器产生,发送数据时,发送时钟的下降沿将数据串行移位输出;,接收数据时,接收时钟的上升沿开始对数据位采样。,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器 串行口的结构组成 串行口控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,
7、在物理上有两个SBUF:一个用于发送,另一个用于接收。在逻辑上只有一个SBUF(99H)。可根据用法区分功能:,uchar counter;待发送存放变量SBUF=counter;完成一次数据发送counter=SBUF;完成一次数据接收,CPU,7.2.2 串行口控制寄存器,(1)串行数据缓冲器,SBUF,SM2、TB8、RB8主要用于多机通讯(略),(2)串口控制寄存器,SCON(98H),由定时器产生的同步时钟,(3)电源控制寄存器,PCON(87H),通过SM0和SM1不同的取值,可选择串行通信中的四种工作方式。,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器7.3 串行通信
8、工作方式 7.3.1 方式0(八位同步移位寄存器方式)7.3.2 方式1(十位异步收发通信模式)7.3.3 方式2、方式3数据帧格式及应用举例 7.4 串行通信设计应用举例,7.3 串行通信工作方式及应用举例,7.3.1 方式0:八位同步移位寄存器方式,数据传输波特率固定为fosc/12由RXD引脚输入或输出数据(低位在前,高位在后)由TXD引脚输出同步时钟信号,扩展输出口,扩展输入口,用于扩展并行I/O接口,实例1 利用74LS164扩展并行输出口,并实现发光二极管循环控制功能,能将串行输入数据转为并行输出,工作原理:1)CLEAR端若为低电平,输出端QAQG都为0;2)CLEAR端若为高电
9、平,且CLOCK端出现上升沿脉冲,则 输出端锁存输入端的电平,74LS164为8位串并转换移位寄存器,数据发送端A(B)RXD;同步时钟端CLKTXD;数据清除端CLRP1.0,接线原理,#includesbit MR=P10;void delay()/延时 unsigned int i;for(i=0;i20000;i+)void main()unsigned char index,LED;/定义LED指针和显示字模 SCON=0;/设置串行模块工作在方式0 MR=1;/CLEAR端1,允许输入数据 while(1)LED=0 xFE;for(index=0;index 8;index+)S
10、BUF=LED;/控制L0灯点亮 do while(!TI);/通过TI查询判别数据是否输出结束 LED=(LED1)|1);/左移1位,末位置1 if(LED=0 xff)LED=0 xfe;/若已循环一遍,准备重新开始 delay();,实例1参考程序,实例1运行效果,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式 7.3.1 方式0(八位同步移位寄存器方式)7.3.2 方式1(十位异步收发通信模式)7.3.3 方式2、方式3数据帧格式及应用举例 7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,一帧信息:1个起始位(0)+8位数据位+1
11、个停止位(1),其中起始位和停止位是自动插入的。,7.3.2 方式1:10位数据异步通讯方式,用于双机通信,波特率=2SMOD(T1的溢出率)/32 数据位由 P3.0(RXD)端接收,由P3.1(TXD)端发送一帧信息为 10 位:一位起始位(0),8 位数据位(低位在前)和一位停止位(1)。发送过程:用软件清除 TI后,CPU执行任何一条以 SBUF为目标寄存器的指令,就启动发送过程。数据由TXD引脚输出,此时的发送移位脉冲是由定时器/计数器 T1 送来的溢出信号经过 16 或 32 分频而取得的。一帧信号发送完时,将置位发送中断标志TI=1,向CPU申请中断。,2.方式110位UART方
12、式,用软件清除 RI后,当允许接收位REN=1 时,接收器以选定波特率的 16 倍的速率采样 RXD引脚上的电平,即在一个数据位期间有 16 个检测脉冲,并在第 7、8、9 个脉冲期间采样接收信号,然后用三中取二的原则确定检测值,以抑制干扰。并且采样是在每个数据位的中间,避免了信号边沿的波形失真造成的采样错误。当检测到有从“1”到“0”的负跳变时,则启动接收过程,在接收移位脉冲的控制下,接收完一帧信息。当最后一次移位脉冲产生时能满足下列两个条件:RI=0;接收到的停止位为1 或 SM2=0。则停止位送入RB8,8位数据进入SBUF,并置RI1,完成一次接收过程。否则,所接收到的一帧信息将丢失,
13、接收器复位,并重新开始检测负跳变,以便接收下一帧信息。,接收过程:,发送条件:由SBUF=counter即可启动发送过程发送完成:硬件TI置1,接收条件:在允许接收位REN=1时即可启动接收过程接收完成:硬件RI置1,数据SBUF,指定T1为波特率时钟发生器(波特率时钟可变),通常选择定时器方式2(取fosc为11.0592MHz),例如:SCON=0 x50;/串口设为方式1,TI和RI清零,允许接收PCON=0 x80;/波特率加倍(2)TMOD=0 x20;/T1设为定时方式2TH1=0 xcc;/定时器初值TL1=0 xcc;/重置的定时初值IE=10010000B;/中断使能(开中断
14、)TR1=1;/启动T1,一般初始化过程,方式1应用举例,例7.3将89C51单片机的TXD接RXD,实现单片机串行口数据自发自收,并将接收的数据通过P1口输出到发光二极管显示。系统时钟频率为11.0592MHz,自发送接收的波特率为2400bps。编写程序,要求:单片机串行口工作在方式,从TXD发送数据0 x55,从RXD将该数据读回,并送P1口通过8个发光二极管显示。电路图如图7.13所示。,应用C51编写的程序如下:,#include#define uchar unsigned char#define uint unsigned int void main()uchar i=0 x55;
15、uint j=0;TMOD=0X20;/设置定时器1工作在模式2 TL1=0 xf4;/根据传输的波特率设置定时器1初值 TH1=0 xf4;PCON=0 x00;/电源控制寄存器最高位为0,波特率不加倍 SCON=0 x50;/选择工作方式1,使能收发功能 TR1=1;/启动定时器1 while(1)SBUF=i;/发送数据dowhile(!RI);/等待发送数据返回RI=0;TI=0;/软件将标志位RI和TI清0i=SBUF;/读取数据P1=i;/送入P1口显示i=i;/将发送数据取反for(j=0;j12500;j+);/延时,双机通信协议通行方式:例如异步串行通信波特率:例如2400b
16、/s发机要求发送的呼叫信号:例如10H收机同意接收的应答信号:例如20H收机不同意接收的应答信号:例如30H告知数据正确的应答信号:例如0FH通信结束标志信号:例如0AH,要求设计一个双机通信方案,甲机发送数据,乙机接收数据。两机的振荡频率为12MHz,波特率设置为2.4k,工作在串口方式1。甲机循环发送0-15的数字,乙机接收后返回接收值。若发送值与返回值相等,继续发送下一数字,否则重复发送当前数字。发送值和接收值应显示在LED数码管上;采用查询法检查收发是否完成。,实例2:,实例2电路原理图,实例2程序流程图,实例2甲机参考程序,#include#define uchar unsigned
17、 char#define uint unsigned intvoid delay(unsigned int time)uint j=0;for(;time0;time-)for(j=0;j15)counter=0;/修正计数器值 delay(500);/延时,实例2乙机参考程序,#include#define uchar unsigned charvoid main(void)uchar receiv;/定义接收缓冲 TMOD=0 x20;/T1定时方式2 TH1=0 xf4;/2400b/S TL1=0 xf4;PCON=0 x00;/SMOD0,波特率不加倍 TR1=1;/启动T1 SCO
18、N=0 x50;/串行方式1,TI和RI清零,允许接收 while(1)while(RI=1)/等待接收完成 RI=0;/清RI标志 receiv=SBUF;/取得接收值 SBUF=receiv;/结果返回主机 while(TI=0);/等待发送完成 TI=0;/清TI标志 P2=receiv;/显示接收,实例2运行效果,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式 7.3.1 方式0(八位同步移位寄存器方式)7.3.2 方式1(十位异步收发通信模式)7.3.3 方式2、方式3数据帧格式及应用举例 7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制
19、寄存器,因此:串行口工作于模式 2 和模式 3 时,被定义为 9 位异步通信接口。其每帧数据结构是 11 位的:首先是起始位(0),其后是 8 位数据位D0D7(低位在先),第 10 位是可编程位D8,最后一位是停止位(1)。,7.2.3 方式2、方式3数据帧格式及应用举例,方式2和方式3的数据帧都是11位用于多机通信格式为:,可编程位可用作奇偶校验位,但在多机通信时,往往用作地址和数据的区别通讯标识。,一个起始位,8个数据位,一个可编程位和一个停止位,方式2与方式3的区别:,方式 2 和方式3 工作原理相似,唯一的差别是方式2 的波特率是固定的,即为 fOSC/32或 fOSC/64;而方式
20、 3的波特率是可变的,与定时器 T1的溢出率有关。方式2的波特率=2SMOD(fosc/64)方式3的波特率=2SMOD(T1的溢出率)/32(与方式1同),注:可编程位可以由软件置1或清0;发送时在TB8中,连同八位数据通过串口发出。收到数据后,数据存入接收SBUF内,可编程位存入RB8中。,发送过程:第9位数据-TB8 其它8位-SBUF进行一次发送。当第9位数据(TB8)输出后,置位TI。接收过程:在REN=1时,在第9位数据收到后,若下列条件同时满足:RI=0;SM2=0 或接收到的第 9 位数据为“1”。则将已接收到的数据装入SBUF和RB8,并置位RI。若不满足则接收无效。可见,方
21、式2和方式3的接收与方式1接收不同:其RB8装入的是第9位数据而方式1 RB8装入的是停止位。所接收的停止位的值与SBUF、RB8 和 RI都没有关系,利用这一特点可用于多机通信中。,方式2和方式3的发送和接收过程,方式2的波特率为固数值:,方式3的波特率和方式1相同,是可变的:,(与方式1同),波特率计算公式,串行口控制寄存器SCON中的SM2为多机通信接口控制位。串行口以方式2或3接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBU
22、F并置位中断标志RI,请求CPU处理。,多机通信原理,使所有从机的SM21,处于接收地址状态。主机发送一帧地址信息,其中前8位为地址,第9位为地址标置1从机收到地址帧后,各自将接收到的地址与本机地址比较,相符者置SM20,为接收主机随后发来的数据帧作好准备。并向主机发回应答信息。主机收到被叫从机的应答信息后,开始发数据帧信息,其中前8位为数据,第9位为0,所以只有刚才将SM2置0的从机可以接收。为了提高可靠性,发、收双方可以增加校验和。,多机通信协议,7.4 串行通信设计应用举例,7.1 串行通信概述7.2 串行口的结构组成及控制寄存器7.3 串行通信工作方式及应用举例7.4 串行通信设计应用
23、举例串行通信的硬件连接MAX232与单片机的接口设计应用举例实现两个单片机点对点的数据通信,串行通信的硬件连接,近距离的串行通信可直接用TTL实现,远距离的串行通信需要利用RS232接口接口芯片将TTL电平转换成232电平。,远距离的串行通信,MAX232与单片机的接口设计,表7.5MAX232引脚功能,应用举例实现两个单片机点对点的数据通信,与例7.3类似,留给大家自学,本章小结,用于串行口通信控制的主要寄存器是SCON,可以设定4种工作方式、接收允许、发送/接收标志、2个可编程位、1个多机通讯位。,串行通信方式0,主要用于单片机I/O接口的扩展,在数据的输入和输出控制中,RXD作为数据线,TXD输出同步时钟脉冲。而且,在方式0下,以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。,方式1的数据帧格式是10位,其中,一个起始位,8个数据位和一个停止位。发送时由SBUF=counter启动发送过程;发送完成后由硬件TI置位;接收时只要接收位REN=1即可启动接收过程,接收后由硬件TI置位,数据存入SBUF。,