单片微机原理与应用part_06课件_第1页
单片微机原理与应用part_06课件_第2页
单片微机原理与应用part_06课件_第3页
单片微机原理与应用part_06课件_第4页
单片微机原理与应用part_06课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、“单片机原理与应用”课程 第 6 章 51系列单片机的串行通信2022/7/211第6章 51系列单片机的串行通信 6.1 串行通信概述6.2 串行通信的接口与控制6.3 串行接口的工作模式6.4 51系列单片机的通信 2022/7/212【基本知识点与要求】(1)了解通信的概念,理解串行通信和并行通信原理。 (2)理解串行通信的3种方式。(3)掌握串行通信的标准、51系列单片机串行接口的结构与控制应用方法。(4)理解51系列单片机的通信工作方式及其应用。 【重点与难点】 重点是51系列单片机串行接口的结构与控制应用方法、51系列单片机之间及单片机与PC之间的通信。难点是51系列单片机之间及单

2、片机与PC之间的通信。 本章首先介绍串行通信的基本方式;其次介绍51系列单片机串行接口的结构与控制;然后介绍51系列单片机串行接口的工作模式并举例说明应用方法;最后介绍51系列单片机之间及单片机与PC之间的通信。 第6章 51系列单片机的串行通信 2022/7/2136.1 串行通信概述6.1.1 串行通信的基本方式通信:计算机与计算机之间或者与外设之间的信息交换。通信的基本方式:并行通信和串行通信。并行通信:一个数据编码字符的所有位都同时发送、并排传输, 又同时被接收的方式。串行通信:一个数据编码字符的所有位按一定顺序,一位接着一 位被发送和接收的方式。 1. 异步通信方式: 在异步通信中,

3、数据是以字符为单位进行传送的,一个字符又称为一帧信息(或者一帧数据)。 按照串行通信数据的时钟同步方式,可分为异步通信方式和同步通信方式。2022/7/214 起始位:逻辑“0”,占1位。发送器通过发送起始位以通知接收端有一个字符数据开始传送,准备接收。 数据位:起始位之后就是传送的数据位,数据位可以是5位、6位、7位或8位,是逻辑“0”或者逻辑“1”。数据位中,总是低位在前(左),高位在后(右)。 (1)帧结构 一帧信息由4部分组成:起始位、数据位、奇偶校验位和停止位 。6.1 串行通信概述2022/7/215 奇偶校验位:位于数据位后,占1位。用于对字符传送作 正确性检查。常有3种情况:奇

4、校验、偶校验和无校验。当该位不用于校验时可作为控制位,用于表征该字符所代表的信息性质(地址/数据)。 停止位:停止位在最后,用于标志一个字符信息传送结束,它对应于逻辑“1”状态。停止位可以是1位、1.5位或者2位。两帧信息之间可以无空闲位,也可以有若干空闲位。6.1 串行通信概述(2)波特率(Baud Rate) 波特率是指单位时间内传送的信息量。当用二进制数位表示时,即为每秒钟传送的二进制位数(也称比特率),单位是bps(或b/s),即位/秒。要求接收和发送方保持相同的波特率。常用的波特率是50、75、 100、150、300、600、1200、2400、4800、9600、19200位/秒

5、。 2022/7/2162. 同步通信方式 同步通信是以数据块的方式传送的。每一数据块开头附加一个或两个同步字符,在数据块的末尾加差错校验字符。在同步通信中,由同一频率的时钟脉冲来实现发送与接收双方的同步。6.1 串行通信概述2022/7/2176.1 串行通信概述6.1.2 串行通信的数据传送方式串行数据通信按照数据传输方向可以分为三种方式。 1. 单工(Simplex)方式 单工方式的数据传送是单方向的。通信双方中一方固定为发送端,另一方则固定为接收端。单工方式的串行通信,只需要一条数据线。如图所示。例如计算机与打印机之间的串行通信就是单工方式,因为只能是计算机向打印机传送数据,而不可能有

6、相反方向的数据传送。 (a)单工方式2022/7/218 半双工方式的数据传送是双向的,但同一时间只能由其中的一方发送数据,另一方接收数据,任何一方不可同时发送和接收数据。因此半双工方式既可以使用一条数据线,也可以使用两条数据线。如图 (b)所示。2. 半双工(Half-duplex)方式 6.1 串行通信概述(b)半双工方式 2022/7/219 3. 全双工(Full-duplex)方式 全双工方式的数据传送是双向的,任何一方可以同时发送和接收数据,因此全双工方式的串行通信需要两条数据线。如图 (c)所示。 6.1 串行通信概述(c)全双工方式 2022/7/2110 在设计通信接口时,根

7、据需要选择接口标准(明确定义由若干条信号线,使接口电路标准化、通用化),并考虑传输介质、电平转换等问题。如果是几米的数据传送,只需要TXD、RXD和GND三条线;如果距离小于15米,采用RS-232C接口标准,可提高信号幅度加大传送距离。如果是长距离传送,可采用RS-422标准。 6.1 串行通信概述6.1.3 串行通信的接口标准1. RS-232C标准 1969年,美国电子工业协会(Electronics Industries Association,EIA)将RS-232C作为串行通信接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。该标准规定数据通信设备(Data

8、Communication Equipment,DCE)使用插座,数据终端设备(Data Terminal Equipment,DTE)使用插头。 2022/7/2111 RS-232C接口标准设有25条信号线,常用的有9条。因此串行接口的连接器分为9芯D型连接器(插头和插座)和25芯D型连接器(插头和插座)两种,它们之间的信号对应关系如表所示。在距离小于15米时,计算机、计算机终端和一些外围设备可通过自身的RS-232C总线,只需要3条连接线,即“发送数据”、“接收数据”和“信号地”,直接将通信双方连接起来进行通信。 6.1 串行通信概述 RS-232C接口标准是在TTL集成电路之前制定的,

9、所以它的电平和TTL电平是不兼容的,不能直接相连。RS-232C接口标准规定了数据和控制信号的电压范围和逻辑表示,逻辑“0”的电压在+3V+15V之间,逻辑“1” 的电压在3V15V之间。 2022/7/21126.1 串行通信概述25芯D型连接器9芯D型连接器信号名称信号传送方向含义23TXD输出数据发送线32RXD输入数据接收线47RTS请求发送(计算机要求发送数据)58CTS清除发送(Modem准备接收数据)66DSR数据设备准备就绪75SG信号地81DCD数据载波检测204DTR数据终端准备就绪(计算机)229RI振铃指示2022/7/21132. RS-422A标准6.1 串行通信概

10、述 RS-422A标准电路由发送器、平衡连接电缆、电缆终端负载、接收器等部分组成。采用双端线传送信号,可以全双工工作。其中一条是逻辑“1”状态,另一条是逻辑“0”状态。发送器采用平衡输出,接收器采用差分输入。通过传输线驱动器,把逻辑电平变换成电位差,完成发送端的信息传递;通过传输线接收器,把电位差变换成逻辑电平,实现接收端的信息接收。RS-422标准在电缆长度不超过12米时,最大位速率为10Mb/s;采用低速率90000b/s时,最大传输距离1200m。 2022/7/21143. RS-485标准 RS-485是RS-422A的一种变型,它只能进行半双工的串行通信,但多站互连时,可节省信号线

11、。因此,RS-485几乎成了各种智能仪器的标准接口。RS-485扩展了RS-422A的性能,一个发送器能够驱动32个负载设备,负载设备可以是被动发送器、接收器或收发器。但RS-485没有规定在何时控制发送器发送或接收器接收的规则,电缆要求比RS-422A更严格,采用屏蔽双绞线传输。RS-485主要性能指标如下: 6.1 串行通信概述2022/7/2115(1)驱动方式:平衡驱动器和差分接收器的组合,抗噪声干扰性好(2)总线容量:32台驱动器;32台接收器。(3)最大传输距离: 1200m,对应的速率为:9600b/s。(4)最大传输速率: 10Mb/s,对应的距离为:12m。(5)驱动器输出电

12、压:无负载时为5V;有负载时为1.5V。(6)驱动器负载电阻: 54欧姆(7)接收器输入电压 -7V +12V;接收器输入敏感度200mV;接收器输入电阻12千欧 6.1 串行通信概述2022/7/2116 为了实现串行通信,单片机必须要有相应的硬件接口电路。该接口电路作为单片机的一个组成部分,集成在单片机内部。AT89S51单片机有一个全双工的串行接口,可作为通用异步接收和发送器(UART)使用,也可作同步移位寄存器使用,还可以用于网络通信。 6.2 串行接口的结构与控制6.2.1 串行接口的结构 2022/7/2117 AT89S51串行接口主要由两个物理上独立的接收和发送数据缓冲寄存器(

13、SBUF)、发送控制器、接收控制器、输入移位寄存器和输出控制门等组成。 发送缓冲器SBUF只能写入,不能读出;接收缓冲器SBUF只能读出,不能写入。虽然两个缓冲寄存器共用同一个物理地址(99H),但可以使用读/写指令来区分它们。 例如,执行MOV SBUF,A指令,使将数据写入发送缓冲器;执行MOV A,SBUF指令,从接收缓冲器中读取数据。 串行接口还有两个专用寄存器SCON、PCON,SCON用来存放串行接口的控制和状态信息,PCON用于改变串行接口通信的波特率,定时器T1作为波特率发生器。 6.2 串行接口的结构与控制2022/7/21186.2 串行接口的结构与控制 AT89S51单片

14、机通过引脚RXD(P3.0)和引脚TXD(P3.1)与外界进行通信。串行收、发的工作由串行接口来完成。 发送时,CPU执行 MOV SBUF,A指令,将数据写入发送缓冲器,启动发送。发送缓冲器中的数据被转换成一定格式的串行数据,从TXD(P3.1)引脚上按规定的波特率逐位输出; 接收时,要监视RXD(P3.0)引脚,一旦出现起始位“0”,就一位一位地接收数据,将接收来的一定格式的串行数据转换成并行数据,送入接收缓冲器。然后通知CPU,CPU执行MOV A,SBUF指令,从接收缓冲器读取数据。 6.2.2 串行接口的控制 1. 串行接口状态控制寄存器 SCON SCON用于设置串行接口通信的工作

15、模式、接收/发送控制及指示串行接口的中断状态。该寄存器的字节地址为98H,具有位寻址功能,位地址为98H9FH。2022/7/2119(1)SM0(SCON.7)、SM1(SCON.6):串行接口工作模式选择位。可选择4种工作模式,如下表所示。 6.2 串行接口的结构与控制位地址9FH9EH9DH9CH9BH9AH99H98H位功能SM0SM1SM2RENTB8RB8TIRI11位异步接收发送,波特率可变(由定时器控制)31 121 010位异步接收发送,波特率可变(由定时器控制)10 1同步移位寄存器方式(用于扩展I/O口),波特率为 00 0功能说明工作模式 SM0 SM111位异步接收发

16、送,波特率为或2022/7/2120(2)SM2(SCON.5):多处理机通信控制位。主要用于模式2和模式3中。 模式0时: SM2必须为0。 模式1时: 若SM2l,只有接收到有效的停止位时,接收中断RI置“1”,以便接收下一帧数据。 模式2和模式3时: SM21,则允许多机通信。在主-从式多机通信中,SM2用于从机的接收控制。当SM2=1时,只有当从机接收到的第9位数据(RB8)为“1”时(地址帧),才将收到的前8位数据送入SBUF中,并把RI置“1”、同时向CPU申请中断;若收到的第9位数据(RB8)为“0”(数据帧),置接收中断标志RI=0,将接收到的前8位数据丢弃。当SM20时,则不

17、论收到的笫9位数据是“0”还是“1”,都将前8位数据装入SBUF中,置位中断标志RI、并向CPU申请中断。 6.2 串行接口的结构与控制2022/7/2121 (3)REN(SCON.4):允许串行接收控制位。 REN1时,允许串行接口接收数据;REN0时,禁止串行接口接收数据。 (4)TB8(SCON.3):模式2和模式3中该位是要发送的第9位数 根据需要由软件置位或复位。在通信协议中,常规定TB8作为奇偶校验位。在51系列单片机的多机通信中,TB8=0表示数据帧;TB8=1表示地址帧。在模式0或模式1中该位未用。 6.2 串行接口的结构与控制(5)RB8(SCON.2):模式2和模式3中接

18、收到的第9位数据。它可以是约定的奇偶校验位,也可以是约定的地址/数据标志位。在多机通信中,RB8=0表示收到的是数据帧;RB8=1表示收到的是地址帧。在模式1中,若SM2=0,则RB8是接收的停止位。在模式0中该位未用。 2022/7/2122 (6)TI(SCON.1):发送中断标志位。 在一帧信息发送结束时由硬件置位。模式0中,在发送完8位数据时置位;在其它模式时,在发送停止位开始时置位。TI=1表示“发送缓冲器已空”,需要通知CPU可以发送下一帧数据。TI位可以查询、也可以作为中断申请标志。该位必须由软件清0。 6.2 串行接口的结构与控制 (7)RI(SCON.0):接收中断标志位。

19、模式0中,接收到第8位数据结束时置位;在其它模式时,在接收到停止位的中间时置位。RI=1表示“接收缓冲器已满”,需要通知CPU可以取走数据。RI位可以查询、也可以作为中断申请标志。该位必须由软件清零。 2022/7/21232. 波特率选择寄存器PCON PCON的最高位SMOD是串行接口波特率倍增控制位,其它位与CHMOS型单片机低功耗工作方式有关,在第2章已经作了介绍。字节地址为87H,不能进行位寻址。其格式如下: D7D6D5D4D3D2D1D0SMOD-GF1GF0PDIDL(1)SMOD串行接口波特率倍增位。 当SMOD=1、单片机在模式1、模式2和模式3工作时,要比 SMOD=0时

20、的波特率提高1倍。SMOD=0时,波特率不加倍。系统复位后SMOD=0。 6.2 串行接口的结构与控制2022/7/2124(2)GF1、GF0通用标志位。 这两个标志位可供用户使用,可用软件置1或清0。(3)PD掉电方式控制位。 若PD=1,单片机进入掉电工作方式。(4)IDL待机(空闲)方式控制位。 若IDL=1,单片机进入待机工作方式。 串行接口每秒钟发送(或接收)的二进制位数称为波特率。在异步串行通信中,发送和接收双方的波特率必须保持一致。51单片机的串行接口通过编程可设置4种工作模式。其中模式0和模式2的波特率是固定的,而模式1和模式3的波特率是可变的,由定时器T1的溢出率决定。4种

21、工作模式的波特率计算如下。 6.2 串行接口的结构与控制6.2.3 波特率设计 2022/7/21251. 模式0的波特率6.2 串行接口的结构与控制 2. 模式2的波特率 模式2时的波特率由单片机系统的振荡频率和SMOD位确定。当SMOD位1时,波特率1/32 ;当SMOD0时,波特率1/ 64 。 模式2的3. 模式1和模式3的波特率 模式1和3时的波特率由定时器T1的溢出率和SMOD共同确定。 在模式0时,每一个机器周期发送或接收一位数据。因此,模式0时的波特率由单片机系统的振荡频率确定。波特率固定为 ,不受SMOD位的影响。 模式0的波特率= 2022/7/21266.2 串行接口的结

22、构与控制定时器T1工作于模式0时,则 若定时器T1工作于模式1时,则 若定时器Tl工作于模式2,T1为8位可重装的方式,用TL1计数,用TH1装初值,则 通常定时器T1工作在模式2,若串行通信选用很低的波特率时,可将定时器T1置于模式0或模式1。表6-3列出了常用的波特率及相应的振荡器频率、T1工作模式和计数初值的关系。 2022/7/21276.3 串行接口的工作模式 6.3.1 模式06.3 串行接口的工作模式D0D1D2D3D4D5D6D7 当SM0 SM100时,串行接口工作于模式0。模式0是同步移位寄器输入/输出模式,这种模式不能用于两个51系列单片机之间的串行通信,常用于串行接口外

23、接串行输入并行输出或者并行输入串行输出的移位寄存器,以扩展并行I/O接口。 模式0数据传输波特率固定( )。由RXD引脚输入或输出串行数据,由TXD引脚输出同步移位脉冲。接收发送的是8位数据,传输时低位在前。数据帧格式为:2022/7/21281.模式0移位输出 当执行一条写SBUF的指令(MOV SBUF,A)后,就启动串行数据的发送。串行数据由RXD引脚移位输出,同步移位脉冲由TXD引脚输出。8位数据发送完毕后,TI位由硬件置位,向CPU请求中断,在下次发送数据之前,必须用软件使TI清零。模式0的串行数据输出时序如图所示。 6.3 串行接口的工作模式2022/7/21292. 模式0移位输

24、入 6.3 串行接口的工作模式 当REN1且RI位清除时,就会启动一次接收过程。接收器以 的波特率接收RXD引脚输入的数据,当接收器接收完8位数据后,置中断标志RI=1,向CPU申请中断。在再次接收数据之前,必须用软件将RI清零。模式0的串行数据输入时序如图所示。2022/7/21306.3.2 模式1 SM0 SM10l时,串行接口工作于模式1,是串行异步通信方式。由TXD引脚发送数据,RXD引脚接收数据。数据传输波特率可变,由T1的溢出率及SMOD位决定,可用程序设定。发送或接收的一帧信息由10位组成:1位起始位(0)、8位数据位(低位在前)和l位停止位(1)。帧格式如下: 6.3 串行接

25、口的工作模式起始位D0D1D2D3D4D5D6D7停止位1. 模式1发送 在TI=0的条件下,当执行任何一条写发送缓冲器SBUF的指令时,就启动串行数据的发送过程。发送电路自动在8位数据的开始和结尾分别添加起始位(逻辑“0”)和停止位 2022/7/2131 (逻辑“1”),在发送移位脉冲作用下,并开始从TXD端发出。一帧数据发送完之后,维持TXD端为高电平,并使TI标志位置位。由软件清零后,方可发送下一帧数据。模式1的发送数据时序如图所示。 2. 模式1接收 模式1时,在REN1的条件下,串行接口从RXD引脚上检测到一个1到0的跳变时,就开始接收一帧数据。在接收移位脉冲的控制下,把收到的数据

26、一位一位地送入移位寄存器,直到8位数据和停止位全部收到为止。当RI=0且停止位为1或者SM2=0时,将 6.3 串行接口的工作模式2022/7/2132接收到的9位数据的前8位送入接收数据缓冲器SBUF、第9位(停止位)送入RB8,同时置位RI,该位可供查询或请求中断;否则8位数据不装入接收数据缓冲器SBUF,丢掉接收的结果。模式1的接收数据时序如下图所示。6.3 串行接口的工作模式2022/7/21336.3 串行接口的工作模式 在接收过程中,接收控制器以波特率的16倍的速率对RXD引脚进行检测。计数器的16个状态把每一位的时间分为16份,将每一位时间的第7、8、9这3个脉冲作为真正的对接收

27、信号的采样脉冲,取3个采样值中至少有两个是一致的值,即采用3中取2的方法,这样就可以抑制噪声干扰。同时,由于每一位时间的第7、8、9这3个脉冲对应于每一位的中间值。这样可避免发送端与接收端的波特率差异带来的错位或漏码发生。 2022/7/2134 SM0 SM110时,串行接口工作于模式2、为异步通信接口,常用于多机通信。由TXD引脚发送数据,RXD引脚接收数据。一帧数据由11位组成,1位起始位(逻辑“0”)、8位数据位(低位在前) 、1位可编程位(逻辑“0/1”)和1位停止位(逻辑“l”)。帧格式如下: 6.3 串行接口的工作模式6.3.3 模式2起始位D0D1D2D3D4D5D6D7可编程

28、位停止位1. 模式2发送 发送前,根据通信协议由软件设置TB8(作奇偶校验位或地址/数据标志位),然后在TI=0的条件下,将要发送的数据写入SBUF,即启动发送。串行接口能自动将TB8取出并发送出去。发送完毕TI位置“1”。模式2发送数据时序如图所示。 2022/7/21352. 模式2接收 6.3 串行接口的工作模式 当REN=1时,允许接收。接收时,数据由RXD端输入,接收11位信息。当检测到RXD引脚从1到0的跳变,并判断起始位有效后,便开始接收一帧数据。在接收到第9位数据后,需满足以下两个条件,才能将接收到的8数据送入SBUF(接收缓冲器),第9位数据送入RB8,同时置位RI。 202

29、2/7/2136 (1)RI0。即上一帧数据接收完毕时发出的中断请求已被响应,SBUF中数据已被取走 (2)SM20或接收到的停止位1。若第9位是奇偶校验位(单机通信时)应使SM2=0,以保证可靠接收;若第9位作为地址/数据标志位(多机通信),应使SM2=1,则当接收的第9位数据为1时,接收的信息为地址。 若以上两个条件中有一个不满足,将丢失接收到的这一帧信息。模式2接收数据时序如图所示。 6.3 串行接口的工作模式2022/7/21376.3.4 模式36.3 串行接口的工作模式 SM0 SM111,选择模式3。模式3同样是串行异步通信方式,其一帧数据格式、接收、发送过程与模式2完全相同,所

30、不同的是波特率。模式3的波特率和模式1相同由T1的溢出率及SMOD位共同决定。 6.3.5 串行接口的初始化与应用编程方法举例 1. 串行接口的初始化 串行接口使用前,CPU必须将一些命令(称为控制字)写入串行接口寄存器中,这个过程称为初始化。串行接口的初始化包括:设置SCON和PCON,T1做波特率发生器时还有进行T1的初始化。初始化的步骤为:(1)选择串行口工作模式,确定模式控制字,并写入SCON中;(2)对PCON设波特率加倍位“SMOD”(缺省值=0);2022/7/2138 如果是接收数据,要先置位REN。 (3)如果T1做波特率发生器,还要进行T1的初始化,包括:选定时器工作模式2

31、;将计算(或查表)得到的初值赋值给TH1、TL1;启动T1;T1关中断。 2. 串行接口的应用编程方法举例 6.3 串行接口的工作模式【例题6-1】设有甲、乙两个单片机系统(距离5米以内),将它们的串行接口交叉相连,以实现全双工的双机通信。设甲机发送数据,乙机接收数据。待发送的数据是标准的ASCII码,存储在内部RAM的20H3FH单元中,要求在最高位上加奇校验位后由串行接口发送出去,发送的波特率为1200bit/s, MHz。 2022/7/2139解:(1)题意分析 7位ASCII码加上一位奇偶校验位共8位数据,所以可以采用串行接口模式1来完成。 单片机的奇偶标志位P是累加器A中1的个数为

32、奇数时,P=1。如果直接把P的值放入ASCII码的最高位,恰好形成了偶校验,与要求不符。因此,要把P的值取反后放入ASCII码的最高位,才能完成奇校验。 双工通信要求任何一方收、发数据能同时进行。串行接口可以采用查选方式或者中断方式进行数据的收发。 (2)波特率的计算6.3 串行接口的工作模式 串行接口工作在模式1,定时器T1工作在模式2作为波特率发生器。波特率计算公式为(可以查表): 2022/7/2140(3)程序设计。采用查询方式。 6.3 串行接口的工作模式设SMOD=0,则 2022/7/21416.3 串行接口的工作模式2022/7/2142(4)编程6.3 串行接口的工作模式甲机

33、发送程序: ORG 0000H AJMP MAIN ORG 0100HMAIN:MOV TMOD,#20H ;置T1为模式2 MOV TL1,#0E8H;装T1时常 MOV TH1,#0E8H MOV SCON,#40H ;串口模式1 SETB TR1 ;启动T1 MOV R0,#20H ;取发送数据首址 MOV R7,#20H ;发送32个数据LOOP:MOV A,R0 ;取ASCII码数据 MOV C,P ;设奇校验位 CPL C MOV ACC.7,C MOV SBUF,A ;带校验位发数据 JNB TI,$ ;数据发送等待 CLR TI INC R0 DJNZ R7,LOOP ;未发送

34、完,继续发送 CLR TR1 END 2022/7/2143乙机接收程序 ORG 0000H AJMP MAIN ORG 0100HMAIN: MOV TMOD,20H ;T1模式2MOV TL1,#0E8H ;装T1时常MOV TH1,#0E8HMOV SCON,#50H ;串口模式1,允许接收SETB TR1 ;启动T1MOV R0,#20H ;接收数据区首址MOV R7,#20H;接收32个数据LOOP:JNB RI,$;等待接收 MOV A,SBUF ;接收一个字节 CLR RI ;清除RI标志 MOV C,P ;检查奇偶校验,若出错,C=0 ANL A,#7FH ;去掉校验位后的AS

35、CII码数据 JNC ERROR ;校验错,转错处理 MOV R0,A;数据存指定地址 INC R0 ;修改数据指针 DJNZ R7,LOOP ;未接收完,则继续接收 CLR PSW.5 ;正确,置F0为0 SJMP LP ERROR:SETB PSW.5 ;通信出错,置F0为1 LP: END6.3 串行接口的工作模式2022/7/2144【例题6-2】编写串行接口以工作模式2发送数据的中断服务程序。 解:(1)功能分析 工作模式2发送的一帧信息为11位:1位起始位,8位数据位,1位可编程为“1”或“0”的第9位(可用作奇偶校验位或数据地址标志位)和1位停止位。 奇偶校验位的发送是在将发送数

36、据写入发送缓冲器SBUF之前,先将奇偶标志写入SCON的TB8位。 6.3 串行接口的工作模式(2)程序流程如图所示。 2022/7/21456.3 串行接口的工作模式2022/7/2146 (3)编程 SPINT: CLR EA;关中断 PUSH PSW ;保护现场 PUSH ACC SETB EA ;开中断 SETB PSW.3 ;中断服务用1组工作寄存器 CLR TI ;清除中断标志 MOV A,R0 ;取数据,置奇偶标志位 MOV C,P ;奇偶标志位P送TB8 MOV TB8,C MOV SBUF,A ;数据写入缓冲器,启动发送 INC R0 ;数据地址指针加1 CLR EA ;恢复

37、现场 POP ACC POP PSW SETB EA CLR PSW .3 ;切换回原来的0组工作寄存器 RETI ;中断返回 END6.3 串行接口的工作模式2022/7/2147 利用51单片机的串行接口可以实现51单片机之间的点对点串行通信、多机通信以及51单片机和PC机间的单机和多机通信。 51系列单片机进行双机通信时,根据传输距离不同,可以选择不同的总线标准。如果是传输距离在5米以内时,其自身的TXD、RXD和GND三条线可直接相连;如果距离在15米以内,可采用RS-232C标准接口,如果传输距离在15米以上,可采用RS-422或RS-485标准。 6.4 51系列单片机的通信6.4

38、.1 51系列单片机的双机通信技术 1. TTL电平通信 如果两台AT89S51单片机相距在5米以内时,它们的串行接口可直接相连,从而直接用TTL电平传输方法来实现双机通信,电路如图所示。 2022/7/2148 2. 基于RS-232C标准的双机通信 RS-232C的逻辑电平与TTL逻辑电平是不兼容的,单片机的信号与TTL电平兼容。为了实现RS-232C标准和单片机两者之间的连接,须在RS-232C与TTL电路之间进行电平和逻辑关系的转换。目前广泛使用集成电路转换器件,如新型的专用芯片MAX232。 6.4 51系列单片机的通信TTL电平通信 MAX232芯片采用单一+5V供电,芯片内集成了

39、两个发送驱动器和两个接收缓冲器,可同时完成TTL和RS-232C 电平之间的双向转换,是应用中的首选。MAX232芯片的引脚如图所示。其中:10脚(T2IN)和11脚(T1IN)是TTL/CMOS电平输入引脚, 2022/7/2149这两引脚之一与单片机串口的数据发送端TXD(P3.1)相连;9脚(R2OUT)和12脚(R1OUT)是 TTL/CMOS电平输出引脚,这两引脚之一与单片机串口的数据接收端RXD(P3.0)相连。RS-232C电平输入引脚是8(R2IN)和13(R1IN),与外部设备RS-232C接口的数据发送端相连;RS-232C电平输出端是7(T2OUT)和14(T1OUT),

40、与外部设备RS-232C接口的数据接收端相连。电容选取1F电解电容。基于RS-232C标准的双机通信电路如图示。 6.4 51系列单片机的通信2022/7/21506.4 51系列单片机的通信解:(1)题意分析 发送方首先将存放在78H和77H单元中的地址发送给接收方,然后发送数据00HFEH,共255个数据。 【例题6-3】 两台单片机以串行通信模式3进行发送和接收。以T1为波特率发生器,选择定时器模式2。发送方首先发送数据存放地址,而地址的高位存放在78H中,地址的低位存放在77H中;然后发送00H,01H,02H,FEH,共255个数据以后结束。发送方采用查询方式发送地址帧,用中断方式发

41、送数据帧。接收方把先接收到的数据(存放数据的地址)送给数据指针,将其作为数据存放的首地址,然后接收到的数据存放到以先前接收的数据为首地址的单元中去。接收方采用中断方式接收数据。请编写中断服务子程序。发送的波特率为2400bit/s, MHz。 2022/7/2151 接收方根据接收数据的第9位数据进行判断是地址还是数据,如果是数据则送给数据指针,将其作为数据存放的首地址,然后将接下来接收到的数据存放到以先前接收的数据为首地址的单元中去。 6.4 51系列单片机的通信设SMOD=1,则(2)程序流程图2022/7/21526.4 51系列单片机的通信发送中断服务流程发送子程序流程图2022/7/

42、21536.4 51系列单片机的通信2022/7/2154(3)程序编写6.4 51系列单片机的通信甲机的发送程序: ORG 0000H LJMP MAIN ORG 0023H LJMP SEND-INT ORG 1000HMAIN:MOV 78H, #20H ;存放数据的首地址 MOV 77H, #00H ACALL TRANSFERHERE:SJMP HERETRANSFER:MOV TMOD,#20H ;设置T1为模式 2 MOV TL1, #0E8H ;设置波特率为2400 MOV TH1, #0E8H SETB TR1 ;启动T1 MOV SCON, #0E0H ;设置串行口为工作模

43、式3 SETB TB8 ;置第9位数据 MOV IE, #00H;关中断 CLR TI MOV SBUF,78H ;查询方式发送地址2022/7/21556.4 51系列单片机的通信WAIT:JNB TI, WAIT CLR TI MOV SBUF,77HWAIT1:JNB TI,WAIT1 CLR TI MOV IE, #90H ;开中断 CLR TB8 MOV A, #00H MOV SBUF, A ;开始发送数据WAIT2: CJNE A, #0FFH,WAIT2 ;数据是否发送完毕 CLR ES ;关闭串行口中断 RETSEND-INT: CLR TI INC A ;要发送数据值加1

44、MOV SBUF, A ;发送数据 RETI END2022/7/21566.4 51系列单片机的通信乙机接收程序: ORG 0000H LJMP MAIN ORG 0023H LJMP R-INT ORG 1000HMAIN:MOV R0,#0FEH ;设置地址帧接收计数器初值 ACALL RECEIVEHERE:SJMP HERERECEIVE: MOV TMOD,#20H ;设置T1为模式 2 MOV TL1, #0E8H ;设置波特率为2400 MOV TH1, #0E8H SETB TR1 ;启动T1 MOV IE, #90H;开中断 MOV SCON,0F0H ;设置串行口模式 3

45、 接收 SETB RI;设置标志位 RWAIT:JB RI, RWAIT RET2022/7/21576.4 51系列单片机的通信R-INT:CLR RI ;接收中断标志位清0 MOV C,RB8 ;判断是地址还是数据 JNC PD2 ;是数据则转PD2 INC R0 MOV A, R0 JZ PD MOV DPH, SBUF SJMP PD1 PD:MOV DPL, SBUF CLR SM2 ;地址标志位清PD1:RETIPD2:MOV A, SBUF ;接收数据MOVX DPTR,AINC DPTR CJNE A, #0FFH, PD1 ;是否为最后一帧数据SETB SM2 ;是,标志位清

46、0 CLR F0 CLR ESRETIEND2022/7/21586.4 51系列单片机的通信6.4.2 51系列单片机的多机通信技术 51系列单片机使用串行接口的工作模式2或模式3,采用总线型主从式结构构成多机系统。 所谓主从式结构,即在多个单片机组成的多机系统中,只有一个主机,其余是从机。主机发送的信息可被每个从机接收,而每个从机发送的信息只能由主机接收,从机之间不能相互通信。 2022/7/21596.4 51系列单片机的通信1. 多机通信原理 实现主机与从机之间的可靠通信,主要通过主、从机正确地设置、判断多机通信控制位SM2和发送或接收的第9位数据(TB8或RB8)。 主机给从机发送信

47、息时,需要根据发送信息的性质设置TB8,发送地址信息时,设置TB8=1;发送数据信息时,设置TB8=0。 对从机而言,SM2=1,表示多机通信功能。此时,接收到的第9位数据为1(RB8),则数据装入SBUF,并置位RI,向CPU申请中断。接收到的第9位数据为0(RB8),则不产生中断,数据将丢掉;SM2=0时,接收到的第9位数据(RB8)无论是0还是1,则数据装入SBUF,并置位RI,向CPU申请中断。据此,多机通信的过程总结如下: 2022/7/21606.4 51系列单片机的通信(1)令所有从机的SM2=1,处于只接收地址帧的状态。 (2)主机发送一帧地址信息,与所有从机进行联络。其中包含

48、8位地址,第9位(TB8)为1,表示发送的是地址信息。 (3)每个从机接收到地址帧后,产生中断,将各自所接收的地址与本机地址比较。地址相符的从机,将其地址发给主机,并使其SM2=0,以接收主机随后发来的信息,数据接收完后,置位SM2,返回接收地址帧状态 ;地址不相符的从机,仍保持自身SM2=1状态,对主机随后发来的数据不予理睬,等待主机发送新的地址帧。 (4)主机接收从机回送的地址信息后,与其发送的地址比较:若相等,则发送控制指令或数据给被寻址的从机,数据帧的第9位(TB8)置0,表示发送的是数据或控制指令。若不相等,则继续发送地址信息,第9位(TB8)为1。 2022/7/21616.4 51系列单片机的通信(5)当主机需要和其它从机通信时,可再发出从机的地址帧信息,回到(2)。 6.4.3 51系列单片机与PC机通信技术 程序流程和详细的程序请参考教材,这里离不再介绍。 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。由PC机和51系列单片机就可以组成一种分布式系统。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论