STC89C52单片机串行通信.ppt
《STC89C52单片机串行通信.ppt》由会员分享,可在线阅读,更多相关《STC89C52单片机串行通信.ppt(101页珍藏版)》请在三一办公上搜索。
1、,7.1 串行通信概述7.2 串行口的结构 7.3 串行口的四种工作方式7.4 波特率的设定与计算7.5 STC89C52单片机之间的通信7.6 PC与单片机间的通信,7.1 串行通信概述7.1.1 数据通信1、并行通信和串行通信(数据通信的两种常用形式),(1)并行方式数据的各位同时发送或同时接收。,并行通信,并行传送特点:逻辑清晰,控制简单,传送速度快,但因需要多根传输线,故一般只在近距离通信中使用。,(2)串行方式数据的各位依次逐位传送。,串行通信,串行传送特点:控制较并行传送复杂,传输速度慢,但因只需较少传输线,故适合于远距离通信。,有时为了节省线缆数量,即使在计算机内部,CPU和某些
2、外设之间也可以采用非并行的传输方式,如IIC、SPI、USB等标准传输方式,但它们与这里所述的串行通信有明显不同。总之,串行通信是以微处理器为核心的系统之间的数据交换方式,而IIC、SPI、USB等标准接口是微处理器系统与非微处理器型外设之间的数据交换方式。前者可以是对等通信,而后者只能采用主从方式。,2、单工、半双工、全双工按照传输数据流向,串行通信具有3种传输形式:单工、半双工和全双工。,在单工制式下,通信线的一端为发送器(TXD),一端为接收器(RXD),数据只能按照一个固定的方向传送。,在半双工制式下,系统由一个TXD和一个RXD组成,但不能同时在两个方向上传送,收发开关由软件方式切换
3、。,在全双工制式下,通信系统每端都有TXD和RXD,可以同时发送和接收,即数据可以在两个方向上同时传送。实际应用中,尽管多数串行通信接口电路具有全双工功能,但仍以半双工为主(简单实用)。,7.1.2 异步通信和同步通信 在串行数据通信中,有同步和异步两种基本方式。同步和异步的最本质区别在于通信双方是否采用使用相同的时钟源。1异步通信以字符为单位组成字符帧进行的数据传送。,数据以帧为单位进行传送。一帧数据由起始位、数据位、可编程校验位(可选)和停止位构成。帧和帧之间可以有任意停顿,起始位:占1位,用于实现发送方和接收方之间的同步。当不进行数据通信时,通信线路保持高电平,当发送端准备向接收端传输数
4、据时,首先发送起始位,即逻辑上的0电平,使得串行通信线路的电平由高变低,接收端在检测到这一电平变化后,可以准备接收数据。数据位:可以是字符或数据,一般为58位,由低位到高位依次传送。可编程校验位:占1位,是用户自定义的特征位,用于通信过程中数据差错的校验,或传送多机串行通信的联络信息。常用的差错校验方法有奇偶校验、和校验及循环冗余码校验。停止位:占1位,位于数据位末尾,用于告知一帧结束,始终为高电平。数据传输结束后,发送端发送逻辑1,将通信线路再次置为高电平,表示一帧数据发送结束。,异步通信特点:灵活,对收发双方的时钟精度要求较低(收发双方不同步时,能依靠在每帧开始时的不断对齐,自行纠正偏差)
5、,适用于数据的发送和接收;传送速度较低(每个字节都要建立一次同步)。,STC89C52单片机只支持异步通信。,2同步通信 数据以块为单位进行的数据传送,发送方先发送1-2个字节的同步字符,接收方检测到同步字符(一般由硬件实现)后,即准备接收后续的数据流。由于同步通信省去了字符开始和结束标志,而且字节和字节之间没有停顿,其速度高于异步通信。,同步通信特点:数据成批传送;传输效率高(以数据块为单位连续传送,数据结构紧凑);对通信硬件要求高(要求双方有准确的时钟)。,7.1.3 波特率 波特率是表征串行通信数据传输快慢的物理量。,波特率:每秒发送二进制数码的位数,即bps(位/秒),常用波特率:50
6、、110、300、600、1200、2400、4800、9600、19200、38400波特等。,串行通信的收发双方必须采用相同的波特率。,发送/接收时钟频率与波特率有关,即 fT/R=nBRT/R 式中,fT/R为收发时钟频率,单位为Hz;BRT/R为收发波特率;n为波特率因子。同步通信n=1。异步通信n可取1、16或64。也就是说,同步通信中数据传输的波特率即为同步时钟频率,而异步通信中,时钟频率可为波特率的整数倍。,【例7-1】设单片机以1200bps的波特率发送120字节的数据,每帧10位,问至少需要多长时间?解:所谓“至少”,是指串行通信不被打断,且数据帧与帧之间无等待间隔的情况。需
7、传送的二进制位数为 10120=1200位 所需时间T=1200(位)/1200(bps)=1秒,7.2 串行口的结构,STC89C52RC单片机内部集成有一个可编程的全双工的异步通信串行口,可以作为通用异步接收/发送器(UART),也可作为同步移位寄存器使用。,2个数据缓冲器SBUF在物理上是相互独立的,一个用于发送数据、另一个用于接收数据。2个SBUF共用一个地址(99H),通过读写指令区别是对哪个SUBF的操作。,C51:uchar counter;待发送存放变量SBUF=counter;完成一次数据发送counter=SBUF;完成一次数据接收,汇编:MOV SBUF,#DATA;完成
8、一次数据发送MOV A,SBUF;完成一次数据接收,发送控制器的作用是在门电路和定时器T1的配合下,将发送缓冲器SBUF中的并行数据转为串行数据,并自动添加起始位、可编程位、停止位。这一过程结束后自动使发送中断请求标志位TI置1,用以通知CPU已将发送缓存器SBUF发中的数据输出到了TXD引脚。,接收控制器的作用是在输入移位寄存器和定时器T1或T2的配合下,使来自RXD引脚的串行数据转为并行数据,并自动过滤掉起始位、可编程位、停止位。这一过程结束后自动使接收中断请求标志位RI置1,用以通知CPU接收的数据已存入接收缓冲器SBUF。,STC89C52串行通信以定时器T1或定时器T2作为波特率信号
9、发生器,其溢出脉冲经过分频单元后送到收、发控制器中。,RXD(P3.0)和TXD(P3.1)用于串行信号或时钟信号的传入或传出。,80C51单片机P3口,7.2.2 串行口特殊功能寄存器,与STC89C52单片机串行口控制有关的特殊功能寄存器有4个,分别是串行口控制寄存器SCON、电源控制寄存器PCON、从机地址控制寄存器SADEN和SADDR。,1.串口控制寄存器 SCON(98H),(1)SM0/FE:当PCON寄存器的SMOD0/PCON.6为1时,该位用于帧错误检测。当检测到一个无效停止位时,通过UART接收器设置该位。FE必须由软件清“0”。当PCON寄存器的SMOD0/PCON.6
10、为0时,SM0与SM1一起用来选择串行口的工作。,(2)SM2:多机通信控制位 多机通信在方式2和方式3下进行。当串口以方式2或方式3接收时,如果SM2=1,则只有当接收到的第9位数据(RB8)为1时,才使RI置1,产生中断请求,并将接收到的前8位数据送入SBUF。当接收到的第9位数据(RB8)为0时,则将接收到的前8位数据丢弃。当SM2=0时,则不论第9位数据是1还是0,都将前8位数据送入SBUF中,并使RI置1,产生中断请求。在方式1时,如果SM2=1,则只有收到有效的停止位时才会激活RI。在方式0时,SM2必须为0。,(3)REN:允许串行接收位。由软件置1或清0。REN=1 允许串行口
11、接收数据。REN=0 禁止串行口接收数据。(4)TB8:发送的第9位数据。方式2和方式3,TB8是要发送的第9位数据,其值由软件置1或清0。在双机串行通信时,一般作为奇偶校验位使用;在多机串行通信中用来表示主机发送的是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。在方式0和1中,不使用TB8。(5)RB8:接收的第9位数据。方式2和方式3,RB8存放接收到的第9位数据。在方式1,如SM2=0,RB8是接收到的停止位;在方式0,不使用RB8。,(6)TI:发送中断标志位 方式0,串行发送的第8位数据结束时TI由硬件置1,在其他方式中,串行口发送停止位的开始时置TI为1。TI=1,表示
12、一帧数据发送结束。TI的状态可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据。TI必须由软件清“0”。(7)RI:接收中断标志位 方式0时,接收完第8位数据时,RI由硬件置1。在其他工作方式中,串行接收到停止位时,该位置1。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。RI必须由软件清“0”。,对TI、RI有以下三点需要特别注意:(1)可通过查询TI、RI判断数据是否发送、接收结束,当 然也可以采用中断方式。(2)串行口是否向CPU提出中断请求取决于TI与RI进行相“或”运算的结果,即当TI
13、=1,或RI=1,或TI、RI同时为1时,串行口向CPU提出中断申请。因此,当CPU响应串行口中断请求后,首先需要使用指令判断是RI=1还是TI=1,然后再进入相应的发送或接收处理程序。(3)如果TI、RI同时为1,一般而言,需优先处理接收子程序。这是因为接收数据时CPU处于被动状态,虽然串口输入有双重输入缓冲,但是,如果处理不及时,仍然会造成数据重叠覆盖而丢失一帧数据,所以应当尽快处理接收的数据。而发送数据时CPU处于主动状态,完全可以稍后处理,不会发生差错。,2.电源控制寄存器PCON(第四章4.6节省电工作模式),仅SMOD、SMOD0与串口有关。SMOD:波特率选择位。,SMOD0:帧
14、错误检测有效控制位。当SMOD0=1,SCON寄存器中的SM0/FE位用于FE(帧错误检测)功能;当SMOD0=0,SCON寄存器中的SM0/FE位用于SM0功能,与SM1一起指定串行口工作方式。复位时SMOD0=0。,3.从机地址控制寄存器SADEN和SADDR 为了方便多机通信,STC89C52单片机设置了从机地址控制寄存器SADEN和SADDR。其中SADEN是从机地址掩膜寄存器(地址为B9H,复位值为00H),SADDR是从机地址寄存器(地址为A9H,复位值为00H)。,7.3 串行口的4种工作方式7.3.1 方式0,8位同步移位寄存器方式,当单片机工作在6T模式时,其波特率固定为fC
15、LK/6。当单片机工作在12T模式时,其波特率固定为fCLK/12。由RXD引脚输入或输出数据。TXD引脚输出fCLK/12时钟信号(12T模式)。,以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。,方式0功能结构示意图,1.方式0发送,机器周期,RXD(数据),TXD(移位脉冲),方式0发送时,当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口开始把SBUF中的8位数据以fCLK/12或fCLK/6的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据置位中断标志位TI。,2.方式0接收,机器周期,RXD(数据),TXD(移
16、位脉冲),当向SCON寄存器写入控制字时,产生一个正脉冲,串行口开始接收数据。接收器以fCLK/12或fCLK/6的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置1,表示一帧数据接收完毕,可进行下一帧数据的接收。,在单片机应用系统中,如果并行口的I/O资源不够,而串行口又无它用时,可以用来扩展并行I/O口,这种扩展方法不会占用片外RAM地址,而且也节省单片机的硬件开销(只需外加1根I/O口线),但扩展的移位寄存器芯片越多,口的操作速度也就越慢。,方式0主要用于串并转换(不是用于异步串行通信),I/O口数量不足时,可通过串口方式0进行扩展,但需要相应的扩展芯片配合。这种扩
17、展方法不会占用片外RAM地址,而且也节省单片机的硬件开销(只需外加1根I/O口线),但扩展的移位寄存器芯片越多,口的操作速度也就越慢。,扩展输出芯片:74LS164、CD4094、扩展输入芯片:74LS165、CD4014、,【例7-2】利用74LS164扩展并行输出口,并实现8个LED由上向下循环点亮。,74LS1648位串入并出移位寄存器,工作原理:1)清零端(MR)若为低电平,输出端都为0;2)清零端若为高电平,且时钟端(CP)出现上升沿脉冲,则输出端Q锁存输入端D的电平;3)串行数据输入端(A,B)可控制数据。当A、B 任意一个为低电平,则禁止新数据的输入,在时钟端脉冲CP上升沿作用下
18、Q0 为低电平。当A、B 有一个高电平,则另一个就允许输入数据,并在上升沿作用下确定串行数据输入口的状态。4)前级Q端与后级D端相连移位作用,最先接收到的数将进入最高位。,程序分析:,串口初始化:SCON=0;,方式0(SM0 SM1=00)中断请求标志位清0(RI=0,TI=0)禁止接收数据(REN=0),串行数据输出时,一组数据发送完成,TI会被置1。可以采用中断法或查询方式进行判别,满足条件,发送下一组数据,否则,循环等待直到TI置1。,方式0发送串行输出低位在先,高位在后。而164是先串入的数进入最高位。若需要实现下图效果(仅D1点亮),则164应输出1111 1110B,发送端数据应
19、为LED=0111 1111B;欲使LED由上向下点亮,发送端数据应右移且最高位置1。(LED 1)|0 x80;0 x80=1000 0000B。,KeilC51,#include sbit MR=P27;void time(unsigned int ucMs);void main()unsigned char index,LED;SCON=0;MR=1;while(1)LED=0 x7f;for(index=0;index 1)|0 x80);TI=0;time(1000);,void time(unsigned int ucMs)#define DELAYTIMES 239unsigne
20、d char ucCounter;while(ucMs!=0)for(ucCounter=0;ucCounterDELAYTIMES;ucCounter+)ucMs-;,【例7-3】利用串行口外接两片8位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口。要求从16位扩展口读入10组共20B数据,并将其转存到内部RAM30H开始的单元。,S/L=0,并行接收数据,S/L=1,允许串行移位。,MOVR7,#10;设置读入数据组数 MOV R0,#30H;设置内部RAM数据区首地址START:CLR P1.0;并行置入数据,=0 SETB P1.0;允许串行移位,=1 MOV R2,#0
21、2H;每组为2BRXDATA:MOV SCON,#10H;串口工作在方式0,允许接收WAIT:JNB RI,WAIT;未接收完一帧,则等待 CLR RI;RI标志清“0”,准备下次接收 MOV A,SBUF;读入数据MOV R0,A;送至片内RAM缓冲区 INC R0;指向下一个地址 DJNZ R2,RXDATA;未读完一组数据,则继续 DJNZ R7,START;10组数据未读完重新并行置数,7.3.2 方式1,10位异步收发通信模式,一帧信息=1个起始位(0)+8位数据位+1个停止位(1),指定T1或T2为波特率时钟发生器,一般选择定时方式2。,发送数据由TXD输出,接收数据由RXD输入,
22、初始化(RI、TI、REN、SM0、SM1),方式1主要用于点对点(双机)通信。,方式1功能结构示意图,1.方式1发送,.,TXD,TX时钟,D1,D2,D3,D4,D5,D6,D7,D0,起始,停止,当CPU执行一条写SBUF的指令,就启动发送。TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号变为有效,将起始位向TXD脚输出,此后每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD引脚输出一个数据位。8位数据位全部发送完毕后,中断标志位TI置1。,2方式1接收,方式1接收时(REN=1),数据从RXD(P3.1)引脚输入。当检测到起始位的负跳变,则开始接收。接收时,定时控制信号
23、有两种:一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同;另一种是位检测器采样脉冲,频率是RX时钟的16倍。以波特率的16倍速率采样RXD脚状态。当采样到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取两次相同的值,以确认起始位(负跳变)的开始,较好地消除干扰引起的影响。,当确认起始位有效时,开始接收一帧信息。每一位数据,也都进行3次连续采样(第7、8、9个脉冲采样),接收的值是3次采样中至少两次相同的值。当一帧数据接收完毕后,同时满足以下两个条件,接收才有效。(1)RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF
24、中的数据已被取走,说明“接收SBUF”已空。(2)SM2=0或收到的停止位=1(方式1时,停止位已进入RB8),则将接收到的数据装入SBUF和RB8(装入的是停止位),且中断标志RI置1。若不同时满足两个条件,收的数据不能装入SBUF,该帧数据将丢弃。,7.3.3 方式2和方式3 11位数据异步通信方式,一帧信息=1个起始位(0)+8位数据位+1个可编程位(P)+1个停止位(1)。,方式2和方式3的操作两种方式的共同点是发送和接收时具有第9位数据,正确运用SM2(多机通信控制位)能实现多机通信。不同点在于,方式2的波特率是固定的,而方式3的波特率由定时器T1或T2的溢出率决定。,可编程位的作用
25、用于奇偶校验或多机通信标识。,TB8既可作为多机通信地址帧或数据帧的标识位(如地址帧可约定为“1”,数据帧时为0。),也可作为数据的奇偶校验位。发送时由硬件方式将TB8作为可编程位插入数据帧中。接受时由硬件方式将数据帧的可编程位存入RB8中。,方式2功能结构示意图,方式2和方式1相比,除波特率发生源略有不同,发送时由TB8提供给移位寄存器第9位数据不同外,其余功能结构均基本相同,发送/接收数据过程及时序基本相同。,方式3功能结构示意图,1.方式2和方式3发送,2.方式2和方式3接收,SM0、SM1=10,且REN=1时,以方式2接收数据。数据由RXD端输入,接收11位信息。当位检测逻辑采样到R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STC89C52 单片机 串行 通信
链接地址:https://www.31ppt.com/p-5449542.html