【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt

上传人:sccc 文档编号:6098854 上传时间:2023-09-24 格式:PPT 页数:119 大小:1.67MB
返回 下载 相关 举报
【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt_第1页
第1页 / 共119页
【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt_第2页
第2页 / 共119页
【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt_第3页
第3页 / 共119页
【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt_第4页
第4页 / 共119页
【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt》由会员分享,可在线阅读,更多相关《【大学课件】单片机原理及应用 串行接口及串行通信技术P119.ppt(119页珍藏版)》请在三一办公上搜索。

1、第9章 串行接口及串行通信技术,教学目标9.1 串行通信基础知识 9.2 AT89C51的串行接口 9.3 AT89C51串行接口的应用与编程9.4 多机通信 9.5 PC机与单片机间的串行通信9.6 实训指导 本章小结思考题与习题,http:/,教学目标,通过本章教学,要求达到以下目标:串行通信的基本概念:了解并行/串行通信的 概念;理解串行通信中的异步/同步通信的基本概念;理解波特率的概念,学会计算波特率的方法;4了解串行通信的三种制式及校验方法。,http:/,AT89C51串行口:串行接口结构及其功能;理解串行数据缓冲器SBUF的功能和读写方法;熟悉SCON的结构、控制作用和设置方法;

2、了解电源控制寄存器PCON,熟悉SMOD位。串行口的工作方式:理解串行通信4种工作 方式的特点和区别;掌握串行工作方式0的应 用;熟悉串行工作方式1、2、3应用程序的 编制方法。,http:/,4.多机通信原理:理解多机通信的原理、过程和编制多机通信应用程序的方法。,http:/,计算机与外界的信息交换称为通信。通信的基本方式可分为并行通信和串行通信两种。所谓并行通信是指数据的各位同时在多根数据线上发送或接收。串行通信是数据的各位在同一根数据线上依次逐位发送或接收。,9.1 串行通信基础知识,http:/,目前串行通信在单片机双机、多机以及单片机与PC机之间的通信等方面得到了广泛应用。,htt

3、p:/,9.1.1 异步通信和同步通信,串行通信按同步方式可分为异步通信和同步通信两种基本通信方式。,1.同步通信(Synchronous Communication)同步通信是一种连续传送数据的通信方式,一次通信传送多个字符数据,称为一帧信息。数据传输速率较高,通常可达56000bps或更高。其缺点是要求发送时钟和接收时钟保持严格同步。,http:/,图9.3 同步通信数据传送格式,2.异步通信(Asynchronous Communication)在异步通信中,数据通常是以字符或字节为单位组成数据帧进行传送的。收、发端各有一套彼此独立,互不同步的通信机构,由于收发数据的帧格式相同,因此可以

4、相互识别接收到的数据信息。,同步通信的数据帧格式如图9.3所示。,http:/,异步通信信息帧格式如图9.4所示。,http:/,(1)起始位:在没有数据传送时,通信线上处于逻辑“1”状态。当发送端要发送1个字符数据时,首先发送1个逻辑“0”信号,这个低电平便是帧格式的起始位。其作用是向接收端表示发送端开始发送一帧数据。接收端检测到这个低电平后,就准备接收数据信号。,http:/,(2)数据位:在起始位之后,发送端发出(或接收端接收)的是数据位,数据的位数没有严格的限制,58位均可。由低位到高位逐位传送。,(3)奇偶校验位:数据位发送完(接收完)之后,可发送一位用来检验数据在传送过程中是否出错

5、的奇偶校验位。奇偶校验是收发双方预先约定好的有限差错检验方式之一。有时也可不用奇偶校验。,http:/,(4)停止位:字符帧格式的最后部分是停止位,逻辑“1”电平有效,它可占1/2位、1位或2位。停止位表示传送一帧信息的结束,也为发送下一帧信息作好准备。,http:/,9.1.2 串行通信的波特率,波特率(Baud Rate)是串行通信中一个重要概念,它是指传输数据的速率,亦称比特率。波特率的定义是每秒传输二进制数码的位数。如:波特率为1200bps是指每秒钟能传输1200位二进制数码。,波特率的倒数即为每位数据传输时间。例如:波特率为1200bps,每位的传输时间为:,http:/,波特率和

6、字符的传输速率不同,若采用图9.4的数据帧格式,并且数据帧连续传送(无空闲位),则实际的字符传输速率为1200/11=109.09帧/秒。,波特率也不同于发送时钟和接收时钟频率。同步通信的波特率和时钟频率相等,而异步通信的波特率通常是可变的。,http:/,9.1.3 串行通信的制式,1.单工制式(Simplex)单工制式是指甲乙双方通信只能单向传送数据。单工制式如图9.5所示。,在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可分为三种制式。,http:/,2.半双工制式(Half duplex)半双工制式是指通信双方都具有发送器和接收器,双方既可发送也可接收,但接收和发送

7、不能同时进行,即发送时就不能接收,接收时就不能发送。半双工制式如图9.6所示。,http:/,3.全双工制式(Full duplex)全双工制式是指通信双方均设有发送器和接收器,并且将信道划分为发送信道和接收信道,两端数据允许同时收发,因此通信效率比前两种高。全双工制式如图9.7所示。,http:/,9.1.4 串行通信的校验,串行通信的目的不只是传送数据信息,更重要的是应确保准确无误地传送。因此必须考虑在通信过程中对数据差错进行校验,因为差错校验是保证准确无误地通信的关键。常用差错校验方法有奇偶校验、累加和校验以及循环冗余码校验等。,http:/,1.奇偶校验,奇偶校验的特点是按字符校验,即

8、在发送每个字符数据之后都附加一位奇偶校验位(1或0),当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;反之则为偶校验。收、发双方应具有一致的差错检验设置,当接收1帧字符时,对1的个数进行检验,若奇偶性(收、发双方)一致则说明传输正确。奇偶校验只能检测到那种影响奇偶位数的错误,比较低级且速度慢,一般只用在异步通信中。,http:/,2.累加和校验,累加和校验是指发送方将所发送的数据块求和,并将“校验和”附加到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方的“校验和”进行比较,若两者相同,表示传送正确,若不同则表示传送出了差错。“校验和”的加法运算可用逻辑加,也可

9、用算术加。累加和校验的缺点是无法检验出字节或位序的错误。,http:/,3.循环冗余码校验(CRC),循环冗余码校验的基本原理是将一个数据块看成一个位数很长的二进制数,然后用一个特定的数去除它,将余数作校验码附在数据块之后一起发送。接收端收到该数据块和校验码后,进行同样的运算来校验传送是否出错。目前CRC已广泛用于数据存储和数据通信中,并在国际上形成规范,市面上已有不少现成的CRC软件算法。,http:/,9.2 AT89C51的串行接口,AT89C51内部有一个可编程全双工串行通信接口。该部件不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。下面将对其内部结构、工作方式以及波特

10、率进行介绍。,http:/,9.2.1 串行接口的结构及功能,图9.8 AT89C51串行口结构框图,http:/,1.串行数据缓冲器SBUF SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器,以便能以全双工方式进行通信。此外,在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,这样可以避免在数据接收过程中出现帧重叠错误。发送数据时,由于CPU是主动的,不会发生帧重叠错误,因此发送电路不需要双重缓冲结构。,http:/,在逻辑上,SBUF只有一个,它既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H。但在物理结构上,则有两个完全独立的SBUF,一个是发送缓冲寄存器S

11、BUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别访问上述两个不同的寄存器。,http:/,2.串行控制寄存器SCON,串行控制寄存器SCON用于设置串行口的工作方式、监视串行口的工作状态、控制发送与接收的状态等。它是一个既可以字节寻址又可以位寻址的8位特殊功能寄存器。其格式如图9.9所示。,http:/,http:/,(1)SM0 SM1:串行口工作方式选择位。其状态组合所对应的工作方式如表9-1所示。,表9-1 串行口工作方式,http:/,(2)SM2

12、:多机通信控制器位。在方式0中,SM2必须设成0。在方式1中,当处于接收状态时,若SM2=1,则只有接收到有效的停止位“1”时,RI才能被激活成“1”(产生中断请求)。在方式2和方式3中,若SM2=0,串行口以单机发送或接收方式工作,TI和RI以正常方式被激活并产生中断请求;若SM2=1,RB8=1时,RI被激活并产生中断请求。,http:/,(4)TB8:方式2和方式3中要发送的第9位数据。该位由软件置位或复位。在方式2和方式3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=1表示地址,TB8=0表示数据。TB8还可用作奇偶校验位。,(3)R

13、EN:串行接受允许控制位。该位由软件置位或复位。当REN=1,允许接收;当REN=0,禁止接收。,http:/,(6)TI:发送中断标志位。TI=1,表示已结束一帧数据发送,可由软件查询TI位标志,也可以向CPU申请中断。注意:TI在任何工作方式下都必须由软件清0。,(5)RB8:接收数据第9位。在方式2和方式3时,RB8存放接收到的第9位数据。RB8也可用作奇偶校验位。在方式1中,若SM2=0,则RB8是接收到的停止位。在方式0中,该位未用。,http:/,(7)RI:接收中断标志位。RI=1,表示一帧数据接收结束。可由软件查询RI位标志,也可以向CPU申请中断。注意:RI在任何工作方式下也

14、都必须由软件清0。在AT89C51中,串行发送中断TI和接收中断RI的中断入口地址是同是0023H,因此在中断程序中必须由软件查询TI和RI的状态才能确定究竟是接收还是发送中断,进而作出相应的处理。单片机复位时,SCON所有位均清0。,http:/,图9.10 电源控制寄存器PCON的格式,SMOD:串行口波特率倍增位。在工作方式1工作方式3时,若SMOD=1,则串行口波特率增加一倍。若SMOD=0,波特率不加倍。系统复位时,SMOD=0。,2.电源控制寄存器PCON,http:/,9.2.2 串行口工作方式,AT89C51串行通信共有4种工作方式,它们分别是方式0、方式1、方式2和方式3,由

15、串行控制寄存器SCON中的SM0 SM1决定,如表9-1所示。,http:/,1.工作方式0,在方式0下,串行口作为同步移位寄存器使用。此时SM2、RB8、TB8均应设置为0。,(1)发送:TI=0时,执行“MOV SBUF,A”启动发送,8位数据由低位到高位从RXD引脚送出,TXD发送同步脉冲。发送完后,由硬件置位TI。,(2)接收:RI=0,REN=1时启动接收,数据从RXD输入,TXD输出同步脉冲。8位数据接收完,由硬件置位RI。可通过“MOV A,SBUF”读取数据。,http:/,方式0的波特率为fosc/12,即一个机器周期发送或接收一位数据。,应当指出:方式0并非是同步通信方式。

16、它的主要用途是外接同步移位寄存器,以扩展并行I/O口。,http:/,2.工作方式1,方式1是一帧10位的异步串行通信方式,包括1个起始位(0),8个数据位和一个停止位(1),其帧格式如下:,图9.11 方式1数据帧格式,http:/,(1)数据发送,当TI=0时,执行“MOV SBUF,A”指令后开始发送,由硬件自动加入起始位和停止位,构成一帧数据,然后由TXD端串行输出。发送完后,TXD输出线维持在“1”状态下,并将SCON中的TI置1,表示一帧数据发送完毕。,http:/,(2)数据接收,RI=0,REN=1时,接收电路以波特率的16倍速度采样RXD引脚,如出现由“1”变“0”跳变,认为

17、有数据正在发送。,在接收到第9位数据(即停止位)时,必须同时满足以下两个条件:RI=0和SM2=0或接收到的停止位为“1”,才把接收到的数据存入SBUF中,停止位送RB8,同时置位RI。若上述条件不满足,接收到的数据不装入SBUF被舍弃。在方式1下,SM2应设定为0。,http:/,(3)波特率,波特率=2SMOD(T1溢出率)/32,http:/,3.工作方式2和方式3,工作方式2和方式3都是11位异步收发串行通信方式,两者的差异仅在波特率上有所不同。,方式2:波特率=2SMODfosc/64(SMOD=0或1),http:/,(1)数据发送,TI=0,发送数据前,先由软件设置TB8,可使用

18、如下指令完成:SETB TB8;将TB8位置1 CLR TB8;将TB8位置0 然后再向SBUF写入8位数据,并以此来启动串行发送。一帧数据发送完毕后,CPU自动将TI置1,其过程与方式1相同。,http:/,(2)数据接收,REN=1,RI=0时,启动接收 若SM2=0,接收到的8位数据送SBUF,第9位数 据送RB8。若SM2=1,接收到的第9位数据为0,数据不送SBUF;接收到的第9位数据为1,数据送SBUF,第9位送RB8。,http:/,对波特率需要说明的是,当串行口工作在方式1或方式3,且要求波特率按规范取1200、2400、4800、9600时,若采用晶振12MHz和6MHz,按

19、上述公式算出的T1定时初值将不是一个整数,因此会产生波特率误差而影响串行通信的同步性能。解决的方法只有调整单片机的晶振频率fosc,为此有一种频率为11.0592MHz的晶振,这样可使计算出的T1初值为整数。表9-2列出了串行方式1或方式3在不同晶振时的常用波特率和误差。,http:/,表9.2 常用波特率和误差,http:/,9.3.1 工作方式0的应用,串行口工作方式0主要用于扩展并行I/O接口。扩展成并行输出口时,需要外接一片8位串行输入并行输出的同步移位寄存器74LS164或CD4094。扩展成并行输入口时,需要外接一片并行输入串行输出的同步移位寄存器74LS165或CD4014。,9

20、.3 AT89C51串行接口的应用与编程,http:/,例9.1 利用串行口工作在方式0,外扩一片74LS164构成一个3位LED动态显示器,并将片内RAM显示单元65H、66H和67H单元中的段码输出显示。其硬件电路如图9.12所示。,http:/,http:/,ORG 0100HSTPRT:MOV SCON,#00H;串口工作方式0 SETB P1.2;消去最高显示位 SETB P1.1;消去次高显示位 MOV SBUF,65H;传送最低显示位 JNB TI,$;等待发送 CLR P1.0;最低位显示 CLR TI;清中断标志位 LCALL DSSJ;调延时子程序 SETB P1.0;消去

21、最低显示位 MOV SBUF,66H;传送中间显示位,http:/,JNB TI,$;等待传送结束 CLR P1.1;显示中间位 CLR TI;清中断标志位 LCALL DSSJ;调延时子程序 SETB P1.1;消去中间显示位 MOV SBUF,67H;传送最高显示位 JNB TI,$;等待传送结束 CLR P1.2;显示最高位 CLR TI;清中断标志位 LCALL DSSJ SETB P1.2 RET,点击观看仿真演示,http:/,例9.2 A、B两台单片机,均采用11.0592MHz晶振。A机以2400bps波特率将内部RAM中30H至39H的10个字节及校验和经串行口发送给B机,B

22、机正确接收后存入片内RAM的30H至39H单元,并同时显示其中的前8位数据。,A、B两机的RXD、TXD交叉相连并共地。两机串行口均设置为方式1,定时器T1定时初值为F4H,两机采用查询控制方式程序如下:,9.3.2 工作方式1的应用,http:/,;A机发送程序:ORG 0 MOV R0,#30H;R0指向数据块首址 MOV R7,#0AH;循环次数为10次 MOV A,#1;初值为1MAIN:MOV R0,A;设置数据初值为1A INC R0 INC A DJNZ R7,MAIN MOV TMOD,#20H;T1定时方式2,http:/,MOV TL1,#0F4H;波特率为1200bps

23、MOV TH1,#0F4H SETB TR1;启动T1 MOV SCON,#40H;串口方式1 MOV R0,#30H;R0指向发送数据块首址 MOV R1,#0AH;数据块长度为10 MOV 70H,#00H;校验和清0DWFP:MOV A,R0;数据送A MOV SBUF,A;启动串口发送 ADD A,70H;求校验和,http:/,MOV 70H,AJNB TI,$;等待发送完毕CLR TI;清发送中断标志INC R0;R0指向下一字节数据DJNZ R1,DWFP;10个字节数据发送完?MOV SBUF,A;发送校验和JNB TI,$;等待发送完毕CLR TI;清发送中断标志SJMP$;

24、停机END,http:/,;B机接收并显示程序ORG 0;*主程序*MOV TMOD,#20H;T1定时方式2MOV TL1,#0F4H;串口波特率为2400bpsMOV TH1,#0F4HSETB TR1;启动T1MOV SCON,#50H;串口方式1,允许接收MOV R0,#30H;R0指存放接收数据首地址MOV R1,#0AH;接收数据块长度为10,http:/,MOV 70H,#00H;校验和清0DWFP:JNB RI,$;等待接收MOV A,SBUF;读取接收数据MOV R0,A;保存至接收数据块单元ADD A,70H;求校验和MOV 70H,ACLR RI;清接收中断标志INC R

25、0;R0指向下一单元地址DJNZ R1,DWFP;10个数据接收完?JNB RI,$;等待接收校验和,http:/,MOV A,SBUF;读取校验和 CLR REN;禁止接收数据 CJNE A,70H,PEND;校验和不正确转PENDLOP:LCALL DISP;校验和正确则调显示 SJMP LOPPEND:SJMP$;*显示子程序(分两屏显示)*DISP:MOV R0,#30HDISP1:MOV R1,#08H MOV R2,#01H MOV DPTR,#TAB,http:/,LOOP:MOV A,R2 MOV P2,A RL A MOV R2,A MOV A,R0 MOVC A,A+DPT

26、R MOV P1,A INC R0 LCALL DELY DJNZ R1,LOOP RET,http:/,;*延时子程序*DELY:MOV R7,#10DEL1:MOV R6,#100 DJNZ R6,$DJNZ R7,DEL1 RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H DB 0F8H,80H,90H,88H,83H,0C6H,0A1H DB 86H,8EH,0BFH,8CH,0CH,0FFH END,点击观看仿真演示,http:/,9.3.3 工作方式2与工作方式3的应用,方式2与方式3都是11位异步通信方式,这两种方式的区别仅在于波特率不同。方式2

27、的波特率只有固定的两种,而方式3的波特率则可由用户自行设定。,http:/,例9.3 利用串行口方式2编制一发送程序,将片内RAM中60H6FH单元的数据串行发送出去,第9数据位TB8作偶校验位。根据要求,将串行口设置为方式2、单工发送,则SCON控制字为80H。波特率选为fosc/64。,http:/,采用中断方式发送的主程序和中断程序如下:ORG 0000H AJMP MAIN;转主程序 ORG 0023H;串口中断服务程序 INC R0;发送数据地址增1 MOV A,R0;取出待发数据 MOV C,PSW.0;将奇偶位送TB8 MOV TB8,C MOV SBUF,A;发送数据 DJNZ

28、 R7,SSJS;判断数据是否发送完,http:/,CLR ES;发送完关中断SSJS:CLR TI;清中断标志 RETIMAIN:ORG 0100H;主程序 MOV SP,#20H;置堆栈指针 MOV SCON,#80H;串口设置为方式2 MOV PCON,#00H;波特率选为fosc/64 MOV R0,#60H;数据块首址送R0 MOV R7,#10H;数据块长度送R7 SETB EA;开总中断 SETB ES;开串行口中断,http:/,MOV A,R0;取出待发数据 MOV C,PSW.0;将奇偶位送TB8 MOV TB8,C MOV SBUF,A;发送数据 SJMP$;等待中断 E

29、ND,http:/,例9.4 试编制串行口在方式3下接收数据块的程序。设单片机晶振为11.0592MHz,波特率为2400 b/s,接收的数据存在片内RAM的40H起始单元的一段区间内,数据块长度由发送方先发送过来(不超过允许值),每接收一个数据都核对其奇偶校验位,正确则存储数据,否则给出出错标志。解:根据要求,设置T1工作于方式2,当SMOD=0时,T1计数初值为F4H。,http:/,查询法源程序如下:START:MOV TMOD,#20H;T1定时方式2 MOV TL1,#0F4H;置T1计数初值 MOV TH1,#0F4H SETB TR1;启动T1 MOV SCON,#0D0H;串口

30、方式3,允许接收 MOV PCON,#00H;设SMOD=0 MOV R0,#40H;接收数据区首址送R0 JNB RI,$;等待接收数据块长度 CLR RI;接收后清RI,http:/,MOV A,SBUF;数据块长度存R7中 MOV R7,A MAR0:JNB RI,$;等待接收数据 CLR RI;清RI MOV A,SBUF;将接收字符读入A JB PSW.0,MAR1;进行奇偶位校验 JB RB8,MAR3 SJMP MAR2 MAR1:JNB RB8,MAR3 MAR2:MOV R0,A;校验正确保存数据,http:/,INC R0;存储单元地址增1 CLR PSW.5;设置正确的标

31、志 DJNZ R7,MAR0;未接收完,继续 SJMP$;接收完停机 MAR3:SETB PSW.5;置校验出错标志 SJMP$;停机 END,http:/,9.4 多机通信,双机通信时,两台单片机地位是平等的,此时,两台单片机的串行口均可工作于方式1。多机通信是指一台主机和多台从机之间的通信。而在多机通信中,有主机和从机之分,多机通信时,主机发送的信息可以传送到各个从机,而各从机发送的信息只能被主机接收,其中的主要问题是怎样识别地址和怎样维持主机与指定从机之间的通信。,http:/,1.多机通信连接电路,在串行方式2或方式3条件下,可实现一台主机和多台从机之间的通信,其连接电路如图9.13所

32、示。,http:/,2.多机通信原理,多机通信时,主机向从机发送的信息分为地址帧和数据帧两类,以第9位可编程TB8作区分标志,TB8=0,表示数据;TB8=1,表示地址。多机通信充分利用了89C51串行控制寄存器SCON中的多机通信控制位SM2的特性。当SM2=1时,CPU接收的前8位数据是否送入SBUF取决于接收的第9位RB8的状态:若RB8=1,将接收到的前8位数据送入SBUF,并置位RI产生中断请求;若,http:/,RB8=0,则接收到的前8位数据丢弃。即当从机SM2=1时,从机只能接收主机发送的地址帧(RB8=1),对数据帧(RB8=0)不予理睬。当从机SM2=0时,从机可接收主机发

33、送的所有信息。,通信开始时,主机首先发送地址帧。由于各从机的SM2=1和RB8=1,所以各从机均分别发出串行接收中断请求,通过串行中断服务程序来判断主机发送的地址与本从机地址是否相符。如果相符,则把自身的SM2清0,以准备接收随后传,http:/,送来的数据帧。其余从机由于地址不符,则仍保持SM2=1状态,因而不能接收主机传送来的数据帧。这就是多机通信中主、从机一对一的通信情况。这种通信只能在主、从机之间进行,如果想在两个从机之间进行通信,则要通过主机作中介才能实现。,http:/,3.多机通信过程,主、从机工作于方式2或方式3,主机置 SM2=0,REN=1;从机置SM2=1,REN=1。(

34、2)主机置位TB8=1,向从机发送寻址地址帧,各从机因满足接收条件(SM2=1,RB8=1),从而接收到主机发来的地址,并与本机地址进行比较。(3)地址一致的从机(被寻址机)将SM2清0,并向主机返回地址,供主机核对。地址不一致的从机(未被寻址机)保持SM2=1。,http:/,(4)主机核对返回的地址,若与此前发出的地址一致则准备发送数据;若不一致则返回(2)重新发送地址帧。(5)主机向从机发送数据,此时主机的TB8=0,只有被选中的那台从机能接收到该数据。其他从机则舍弃该数据。(6)本次通信结束后,从机重新置SM2=1,等待下次通信。,http:/,例9.5 按照图9.13,编写主机向从机

35、1发送数据的程序,波特率为1200bps,从机1的地址为01H,晶振fosc为11.0592MHz。,分析:按照波特率的要求,主、从机串行口均应工作于方式3,定时器T1工作于方式2,定时初值为E8H。初始化时,主机置SM2=0,TB8=1,REN=1。从机置SM2=1,REN=1。主机发送的数据位于30H单元,从机接收后存于30H区域内。主机程序框图及源程序如下:,http:/,图9.14 例9.5程序框图,http:/,;主程序 ORG 0000H LJMP START ORG 0020HSTART:MOV TMOD,#20H;T1定时方式2 MOV TH1,#0E8H;波特率为1200bp

36、s MOV TL1,#0E8H SETB TR1;启动T1 MOV SCON,#0D8H;SM2=0,REN=1,TB8=1 MOV PCON,#00H;波特率不加倍,http:/,MOV R0,#30H;发送数据单元地址送R0 MOV R1,#01H;从机地址送R1 ACALL TRAN;调发送数据子程序;其他功能程序段 SJMP$;停机;发送数据子程序 TRAN:MOV A,R1;从机地址送A SETB TB8;TB8置1,发送地址帧 MOV SBUF,A;启动发送 JNB TI,$;等待发送完 CLR TI;软件清TI,http:/,JNB RI,$;等待接收从机发回确认地址 CLR R

37、I;软件清RI MOV A,SBUF;读取地址 XRL A,R1;核对地址是否相同 JZ TRA1;相同,转 SJMP TRAN;地址不同,转重发地址TRA1:CLR TB8;TB8清0,发送数据帧 MOV A,R0;读取待发送数据 MOV SBUF,A;启动发送 JNB TI,$;等待数据发送完 CLR TI;软件清发送中断标志 RET;返回,http:/,从机源程序如下:,;主程序 ORG 0000H LJMP START ORG 0023H;串口中断入口地址 LJMP SEVT0 ORG 0030HSTART:MOV TMOD,#20H;T1定时方式2 MOV TH1,#0E8H;波特率

38、为1200bps MOV TL1,#0E8H SETB TR1;启动T1,http:/,MOV SCON,#0F8H;SM2=1,REN=1,TB8=1 MOV PCON,#00H;波特率不加倍 MOV R0,#30H;R0指向数据存放单元 SETB EA;开串口中断 SETB ES SJMP$;停机;串口中断服务程序SEVT0:JB RI,SEVT1;是接收中断转SEVT1 CLR TI;是发送中断,清TI RETI;返回,http:/,SEVT1:CLR RI;清RI MOV A,SBUF;读取数据 JB RB8,SEVT2;是地址帧,转SEVT2 MOV R0,A;数据存于R0所指单元

39、SETB SM2;一次通信完成,重置SM2 RETI;返回SEVT2:XRL A,#01H;核对是否本机地址 JZ SEVT3;是本机地址,转 SETB SM2;不是本机地址,SM2置1 RETI,http:/,SEVT3:CLR SM2;是本机地址,SM2清0 MOV A,#01H;向主机发确认地址 MOV SBUF,A RETI,http:/,在实际应用中,上面介绍的这种多机通信因受单片机功能和通信距离短等的限制,很少被采用。在一些较大的测控系统中,常将单片机作为从机(下位机)直接用于被控对象的数据采集与控制,而把PC机作为主机(上位机)用于数据处理和对从机的管理,它们之间的信息交换主要采

40、用串行通信总线结构。,http:/,9.5 PC机与单片机间的串行通信,近年来,在智能仪器仪表、数据采集、嵌入式自动控制等场合,越来越普遍应用单片机作核心控制部件。但当需要处理较复杂数据或要对多个采集的数据进行综合处理以及需要进行集散控制时,单片机的算术运算和逻辑运算能力都显得不足,这时往往需要借助计算机系统。将单片机采集的数据通过串行口传送给PC机,由PC机高级语言或数据库语言对数据进行处理,或者实现,http:/,PC机对远端单片机进行控制。因此,实现单片机与PC机之间的远程通信更具有实际意义。单片机中的数据信号电平都是TTL电平,这种电平采用正逻辑标准,即约定2.4V表示逻辑1,而0.5

41、V表示逻辑0,这种信号只适用于通信距离很短的场合,若用于远距离传输必然会使信号衰减和畸变。因此,在实现PC机与单片机之间通信或单片机与单片机之间远距离通信时,通常采用标准串行总线通信接口,比如RS-232C、,http:/,RS-422、RS-423、RS-485等。其中RS-232C原本是美国电子工业协会(Electronic Industry Association,简称EIA)的推荐标准,现已在全世界范围内广泛采用,RS-232C是在异步串行通信中应用最广的总线标准,它适用于短距离或带调制解调器的通信场合。,http:/,9.4.1 RS-232C总线标准,RS-232C实际上是串行通信

42、的总线标准。该总线标准定义了25条信号线,使用25个引脚的连接器。各信号引脚的定义见表9.3。,http:/,表9.3 RS-23C引脚信号定义,http:/,除信号定义外,RS-232C标准的其它规定还有:(1)RS-232C 是一种电压型总线标准,它采用负逻辑标准:+3V+25V表示逻辑0(space);-3V-25V表示逻辑1(mark)。噪声容限为2V。(2)标准数据传送速率有:50,75,110,150,300,600,1200,2400,4800,9600,19200bit/s。(3)采用标准的25芯插头座(DB-25)进行连接,因此该插头座也称之为RS-232C连接器。,http

43、:/,表9.3 RS-232C标准中许多信号是为通信业务或信息控制而定义的,在计算机串行通信中主要使用了如下信号:(1)数据传送信号:发送数据(TXD);接收数据(RXD)。(2)调制解调器控制信号:请求发送(RTS);清除发送(CTS);数据通信设备准备就绪(DSR);数据终端准备就绪(DTR)。(3)定位信号:接收时钟(RXC);发送时钟(TXC)。(4)信号地GND。,http:/,图9.15 微机9针D形串口连接器,http:/,9.4.2 RS-232C接口电路,由于RS-232C信号电平(EIA)与AT89C51单片机信号电平(TTL)不一致,因此,必须进行信号电平转换。实现这种电

44、平转换的电路称为RS-232C接口电路。一般有两种形式:一种是采用运算放大器、晶体管、光电隔离器等器件组成的电路来实现;另一种是采用专门集成芯片(如MC1488、MC1489、MAX232等)来实现。下面介绍由专门集成芯片MAX232构成的接口电路。,http:/,1.MAX232接口电路,MAX232芯片是MAXIM公司生产的具有两路接收器和驱动器的IC芯片,其内部有一个电源电压变换器,可以将输入+5V的电压变换成RS-232C输出电平所需的12V电压。所以采用这种芯片来实现接口电路特别方便,只需单一的+5V电源即可。,http:/,MAX232芯片的引脚结构如图9.16所示。其中管脚16(

45、C1+、V+、C1-、C2+、C2-、V-)用于电源电压转换,只要在外部接入相应的电解电容即可;管脚710和管脚1114构成两组TTL信号电平与RS-232信号电平的转换电路,对应管脚可直接与单片机串行口的TTL电平引脚和PC机的RS-232电平引脚相连。具体连线如图9.17所示。,http:/,图9.16 MAX232引脚图,http:/,2.PC机与89C51单片机串行通信电路,用MAX232芯片实现PC机与AT89C51单片机串行通信的典型电路如图9.16所示。图中外接电解电容C1、C2、C3、C4用于电源电压变换,可提高抗干扰能力,它们可取相同容量的电容,一般取1.0F/16V。电容C

46、5的作用是对+5V电源的噪声干扰进行滤波,一般取0.1F。选用两组中的任意一组电平转换电路实现串行通信,如图,http:/,中选Tlin、Rlout分别与AT89C51的TXD、RXD相连,Tlout、Rlin分别与PC机中R232接口的RXD、TXD相连。这种发送与接收的对应关系不能接错,否则将不能正常工作。,http:/,图9.17 用MAX232实现串行通信接口电路图,http:/,3.PC机与多个单片机间的串行通信,一台PC机与多个单片机间的串行通信电路如图9.18所示。这种通信系统一般为主从结构,PC机为主机,单片机为从机。主从机间的信号电平转换由MAX232芯片实现。这种小型分布式

47、控制系统,充分发挥了单片机体积小、功能强、抗干扰性好、面向被控对象等优点,将单片机采集到的数据传送给PC机。同时也利用了PC机数据处理能力强的特点,可将多,http:/,个控制对象的信息加以综合分析、处理,然后向各单片机发出控制信息,以实现集中管理和最优控制,并还能将各种数据信息显示和打印出来。,http:/,图9.18 PC机与多个单片机间的串行通信电路,http:/,4、RS-485总线接口 RS-232接口标准出现较早,难免会有不足之处:(1)接口的信号电平值较高,易损坏接口电路的芯片;(2)传输速率较低,在异步传输时,波特率最大20kbps;(3)接口使用一根信号线和一根信号返回线而构

48、成共地的传输形式,这种共地传输容易产生共模干扰;(4)传输距离有限,实际最大传输距离30m左右。,http:/,RS-485/422接口采用不同的方式:每个信号都采用双绞线传送,两条线间的电压差用于表示数字信号。例如,把双绞线中的一根标为A(正),另一根标为B(负),当A为正电压(通常为+5V),B为负电压时(通常为0),表示信号1;反之,A为负电压,B为正电压时表示信号0。RS-485/422允许通信距离可达到1.2km,实际上可达3km,采用合适的电压可达到2.5Mbps的传输速率。,http:/,RS-422与RS-485采用相同的通信协议,但有所不同。RS-422通常作为RS-232通

49、信的扩展,它采用两对双绞线,数据可以同时双向传送(全双工)。RS-485则采用一对双绞线,输入输出不能同时进行(半双工)。,http:/,RS-485串行总线接口标准以差分平衡方式传输信号,具有很强的抗共模干扰的能力。逻辑“1”以两线间的电压差为+2V+6V表示;逻辑“0”以两线间的电压差为-2V-6V表示。接口信号电平比RS-232降低了,不容易损坏接口电路芯片。RS-485总线标准可采用MAX485芯片实现电平转换。MAX-485芯片引脚排列如图9.19所示。,http:/,MAX485输入/输出信号不能同时进行(半双工),其发送和接收功能的转换是由芯片的RE和DE端控制的。RE=0时,允

50、许接收;RE=1时,接收端R高阻。DE=1时,允许发送;DE=0时,发送端A和B高阻。在单片机系统中常把RE和DE接在一起用单片机的一个I/O线控制收发。,http:/,9.6 实训指导,1.实训目的(1)掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。(2)了解实现串行通信的硬环境,数据格式的协议,数据交换的协议.(3)了解双机通信的基本要求.2.实训内容 利用单片机串行口,实现双机通信。在1号实验仪键盘上键入的数字、字母,2号实验仪即将其在数码管上显示。,http:/,3.实训原理图,图9.20 双机通信实训原理图,http:/,4.实训步骤(1)按实训原理图在实验仪上连好线路;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号