第8章80C51单片机串行通信.ppt_第1页
第8章80C51单片机串行通信.ppt_第2页
第8章80C51单片机串行通信.ppt_第3页
第8章80C51单片机串行通信.ppt_第4页
第8章80C51单片机串行通信.ppt_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

熟悉串行通信的基本概念掌握串行口的结构及工作原理掌握串行口的工作方式掌握串行口的应用 学习重点和难点 80C51单片机串行通信的基本原理单片机串行通信的应用 教学目的 第8章80C51单片机串行通信 第8章80C51单片机串行通信 8 1串行通信基础知识8 280C51串行口8 380C51串行口工作方式8 4串行通信数据传输速率8 5串行通信应用 8 1串行通信基础知识 通信 指计算机与外部设备或计算机与计算机之间的信息交换 在计算机系统中 CPU与外部通信的基本方式有两种 并行通信 数据的各位同时传送 串行通信 数据一位一位顺序传送 基本通信方式示意图 8 1串行通信基础知识 并行通信的特点 各数据位同时传送 传送速度快 效率高 但有多少数据位就需要有多少根数据线 因此传送成本高 在集成电路芯片的内部 同一插件板上各部件之间 同一机箱内各插件板之间等的数据传送都是并行的 并行数据传送的距离通常小于30米 串行通信的特点 数据传送按位顺序进行 最少只需一根传输线即可完成 成本低 但速度慢 计算机与远程终端或终端与终端之间的数据传送通常都是串行的 串行数据传送的距离可以从几米到几千公里 串行通信有同步通信和异步通信两种基本方式 1 异步串行通信异步串行通信是以字符为单位的间歇传输形式 传送时按字符进行包装 为此 在数据位之外要增添起始位 奇偶校验位和停止位 构成一个通信帧 下图为异步通信的帧格式 8 1 1异步通信和同步通信 几点说明 在串行通信中 信息的两种状态分别以mark和space标志 其中mark译为标号 对应逻辑状态1 在发送器空闲时 数据线应保持在mark状态 space译为空格 对应逻辑状态0 起始位 发送器通过发送起始位而开始一个字符的传输 起始位使数据线处于space状态 数据位 起始位之后传送数据位 在数据位中 低位在前 左 高位在后 右 由于字符编码方式的不同 数据位可以是5 6 7或8位等多种形式 奇偶校验位 用于对字符传送作正确性检查 因此 奇偶校验位是可选择的 共有3种可能 即奇校验 偶校验和无校验 由用户根据需要选定 所谓偶校验 即数据位和奇偶校验位中逻辑1的个数加起来必须是偶数 全0也视为偶数个1 所谓奇校验 即数据位和奇偶校验位中逻辑1的个数加起来必须是奇数 停止位 停止位在最后 用于标志一个字符传输的结束 对应于mark状态 停止位可能是1 1 5或2位 在实际应用中根据需要确定 位时间 一个格式位的时间宽度 帧 Frame 从起始位开始到停止位结束的全部内容称为一帧 异步串行通信是一帧接一帧进行的 传输可以是连续的 也可以是断续 间歇 的 2 同步串行通信为提高传送速度 把数据传输按相等的时间间隔分块进行 在数据块的开始加一些特殊字符 作为发送和接收双方的同步标志 由于数据块的位数较多 为防止错位 在发送数据时一般同时给出时钟信号 以保持接收与发送的同步 这就是同步串行通信 同步串行通信的数据传送格式如下图所示 同步串行通信的数据格式有如下特点和要求 只在数据块传输的开始使用同步字符串 作为发送和接收双方同步的标志 而在结束时不需要同步标志 数据字符之间不允许有间隔 当线路空闲或没有数据可发时 可发送同步字符串 数据块内各字符的格式必须相同 同步串行通信比异步串行通信的传送速度快 但同步串行通信要求收发双方在整个数据传输过程中始终保持同步 这将对硬件提出更高的要求 实现起来难度大一些 而异步串行通信只要求在每帧的短时间内保持同步即可 实现起来容易得多 所以同步串行通信适用于数据量大 对速度要求比较高的串行通信场合 1 单工形式单工 Simplex 形式的数据传输是单向的 通信双方中一方固定为发送端 另一方则固定为接收端 单工形式的串行通信只需要一条数据线 如下图所示 例如 计算机与打印机之间的串行通信 8 1 2串行通信线路形式 2 全双工形式全双工 Fullduplex 形式的数据传输是双向的 可以同时发送和接收数据 因此 全双工形式的串行通信需要两条数据线 3 半双工形式半双工 Halfduplex 形式的数据传输也是双向的 但任何时刻只能由其中的一方发送数据 另一方接收数据 因此半双工形式既可以使用一条数据线 也可以使用两条数据线 近程串行通信单片机的数据信号在传输线上传送时 由于受到线间分布电容和噪声干扰等影响 将引起传输信号的幅度衰减和波形畸变 极易导致传输错误 加之导线越长电容越大 所以传输距离就受到一定的限制 由于近距离串行通信不改变数据位波形和频率 所以也称为基带传输方式 虽然基带方式实现起来既方便又经济 但只能用于近程通信 对于近距离的串行通信 例如一个房间内的计算机之间 距离不超过10m 传输中虽有波形畸变产生 但不会严重到影响使用 仍可使用TTL电平直接传输 近距离的串行通信并不复杂 只需将两端串行口直接连接就可进行串行数据通信 省去了接口的麻烦 见下图 远程通信 对于远程通信 例如城市之间 不能使用基带传输方式 只能使用模拟信号形式进行 一般使用电话线 为了在电话线上进行串行数据传输 需要在发送端把数字信号转变为模拟信号再进行发送 这种把数字信号转变为模拟信号的过程称为调制 在接收端应把模拟信号再转变为数字信号 这一过程称为解调 远程通信多采用双工方式 即通信双方都应具有发送和接收功能 为此在通信线路的两端都设置调制器和解调器 并且把二者结合在一起称为调制解调器 Modem 使用电话线作传输线的远程通信连接如下图所示 8 280C51串行口 为了实现串行通信 需要有硬件电路以解决串行数据传输中的一系列协调问题 这些硬件就是串行接口电路或简称串行口 8 2 180C51串行口硬件结构通常把实现异步通信的串行口称为通用异步接收器 发送器UART UniversalAsynchronousReceiver Transmitter 80C51的串行口 虽然是既能实现同步通信 又能实现异步通信的全双工串行口 但在单片机的串行数据通信中 最常用的是异步方式 因此 常把它写为UART 串行接口结构如下图所示 80C51串行口寄存器结构 80C51单片机有两个独立的接收 发送缓冲器SBUF 属于特殊功能寄存器 一个用作发送 一个用作接收 发送缓冲器只能写入不能读出 接收缓冲器只能读出不能写入 两者共用一个字节地址 99H 在发送时 CPU由一条写发送缓冲器的指令把数据 字符 写入串行口的发送缓冲器SBUF 发 中 然后从TXD端一位位地向外发送 与此同时 接收端RXD也可一位位地接收数据 直到收到一个完整的字符数据后通知CPU 再用一条指令把接收缓冲器SBUF 收 的内容读入累加器 可见 在整个串行收发过程中 CPU的操作时间很短 使得CPU还可以从事其他的各种操作 指工作在中断方式下 从而大大提高了CPU的效率 80C51串行口通过控制寄存器 中断功能和波特率设置实现串行通信控制 串行口控制寄存器 SCON 98HSM0 SM1 串行口工作方式选择位 其状态组合所对应的工作方式为 SM0SM1 00 工作方式0 SM0SM1 01 工作方式1 SM0SM1 10 工作方式2 SM0SM1 11 工作方式3 8 2 2串行口控制机制 SM2 多机通信控制位 TB8 发送数据位8 RB8 接收数据位8 这3位用于多机通信 因为多机通信是在方式2和方式3下进行的 因此SM2主要用于方式2和方式3 当串行口以方式2和方式3接收数据时 SM2 1 则只有在接收到的第9位数据 RB8 为1时才将接收到的前8位数据送入SBUF 并置位RI产生中断请求 否则将接收到的前8位数据丢弃 SM2 0 则不论第9位数据是0还是1 都将前8位数据装入SBUF中 并产生中断请求 在方式0时 SM2必须为0 REN 允许接收位 REN 0 禁止接收 REN 1 允许接收 TI 串行发送中断请求标志 在数据发送过程中 当最后一个数据位被发送完成后 TI由硬件置位 RI 串行接收中断请求标志 在数据接收过程中 当采样到最后一个数据位有效时 RI由硬件置位 2 串行中断80C51有两个串行中断 即串行发送中断和串行接收中断 但这两个串行中断共享一个中断向量0023H 每当串行口发送或接收一个数据字节时 都产生中断请求 串行中断请求在芯片内部发生 因此不需要引脚 两个中断共享一个中断向量 就需要在中断服务程序中对中断源进行判断 以便进行不同的中断处理 对于串行中断控制共涉及3个寄存器 其中一个就是串行口控制寄存器SCON 用于存放串行中断请求标志 另外两个中断允许控制寄存器IE和中断优先级控制寄存器IP 8 380C51串行口工作方式 80C51单片机的串行口共有4种工作方式 见下表 8 3 1串行工作方式0 串行工作方式0是把串行口作为同步移位寄存器使用 实现串行数据的输入 输出 移位数据的传输以8位为一组 低位在前 高位在后 利用串行工作方式0 加上 并入串出 或 串入并出 芯片的配合 80C51的串行口可实现数据的并行输入 输出 方式0实现数据并行输入 输出 并入串出 芯片74LS165 CD4014 用于把并行输入数据通过移位形成位串 传送给串行口 而 串入并出 芯片 74LS164 CD4094 则接收串行口的串行数据 通过移位形成8位并行数据输出 74LS164CLR为清0端 输出时CLR必须为1 否则74HC164Q0 Q7输出为0 74HC165S L端为移位 置入端 当S L 0时 从Q0 Q7并行数据置入寄存器 当S L 1时 允许从Q端移出数据 串行接口工作方式0其波特率是固定的 为fosc 振荡频率 的1 12 1 方式0发送数据从RxD引脚串行输出 TxD引脚输出同步脉冲 当一个数据写入串行口发送缓冲器时 串行口将8位数据以fosc 12的固定波特率从RxD引脚输出 从低位到高位 发送后置中断标志TI为1 请求中断 在再次发送数据之前 必须用软件将TI清零 2 方式0接收在满足REN 1和RI 0的条件下 串行口处于方式0输入 此时 RxD为数据输入端 TXD为同步信号输出端 接收器也以fosc 12的波特率对RxD引脚输入的数据信息采样 当接收器接收完8位数据后 置中断标志RI 1为请求中断 在再次接收之前 必须用软件将RI清零 在方式0工作时 必须使SCON寄存器中的SM2位为 0 这并不影响TB8位和RB8位 方式0发送或接收完数据后由硬件置位TI或RI CPU在响应中断后要用软件清除TI或RI标志 8 3 2串行工作方式1 串行工作方式1是10位为一帧的异步串行通信方式 帧格式包括1个起始位 8个数据位和1个停止位 这种工作方式是为双机通信而准备的 1 方式l发送由一条写发送寄存器 SBUF 的指令开始 随后在串行口由硬件自动加入起始位和停止位 构成一个完整的帧格式 然后在移位脉冲的作用下 由TXD端串行输出 一个字符帧发送完后 使TXD输出线维持在1状态下 并将SCON寄存器的TI位置1 通知CPU可以接着发送下一个字符 2 方式1接收SCON的REN位应处于允许接收状态 即REN 1 在此前提下 串行口采样RXD端 当采样到从1到0的状态跳变时 就认为已接收到起始位 随后在移位脉冲的控制下 把接收到的数据位移入接收寄存器中 直到停止位到来之后置位中断标志位RI 通知CPU从SBUF取走接收到的一个字符 8 3 3串行工作方式2和3 串行工作方式2和3都是11位为一帧的串行通信方式 即1个起始位 9个数据位和1个停止位 这两种工作方式主要是为多机通信而准备的 在这两种工作方式下 字符还是8个数据位 只不过增加了一个第9数据位 D8 它是一个可编程位 其功能由用户设定 在发送数据时 应予先在串行口控制寄存器SCON的TB8位中把第9个数据位的内容准备好 这两种工作方式的数据接收过程也与方式1基本类似 不同点仍在第9数据位上 串行口把接收到的前8个数据位移入SBUF 而把第9数据位送SCON的RB8 串行工作方式2和3是为多机通信而准备的 两者的工作过程相同 差别仅在于波特率的设置 方式2的波特率是固定的 而方式3的波特率可由用户根据需要设定 设定方法与方式1相同 8 4串行通信数据传输速率 8 4 1传输速率的表示方法 1 与传输速率有关的术语波特率 每秒钟事件发生的数目或信号变化的次数 单位 波特 B Baud 比特率 每秒钟传送二进制的位数 单位 位 秒 bps 说明 1 在一般的单片机串行通信中 事件和信号变化都反映在二进制位上 波特率与比特率的概念是一样的 2 但在高速串行通信中 由于一个事件的编码往往不止1位 因此波特率与比特率就不一样了 例如事件按4位编码 如果数据传输的波特率是2400 则比特率就是 9600 2 单片机中使用的波特率在单片机中使用波特率来表示串行通信的传送速率 波特率 每秒钟传送二进制的位数 1波特 1位 秒 bps 注意 波特率和字符的传输速率不同例如 如果每秒钟传送240个字符 而每个字符格式包含10位 1个起始位 8个数据位 1个停止位 这时的波特率为 10位 240个 秒 2400bps 波特率是串行通信的重要技术指标在串行通信中 波特率除表明数据传送速率外 还可以表示串行口中移位脉冲频率的高低 波特率高表明移位脉冲频率高 串行数据传输速度就快 反之 波特率低表明移位脉冲频率也低 串行数据传输速度就慢 在实际的串行通信中 应根据速度要求 线路质量以及设备情况等因素选定波特率 1 串行工作方式0的波特率串行工作方式0的波特率是固定的 其计算公式为 2 串行工作方式2的波特率串行工作方式2的波特率也是固定的 但有两个数值 其计算公式为 SMOD 0时 波特率 SMOD 1时 波特率 8 4 280C51单片机的波特率设置 电源控制寄存器PCON 字节地址87H 其中SMOD 串行口的波特率倍增位SMOD 0 波特率不加倍SMOD 1 串行口波特率加倍 系统复位时 SMOD 0 PCON不能位寻址 3 串行工作方式1和方式3的波特率 串行工作方式1和方式3的波特率不是固定的 可以根据需要设置 当串行口工作在方式1和方式3时 由80C51单片机的定时器T1作为波特率发生器 以定时器T1作波特率发生器是由系统决定的 为串行口提供移位脉冲 串行工作方式1和方式3的波特率计算公式为 当定时器T1作波特率发生器使用时 通常选用工作方式2 即8位自动重装载方式 选择方式2可以避免通过程序反复装入定时初值所引起的定时误差 使波特率更加稳定 定时器的溢出周期 定时器溢出一次所需要的时间 定时器的溢出率 单位时间定时器溢出的次数 溢出率等于溢出周期的倒数 当定时器T1工作在方式2 即8位自动重装载方式 假定定时器T1的计数初值为X 则定时器T1的溢出周期为 溢出率为溢出周期的倒数 则定时器T1的溢出率为 实际使用中 波特率是已知的 因此需要根据波特率的计算公式求定时初值X 思考题 定时器T1工作在方式2 串行口方式1波特率 1200bps fosc 12MHZ SMOD 0 则X 如果T1预装的初值X E6H 则实际得到的波特率为 误差怎么解决 其它条件不变 取fosc 11 0592MHZ 则X 说明 1 当串行口工作在方式1或方式3 且要求波特率按规范取1200 2400 4800 9600 时 若采用晶振12MHz和6MHz 按波特率计算公式算出的T1定时初值将不是一个整数 因此会产生波特率误差而影响串行通信的同步性能 解决的方法可以调整单片机的晶振频率fosc 通常采用为11 0592MHz的晶振 这样可使计算出的T1初值为整数 2 实际使用时 可根据波特率的计算公式来计算T1的初值 为避免烦杂的初值计算 可以通过查常用波特率与定时器1的参数关系表 3 串行口工作在方式1和方式3时 定时器1初始化程序的步骤 首先确定波特率再计算定时器1的计数初值然后进行定时器的初始化 例题 单片机的晶振频率为11 0592MHZ 串行口工作在方式1 波特率为2400bps 计算定时器T1的计数初值 并写出初始化程序 假设SMOD 0 解 定时器T1工作在方式2 8位自动重装载方式 初始化程序 MOVTMOD 20HMOVTL1 0F4HMOVTH1 0F4HSETBEACLRESMOVPCON 00HMOVSCON 50HSETBTR1 80C51单片机的串行口共有4种工作方式 见下表 例题 用80C51单片机的串行口外接串入并出的芯片CD4094扩展并行输出口控制一组发光二极管 使发光二极管从左至右延时轮流点亮 fosc 12MHZ ORG0000HLJMPMAINORG2000HMAIN MOVSCON 00HMOVA 80HCLRP1 0START MOVSBUF ALOOP JNBTI LOOPSETBP1 0ACALLDELAYCLRTIRRACLRP1 0SJMPSTART DELAY MOVR7 05HLOOP2 MOVR6 0FFHLOOP1 DJNZR6 LOOP1DJNZR7 LOOP2RETEND 思考题 用80C51单片机的串行口外接并入串出的芯片CD4014扩展并行输入口 输入一组开关的信息 开关K闭合时有效 ORG0000HLJMPMAINORG2000HMAIN SETBP1 1START JBP1 1 STARTSETBP1 0MOVSCON 10HCLRP1 0LOOP JNBRI LOOPCLRRIMOVA SBUF 常用波特率与定时器1的参数关系表 8 5串行通信应用 8 5 1近程串行通信 8 5 2调制解调器的使用 8 5 3双机通信 在进行双机通信之前 发送和接收双方要进行一些约定 明确一些技术问题 1 数据通路采用何种形式 硬件电路如何连接 采用何种串行工作方式 约定 串行工作方式1 双机异步通信接口电路 2 数据传送的波特率是多少 约定 2400bps 4 双方如何取得联络 约定 甲机向乙机发送一个E1作为联络信号 表示请求通信乙机收到E1信号后 回答一个E2作为应答信号 表示通信 3 如何检验数据传输的正确性 约定 采用累加和检验 代码和检验 累加和检验 发送方对所发送的数据块求和 并将 检验和 附加到数据块末尾 也发送给接收方 接收方接收数据时 也是先对数据块求和 将所得结果与发送方的 检验和 进行比较 若两者相同 表示传送正确 若不相同表示传送出了差错 5 双方通信如何结束 约定 乙机如果接收的数据正确 向甲机发送00H信号 表示结束双方的通信 乙机如果接收的数据不正确 向甲机发送非00H信号 表示数据出错 要求甲机重新发送 甲机通信流程图 乙机通信流程图 ASTART CLREAMOVTMOD 20HMOVTH1 0F4HMOVTL1 0F4HMOVPCON 00HSETBTR1MOVSCON 50HALOOP1 MOVSBUF 0E1HJNBTI CLRTIJNBRI CLRRIMOVA SBUFXRLA 0E2HJNZALOOP1 ALOOP3 MOVSBUF R0MOVA R6ADDA R0MOVR6 AINCR0JNBTI CLRTIDJNZR7 ALOOP3MOVSBUF R6JNBTI CLRTIJNBRI CLRRIMOVA SBUFJNZALOOP2RET 甲机发送程序清单 采用查询方式 BSTART CLREAMOVTMOD 20HMOVTH1 0F4HMOVTL1 0F4HMOVPCON 00HSETBTR1MOVSCON 50HBLOOP1 JNBRI CLRRIMOVA SBUFXRLA 0E1HJNZBLOOP1MOVSBUF 0E2HJNBTI CLRTIBLOOP2 MOVR0 40HMOVR7 10HMOVR6 00H BLOOP3 JNBRI CLRRIMOVA SBUFMOV R0 AINCR0ADDA R6MOVR6 ADJNZR7 BLOOP3JNBRI CLRRIMOVA SBUFXRLA R6JZEND1MOVSBUF 0FFHJNBTI CLRTIAJMPBLOOP2END1 MOVSBUF 00HRET 乙机接收程序清单 采用查询方式 8 5 4多机通信 多机通信是指一台主机和多台从机之间的通信 通常单片机的多机通信采用主从式多机通信方式 在这种方式中 只有一台主机 有多台从机 主机发送的信息可以传到各个从机或指定的从机 各从机发送的信息只能被主机接收 主要问题 怎样识别地址 怎样维持主机与指定从机之间的通信 1 多机通信连接电路 在串行方式2或方式3条件下 可实现一台主机和多台从机之间的通信 其连接电路如图所示 2 多机通信原理 多机通信时 主机向从机发送的信息分为地址帧和数据帧两类 以可编程第9位TB8作区分标志 TB8 0 表示数据 TB8 1 表示地址 多机通信充分利用了80C51串行控制寄存器SCON中的多机通信控制位SM2的特性 当SM2 1时 CPU接收的前8位数据是否送入SBUF取决于接收的第9位RB8的状态 若RB8 1 将接收到的前8位数据送入SBUF 并置位RI产生中断请求 若RB8 0 则接收到的前8位数据丢弃 即当从机SM2 1时 从机只能接收主机发送的地址帧 RB8 1 对数据帧 RB8 0 不予理睬 当从机SM2 0时 从机可接收主机发送的所有信息 通信开始时 主机首先发送地址帧 由于各从机的SM2 1和RB8 1 所以各从机均能接收到地址帧 分别发出串行接收中断请求 通过串行中断服务程序来判断主机发送的地址与本从机地址是否相符 如果相符 则把自身的SM2清0 以准备接收随后传送来的数据帧 其余从机由于地址不符 则仍保持SM2 1状态 因而不能接收主机传送来的数据帧 这就是多机通信中主 从机一对一的通信情况 这种通信只能在主 从机之间进行 如果想在两个从机之间进行通信 则要通过主机作中介才能实现 3 多机通信过程 1 主 从机工作于方式2或方式3 主机置SM2 0 REN 1 从机置SM2 1 REN 1 2 主机置位TB8 1 向从机发送寻址地址帧 各从机因满足接收条件 SM2 1 RB8 1 从而接收到主机发来的地址 并与本机地址进行比较 3 地址一致的从机 被寻址机 将SM2清0 并向主机返回地址 供主机核对 地址不一致的从机 未被寻址机 保持SM2 1 4 主机核对返回的地址 若与此前发出的地址一致则准备发送数据 若不一致则返回 2 重新发送地址帧 5 主机向从机发送数据 此时主机的TB8 0 只有被选中的那台从机能接收到该数据 其他从机则舍弃该数据 6 本次通信结束后 从机重新置SM2 1 等待下次通信 4

温馨提示

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

评论

0/150

提交评论