MCS-51的串行通信接口.ppt

上传人:max****ui 文档编号:10974319 上传时间:2020-04-16 格式:PPT 页数:46 大小:1.50MB
返回 下载 相关 举报
MCS-51的串行通信接口.ppt_第1页
第1页 / 共46页
MCS-51的串行通信接口.ppt_第2页
第2页 / 共46页
MCS-51的串行通信接口.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第7章MCS 51的串行通信接口 7 1串行通信概述计算机与外部设备或计算机与计算机之间的数据交换称为通信 通信分为并行通信与串行通信两种基本方式 并行通信 将数据的各位用多条数据线同时进行传送 外加地址线和通信控制线 优点是传输速率高 缺点是长距离传输成本高 可靠性差 只适用于近距离传输 串行通信 将数据分成1位1位的形式在一条传输线上逐个地传送 优点是传输线少 长距离传送时成本低 缺点是传输速率低 7 1串行通信概述 a 并行通信方式 b 串行通信方式图7 1并行和串行通信方式 7 1串行通信概述 1 串行通信的种类根据数据传输方式的不同 可将串行通信分为同步通信和异步通信 1 同步通信同步通信是一种数据连续传输的串行通信方式 通信时发送方把需要发送的多个字节数据和校验信息连接起来 组成数据块 发送时 发送方只需在数据块前插入1 2个特殊的同步字符 然后按特定速率逐位输出 发送 数据块内的各位数据 接收方在接收到特定的同步字符后 也按相同速率接收数据块内的各位数据 7 1串行通信概述 典型的同步通信格式如下 在这种通信方式中 数据块内的各位数据之间没有间隔 传输效率高 发送 接收双方必须保持同步 使用同一时钟信号 且数据块长度越大 对同步要求就越高 同步通信设备复杂 成本高 一般只用在高速数字通信系统中 7 1串行通信概述 2 异步通信异步通信是以字符帧为单位进行传输 每帧数据由4部分组成 起始位 占1位 数据位 占 位 奇偶校验位 占 位 也可以没有校验位 停止位 占1或2位 图7 2中给出的是8位数据位 1位奇偶校验位和1位停止位 加上1位起始位 共11位组成一个传输帧 7 1串行通信概述 图7 2异步通信字符帧格式 7 1串行通信概述 发送方 传送时先输出起始位 作为联络信号 接下来的是数据位和奇偶校验位 停止位 1 表示一个字符的结束 其中 数据的低位在前 高位在后 字符之间允许有不定长度的空闲位 接收方 传送开始后 接收设备不断检测传输线的电平状态 当收到一系列的 1 空闲位或停止位 之后 检测到一个 说明起始位出现 就开始接收所规定的数据位和奇偶校验位以及停止位 异步通信的特点 所需传输线少 设备开销较小 在单片机控制系统中得到广泛的应用 但每个字符要附加2 3位用于起止位 各帧之间还有间隔 因此传输效率不高 7 1串行通信概述 2 串行通信数据传输方向根据串行通信数据传输的方向 可将串行通信系统传输方式分为 单工方式 半双工方式和全双工方式 如图7 3所示 图7 3数据传输方式 7 1串行通信概述 1 单工 数据传输仅能从发送设备传输到接收设备 2 半双工 两个串行通信设备之间只有一条数据线 数据传输可以沿两个方向 但需要分时进行 3 全双工 是指两个串行通信设备之间可以同时进行接收和发送 3种方式中 全双工方式的效率最高 半双工方式配置和编程相对灵活 传输成本较低 串行通信设备常选用半双工方式 7 1串行通信概述 3 波特率数据的传输速率可以用波特率表示 波特率是信号每秒变化的次数 单位是 符号 s比特率是每秒传送二进制数的位数单位是 bit s或kbit s 如每秒传送240个字符 而每个字符格式包含10位这时的波特率为10位 bit 240个 s 2400bit s 在异步串行通信中 接收方和发送方应使用相同的波特率 才能成功传送数据 7 2串行口结构及控制寄存器 MCS 51单片机内部有一个全双工异步串行I O接口 MCS 51串行接口的内部简化结构如图7 4所示 图7 4MCS 51串行接口结构图 7 2串行口结构及控制寄存器 P3 0是串行数据接收端RXD P3 1是串行数据发送端TXD 串行接口的结构由串行接口控制电路 发送电路和接收电路3部分组成 发送电路由发送缓冲器 SBUF 发送控制电路组成 用于串行接口的发送 接收电路由接收缓冲器 SBUF 接收控制电路组成 用于串行接口的接收 两个数据缓冲器 SBUF 在物理上相互独立 在逻辑上却占用同一字节地址99H 7 2串行口结构及控制寄存器 单片机串行接口工作方式是通过初始化设置 将两个相应控制字分别写入串行控制寄存器SCON 98H 和电源控制寄存器PCON 97H 即可 1 和串行接口有关的特殊功能寄存器1 数据缓冲器 99H 发送缓冲器 只管发送数据 CPU写入SBUF的时候 MOVSUBF A 即为发送 接收缓冲器 只管接收数据 CPU读取SBUF的过程 MOVA SUBF 即为接收 7 2串行口结构及控制寄存器 发送缓冲器只能写入 不能读出 接收缓冲器只能读出 不能写入 所以可同时发送数据 接收数据 对于发送缓冲器 因为发送时CPU是主动的 不会产生重叠错误 接收缓冲器是双缓冲结构 以避免在接收下一帧数据之前 CPU未能及时响应接收器的中断 没有把上一帧数据读走 就会丢失前一个字节的内容 7 2串行口结构及控制寄存器 2 串行接口控制寄存器SCON 98H 用于控制串行接口的工作状态 其格式如下 7 2串行口结构及控制寄存器 1 SM0和SM1 用于设置串行接口的工作方式 2位可选择4种工作方式 如表7 1所示 其中 UART是通用异步接收和发送器的英文缩写 是晶振频率 表7 1串行接口的工作方式设置 64或 7 2串行口结构及控制寄存器 2 REN 允许串行接收位 由软件置位或清零 REN 1时 串行接口允许接收数据 REN 0时 则禁止接收 3 TB8 在方式2或方式3中 是发送数据的第9位 可以用作数据的奇偶校验位 或在多机通信中 作为地址帧 数据帧的标志位 4 RB8 在方式2或方式3中 是接收到数据的第9位 作为奇偶校验位或地址帧 数据帧的标志位 在方式1时 若SM2 0 则RB8是接收到的停止位 7 2串行口结构及控制寄存器 5 TI 发送中断标志位 由内部硬件使TI置 1 向CPU发中断申请 必须用软件将其清 0 取消此中断申请 6 RI 接收中断标志位 由内部硬件使RI置 1 向CPU发中断申请 必须用软件将其清 0 取消此中断申请 7 SM2 为多机通信控制位 主要用于方式2和方式3 通过控制SM2 可以实现多机通信 7 2串行口结构及控制寄存器 8 电源控制寄存器PCON 97H 其中只有1位SMOD与串行接口工作有关 格式如下 9 SMOD 波特率系数控制位 在串行接口方式1 方式2 方式3时 波特率与SMOD有关 当SMOD 1时 波特率加倍 否则不加倍 复位时 SMOD 0 PCON的地址为97H 不能位寻址 需要字节传送 7 3串行口的工作方式 串行接口可由SCON中的SM0 SM1设置4种工作方式 1 方式0串行接口为同步移位寄存器的输入 输出方式 而不是通信方式 可外接移位寄存器 用于扩展并行I O接口 注意 数据都由RXD P3 0 引脚输入或输出 TXD引脚总是用于输出同步移位脉冲 发送和接收均为8位数据 低位在先 高位在后 波特率固定为 12 7 3串行口的工作方式 2 方式0输出方式0时输出时序如图7 5所示 图7 5方式0输出时序 7 3串行口的工作方式 当执行任何一条写SBUF的指令时 就启动了串行接口的发送过程 如MOVSBUF A 内部的定时逻辑在SBUF写入数据之后 经过一个完整的机器周期 输出移位寄存器中输出位的内容送RXD引脚输出 移位脉冲由TXD引脚输出 它使RXD引脚输出的数据移入外部移位寄存器 当数据的最高位D7位移出后 停止发送数据和移位脉冲 就完成了1B的输出 并把中断标志 TI 置 1 如要再发送下一字节数据 必须用软件先将TI清 0 7 3串行口的工作方式 3 方式0输入方式0时输入时序如图7 6所示 当SCON中的接收允许位REN 1和RI 0时 就会启动一次串行接口接收过程 串行数据从RXD引脚输入 移位脉冲由TXD引脚输出 当接收完一帧数据后 由硬件将输入移位寄存器中的内容写入SBUF 并把中断标志 RI 置 1 如要再接收数据 就再用软件将RI清 0 7 3串行口的工作方式 方式0时输入时序如图7 6所示 图7 6方式0输入时序 7 3串行口的工作方式 4 方式1串行接口为波特率可变的8位数据的异步通信接口 TXD为数据发送引脚 RXD为数据接收引脚 传送1帧数据为10位 其中 1位起始位 0 8位数据位 低位在先 1位停止位 1 方式1的波特率由定时器 T1 的溢出率和SMOD的状态决定 7 3串行口的工作方式 5 方式1输出方式1的发送时序如图7 7所示 图7 7方式1的发送时序 7 3串行口的工作方式 执行一条写SBUF的指令就启动了发送过程 在发送移位时钟的作用下 从TXD引脚先送出起始位 0 然后是8位数据位 最后是停止位 1 1帧10位数据发送完后 将中断标志 TI 置 1 向CPU申请中断 如要再发送下一字节数据 必须用软件先将TI清 0 7 3串行口的工作方式 6 方式1输入软件使REN 1和RI 0时 就启动了接收过程 接收器以所选择波特率的16倍速率采样RXD引脚电平 检测到RXD引脚输入电平发生负跳变时 说明起始位有效 将其移入输入移位寄存器 并开始接收这1帧信息的其余位 接收过程中 将每个数据位宽度分成16个状态 并在中间的第7 8 9状态时对RXD采样 采样数据从输入移位寄存器右边移入 起始位移至输入移位寄存器最左边时 控制电路进行最后一次移位 7 3串行口的工作方式 当RI 0 且SM2 0 或接收到的停止位为 1 时 将接收到的9位数据的前8位数据装入接收SBUF 第9位 停止位 进入RB8 并置RI 1 向CPU请求中断 如要再接收数据 就再用软件将RI清 0 图7 8方式1的接收时序 7 3串行口的工作方式 7 方式2和方式3串行接口为9位数据的异步通信接口 TXD为数据发送引脚 RXD为数据接收引脚 传送1帧数据为11位 其中1位起始位 0 然后是8位数据位 低位在先 第10位是SCON中的TB8或RB8 最后1位是停止位 1 方式2的波特率固定为晶振频率的1 64或1 32 方式3波特率由定时器 T1 的溢出率和SMOD的状态决定 7 3串行口的工作方式 8 方式2和方式3输出方式2和方式3的发送时序如图7 9所示 图7 9方式2和方式3的发送时序 7 3串行口的工作方式 CPU向SBUF写入数据时 就启动了发送过程 SCON中的TB8写入输出移位寄存器的第9位 8位数据装入SBUF 发送开始时 先把起始位0输出到TXD引脚 然后是9位数据位 最后是停止位 1 1帧11位数据发送完后 将中断标志 TI 置 1 向CPU申请中断 如要再发送下一字节数据 必须用软件先将TI清0 7 3串行口的工作方式 9 方式2和方式3输入方式2和方式3的接收时序如图7 10所示 图7 10方式2 方式3的接收时序 7 3串行口的工作方式 软件使REN 1和RI 0时 就启动了接收过程 接收器就以所选频率的16倍速率开始采样RXD引脚的电平状态 当检测到RXD引脚发生负跳变时 说明起始位有效 将其移入输入移位寄存器 开始接收这1帧数据 接收时 将每个数据位宽度分成16个状态 并在中间的第7 8 9状态时对RXD采样 采样数据从右边移入输入移位寄存器 在起始位0移到最左边时 控制电路进行最后一次移位 7 3串行口的工作方式 当RI 0 且SM2 0 或接收到的第9位数据为 1 时 接收到的数据装入接收缓冲器和RB8 接收数据的第9位 置RI 1 向CPU请求中断 如要再接收数据 就再用软件将RI清 0 如果条件不满足 则数据丢失 且不置位RI 继续搜索RXD引脚的负跳变 7 4串行口的应用设计举例 波特率的设定串行通信双方对发送或接收数据的波特率事先要约定好保持一致 MCS 51单片机的波特率设置与工作方式有关 其中方式0和方式2的波特率是固定的 而方式1和方式3的波特率是可变的 由定时器T1的溢出率和SMOD的状态决定 7 4串行口的应用设计举例 各种方式的波特率计算由以下公式确定 方式0的波特率 12方式2的波特率 2SMOD 64 方式1的波特率 2SMOD 32 T1溢出率 方式3的波特率 2SMOD 32 T1溢出率 7 4串行口的应用设计举例 当T1作为波特率发生器时 常使T1工作在自动重装初值的8位定时器方式 并禁止T1中断 这种方式可避免重新设定定时初值而产生波特率误差 TH1从初值计数到产生溢出 它每秒溢出的次数称为溢出率 T1溢出率 12 256 TH1 7 4串行口的应用设计举例 在单片机的应用中 相同机种单片机的波特率很容易达到一致 只要晶振频率相同 可以采用完全一致的设置参数 异机种单片机的波特率设置较难达到一致 这时的设计原则应使两个通信设备之间的波特率误差小于2 5 常用的串行接口波特率 晶振频率以及各参数的关系如表7 4所示 7 4串行口的应用设计举例 表7 4常用波特率 晶振频率与定时器 T1 的参数关系 7 4串行口的应用设计举例 串行接口工作在方式0时用于扩展并行I O接口 74LS164为一个1位串行输入8位并行输出的移位寄存器 TXD引脚输出的移位脉冲将RXD引脚输出的数据 低位在先 逐位移入74LS164 扩展8个LED指示灯 74LS165为一个8位并行输入1位串行输出的移位寄存器 TXD引脚输出的移位脉冲将74LS165的8位并行输入的数据 低位在先 逐位移入RXD引脚 扩展8个按键 图4 20为一个串行接口扩展并行I O接口方案 7 4串行口的应用设计举例 例 功能 如图7 11所示的8个LED指示灯 指示8个按键闭合状态 有键按下时对应的指示灯亮 图7 11串行接口扩展并行I O接口方案 7 4串行口的应用设计举例 实现程序 SIO MOVSCON 10H REN 1 RI 0 SM0 0 SM1 0 串行口工作在方式0 且启动接收过程LOOP CLRP1 0 允许并行读入按键到74LS165 S 0 有按键的位读数为0SETBP1 0 允许串行移位 S 1CLRRI 启动接收JNBRI 若RI 0 8位数据未接收完 等待MOVA SBUF 若RI 1 8位数据接收完 读入ACLRTI 清发送标志 准备发送MOVSBUF A 启动发送 输出数据位0 将点亮对应位LEDJNBTI 8位数据未发送完 等待SJMPLOOP 8位数据发送完 循环 7 4串行口的应用设计举例 RECEIVE MOVA SBUFCJNEA 1 LOOP 判断是否呼叫本机SETBP2 7 MAX485发送使能端有效NOPMOVR1 06HMOVR0 40HSCYCLE LCALLSDATA 发送热量值 调用发送子程序INCR0DJNZR1 SCYCLE 发送完毕 LJMPLOOPSDATA MOVA R0 发送子程序MOVSBUF ASWAIT JBCTI SEXITSJMPSWAITSEXIT RET 7 4串行口的应用设计举例 多机通信原理串行口控制寄存器SCON中的SM2为多机通信接口控制位 串行口以方式2或3接收时 若SM2为1 则仅当接收到的第9位数据RB8为1时 数据才装入SBUF 置位RI 请求CPU对数据进行处理 当SM2为0时 则接收到一个数据后 不管第9位数据RB8是0还是1 都将数据装入接收缓冲器SBUF并置位中断标志RI 请求CPU处理 发送 先发送地址帧 TB8 1 再发送数据帧 TB8 0 MCS 51单片机多机通信系统举例 发送分二步 1 先发送地址 第九位为1即TB8 1 所有子机都能接收2 再发送数据 第九位为0即TB8 0 只有地址指定的子机接收 接收分二步 1 待接收状态置SM2 1 只接收RB8 1的信息帧 即地址信息2 收到的地址与本机符合时 置SM2 0 即可接收数据信息因为 数据帧的RB8 0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!