欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    STC89C52单片机串行通信.ppt

    • 资源ID:5449542       资源大小:4.96MB        全文页数:101页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    STC89C52单片机串行通信.ppt

    ,7.1 串行通信概述7.2 串行口的结构 7.3 串行口的四种工作方式7.4 波特率的设定与计算7.5 STC89C52单片机之间的通信7.6 PC与单片机间的通信,7.1 串行通信概述7.1.1 数据通信1、并行通信和串行通信(数据通信的两种常用形式),(1)并行方式数据的各位同时发送或同时接收。,并行通信,并行传送特点:逻辑清晰,控制简单,传送速度快,但因需要多根传输线,故一般只在近距离通信中使用。,(2)串行方式数据的各位依次逐位传送。,串行通信,串行传送特点:控制较并行传送复杂,传输速度慢,但因只需较少传输线,故适合于远距离通信。,有时为了节省线缆数量,即使在计算机内部,CPU和某些外设之间也可以采用非并行的传输方式,如IIC、SPI、USB等标准传输方式,但它们与这里所述的串行通信有明显不同。总之,串行通信是以微处理器为核心的系统之间的数据交换方式,而IIC、SPI、USB等标准接口是微处理器系统与非微处理器型外设之间的数据交换方式。前者可以是对等通信,而后者只能采用主从方式。,2、单工、半双工、全双工按照传输数据流向,串行通信具有3种传输形式:单工、半双工和全双工。,在单工制式下,通信线的一端为发送器(TXD),一端为接收器(RXD),数据只能按照一个固定的方向传送。,在半双工制式下,系统由一个TXD和一个RXD组成,但不能同时在两个方向上传送,收发开关由软件方式切换。,在全双工制式下,通信系统每端都有TXD和RXD,可以同时发送和接收,即数据可以在两个方向上同时传送。实际应用中,尽管多数串行通信接口电路具有全双工功能,但仍以半双工为主(简单实用)。,7.1.2 异步通信和同步通信 在串行数据通信中,有同步和异步两种基本方式。同步和异步的最本质区别在于通信双方是否采用使用相同的时钟源。1异步通信以字符为单位组成字符帧进行的数据传送。,数据以帧为单位进行传送。一帧数据由起始位、数据位、可编程校验位(可选)和停止位构成。帧和帧之间可以有任意停顿,起始位:占1位,用于实现发送方和接收方之间的同步。当不进行数据通信时,通信线路保持高电平,当发送端准备向接收端传输数据时,首先发送起始位,即逻辑上的0电平,使得串行通信线路的电平由高变低,接收端在检测到这一电平变化后,可以准备接收数据。数据位:可以是字符或数据,一般为58位,由低位到高位依次传送。可编程校验位:占1位,是用户自定义的特征位,用于通信过程中数据差错的校验,或传送多机串行通信的联络信息。常用的差错校验方法有奇偶校验、和校验及循环冗余码校验。停止位:占1位,位于数据位末尾,用于告知一帧结束,始终为高电平。数据传输结束后,发送端发送逻辑1,将通信线路再次置为高电平,表示一帧数据发送结束。,异步通信特点:灵活,对收发双方的时钟精度要求较低(收发双方不同步时,能依靠在每帧开始时的不断对齐,自行纠正偏差),适用于数据的发送和接收;传送速度较低(每个字节都要建立一次同步)。,STC89C52单片机只支持异步通信。,2同步通信 数据以块为单位进行的数据传送,发送方先发送1-2个字节的同步字符,接收方检测到同步字符(一般由硬件实现)后,即准备接收后续的数据流。由于同步通信省去了字符开始和结束标志,而且字节和字节之间没有停顿,其速度高于异步通信。,同步通信特点:数据成批传送;传输效率高(以数据块为单位连续传送,数据结构紧凑);对通信硬件要求高(要求双方有准确的时钟)。,7.1.3 波特率 波特率是表征串行通信数据传输快慢的物理量。,波特率:每秒发送二进制数码的位数,即bps(位/秒),常用波特率:50、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位,问至少需要多长时间?解:所谓“至少”,是指串行通信不被打断,且数据帧与帧之间无等待间隔的情况。需传送的二进制位数为 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;完成一次数据发送MOV A,SBUF;完成一次数据接收,发送控制器的作用是在门电路和定时器T1的配合下,将发送缓冲器SBUF中的并行数据转为串行数据,并自动添加起始位、可编程位、停止位。这一过程结束后自动使发送中断请求标志位TI置1,用以通知CPU已将发送缓存器SBUF发中的数据输出到了TXD引脚。,接收控制器的作用是在输入移位寄存器和定时器T1或T2的配合下,使来自RXD引脚的串行数据转为并行数据,并自动过滤掉起始位、可编程位、停止位。这一过程结束后自动使接收中断请求标志位RI置1,用以通知CPU接收的数据已存入接收缓冲器SBUF。,STC89C52串行通信以定时器T1或定时器T2作为波特率信号发生器,其溢出脉冲经过分频单元后送到收、发控制器中。,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为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 允许串行口接收数据。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,表示一帧数据发送结束。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=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:帧错误检测有效控制位。当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模式时,其波特率固定为fCLK/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(移位脉冲),当向SCON寄存器写入控制字时,产生一个正脉冲,串行口开始接收数据。接收器以fCLK/12或fCLK/6的固定波特率采样RXD引脚的数据信息,当接收完8位数据时,中断标志RI置1,表示一帧数据接收完毕,可进行下一帧数据的接收。,在单片机应用系统中,如果并行口的I/O资源不够,而串行口又无它用时,可以用来扩展并行I/O口,这种扩展方法不会占用片外RAM地址,而且也节省单片机的硬件开销(只需外加1根I/O口线),但扩展的移位寄存器芯片越多,口的操作速度也就越慢。,方式0主要用于串并转换(不是用于异步串行通信),I/O口数量不足时,可通过串口方式0进行扩展,但需要相应的扩展芯片配合。这种扩展方法不会占用片外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上升沿作用下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,发送端数据应为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 239unsigned 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,#02H;每组为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输入,初始化(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)引脚输入。当检测到起始位的负跳变,则开始接收。接收时,定时控制信号有两种:一种是接收移位时钟(RX时钟),它的频率和传送的波特率相同;另一种是位检测器采样脉冲,频率是RX时钟的16倍。以波特率的16倍速率采样RXD脚状态。当采样到RXD端从1到0的负跳变时就启动检测器,接收的值是3次连续采样(第7、8、9个脉冲时采样)取两次相同的值,以确认起始位(负跳变)的开始,较好地消除干扰引起的影响。,当确认起始位有效时,开始接收一帧信息。每一位数据,也都进行3次连续采样(第7、8、9个脉冲采样),接收的值是3次采样中至少两次相同的值。当一帧数据接收完毕后,同时满足以下两个条件,接收才有效。(1)RI=0,即上一帧数据接收完成时,RI=1发出的中断请求已被响应,SBUF中的数据已被取走,说明“接收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的溢出率决定。,可编程位的作用用于奇偶校验或多机通信标识。,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位信息。当位检测逻辑采样到RXD的负跳变,判断起始位有效,便开始接收一帧信息。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器)。(1)RI=0,意味着接收缓冲器为空。(2)SM2=0或接收到的第9位数据位RB8=1。当满足上述两个条件时,收到的数据送接收SBUF,第9位数据送入RB8,且RI置1。若不满足这两个条件,接收的信息将被丢弃。,7.4 波特率的设定与计算 在串行通信中,收发双方必须采用相同的通讯速率,即波特率。STC89C52单片机串行通信以定时器T1和定时器T2作为波特率信号发生器,其溢出脉冲经过分频单元后送到收、发控制器中。分频单元的内部结构如下图。,1方式0 波特率与系统时钟频率fCLK有关。一旦系统时钟频率选定且在STC-ISP编程器中设置好,方式0的波特率固定不变。当用户在烧录用户应用程序时STC-ISP编程器中设置单片机为6T/双倍速时,其波特率为fCLK的1/6。若设置单片机为12T/单倍速时,其波特率为fCLK的1/12。,2.方式2 波特率与系统时钟频率、SMOD位的值有关。其计算公式为,3.方式1和方式3 串行口工作在方式1或方式3时,波特率设置方法相同,采用定时器T1或定位器T2作为波特率发生器。其计算公式为,T1溢出脉冲可有两种分频路径,即16分频或32分频,SMOD是决定分频路径的逻辑开关。,T1溢出率取决于计数速率和定时器的预置值,计数速率与C/T(TMOD)的状态有关 C/T=0,计数速率=fosc/12 C/T=1,计数速度取决于外部输入时钟频率,当定时器T1作波特率发生器使用时,通常是选用自动重装载方式。在方式2中,TL1作计数用,而自动重装载的值放在TH1内。设计数初值为X,那么每过“256 X”个机器周期,T1产生一次溢出。,此时,波特率随、SMOD和初值X而变化。解出时间常数装载值为:,当单片机工作在12T模式时:,当单片机工作在6T模式时:,解出时间常数装载值为:,当设置定时器T2作为波特率发生器,定时器T2的溢出脉冲经16分频后作为串行口发送脉冲、接收脉冲。其波特率计算公式为,实际使用时,经常根据已知波特率和时钟频率来计算T1、T2的初值。,在使用时钟振荡频率 为12MHz时,将初值X和带入公式计算出的波特率有一定误差。为减小波特率误差,可使用的时钟频率为11.0592MHz或22.1184MHz,此时定时初值为整数,但该外接晶振用于系统精确的定时服务不是十分的理想。例如单片机外接11.0592MHz 晶振时,机器周期=12/11.0592MHz1.085us,是一个无限循环的小数。当单片机外接22.1184MHz晶振时,机器周期=12/22.1184MHz0.5425us,也是一个无限循环的小数,因此不能够为定时应用提供精确的定时。,如果要产生很低的波特率,如波特率选55,可以考虑使用定时器T1工作在方式1,即16位定时器方式。但在这种情况下,定时器T1溢出时,需在中断服务程序中重新装入初值,中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方法加以调整。,定时器T2作波特率发生器是16位自动重装载初值的,位数比定时器1作为波特率发生器要多(定时器T1作为串口波特率发生器工作在方式2是8位自动重装初值),因此可以支持更高的传输速度。,设置波特率的常用初始化片断如下:,MOV TMOD,#20H;设置定时器T1工作在方式2MOV TH1,#XXH;装载定时初值MOV TL1,#XXHSETB TR1;开启定时器T1MOV PCON,#80H;波特率倍增MOV SCON,#50H;设置串行口工作在方式1,【例7-4】若STC89C52单片机系统时钟频率fCLK为11.0592MHz,工作在12T模式,采用T1定时器工作在方式2作为波特率发生器,波特率为2400波特,求初值。解:取SMOD=0。将已知条件带入公式 解得X=244=F4H。另查表也可得。,【例7-5】设STC89C52单片机系统时钟频率fCLK为11.0592MHz,T2工作方式在波特率发生器方式,波特率为9600波特。,1设计分析:根据题意知T2工作波特率发生器方式,T2产生发送时钟和接收时钟,则TCLK=1、RCLK=1。(1)求定时初值:选择T2为定时模式,启动T2工作,即TR2=1我们选择向上计数,即DCEN=0,这时波特率计算公式如下:取SMOD=0,由于MCU选12T,则n=32,已知波特率为9600,fCLK为11.0592MHz令N=(RCAP2H,RCAP2L),则9600=,即 TH2=FFH,TL2=DCH,RCAP2H=FF,RCAP2L=DCH,(2)确定特殊功能寄存器T2CON、T2MOD值 T2CON=34H,(即TCLK=1,RCLK=1,TR2=1),T2MOD=00H(即DCEN=0)。,2程序清单,汇编程序InitUart:MOV SCON,#50H;/串行口工作在方式1 MOVT2MOD,#00/设置T2加法计数,时钟输出不使能 MOV T2CON,#34H/T2为波特率发生器并启动 T2计数MOVTH2,#0FFH/设置定时寄存器计数初值MOVTL2,#0DCH MOV RCAP2L,#0DCH/设置自动重装寄存器计数初值 MOVRCAP2H,#0FFHRET,C51程序void initUart(void)SCON=0 x50;T2MOD=0 x00 T2CON=0 x34;TH2=0 xff;TL2=0 xdc;RCAP2L=0 xdc;RCAP2H=0 xff;,7.5 STC89C52单片机之间的通信 复习:与串口通信相关寄存器:SCON(98H)PCON(87H),D7 D6 D5 D4 D3 D2 D1 D0SCON:SM0/FE SM1 SM2 REN TB8 RB8 TI RI位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H,D7 D6 D5 D4 D3 D2 D1 D0PCON SMOD SMOD0-与 串 行 通 信 无 关,7.5 STC89C52单片机之间的通信7.5.1 串行通信接口7.5.2 双机串行通信编程7.5.3 多机通信,7.5 STC89C52单片机之间的通信 单片机的串行通信接口设计时,需考虑如下问题:(1)确定通信双方的数据传输速率。(2)由数据传输速率确定采用的串行通信接口标准。(3)在通信接口标准允许的范围内确定通信的波特率。为减小波特率的误差,通常选用11.0592MHz的晶振频率。(4)根据任务需要,确定收发双方使用的通信协议。(5)通信线的选择。一般选用双绞线较好,并根据传输的距离选择纤芯的直径。如果空间的干扰较多,还要选择带有屏蔽层的双绞线。(6)通信协议确定后,最后进行通信软件设计。,7.5.1 串行通信接口1TTL电平通信接口 两个STC89C52单片机相距在1.5m之内,可直接用TTL电平传输方法实现双机通信。,以TTL电平串行传输数据的方式抗干扰性差,传输距离短且传输速率低。为提高串行通信的可靠性,增大串行通信的距离以及提高传输速率,一般都采用标准串行接口来实现串行通信。,2RS-232C接口 RS-232C在1969年发布。RS-232C规定任何一条信号线的电压均为负逻辑关系。即逻辑1,-3V-15V;逻辑0,+3V+15V。-3V+3V为过渡区,不作定义。,由于RS-232C接口标准出现较早,采用该接口存在以下问题:,(1)传输距离短,传输速率低(2)有电平偏移(3)抗干扰能力差,当单片机双机通信距离在1.515m之间时,可考虑用RS-232C标准接口实现点对点的双机通信。,为了使用RS-232C接口通信,必须在单片机系统中加入电平转换芯片,以实现TTL电平向RS-232C电平的转换。常见的TTL到RS-232C的电平转换器有MC1488、MC1489和MAX232A等芯片。,3RS-422A接口 RS-422A与RS-232C的主要区别是,收发双方的信号地不再共地,RS-422A采用了平衡驱动和差分接收的方法。用于数据传输的是两条平衡导线,这相当于两个单端驱动器。输入同一个信号时,其中一个驱动器的输出永远是另一个驱动器的反相信号。因此,两条线上传输的信号电平,当一个表示逻辑“1”时,另一条一定为逻辑“0”。若传输中,信号中混入干扰和噪声(共模形式),由于差分接收器的作用,就能识别有用信号并正确接收传输的信息,并使干扰和噪声相互抵消。,RS-422A与TTL电平转换常用的芯片为传输线驱动器SN75174或MC3487和传输线接收器SN75175或MC3486。RS-422A能在长距离、高速率下传输数据。它的最大传输率为10Mbps,电缆允许长度为12m,如果采用较低传输速率时,最大传输距离可达1219m。,4RS-485接口 RS-422A双机通信需四芯传输线,应用于长距离通信很不经济,因此在工业现场,通常采用双绞线传输的RS-485串行通信接口。RS-485是RS-422A的变型,它与RS-422A的区别:RS-422A为全双工,采用两对平衡差分信号线;RS-485为半双工,采用一对平衡差分信号线。,RS-485最大传输距离约为1219m,最大传输速率为10Mbps。通信线路要采用平衡双绞线。平衡双绞线的长度与传输速率成反比,在100kbps速率以下,才可能使用规定的最长电缆。只有在很短的距离下才能获得最大传输速率。一般100m长双绞线最大传输速率仅为1Mbps。,7.5.2 双机串行通信编程,【例7-6】假定有甲乙两机,以方式1进行异步通信,采用下图所示的双机串行通信电路,其中甲机发送数据,乙机接收数据。双方晶振频率为=11.0592MHz,通信波特率为2400 bps。甲机循环发送数字0F,乙机接收后返回接收值。若发送值与返回值相等,则继续发送下一数字,否则需重发当前数字。,数码管(7SEG-BCD)带译码电路可直接输入数据0F,无需显示字模)。,KeilC51,分析:串口、定时器初始化:,采用2400波特率 PCON=0,查表得TH1=TL1=0 xf4;T1采用方式2 TMOD=0 x20;串口工作在方式1,允许接收,清中断标志SCON=0 x50。,发送程序#include#define uchar unsigned charvoid time(unsigned int ucMs);/延时单位:msvoid initUart(void);/初始化串口波特率,使用定时器T1void main(void)uchar counter=0;time(1);/延时等待外围器件完成复位 initUart();while(1)SBUF=counter;/发送联络信号 while(TI=0);/等待发送完成 TI=0;/清TI标志位,采用查询法检查收发是否完成。发送值和接收值分别显示在双方LED数码管上;,程序清单:,while(RI=0);/等待乙机回答 RI=0;if(SBUF=counter)P2=counter;/显示已发送值 if(+counter15)counter=0;/修正计数器值 time(500);void initUart(void)/初始化串口波特率,使用定时器T1SCON=0 x50;/串口工作在方式1,接收允许PCON=0;/波特率不加倍TMOD=0 x20;/T1工作在方式2 TH1=0 xf4;TL1=0 xf4;TCON=0 x40;/TR1=1,接收程序#include#define uchar unsigned charvoid time(unsigned int ucMs);/延时单位:msvoid inituart(void);/初始化串口波特率,使用定时器T1void main(void)uchar receive;/定义接收缓冲time(1);/延时等待外围器件完成复位initUart();while(1)while(RI=1)/等待接收完成 RI=0;/清RI receive=SBUF;/取接收值SBUF=receive;/结果返送发送缓冲器while(TI=0);/等待发送结束TI=0;/清TIP2=receive;/显示接收值,【例7-7】甲乙两机以方式2进行双机串行通信中。要求用汇编语言编写发送中断和接收中断服务程序,以TB8作为奇偶校验位,采用偶校验。设第2组的工作寄存器区的R0作为发送数据区地址指针,第1组寄存器区的R1作为接收数据区的指针。,奇偶校验原理:若发送数据为0 x45(0100 0101B),其奇偶校验位P=1(包含奇数个1),将PTB8,发送时可连同数据0 x45一起发出。接收端可自动将其可编程位放入RB8中。只要将待测数据送入累加器Acc即可由硬件求出奇偶校验值(使P赋值),再与RB8进行比较便可判断收发过程是否有误。,PIPT1:PUSH PSW PUSH Acc SETB RS1 CLR RS0 CLR TI MOV A,R0,MOV C,P MOV TB8,C MOV SBUF,A INC R0 POP Acc POP PSW RETI,发送中断服务程序:,接收中断服务程序:,PITI:PUSH PSW PUSH Acc SETB RS0 CLR RS1 CLR RI MOV A,SBUF MOVC,P JNCL1 JNBRB8,ERP AJMP L2L1:JBRB8,ERP,L2:MOV R1,A;数据送内存 INC R1 POP Acc POP PSWRETIERP:;出错处理程序段入口 RETI,注意:改错:P160页,红色字体R1,7.5.3 多机通信,主从式通信系统:1主机+多从机;每个从机都被赋予唯一的地址。一般还要预留12个“广播地址”主机与各从机之间能实现双向通信,而各从机之间不能直接通信,只能通过主机才能沟通。,1多机通信原理 串行口控制寄存器SCON中的SM2为多机通信接口控制位.串行口以方式2或3接收时,若SM2=1,表示置多机通信功能位,这时出现两种可能情况。(1)接收到的第9位数据RB8为1时,数据才装入SBUF,并置位RI=1,向CPU发中断请求;(2)接收到的第9位数据RB8为0时,则不产生中断,信息抛弃.若SM2=0时,则接收到第9位数据RB8无论是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU处理。,多机通信系统示意图,TXD,TXD,TXD,RXD,RXD,RXD,TXD,RXD,主机,从机1,从机2,从机3,从机地址:,01H,02H,03H,1)各从机初始化:MOV SCON,#0B0H;或#0F0H,TXD,RXD,主机,2)主机发送信息:其中第9位数据TB8作为区分地址/数据的标识。TB8=1表示地址,TB8=0表示数据。例如:主机发送地址帧信息02H。02H是从机2的地址。,SBUF,1)各从机初始化:MOV SCON,#0B0H;或#0F0H,TXD,RXD,主机,2)主机发送信息:其中第9位数据TB8作为区分地址/数据的标识。TB8=1表示地址,TB8=0表示数据。例如:主机发送地址帧信息02H。02H是从机2的地址。,0,SBUF,1,0,0,0,0,0,0,1,RB8,1)各从机初始化:MOVSCON,#0B0H;或#0F0H。,TXD,RXD,主机,2)主机发送信息:其中第9位数据TB8作为区分地址/数据的标识。TB8=1表示地址,TB8=0表示数据。例如:主机发送地址帧信息02H。02H是从机2的地址。,3)各从机响应中断,在中断程序中判断接收到地址与本机相符?相符,SM2=0,不符,保持SM2=1不变。,4)发送的数据帧,因RB8=0,只有SM2=0的从机可接收,进入中断处理。,SBUF,RB8,1,02H,SM2=1,SM2=1,SM2=0,多机通信关键:主机第1次发出的地址信息要能被所有的从机响应,而第2次的数据信息只能被n#从机所响应多机通信控制位SM2对接收中断请求的管理功能。,【例7-8】设一主机与多台从机进行通信,通信各方的晶振频率为11.0592MHz,波特率发生器采用定时器2实现。假定各从机地址号分别为01、02、03,主机循环选定各从机进行通信。发送前,在P2口显示所呼叫的从机机号,主机发送的数据包格式如下:,从机以中断方式接收主机发送的首字节,然后在中断服务程序里用查询方式接收数据包的后续字节。收到完整数据包后,判别:1.数据包里的从机机号与本机机号是否匹配;2.校验和是否正确。若两条件均成立,则回送应答信息0 xA0与本机机号之和,同时将本机机号送P2口显示,表示主机正在与该从机通信;若两条件不同时成立,则将0 xFF送P2口显示,表示本机空闲。主机收到应答后,在P2口显示应答信息。,程序分析:初始化:串口工作在方式3,允许接收SCON=0 xF0。T2作为波特率发生器T2CON=00110100B=0 x34;9600波特率(RCAP2H,RCAP2L)为0FFDCH。,KeilC51,查表7-3,可得T2计数初值如下:,7.6 PC与单片机间的通信7.6.1 PC与单片机的点对点通信设计1.硬件接口电路 在功能比较复杂的控制系统和数据采集系统中,一般常用PC作为主机,单片机作为从机。单片机通过串行口与PC机的串行口相连,将采集到的数据传送至PC机,再在PC机上进行数据处理。由于单片机的输入输出是TTL电平,而PC机配置的都是RS-232标准串行接口。由于两者的电平不匹配,必须将单片机输出的TTL电平转换为RS-232电平。,“D”型9针插头引脚定义,2.程序设计思想 通信程序设计分为PC(上位机)程序设计与单片机(下位机)程序设计。为了充分发挥高级语言(如C、BASIC)编程简单、调试容易、制图作表能力强的优点和汇编语言执行速度快的特点,PC机软件可采用VC、VB等语言编写的主程序调用汇编程序的方法,即PC机的主程序采用C语言编写,通信子程序由PC机汇编语言编写。在实际开发调试单片机端的串口通信程序时,也可以使用STC系列单片机下载程序中内嵌的串口调试程序或其它

    注意事项

    本文(STC89C52单片机串行通信.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开