精品毕业论文--基于51单片机的主从通信系统的设计与实现内容摘要:

字节,这时接收器件可以将 SCL 线拉成低电平,从而使主机处于等待状态。 直到接收器件准备好接收下一个字节时,再释放 SCL 线使之为高电平,从而使数据传送可以继续进行。 数据传送格式 : (1)字节传送与应答 每一个字节必须保证是 8位长度。 数据传送时,先传送最高位( MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有 9位)。 原理图如图 33所示。 如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到SCL SDA 要求数据稳定 允许数据变化 要求数据稳定 起始信号 S 终止信号 P 10 数据。 由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。 如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的 “ 非应答 ” 通知主机,主机则应发出终止信号以结束数据的继续传送。 当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传 送的信号。 这个信号是由对从机的 “ 非应答 ” 来实现的。 然后,从机释放 SDA 线,以允许主机产生终止信号。 图 33 IIC 字符传送格式 (2)数据帧格式 IIC 总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。 在起始信号后必须传送一个从机的地址 (7 位 ),第 8位是数据的传送方向位 (R/T),用 “ 0” 表示主机发送数据 (T), “ 1” 表示主机接收数据 (R)。 每次数据传送总是由主机产生的终止信号结束。 但是,若主机希望继续占用总线进行新的数据传送, 则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。 在总线的一次数据传送过程中,可以有 三 种组合方式: 第一是 主机向从机发送数据,数据传送方向在整个传送过程中不变。 第二是 主机在第一个字节后,立即从从机读数据。 第三种刚是 在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读 /写方向位正好反相。 IIC 总线的寻址 是 采用 7 位的寻址字节 (寻址字节是起始信号后的第一个字节 )。 SDA (从机 ) SDA (从机 ) 起始信号 非应答 应答 SCL (主机 ) 11 SPI 总线传输协议 SPI 的通信原理非常简单, 它以主从方式工作,这种模式通常有一个主设备和多个从设备。 其中 CS 信号是控制从机的芯片是否被选中的。 如图 34所示,系统内有一个主设备 M1 和两个从设备 S1 与 S2。 当 S1 的片选信号 CS 为低电平时, S1 被选中, M1 通过 MOSI 引脚发送数据, S1 通过 MOSI 引脚接收数据,或者 S1 通过 MISO 引脚发送数据,而 M1 通过 MISO 引脚接收数据。 同样的,当 S2 的片选信号 CS 为低电平时, S2 被选中, M1 通过 MOSI 引脚发送数据,S2 通过 MOSI 引脚接收数据,或者 S2 通过 MISO 引脚发送数据,而 M1 通过MISO 引脚接收数据。 从机只有通过 CS 信号选中之后,对此从机的操作才会有效,可见, 片选信号的存在使得允许在同一总线上连接多个 SPI 设备成为可能。 当从机芯片被选中,和主机建立连接之后,接下来就是负责通讯的 3 根线了。 通讯是通过数据交换完成的,这里首先要知道 SPI 是串行通讯协议,也就是说数据是一位一位进行传输的。 这就是 SCK 时钟线存在的原因,传输时,由 SCK提供时钟脉冲, MOSI, MISO 则基于此脉冲完成数据传输。 如图 34 所示,当M1 给 S1 发送数据时,数据从 M1 输出通过 MOSI线,数据在时钟脉冲的上升沿或下降沿时输出,在紧接着的下降沿或上升沿通过 S1 的 MOSI线被读取。 当S1 给 M1 发送数 据时,原理是一样的,只不过通过的是 MISO 线来完成 [10]。 图 34 SPI 传输原理图 要注意的是, SCK 信号线只由主设备控制,从设备不能控制时钟信号线。 因此,在一个基于 SPI的系统中,必须至少有一个主控设备。 在点对点的通信中,SCK MISO MOSI CS M1 SCK MISO MOSI CS SCK MISO MOSI CS S1 S2 12 SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。 在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比 IIC 系统要稍微复杂一些。 SPI 是一个环形总线结构,其时序其实比较简单,主要是在时钟脉冲 SCK 的控制下 ,两个双向移位寄存器 SPIDATA 进行数据交换。 我们假设主机的 8 位寄存器 SPIDATA1 内的数据是 10101010,而从机的 8 位寄存器 SPIDATA2 内的数据是 01010101,在上升沿的时候发送数据,在下降沿的时候接收数据,最高位的数据先发送,主机和从机之间全双工通信,也就是说两个 SPI 接口同时发送和接收数据,如图 35 所示。 从图中我们也可以看到, SPIDATA 移位寄存器总是将最高位的数据移出,接着将剩余的数据分别左移一位,然后将接收到得数据移入其最低位 [11]。 S C KM I S OM O S IC SS C KM I S OM O S IC SM 11 0 1 0 1 0 1 00 1 0 1 0 1 0 1M S B S P I D A T A I L S BM S B S P I D A T A I L S B 图 35 SPI 主从工作模式示意图 如图 36 所示,当第一个上升沿来的时候, SPIDATA1 将最高位 1 移除,并将所有数据左移 1 位,这时 MOSI线为高电平,而 SPIDATA2 将最高位 0 移出,并将所有数据左移 1 位,这样 MISO 线为低电平。 然后当下降沿到来的时候,SPIDATA1 将锁存 MISO 线上的电平,并将其移入其最低位,同样的, SPIDATA2将锁存 MOSI 线上的电平,并将其移入最低位。 经过 8 个脉冲后,两个移位寄存器就实现了数据的交换,也就是完成了一次 SPI的时序 [11]。 1 0 1 1 10 0 00 1 0 0 01 1 X0 1 0 0 01 1 00 1 0 0 01 1 11 0 1 1 10 0 X1 0 1 1 10 0 110 01第 一 个 脉 冲上 升 沿第 一 个 脉 冲下 降 沿 图 36 数据传输示例 13 串口通信传输协议 由于本次设计的题目是基于 8051 单片机的主从式通信系统的设计,因此有关串口通信的原理的介绍都是围绕 51 单片机讲解的。 80C51 单片机的串行口的结构 MCS51 单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接发送器,既可以接收数据也可以发送数据。 但接收缓冲器只能读出不能写入,而发送缓冲器刚只能写入不能读出。 这个通信口既可以用于网络通信,亦可以实现串行 异步通信,还可以构成同步移位寄存器使用。 如果在传行口的输入输出引脚上加上电平转换器,就可以方便地构成标准的 RS232 接口 [7][12]。 80C51 单片机的串行口的结构如图 37 所示。 ≥ 1S B U F发 送 控 制 器接 收 控 制 器移 位 寄 存 器控 制 门T IR IAT X DR X D去 串 口 中 断S M O D01T H 1 T L 1247。 2247。 1 6S B U FT 1 溢 出 率 图 37 80C51 单片机的串行口的结构 串行口 有两个物理上独立的接收、发送缓冲器 SBUF,它们占用同一地址99H ;接收器是双缓冲结构;发送缓冲器,因为发送时 CPU 是主动的,不会产生重叠错误。 80C51 串行口的控制寄存器 1. 特殊功能寄存器 SCON SCON 是一个特殊功能寄存器,用以设定串行口的工作 方式、接收 /发送控制以及设置状态标志 ,字节地址为 98H。 SCON 寄存器 的各位定义如 表 31 所示。 位 7 6 5 4 3 2 1 0 字节地址: 98H SM0 SM1 SM2 REN TB8 RB8 TI RI SCON 14 表 31 SCON 寄存器 SM0 和 SM1 为工作方式选择位,可选择四种工作方式 ,如 表 32 所示。 SM0 SM1 方式 说明 波特率 0 0 0 移位寄存器 fosc/12 0 1 1 10 位异步收发器 (8位数据 ) 可变 1 0 2 11 位异步收发器 (9位数据 ) fosc/64 或 fosc/32 1 1 3 11 位异步收发器 (9位数据 ) 可变 表 32 串口通信 4 种工作方式 SM2 为 多机通信控制位,主要用于方式 2 和方式 3。 当接收机的 SM2=1 时可以利用收到的 RB8 来控制是否激活 RI( RB8= 0 时不激活 RI,收到的信息丢弃; RB8= 1 时收到的数据进入 SBUF,并激活 RI,进而在中断服务中将数据从 SBUF 读走)。 当 SM2=0 时,不论收到的 RB8 为 0 和 1,均可以使收到的数据进入 SBUF,并激活RI(即此时 RB8 不具有控制 RI 激活的功能)。 通过控制 SM2,可以实现多机通信。 在方式 0 时, SM2 必须是 0。 在方式 1 时,若 SM2=1,则只有接收到有效停止位时, RI 才置 1。 REN 为允许串行接收位。 由软件置 REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。 TB8 用 在方式 2 或方式 3中,是发送数据的第九位,可以用软件规定其作用。 可以用作数据的奇偶校验位,或在多机通信中,作为地址帧 /数据帧的标志位 (在方式 0 和方式 1中,该位未用 )。 RB8 用 在方式 2 或方式 3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。 在方式 1时,若 SM2=0,则 RB8 是接收到的停止位。 TI,发送中断标志位。 在方式 0时,当串行发送第 8 位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使 TI 置 1,向 CPU 发中断申请。 在中断服务程序中,必须用软件将其清 0,取消此中断申请。 RI,接收中断标志位。 在方式 0时,当串行接收第 8 位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使 RI 置 1,向 CPU 发中断申请。 也必须在中断服务程序中,用软件将其清 0,取消此中断申请 [7]。 2.特殊功能寄存器 PCON PCON 的字节地址为 87H,它的第 7 位 SMOD 是与串口通信波特率的设置有关的选 择位。 SMOD()为 波特率倍增位。 在串行口方式 方式 方式 3时,波特率与 SMOD 有关,当 SMOD=1 时,波特率提高一倍。 复位时, SMOD=0。 15 80C51 单片机串行口的工作方式 0 设置 SCON 寄存器的 SM0、 SM1= 0 0 时,串行口工作于方式 0。 此 时,串行口为同步移位寄存器的输入输出方式。 主要用于扩展并行输入或输出口。 数据由 RXD()引脚输入或输出,同步移位脉冲由 TXD()引脚输出。 发送和接收均为 8 位数据,低位在先,高位在后。 波特率固定为 fosc/12。 其中 fosc 为时钟频率。 2.方式 1 设置 SCON 寄存器的 SM0、 SM1= 0 1 时,串行口工作于方式 1。 方式 1是10位数据的异步通信口。 TXD 为数据发送引脚, RXD 为数据接收引脚,传送一帧数据的格式如图所示。 其中 1 位起始位, 8位数据位, 1 位停止位。 用软件置REN 为 1 时,接收器以所选择波特率的 16 倍速率采样 RXD 引脚电平,检测到 RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。 接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最 左边时,控制电路进行最后一次移位。 当 RI=0,且 SM2=0(或接收到的停止位为 1)时,将接收到的 9位数据的前 8 位数据装入接收 SBUF,第 9 位(停止位)进入 RB8,并置 RI=1,向 CPU 请求中断。 方式一的输入输出图如图 3 39所示。 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7写 入 S B U F停 止 位T X DT I ( 中 断 标 志 )起 始 图 38 方式 1 输入 D 0 D 1 D 2 D 3 D 4 D 5 D 6 D 7停 止 位R X DR I ( 中 断 标 志 )起 始位 采 样 脉 冲 图 39 方式 1 输出 2. 方式 2和方式 3 设置 SCON 寄存器的 SM0、 SM1= 1 0 时,串行口工作于方式 2,当 SM0、SM1。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。