串行通信及实验课件.ppt

上传人(卖家):晟晟文业 文档编号:3613988 上传时间:2022-09-26 格式:PPT 页数:140 大小:1.30MB
下载 相关 举报
串行通信及实验课件.ppt_第1页
第1页 / 共140页
串行通信及实验课件.ppt_第2页
第2页 / 共140页
串行通信及实验课件.ppt_第3页
第3页 / 共140页
串行通信及实验课件.ppt_第4页
第4页 / 共140页
串行通信及实验课件.ppt_第5页
第5页 / 共140页
点击查看更多>>
资源描述

1、第9章 串行通信及实验 第9章 串行通信及实验 9.1 串行通信基础 在单片机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。并行通信,即数据的各位同时传送,如图9.1(a)所示;串行通信,即数据一位一位顺序传送,如图9.1(b)所示。第9章 串行通信及实验 图9.1 两种通信方式的示意图 第9章 串行通信及实验 串行通信的优点与缺点 两种基本通信方式比较起来,串行通信方式能够节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出;串行通信方式的主要缺点是传送速度比并行通信要慢。第9章 串行通信及实验 9.1.1 串行通信的分类 按照串行数据的时钟控制方式,串行通信可分

2、为同步通信和异步通信两类。在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标。第9章 串行通信及实验 9.1.1.1 异步通信 异步通信(Asynchronous Communication)在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。第9章 串行通信及实验 9.1.1.2 字符帧(Character Frame)字符帧也叫数据帧,由起始位、数

3、据位、奇偶校验位和停止位等四部分组成,如图9.2所示。第9章 串行通信及实验 图9.2 异步通信的字符帧格式第9章 串行通信及实验 起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前高位在后。第9章 串行通信及实验 奇偶校验位与停止位 奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。停止位:位于字符帧最后,为逻辑1高电平。通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧作准备。第9章 串行通信及实验 两相

4、邻字符帧之间 在串行通信中,两相邻字符帧之间可以没有空闲位,也可以有若干空闲位,这由用户来决定。图9.2(b)表示有3个空闲位的字符帧格式。第9章 串行通信及实验 9.1.1.3 波特率(baud rate)异步通信的另一个重要指标为波特率。波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为bit/s,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。第9章 串行通信及实验 异步通信的优点 通常,异步通信的波特率为509600bit/s。异步通信的优点是不需要传送同步时钟,字

5、符帧长度不受限制,故设备简单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。第9章 串行通信及实验 9.1.1.4 同步通信(Synchronous Communication)同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图9.3所示。第9章 串行通信及实验 图9.3 同步通信的字符帧格式 第9章 串行通信及实验 三部分组成 图9.3(a)为单同步字符帧结构,图9.3(b)为双同步字符帧结构,但它们均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可

6、以由用户约定。第9章 串行通信及实验 同步通信的缺点 同步通信的数据传输速率较高,通常可达56Kb/s或更高,其缺点是要求发送时钟和接收时钟必须保持严格同步。第9章 串行通信及实验 9.1.2 串行通信的制式 在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种制式。图9.4为三种制式的示意图。第9章 串行通信及实验 图9.4为三种制式的示意图第9章 串行通信及实验 在单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。如图9.4(a)所示。单工制式第

7、9章 串行通信及实验 半双工制式 在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,如图9.4(b)所示。在这种制式下,数据能从A站传送到B站,也可以从B站传送到A站,但是不能同时在两个方向上传送,即只能一端发送,一端接收。其收发开关一般是由软件来进行控制的。第9章 串行通信及实验 全双工通信系统 全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送。如图9.4(c)所示。在实际应用中,尽管多数串行通信接口电路具有全双工功能,一般情况只工作于半双工制式下,这种用法简单、实用。第9章 串行通信及实验 9.1.3 串行通信的接口电路 串行接口电

8、路的种类和型号很多。能够完成异步通信的硬件电路称为UART,即通用异步接收器/发送器;能够完成同步通信的硬件电路称为USRT;既能够完成异步又能同步通信的硬件电路称为USART。第9章 串行通信及实验 串行接口电路数据形式 从本质上说,所有的串行接口电路都是以并行数据形式与CPU连接,以串行数据形式与外部逻辑设备连接。它们的基本功能是从外部逻辑设备接收串行数据,转换成并行数据后传送给CPU,或从CPU接收并行数据,转换成串行数据后输出到外部逻辑设备。第9章 串行通信及实验 9.2 串行通信总线标准及其接口 在单片机应用系统中,数据通信主要采用异步串行通信。在设计通信接口时,必须根据需要选择标准

9、接口,并考虑传输介质、电平转换等问题。采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。例如当需要单片机和PC机通信时,通常采用RS-232接口进行电平转换。第9章 串行通信及实验 异步串行通信接口主要有三类 异步串行通信接口主要有三类:RS-232接口;RS-449、RS-422和RS-485接口以及20mA电流环。下面介绍较常用的RS-232接口标准。第9章 串行通信及实验 9.2.1 RS-232C接口 RS-232C是使用最早、应用最多的一种异步串行通信总线标准。它是美国电子工业协会(EIA)1962年公布、1969年最后修订而成的。其中RS表示

10、Recommended Standard,232是该标准的标识号,C表示最后一次修订。第9章 串行通信及实验 RS-232C RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。例如CRT、打印机与CPU的通信大都采用RS-232C接口,MCS-51单片机与PC机的通信也是采用该种类型的接口。由于MCS-51系列单片机本身有一个全双工的串行接口,因此该系列单片机用RS-232C串行接口总线非常方便。第9章 串行通信及实验 RS-232C RS-232C串行接口总线适用于:设备之间的通信距离不大于15米,传输速率最大为20kB/s。第9章

11、串行通信及实验 9.2.2 RS-232C信息格式标准 RS-232C采用串行格式,如图9.5所示。该标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶位。如果两个信息之间无信息,则写“1”,表示空。第9章 串行通信及实验 图9.5 RS-232C信息格式第9章 串行通信及实验 9.2.3 RS-232C电平转换器 RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即:逻辑“0”:+5V+15V 逻辑“1”:-5V-15V第9章 串行通信及实验 RS-232C不能和TTL电平直接相连 因此,

12、RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489。第9章 串行通信及实验 MC1488内部有三个与非门和一个反相器,供电电压为12V,输入为TTL电平,输出为RS-232C电平,MC1489内部有四个反相器,供电电压为5V,输入为RS-232C电平,输出为TTL电平。另一种常用的电平转换电路是MAX232,图9.6为MAX232的引脚图。第9章 串行通信及实验 图9.6 MAX232引脚图C1+1C1-3C2+4C2-5Vs+2Vs-6VCC16GND15T1I

13、N11T1OUT14T2IN10T2OUT7R1OUT12R1IN13R2OUT9R2IN8 MAX232第9章 串行通信及实验 9.2.4 RS-232C总线规定 RS-232C标准总线为25根,采用标准的D型25芯插头座。各引脚的排列如图9.7所示。第9章 串行通信及实验 简单的全双工系统 在最简单的全双工系统中,仅用发送数据、接收数据和信号地三根线即可,对于MCS-51单片机,利用其RXD(串行数据接收端)线、TXD(串行数据发送端)线和一根地线,就可以构成符合RS-232C接口标准的全双工通信口。第9章 串行通信及实验 图 9.7 RS-232C引脚图 第9章 串行通信及实验 9.3

14、MCS-51单片机的串行接口 MCS-51单片机的内部有一个可编程全双工串行通信接口,它具有UART的全部功能,该接口不仅可以同时进行数据的接收和发送,也可做同步移位寄存器使用。该串行口有4种工作方式,帧格式有8位、10位和11位,并能设置各种波特率。本节将对其结构、工作方式和波特率进行介绍。第9章 串行通信及实验 9.3.1 MCS-51单片机的串行口结构 MCS-51单片机内部有两个独立的接收、发送缓冲器SBUF,SBUF属于特殊功能寄存器。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。串行口的结构如图9.8所示。第9章 串行通信及实验 特殊功能寄

15、存器 与MCS-51串行口有关的特殊功能寄存器有SBUF,SCON,PCON,下面对它们分别详细介绍。第9章 串行通信及实验 图9.8 MCS-51单片机串行口结构示意图 第9章 串行通信及实验 9.3.2 串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,就是修改发送缓冲器;读SBUF,就是读接收缓冲器的内容。第9章 串行通信及实验 接收或发送数据 接收或发送数据,是通过串行

16、口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据,为全双工制式。第9章 串行通信及实验 9.3.3 串行口控制寄存器SCON SCON用来控制串行口的工作方式和状态,可以位寻址,字节地址为98H。其格式如图9.9所示。SCON 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 图9.9 SCON的各位定义 SM0SM1SM2RENTB8RB8TIRI第9章 串行通信及实验 SM0、SM1:串行工作方式选择位。定义如下表9.1所示。表9.1 串行工作方式选择位 SM0 SM1工作方式功 能波特率 0 0方式0 8位同步移位寄存器

17、fosc/12 0 1方式110位UART 可变 1 0 方式211位UARTfosc/64或fosc/32 1 1方式311位UART可变第9章 串行通信及实验 多机通信控制位 SM2:多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收时,若SM2=1,且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1。第9章 串行通信及实验 方式2、3处于接收或发送方式 在方式2、3处于接收或发送方式,若SM2=0,不论接收到第9位RB8为0还是为1,TI,RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1。在方式

18、0中,SM2应为0。第9章 串行通信及实验 允许串行接收位 REN:允许串行接收位。由软件置位或清零。REN=1时,允许接收,REN=0时,禁止接收。第9章 串行通信及实验 TB8:发送数据的第9位。在方式2和方式3中,由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数据帧时TB8为0。RB8:接收数据的第9位。功能同TB8。发送数据的第9位第9章 串行通信及实验 发送中断标志位 TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其他方式中,在发送停止位之初由硬件置位。因此TI是发送完一帧数据的标志,可以用指令来查询

19、是否发送结束。TI=1时,也可向CPU申请中断,响应中断后都必须由软件清除TI。第9章 串行通信及实验 接收中断标志位 RI:接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其他方式中,在接收停止位的中间由硬件置位。同TI一样,也可以通过指令来查询是否接收完一帧数据。RI=1时,也可申请中断,响应中断后都必须由软件清除RI。第9章 串行通信及实验 SCON中的低2位与中断有关 SCON中的低2位与中断有关,在中断的有关章节中有详细论述。第9章 串行通信及实验 9.3.4 电源及波特率选择寄存器PCON PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,不可以位寻址,字

20、节地址为87H。在HMOS的8051单片机中,PCON除了最高位以外其它位都是虚设的。其格式如图9.10所示。第9章 串行通信及实验 图9.10 PCON的各位定义第9章 串行通信及实验 SMOD为波特率选择位 与串行通信有关的只有SMOD位。SMOD为波特率选择位。在方式1、2和3时,串行通信的波特率与SMOD有关。当SMOD=1时,串行通信波特率乘2,当SMOD=0时,串行通信波特率不变。其他各位用于电源管理,在此不再赘述。第9章 串行通信及实验 9.3.5 MCS-51单片机串行口的工作方式 MCS-51单片机串行口有4种工作方式,由SCON中的SM1、SM0位来决定,如表9.1所示。第

21、9章 串行通信及实验 9.3.5.1 方式0 在工作方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。这种方式常用于扩展I/O口。第9章 串行通信及实验 当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。在再次发送数据之前,必须由软件清TI为0。具体接线图如图9.11所示。其中74LS164为串入并出移位寄存器。发送第9章 串行通信及实验 图9.11 方式0用于扩展I/O口输出第9章 串行通信及实验 接

22、收 在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。在再次接收数据之前,必须由软件清RI为0。具体接线图如图9.12 所示。其中74LS165为并入串出移位寄存器。第9章 串行通信及实验 图9.12 方式0用于扩展I/O口输入第9章 串行通信及实验 串行控制寄存器SCON 串行控制寄存器SCON中的TB8和RB8在方式0中未用。值得注意的是,每当发送或接收完8位数据后,硬件会自动置TI或RI为1,CPU响应TI或RI中断后,必须由用户用软件清0。方式0时,SM2必须为0。第9章 串行通信及

23、实验 在工作方式1下,串行口为波特率可调的10位通用异步接口UART,发送或接收一帧信息,包括1位起始位,8位数据位和1位停止位。其帧格式如图9.13所示:9.3.5.2 方式1第9章 串行通信及实验 图9.13 10位的帧格式第9章 串行通信及实验 发送时,数据从TXD输出,当数据写入发送缓冲器SBUF后,启动发送器发送。当发送完一帧数据后,置中断标志TI为1。方式1所传送的波特率取决于定时器T1的溢出率和PCON中的SMOD位。发送第9章 串行通信及实验 接收 接收时,由REN置1允许接收,串行口采样RXD,当采样到1到0的跳变时,确认是起始位“0”,就开始接收一帧数据。当RI=0且停止位

24、为1或SM2=0时,停止位进入RB8位,同时置位中断标志RI;否则信息将丢失。所以,在工作方式1接收时,应先用软件清除RI或SM2标志。第9章 串行通信及实验 在工作方式2下,串行口为11位UART,传送波特率与SMOD有关。发送或接收一帧数据包括1位起始位,8位数据位,1位可编程位(用于奇偶校验)和1位停止位。其帧格式如图9.14所示。9.3.5.3 方式2第9章 串行通信及实验 图 9.14 11位的帧格式第9章 串行通信及实验 发送时,先根据通信协议由软件设置TB8,然后用指令将要发送的数据写入SBUF,则启动发送器。写SBUF的指令,除了将8位数据送入SBUF外,同时还将TB8装入发送

25、移位寄存器的第9位,并通知发送控制器进行一次发送。一帧信息即从TXD发送,在送完一帧信息后,TI被自动置1,在发送下一帧信息之前,TI必须由中断服务程序或查询程序清0。发送第9章 串行通信及实验 接收 当REN=1时,允许串行口接收数据。数据由RXD端输入,接收11位的信息。当接收器采样到RXD端的负跳变,并判断起始位有效后,开始接收一帧信息。当接收器接收到第9位数据后,若同时满足以下两个条件:RI=0;SM2=0或接收到的第9位数据为1,则接收数据有效,8位数据送入SBUF,第9位送入RB8,并置RI=1。若不能同时满足上述两个条件,则丢弃信息。第9章 串行通信及实验 9.3.5.4 方式3

26、 工作方式3为波特率可变的11位UART通信方式,除了波特率设定方式不同之外,工作方式3和工作方式2完全相同。第9章 串行通信及实验 9.3.6 MCS-51单片机串行口的波特率设定 在串行通信中,收发双方对传送的数据速率即波特率要有一定的约定。通过上一小节的论述,我们已经知道,MCS-51单片机的串行口通过编程可以有4种工作方式。其中工作方式0和工作方式2的波特率是固定的,工作方式1和工作方式3的波特率可变,由定时器T1的溢出速率决定。第9章 串行通信及实验 9.3.6.1 工作方式0和工作方式2 在工作方式0中,波特率为时钟频率的1/12,即fosc/12,固定不变。在工作方式2中,波特率

27、取决于PCON中的SMOD值,当SMOD=0时,波特率为fosc/64;当SMOD=1时,波特率为fosc/32。即:波特率=fOSC(2SMOD/64)。第9章 串行通信及实验 9.3.6.2 工作方式1和工作方式3 在工作方式1和工作方式3下,波特率由定时器T1的溢出速率和SMOD共同决定。即:波特率=T1溢出速率(2SMOD/32)。第9章 串行通信及实验 计数速率为外部输入时钟频率 其中T1的溢出速率取决于单片机定时器T1的计数速率和定时器的预置值。计数速率与TMOD寄存器中的C/T位有关,当C/T=0时,计数速率为fosc/12,当C/T=1时,计数速率为外部输入时钟频率。第9章 串

28、行通信及实验 实际上,当定时器T1作为波特率发生器使用时,通常是工作在模式2,即自动重装计数初值的8位定时器,此时TL1作计数用,自动重装的值在TH1内。假设计数的预置值(初始值)为X,那么每过256-X个机器周期,定时器溢出一次。为了避免溢出而产生不必要的中断,此时应禁止T1中断。溢出周期为:12(256-X)/fOSC第9章 串行通信及实验 溢出速率为溢出周期的倒数 溢出速率为溢出周期的倒数,所以 波特率=(2SMOD/32)(fOSC/12(256-X)表9.2列出了各种常用的波特率及获得办法。第9章 串行通信及实验 第9章 串行通信及实验 9.4 MCS-51单片机的串行接口实验 9.

29、4.1 串行转并行实验 MCS-51单片机的串口工作于方式0时,通常是用作串行信号/并行信号的转换器。MCS-51单片机的TXD(P3.1)提供频率为fosc/12的串行时钟,RXD(P3.0)提供待转换的串行信号。第9章 串行通信及实验 9.4.1.1 硬件电路 硬件电路如图9-15所示。第9章 串行通信及实验 图9-15 串并转换实验硬件电路 第9章 串行通信及实验 在工作目录下创建serial_parellel工程,将serial_parellel.c源文件添加进去,经编译、连接后得到载入单片机的十六进制目标文件serial_parellel.hex即可。工程窗口如图9-16所示。9.4

30、.1.2 软件第9章 串行通信及实验 图9-16 工程窗口第9章 串行通信及实验 以下为serial_parellel.c源程序。/-串行信号转并行信号实验-/-包含头文件-#include reg51.h/-宏定义-#define uchar unsigned char#define uint unsigned int第9章 串行通信及实验/-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验 主程序main()SCON=0 x00;/串口工作于方式0 while(1)SBUF=0 xc0;/发送

31、0的显示编码 delay();/延时 第9章 串行通信及实验 9.4.1.3 运行结果 实验的运行结果如图9-17所示。图9-17 串行信号转并行信号实验运行结果 第9章 串行通信及实验 9.4.2 单机自发自收实验 该实验中,单片机的串口工作于方式1下,为简单起见,实现的功能是本机自发自收信息。为此,将串口的发送端和接收端直接连接:TXD(P3.1)发送信息,本机的RXD(P3.0)接收信息。9.4.2.1 硬件电路 硬件电路如图9-18所示。第9章 串行通信及实验 图9-18 单机自发自收实验硬件电路第9章 串行通信及实验 9.4.2.2 软件 在工作目录下创建one_cpu工程,将one

32、_cpu.c源文件添加进去,经编译、连接后得到载入单片机的十六进制目标文件one_cpu.hex即可。工程窗口如图9-19所示。第9章 串行通信及实验 图9-19 单机自发自收实验工程窗口第9章 串行通信及实验 以下为one_cpu.c源程序。/-单机自发自收实验-/-包含头文件-#include reg51.h/-宏定义-#define uchar unsigned char#define uint unsigned int第9章 串行通信及实验-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验

33、/-主程序-main()SCON=0 x50;/串口工作于方式1,允许接收 PCON=0 x80;/SMOD=1 TMOD=0 x20;/T1作为波特率发生器 TH1=0 xff;TL1=0 xff;TR1=1;/启动T1 第9章 串行通信及实验 while(1)SBUF=0 xc0;/发送0的显示编码 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P1=0 xc0;/显示发送信息 delay();/延时 while(!RI);/等待接收完毕 RI=0;/清除接收标志位 P0=SBUF;/显示接收信息 delay();/延时 第9章 串行通信及实验 9.4.2.3 实验运行

34、结果 从图9-20和图9-21可以看到串口发送和接收信息的过程。图9-20 发送信息显示第9章 串行通信及实验 图9-21 发送接收信息显示 第9章 串行通信及实验 9.4.3 双机通信实验 该实验中,单片机的串口工作于方式1下,实现的功能是甲机和乙机实现通信。为此,将甲机串口的发送端和乙机串口的接收端连接;将甲机串口的接收端和乙机串口的发送端连接。第9章 串行通信及实验 双机通信实验 为了便于观察实验结果,由甲机先发送“0”的显示码,乙机接收到之后,再发送“1”的显示码作为应答,甲机接收到之后,再发送“0”的显示码,如此循环下去。第9章 串行通信及实验 9.4.3.1 硬件电路 双机通信实验

35、的硬件电路见图9-22。图9-22 双机通信实验的硬件电路 第9章 串行通信及实验 9.4.3.2 软件 在工作目录下分别创建two_cpu_1和two_cpu_2工程,将two_cpu_1.c和two_cpu_2.c源文件添加进去,经编译、连接后得到载入甲机和乙机的十六进制目标文件two_cpu_1.hex和two_cpu_2.hex即可。工程窗口如图9-23和图9-24所示。第9章 串行通信及实验 图9-23 two_cpu_1工程窗口 第9章 串行通信及实验 图9-24 two_cpu_2工程窗口 第9章 串行通信及实验 以下为two_cpu_1.c源程序。/-双机通信实验-/-包含头文

36、件-#include reg51.h/-宏定义-#define uchar unsigned char#define uint unsigned int第9章 串行通信及实验-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验/-主程序-main()SCON=0 x50;/串口工作于方式1,允许接收 PCON=0 x80;/SMOD=1 TMOD=0 x20;/T1作为波特率发生器 TH1=0 xff;TL1=0 xff;TR1=1;/启动T1 第9章 串行通信及实验 while(1)SBUF=0

37、xc0;/发送0的显示编码 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P0=0 xc0;/显示发送信息 P2=0 xff;/不显示接收信息 delay();/延时 while(!RI);/等待接收完毕 RI=0;/清除接收标志位 P2=SBUF;/显示接收信息 P0=0 xff;/不显示发送信息 delay();/延时 第9章 串行通信及实验 以下为two_cpu_2.c源程序。/-双机通信实验-/-包含头文件-#include reg51.h/-宏定义-#define uchar unsigned char#define uint unsigned int第9章 串行

38、通信及实验-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验/-主程序-main()SCON=0 x50;/串口工作于方式1,允许接收 PCON=0 x80;/SMOD=1 TMOD=0 x20;/T1作为波特率发生器 TH1=0 xff;TL1=0 xff;TR1=1;/启动T1 第9章 串行通信及实验 while(1)while(!RI);/等待接收完毕 RI=0;/清除接收标志位 P2=SBUF;/显示接收信息 P0=0 xff;/不显示发送信息 delay();/延时 第9章 串行通信及实

39、验 SBUF=0 xf9;/发送1的显示编码 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P0=0 xf9;/显示发送信息 P2=0 xff;/不显示接收信息 delay();/延时 第9章 串行通信及实验 9.4.3.3 双机通信实验运行结果 从图9-25和图9-26可看到实验运行结果。图9-25 甲机发送、乙机接收示意图 第9章 串行通信及实验 图9-26 乙机发送、甲机接收示意图 第9章 串行通信及实验 9.4.4 多机通信实验 该实验使用了3片AT89C51,分别为甲机、乙机和丙机。其中,甲机为主机,乙机和丙机为从机,乙机地址为0 x01,丙机地址为0 x02。串

40、口工作于方式3,通过SM2来实现地址帧和数据帧的区别,主机发送信息中TB8若为1,则表示发送信息为地址帧;第9章 串行通信及实验 TB8=0 若TB8为0,则表示发送信息为数据帧。从机的SM2初始值均为1,接收地址帧后与本机地址进行比较,若一致则将SM2清零以接收后续数据帧,若不一致则维持SM2不变,不接收数据帧。实验中为简单起见,数据帧只有一帧,从机在接收到数据帧后将SM2置位为1,回复到初始状态。第9章 串行通信及实验 9.4.4.1 硬件电路 多机通信实验的硬件电路见图9-27。图9-27 多机通信实验的硬件电路 第9章 串行通信及实验 9.4.4.2 软件 在工作目录下分别创建thre

41、e_cpu_1、three_cpu_2和three_cpu_3工程,将three_cpu_1.c、three_cpu_2.c和three_cpu_3.c源文件添加进去,经编译、连接后得到载入甲机和乙机的十六进制目标文件three_cpu_1.hex、three_cpu_2.hex和three_cpu_3.hex即可。为简单起见,three_cpu_1(主机)工程窗口如图9-28所示。第9章 串行通信及实验 图9-28 多机通信实验three_cpu_1(主机)工程窗口第9章 串行通信及实验 以下为three_cpu_1.c源文件。/-多机通信实验-/-包含头文件-#include reg51.

42、h/-宏定义-#define uchar unsigned char#define uint unsigned int#define ADDRESS1 0 x01#define ADDRESS2 0 x02第9章 串行通信及实验-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验/-主程序-main()SCON=0 xd8;/串口工作于方式3,允许接收,TB8=1 PCON=0 x80;/SMOD=1 TMOD=0 x20;/T1作为波特率发生器 TH1=0 xff;TL1=0 xff;TR1=1;

43、/启动T1 第9章 串行通信及实验 while(1)TB8=1;SBUF=ADDRESS1;/发送地址帧,寻址乙机 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P1=0 xf9;/显示发送地址信息 delay();/延时 while(!RI);/等待从机应答 RI=0;/清除接收标志位第9章 串行通信及实验 If (SBUF=ADDRESS1)TB8=0;/数据帧 SBUF=0 xf8;/发送7的显示码 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P0=0 xf8;/显示发送数据信息 delay();/延时 第9章 串行通信及实验 TB8=1;SBU

44、F=ADDRESS2;/发送地址帧,寻址丙机 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P1=0 xa4;/显示发送地址信息 delay();/延时 while(!RI);/等待从机应答 RI=0;/清除接收标志位 第9章 串行通信及实验 if(SBUF=ADDRESS2)TB8=0;/数据帧 SBUF=0 x80;/发送8的显示码 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P0=0 x80;/显示发送数据信息 delay();/延时 第9章 串行通信及实验 以下为three_cpu_2.c源文件。/-多机通信实验-/-包含头文件-#includ

45、e reg51.h/-宏定义-#define uchar unsigned char#define uint unsigned int#define ADDRESS 0 x01第9章 串行通信及实验-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验-主程序-main()SCON=0 xf0;/串口工作于方式3,允许接收,SM2=1 PCON=0 x80;/SMOD=1 TMOD=0 x20;/T1作为波特率发生器 TH1=0 xff;TL1=0 xff;TR1=1;/启动T1第9章 串行通信及实验

46、 while(1)while(!RI);/等待地址接收完毕 RI=0;/清除接收标志位 if(SBUF=ADDRESS)SM2=0;/可以接收数据帧 SBUF=ADDRESS;/发送地址 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P1=0 xf9;/显示地址信息 delay();/延时第9章 串行通信及实验 while(!RI);/等待地址接收完毕 RI=0;/清除接收标志位 P0=SBUF;/显示接收信息 delay();/延时 SM2=1;/等待接收地址帧 P1=0 xff;P0=0 xff;/清除显示 第9章 串行通信及实验 以下为three_cpu_3.c源文件

47、。/-多机通信实验-/-包含头文件-#include reg51.h/-宏定义-#define uchar unsigned char#define uint unsigned int#define ADDRESS 0 x02第9章 串行通信及实验-延时子程序-delay()uint j;uchar k;for(j=0;j50000;j+)for(k=0;k10;k+);第9章 串行通信及实验-主程序-main()SCON=0 xf0;/串口工作于方式3,允许接收,SM2=1 PCON=0 x80;/SMOD=1 TMOD=0 x20;/T1作为波特率发生器 TH1=0 xff;TL1=0 x

48、ff;TR1=1;/启动T1第9章 串行通信及实验 while(1)while(!RI);/等待地址接收完毕 RI=0;/清除接收标志位 if(SBUF=ADDRESS)SM2=0;/可以接收数据帧 SBUF=ADDRESS;/发送地址 while(!TI);/等待发送完毕 TI=0;/清除发送标志位 P1=0 xa4;/显示地址信息 delay();/延时第9章 串行通信及实验 while(!RI);/等待接收完毕 RI=0;/清除接收标志位 P0=SBUF;/显示接收信息 delay();delay();/延时 SM2=1;/等待接收地址帧 P1=0 xff;P0=0 xff;/清除显示 第9章 串行通信及实验 9.4.4.3 实验运行结果 从图9-29至图9-32可见双机通信实验运行结果。图9-29 甲机发送地址帧,乙机接收地址帧后准备接收数据帧 第9章 串行通信及实验 图9-30 甲机发送数据帧,乙机接收 第9章 串行通信及实验 图9-31 甲机发送地址帧,丙机接收地址帧后准备接收数据帧 第9章 串行通信及实验 图9-32 甲机发送数据帧,丙机接收

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(串行通信及实验课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|