




已阅读5页,还剩96页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,7.1串行通信概述7.2串行口的结构7.3串行口的四种工作方式7.4波特率的设定与计算7.5STC89C52单片机之间的通信7.6PC与单片机间的通信,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:ucharcounter;待发送存放变量SBUF=counter;完成一次数据发送counter=SBUF;完成一次数据接收,汇编:MOVSBUF,#DATA;完成一次数据发送MOVA,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(SM0SM1=00)中断请求标志位清0(RI=0,TI=0)禁止接收数据(REN=0),串行数据输出时,一组数据发送完成,TI会被置1。可以采用中断法或查询方式进行判别,满足条件,发送下一组数据,否则,循环等待直到TI置1。,方式0发送串行输出低位在先,高位在后。而164是先串入的数进入最高位。若需要实现下图效果(仅D1点亮),则164应输出11111110B,发送端数据应为LED=01111111B;欲使LED由上向下点亮,发送端数据应右移且最高位置1。(LED1)|0 x80;0 x80=10000000B。,KeilC51,#includesbitMR=P27;voidtime(unsignedintucMs);voidmain()unsignedcharindex,LED;SCON=0;MR=1;while(1)LED=0 x7f;for(index=0;index1)|0 x80);TI=0;time(1000);,voidtime(unsignedintucMs)#defineDELAYTIMES239unsignedcharucCounter;while(ucMs!=0)for(ucCounter=0;ucCounter15)counter=0;/修正计数器值time(500);voidinitUart(void)/初始化串口波特率,使用定时器T1SCON=0 x50;/串口工作在方式1,接收允许PCON=0;/波特率不加倍TMOD=0 x20;/T1工作在方式2TH1=0 xf4;TL1=0 xf4;TCON=0 x40;/TR1=1,接收程序#include#defineucharunsignedcharvoidtime(unsignedintucMs);/延时单位:msvoidinituart(void);/初始化串口波特率,使用定时器T1voidmain(void)ucharreceive;/定义接收缓冲time(1);/延时等待外围器件完成复位initUart();while(1)while(RI=1)/等待接收完成RI=0;/清RIreceive=SBUF;/取接收值SBUF=receive;/结果返送发送缓冲器while(TI=0);/等待发送结束TI=0;/清TIP2=receive;/显示接收值,【例7-7】甲乙两机以方式2进行双机串行通信中。要求用汇编语言编写发送中断和接收中断服务程序,以TB8作为奇偶校验位,采用偶校验。设第2组的工作寄存器区的R0作为发送数据区地址指针,第1组寄存器区的R1作为接收数据区的指针。,奇偶校验原理:若发送数据为0 x45(01000101B),其奇偶校验位P=1(包含奇数个1),将PTB8,发送时可连同数据0 x45一起发出。接收端可自动将其可编程位放入RB8中。只要将待测数据送入累加器Acc即可由硬件求出奇偶校验值(使P赋值),再与RB8进行比较便可判断收发过程是否有误。,PIPT1:PUSHPSWPUSHAccSETBRS1CLRRS0CLRTIMOVA,R0,MOVC,PMOVTB8,CMOVSBUF,AINCR0POPAccPOPPSWRETI,发送中断服务程序:,接收中断服务程序:,PITI:PUSHPSWPUSHAccSETBRS0CLRRS1CLRRIMOVA,SBUFMOVC,PJNCL1JNBRB8,ERPAJMPL2L1:JBRB8,ERP,L2:MOVR1,A;数据送内存INCR1POPAccPOPPSWRETIERP:;出错处理程序段入口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)各从机初始化:MOVSCON,#0B0H;或#0F0H,TXD,RXD,主机,2)主机发送信息:其中第9位数据TB8作为区分地址/数据的标识。TB8=1表示地址,TB8=0表示数据。例如:主机发送地址帧信息02H。02H是从机2的地址。,SBUF,1)各从机初始化:MOVSCON,#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)为0FF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国农副食品加工专用设备制造市场前景预测及投资规划研究报告
- 2025年高校产学研合作技术转移与成果转化中的产学研合作项目协同创新模式报告
- 学校禁毒宣传教育方案
- 2020-2025年中国园林施工养护行业市场调查研究及投资战略咨询报告
- 中国激光打标机行业市场全景分析及投资策略研究报告
- 县城供水管网改造工程可行性研究报告
- 功能性吸水树脂工程融资投资立项项目可行性研究报告(齐鲁咨询)
- 儿科护理工作方案模板
- 幼儿园班级环境创设计划方案
- 2025年中国锻制接管座行业市场发展前景及发展趋势与投资战略研究报告
- DB3301T 0378-2022 城市照明质量评价规范
- 【指导规则】央企控股上市公司ESG专项报告参考指标体系
- 《慢性乙型肝炎防治指南(2022年版)-》解读
- 制造业数字化生产与质量管理方案设计
- 部编版初中语文7-9年级教材必背古诗词、古文99篇详细解析及欣赏
- 划线及交通设施工程施工方案
- 知识产权尽职调查报告
- 炎症性肠病肠内营养治疗
- 电子病历信息安全管理制度
- 北师大版小学数学六年级上册第一单元圆《欣赏与设计》公开课 教学课件
- 个人车辆买卖合同协议书范本
评论
0/150
提交评论