片机的串行通信.ppt_第1页
片机的串行通信.ppt_第2页
片机的串行通信.ppt_第3页
片机的串行通信.ppt_第4页
片机的串行通信.ppt_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

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

文档简介

单片机串行通信I O接口的结构串行通信控制寄存器单片机串行通信的工作方式以及串行通信应用 第7章单片机的串行通信 7 1数据通信 在实际工作中 计算机的CPU与外部设备之间常常要进行信息交换 一台计算机与其他计算机之间也往往要交换信息 所有这些信息交换均可称为通信 通信方式有两种 即并行通信和串行通信 通常根据信息传送的距离决定采用哪种通信方式 例如 在IBM PC机与外部设备 如打印机等 通信时 如果距离小于30m 可采用并行通信方式 当距离大于30m时 则要采用串行通信方式 89C51单片机具有并行和串行二种基本通信方式 返回 计算机与外部设备或计算机与计算机之间的数据交换称为通信 通信分为并行通信与串行通信两种基本方式 并行通信 将数据的各位用多条数据线同时进行传送 外加地址线和通信控制线 优点是传输速率高 缺点是长距离传输成本高 可靠性差 只适用于近距离传输 串行通信 将数据分成1位1位的形式在一条传输线上逐个地传送 优点是传输线少 长距离传送时成本低 缺点是传输速率低 7 1串行通信基础 7 1 1串行通信基础 a 并行通信方式 b 串行通信方式图7 1并行和串行通信方式 7 1 2串行通信的种类 根据数据传输方式的不同 可将串行通信分为同步通信和异步通信 1同步通信同步通信是一种数据连续传输的串行通信方式 通信时发送方把需要发送的多个字节数据和校验信息连接起来 组成数据块 发送时 发送方只需在数据块前插入1 2个特殊的同步字符 然后按特定速率逐位输出 发送 数据块内的各位数据 接收方在接收到特定的同步字符后 也按相同速率接收数据块内的各位数据 1同步通信SYNC SynchronousDataCommunication 在这种通信方式中 数据块内的各位数据之间没有间隔 传输效率高 发送 接收双方必须保持同步 使用同一时钟信号 且数据块长度越大 对同步要求就越高 同步通信设备复杂 成本高 一般只用在高速数字通信系统中 2异步通信异步通信是以字符帧为单位进行传输 每帧数据由4部分组成 起始位 占1位 数据位 占 位 奇偶校验位 占 位 也可以没有校验位 停止位 占1或2位 图7 2中给出的是8位数据位 1位奇偶校验位和1位停止位 加上1位起始位 共11位组成一个传输帧 图7 2异步通信字符帧格式 发送方 传送时先输出起始位 作为联络信号 接下来的是数据位和奇偶校验位 停止位 1 表示一个字符的结束 其中 数据的低位在前 高位在后 字符之间允许有不定长度的空闲位 接收方 传送开始后 接收设备不断检测传输线的电平状态 当收到一系列的 1 空闲位或停止位 之后 检测到一个 说明起始位出现 就开始接收所规定的数据位和奇偶校验位以及停止位 异步通信的特点 所需传输线少 设备开销较小 在单片机控制系统中得到广泛的应用 但每个字符要附加2 3位用于起止位 各帧之间还有间隔 因此传输效率不高 7 1 3串行通信数据传输方向 根据串行通信数据传输的方向 可将串行通信系统传输方式分为 单工方式 半双工方式和全双工方式 如图7 3所示 图7 3数据传输方式 7 1 3串行通信数据传输方向 1 单工 数据传输仅能从发送设备传输到接收设备 2 半双工 两个串行通信设备之间只有一条数据线 数据传输可以沿两个方向 但需要分时进行 3 全双工 是指两个串行通信设备之间可以同时进行接收和发送 3种方式中 全双工方式的效率最高 半双工方式配置和编程相对灵活 传输成本较低 串行通信设备常选用半双工方式 图7 4串行通信中的数据传送方式 波特率 Baudrate 串行通信的速率用波特率来表示 所谓波特率就是指一秒钟传送数据位的个数 每秒钟传送一个数据位就是1波特 即 1波特 1bps 位 秒 在串行通信中 数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制 时钟频率高 则波特率高 通信速度就快 反之 时钟频率低 波特率就低 通信速度就慢 如每秒传送240个字符 而每个字符格式包含10位 这时的波特率为10位 bit 240个 s 2400bit s 在异步串行通信中 接收方和发送方应使用相同的波特率 才能成功传送数据 异步通信的传送速率在50b s 19200b s之间 常用于计算机到终端机和打印机之间的通信 直通电报以及无线电通信的数据发送等 7 1 4串行通信的过程及通信协议 1 串 并转换与设备同步两个通信设备在串行线路上成功地实现通信必须解决两个问题 一是串 并转换 即如何把要发送的并行数据串行化 把接收的串行数据并行化 二是设备同步 即同步发送设备与接收设备的工作节拍 以确保发送数据在接收端被正确读出 返回 1 串 并转换与设备同步 1 串 并转换串行通信是将计算机内部的并行数据转换成串行数据 将其通过一根通信线传送 并将接收的串行数据再转换成并行数据送到计算机中 返回 1 串 并转换与设备同步 在计算机串行发送数据之前 计算机内部的并行数据被送入移位寄存器并一位一位地输出 将并行数据转换成串行数据 如图7 5所示 在接收数据时 来自通信线路的串行数据被压入移位寄存器 满8位后并行送到计算机内部 如图7 6所示 在串行通信控制电路中 串 并 并 串转换逻辑被集成在串行异步通信控制器芯片中 89C51单片机的串行口和IBM PC相同 返回 图7 5 返回 图7 6 返回 2 设备同步 进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化 从而采样传送数据脉冲 设备同步对通信双方有两个共同要求 一是通信双方必须采用统一的编码方法 二是通信双方必须能产生相同的传送速率 返回 2 设备同步 采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度 当然还包括统一的逻辑电平规定 即电平信号高低与逻辑1和逻辑0的固定对应关系 通信双方只有产生相同的传送速率 才能确保设备同步 这就要求发送设备和接收设备采用相同频率的时钟 发送设备在统一的时钟脉冲上发出数据 接收设备才能正确检测出与时钟脉冲同步的数据信息 返回 2 串行通信协议 通信协议是对数据传送方式的规定 包括数据格式定义和数据位定义等 通信双方必须遵守统一的通信协议 串行通信协议包括同步协议和异步协议两种 在此只讨论异步串行通信协议和异步串性协议规定的字符数据的传送格式 返回 2 串行通信协议 1 起始位通信线上没有数据被传送时处于逻辑1状态 当发送设备要发送一个字符数据时 首先发出一个逻辑0信号 这个逻辑低电平就是起始位 起始位通过通信线传向接收设备 接收设备检测到这个逻辑低电平后 就开始准备接收数据位信号 起始位所起的作用就是设备同步 通信双方必须在传送数据位前协调同步 返回 2 串行通信协议 2 数据位当接收设备收到起始位后 紧接着就会收到数据位 数据位的个数可以是5 6 7或8 IBM PC中经常采用7位或8位数据传送 89C51串行口采用8位或9位数据传送 这些数据位被接收到移位寄存器中 构成传送数据字符 在字符数据传送过程中 数据位从最低有效位开始发送 依次顺序在接收设备中被转换为并行数据 返回 2 串行通信协议 3 奇偶校验位数据位发送完之后 可以发送奇偶校验位 奇偶校验用于有限差错检测 通信双方需约定已知的奇偶校验方式 如果选择偶校验 那么组成数据位和奇偶位的逻辑1的个数必须是偶数 如果选择奇校验 那么逻辑1的个数必须是奇数 返回 2 串行通信协议 4 停止位约定在奇偶位或数据位 当无奇偶校验时 之后发送的是停止位 停止位是一个字符数据的结束标志 可以是1位 1 5位或2位的高电平 接收设备收到停止位之后 通信线路上便又恢复逻辑1状态 直至下一个字符数据的起始位到来 返回 2 串行通信协议 5 波特率设置通信线上传送的所有位信号都保持一致的信号持续时间 每一位的信号持续时间都由数据传送速度确定 而传送速度是以每秒多少个二进制位来衡量的 这个速度叫波特率 如果数据以300个二进制位每秒在通信线上传送 那么传送速度为300波特 通常记为300b s 返回 7 2单片机串行的通信原理及工作方式 7 2 1单片机串行口的结构主要由两个数据缓冲寄存器SBUF和一个输入移位寄存器 以及一个串行控制寄存器SCON等组成 7 2 2单片机串行口的控制 1 串行口控制寄存器SCON 1 SM0 SM1 串行口工作方式选择位 2 SM2 在方式2和方式3中主要用于多机通信控制 在方式2和3中 若SM2 1且接收到的第九位数据 RB8 为1 才将接收到的前8位数据送入接收SBUF中 并置位RI产生中断请求 否则丢弃前8位数据 若SM2 0 则不论第九位数据 RB8 为1还是为0 都将前8位送入接收SBUF中 并产生中断请求 方式0时 SM2必须置0 3 REN 串行接收允许位 由软件置位或清除 软件置1时 串行口允许接收 清零后禁止接收 4 TB8 发送数据的第9位 双机通信时它可作奇偶校验位 在多机通信中可作为区别地址帧或数据帧的标识位 若 RB8 0 说明是数据帧 则使接收中断标志位RI 0 信息丢失 若 RB8 1 说明是地址帧 数据装入SBUF并置RI 1 中断所有从机 被寻址的目标从机清除SM2以接收主机发来的一帧数据 其他从机仍然保持SM2 1 5 RB8 在方式2和方式3中是接收的第9位数据 6 TI 发送中断标志位 7 RI 接收中断标志位 2 专用寄存器PCON PCON的各位的定义和功能如下 当SMOD l时 方式1 2 3的波特率加倍 否则不加倍 7 2 3单片机串行口的工作方式 1 方式0串行接口工作方式0为同步移位寄存器方式 多用于I O口的扩展 其波特率是固定的 为fosc 12 TXD引脚输出同步移位脉冲 RXD引脚串行输入 输出 2 方式1在方式l时 串行口被设置为波特率可变的8位异步通信接口 发送 接收1帧数据为10位 其中1位起始位 8位数据位 先低位后高位 和1位停止位 3 方式2串行口工作为方式2时 被定义为9位异步通信接口 发送 接收1帧数据为11位 其中1位起始位 8位数据位 1位控制 校验位和1位停止位 控制 校验位为第9位数据 4 方式3方式3为波特率可变的11位异步通信方式 除了波特率有所区别之外 其余同方式2 5 串行通信的波特率 1 方式0的波特率在方式0下 串行口通信的波特率是固定的 其值为fosc 12 fosc为主机频率 2 方式2的波特率串行口方式2波特率的产生与方式0不同 即输入的时钟源不同 其时钟输入部分入图7 15所示 控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟 即fosc 2 给出 所以 方式2波特率取决于PCON中SMOD位的值 SMOD 0时 波特率为fosc的1 64 SMOD 1时 波特率为fosc的1 32 即方式2波特率 2SMOD 64 fosc 串行口方式2波特率的产生 返回 3 方式1或方式3的波特率 在这两种方式下 串行口波特率是由定时器的溢出率决定的 因而波特率是可变的 波特率的公式为 式中 K为定时器T1的位数 7 3单片机串行口的应用 7 3 1串行口扩展显示器 例7 1 用8位串入并出移位寄存器74HC164扩展显示器 74HC1648位串入 并出移位寄存器 功能 把数据从显示缓冲区送到数码管 入口 将要显示的数放在以DIS0为首的8个单元中 出口 把预置的数输出以更新原有的显示 MOVR2 08H 显示8个数码管MOVR0 DIS7 显示缓冲区未地址送入R0DL0 MOVA R0 取要显示数作查表偏移量MOVDPTR TAB 指向字形表首MOVCA A DPTR 查表得字形码MOVSBUF A 发送显示DL1 JNBT1 DL1 等待发送完一帧CLRT1 清中断标志 准备继续发送DECR0 更新显示单元DJNZR2 DL0 重复显示所有数码管TAB DB0C0H 0F9H 0A4H 0B0H 99H 0 1 2 3 4 DB92H 82H 0F8H 80H 90H 5 6 7 8 9 DB88H 83H 0C6H 0A1H 86H A B C D E DB8EH 0BFH 8CH 0FFH F P 暗 7 3 2串行口扩展的键盘 在方式0下 串行口作同步移位寄存器用 以8位数据为一帧 先发送或接收最低位 每个机器周期发送或接收一位 故其波特率是固定的 为fosc 12 串行数据由RXD P3 0 端输入或输出 CJNER1 08 LP1SJMPRCVIN1 MOVA R0ADDA AJMP A DPTRTAB AJMPOPR0AJMPOPR1 AJMPOPR7OPR0 LJMPSTARTOPR7 LJMPSTARTEND ORG0100HSTART MOVR7 20MOVR0 50HMOVDPTR TABRCVI MOVSCON 10HJNBRI CLRRIMOVA SBUFMOVR0 0MOVR1 0LP1 RRCAJNCN1INCR0INCR1 7 3 3双机通信 编程使乙机从甲机接收16个字节数据块 并存入片外3000H 300FH单元 接收过程中要求判奇偶校验标志RB8 若出错则置F0标志为1 若正确则置F0标志为0 然后返回 例7 3 编程把甲机片内RAM50H 5FH单元中的数据块从串行口输出 定义在方式3下发送 TB8作奇偶校验位 采用定时器1方式2作波特率发生器 波特率为1200波特 fosc 11 0592MHz 预置值TH1 0E8H 发送子程序如下 MOVTMOD 20H 设置定时器1为方式2MOVTL1 0E8H 设预置值MOVTH1 0E8HSETBTRI 启动定时器1MOVSCON 0C0H 设置串行口为方式3MOVPCON 00H SMOD 0MOVR0 50H 设数据块指针MOVR7 10H 设数据长度10HTRS MOVA R0 取数据送至AMOVC PMOVTB8 C 奇偶位P送至TB8MOVSBUF A启动发送WAIT JNBTI 判1帧是否发送完CLRTIINCR0 更新数据单元DJNZR7 TRS 循环发送至结束RET 接收子程序编程如下 MOVTMOD 20H 设置定时器1为方式2MOVTL1 0E8H 设预置值MOVTH1 0E8HSETBTR1 启动定时器1MOVSCON 0C0H 设置串行口为方式3MOVPCON3 00H SMOD 0MOVDPTR 3000H 设置数据块指针MOVR7 10H 设数据块长度SETBREN 允许接收WAIT JNBRI 判1帧是否接收完CLRRI MOVA SBUF 读入1帧数据JNBPSW 0 PZ 奇偶位P为0则跳转JNBRB8 ERR P l RB8 0则出错SJMPYES 二者全为1则正确PZ JBRB8 ERR P 0 RB8 l则出错YES MOVX DPTR A 正确 存放数据INCDPTR 修改地址指针DJNZR7 WAIT 判断数据块接收完否CLRPSW 5 接收正确且接收完清F0标志RET 返回ERR SETBPSW 5 出错则置F0标志为 l RET 返回 7 3 4多机通信 多机通信的实现 主要靠主 从机之间正确地设置与判断多机通信控制位SM2和发送或接收的第9数据位 D8 以下简述如何实现多机通信 多机之间的通信过程可归纳如下 1 主 从机均初始化为方式2或方式3 置SM2 1 允许中断 2 主机置TB8 1 发送要寻址的从机地址 3 所有从机均接收主机发送的地址 并进行地址比较 4 被寻址的从机确认地址后 置本机 SM2 0 向主机返回地址 供主机核对 5 核对无误后 主机向被寻址的从机发送命令 通知从机接收或发送数据 6 通信只能在主 从机之间进行 两个从机之间的通信需通过主机作中介 7 本次通信结束后 主 从机重置SM2 1 主机可再对其他从机寻址 例 主机向02号从机发送50H 5FH中的数据 02号从机将接收到的数据放到内RAM30H 3FH单元中 主机程序 ORG0030HMAIN MOVSCON 98HM1 MOVSBUF 02HL1 JNBTI CLRTIJNBRI MOVA SUBFXRLA 02HJZRHTAJMPM1 RHT CLRTB8MOVR0 50HM1 MOVR7 10HL3 MOVA R0MOVSBUF AJNBTI CLRTIINCR0DJNZR7 L3AJMPMAINEND 从机程序 ORG0030HMAIN MOVR0 30HMOVR6 10HSI MOVSCON 0B0HSR1 JNBRI CLRRISR2 MOVA SUBFXRLA 02HJNZSR1CLRSM2MOVSBUF 02HJNBTI CLRTI SR3 JNBRI CLRRIJNBTB8 RHTSETBSM2SJMPSR1RHT MOVA SBUFMOV R0 AINCR0DJNZR6 SR3AJMPSIEND 7 4RS 232C标准接口总线及串行通信硬件设计 前面介绍了有关串行通信的基本知识及单片机的串行口结构 下面介绍PC机与单片机间串行通信的硬件和软件设计 在工业自动控制 智能仪器仪表中 单片机的应用越来越广泛 随着应用范围的扩大以及根据解决问题的需要 对某些数据要做较复杂的处理 由于单片机的运算功能较差 对数据进行较复杂的处理时 往往需要借助计算机系统 因此 单片机与PC机进行远程通信更具有实际意义 利用89C51单片机的串行口与PC机的串行口COM1或COM2进行串行通信 将单片机采集的数据传送到PC机中 由PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理 或者实现PC机对远程前沿单片机进行控制 返回 7 4RS 232C标准接口总线及串行通信硬件设计 在实现计算机与计算机 计算机与外设间的串行通信时 通常采用标准通信接口 这样就能很方便地把各种计算机 外部设备 测量仪器等有机地连接起来 进行串行通信 RS 232C是由美国电子工业协会 EIA 正式公布的 在异步串行通信中应用最广的标准总线 C表示此标准修改了三次 它包括了按位串行传输的电气和机械方面的规定 适用于短距离或带调制解调器的通信场合 为了提高数据传输率和通信距离 EIA又公布了RS 422 RS 423和RS 485串行总线接口作准 返回 RS 422 RS 423及RS 485接口 7 4RS 232C标准接口总线及串行通信硬件设计 7 4 1RS 232C标准接口总线7 4 2信号电气特性与电平转换7 4 3单片机与PC机通信的接口电路 返回 7 4 1RS 232C标准接口总线 近年的RS 232C接口都是采用9针的连接器 25针中有很多引脚是无意义的 如图所示 返回 图7 21 返回 a b 图7 22终端 计算机与终端 计算机简化连接形式 返回本节 7 4 1RS 232C标准接口总线 ELARS 232C是目前最常用的串行接口标准 用于实现计算机与计算机之间 计算机与外设之间的数据通信 该标准的目的是定义数据终端设备DTE DateTerminalEquipment 之间接口的电气特性 一般的串行通信系统是指微机和调制解调器 modem 如图 调制解调器叫数据电路终端设备简称DCE DateCircuitTerminatingEquipment或DateCommunicationsEquipment RS 232C提供了单片机与单片机 单片机与PC机间串行数据通信的标准接口 通信距离可达到15m 返回 7 4 1RS 232C标准接口总线 基本的数据传送信号基本的数据传送信号引脚有TXD RXD GND3个 TXD为数据发送信号引脚 数据由该脚发出 送上通信线 在不传送数据时 异步串行通信接口维持该脚为逻辑1 RXD为数据接收信号引脚 来自通信线的数据从该引脚进入 在无接收信号时 异步串行通信接口维持该脚为逻辑1 GDN为地信号引脚 GND是其他引脚信号的参考电位信号 在零调制解调器 连接中 最简单的形式就是只使用上述3个引脚 如图7 21 其中 收发端的TXD与RXD交错相连 GND与GND相连 返回 7 4 1RS 232C标准接口总线 MODEM控制 握手 信号引脚从计算机到MODEM的信号引脚包括DTR和RTS两个 DTR信号引脚用于通知MODEM 计算机已经准备好 RTS信号引脚用于通知MODEM 计算机请求发送数据 从MODEM到计算机的信号包括DSR CTS DCD RI共4个 DSR信号引脚用于通知计算机 MODEM已经准备好 CTS信号引脚用于通知计算机 MODEM可以接收传送数据 DCD信号引脚用于通知计算机 MODEM已与电话线路连接好 RI信号引脚为振铃指示 用于通知计算机有来自电话网的信号 返回 7 4 1RS 232C标准接口总线 RS 232C接口的具体规定如下 l 范围RS 232C标准适用于DCE和DTE间的串行二进制通信 最高的数据速率为19 2kb s 如果不增加其他设备的话 RS 232C标准的电缆长度最大为15m RS 232C不适于接口两边设备间要求绝缘的情况 2 RS 232C的信号特性为了保证二进制数据能够正确传送 设备控制准确完成 有必要使所用的信号电平保持一致 为满足此要求 RS 232C标准规定了数据和控制信号的电压范围 由于RS 232C是在TTL集成电路之前研制的 所以它的电平不是 5V和地 而是采用负逻辑 规定 3V 15V之间的任意电压表示逻辑0电平 3V 15V之间的任意电压表示逻辑1电平 返回 7 4 1RS 232C标准接口总线 3 RS 232C接口信号及引脚说明表7 3给出了RS 232C串行标准接口信号的定义以及信号分类 串行通信信号引脚分为两类 一类为基本的数据传送信号引脚 另一类是用于MODEM控制的信号引脚 返回 7 4 2信号电气特性与电平转换 1 电气特性为了增加信号在线路上的传输距离和提高抗干扰能力 RS 232C提高了信号的传输电平 该接口采用双极性信号 公共地线和负逻辑 使用RS 232C 数据通信的波传率允许范围为0b s 20kb s 在使用19200b s进行通信时 最大传送距离在15m之内 降低彼特率可以增加传输距离 返回 7 4 2信号电气特性与电平转换 2 电平转换RS 232C规定的逻辑电平与一般微处理器 单片机的逻辑电平是不一致的 因此 在实际应用的 必须把微处理器的信号电平 TTL电平 转换为RS 232C电平 或者对两者进行逆转换 这两种转换是通过专用电平转换芯片实现的 MAX232 MAX202和早期的MC1488 75188等芯片可实现TTL RS 232C的电平转换 MC1489 75189等芯片可实现RS 232C TTL的电平转换 MC1488 MC1489的电路结构与引脚排列见图7 23 返回 图7 23MC1488 MC1489的电路结构与引脚排列 返回 7 4 2信号电气特性与电平转换 MC1488由3个 与非 门和1个反相器构成 Vcc可接 15V或 12V VEE可接 15V或 12V 输入为TTL电平 输出为RS 232C电平 MC1489由4个反相器组成 Vcc接 5V 每个反相器都有一个控制端 它可接到电源电压上 用以调整输入的门限特性 也可通过一滤波电容接地 单片机的串行口通过电平转换芯片所组成的RS 232C标准接口电路如图7 24所示 返回 图7 24RS 232C标准接口电路 返回 7 4 3单片机与PC机通信的接口电路 利用PC机配置的异步通信适配器 可以很方便地完成IBM PC系列机与MCS 51单片机的数据通信 PC机与89C51单片机最简单的连接是零调制三线经济型 这是进行全双工通信所必须的最少数目的线路 由于89C51单片机输入 输出电平为TTL电平 而IBM PC机配置的是RS 232C标准串行接口 二者的电气规范不一致 因此 要完成PC机与单片机的数据通信 必须进行电平转换 返回 7 4 3单片机与PC机通信的接口电路 1 MAX232芯片简介MAX232芯片是MAXIM公司生产的 包含两路接收器和驱动器的IC芯片 适用于各种EIA 232C和V 28 V 24的通信接口 MAX232芯片内部有一个电源电压变换器 可以把输入的 5V电源电压变换成为RS 232C输出电平所需的 10V电压 所以 采用此芯片接口的串行通信系统只需单一的 5V电源就可以了 对于没有 12V电源的场合 其适应性更强 加之其价格适中 硬件接口简单 所以被广泛采用 返回 1 MAX232芯片简介 MAX232芯片的引脚结构如图7 25所示 MAX232芯片的典型工作电路如图7 26所示 图7 26中上半部分电容C1 C2 C3 C4及V V 是电源变换电路部分 在实际应用中 器件对电源噪声很敏感 因此 VCC必须要对地加去耦电容C5 其值为0 l F 电容C1 C2 C3 C4取同样数值的钽电解电容1 0 F 16V 用以提高抗干扰能力 在连接时必须尽量靠近器件 返回 图7 25MAX232芯片引脚图 图7 26MAX232典型工作电路图 返回 1 MAX232芯片简介 下半部分为发送和接收部分 实际应用中 T1IN T2IN可直接接TTL CMOS电平的MCS 51单片机的串行发送端TXD R1OUT R2OUT可直接接TTL CMOS电平的MCS 51单片机的串行接收端RXD T1OUT T2OUT可直接接PC机的RS 232串口的接收端RXD R1IN R2IN可直接接PC机的RS 232串口的发送端TXD 返回 2 采用MAX232芯片接口的PC机与MCS 5l单片机串行通信接口电路 现从MAX232芯片中两路发送接收中任选一路作为接口 要注意其发送 接收的引脚要对应 如使T1IN接单片机的发送端TXD 则PC机的RS 232的接收端RXD一定要对应接T1OUT引脚 同时 R1OUT接单片机的RXD引脚 PC机的RS 232的发送端TXD对应接R1IN引脚 其接口电路如图7 27所示 返回 图7 27采用MAX232接口串行通信电路 返回 7 589C51与PC机间通信软件的设计 将一台IBM PC机和若干台89C51单片机构成小型分散控制或测量系统 是目前微计算机应用的一大趋势 在这样的系统中 以89C51芯片为核心的智能式测控仪表 作为从机 既能完成数据采集 处理和各种控制任务 又可将数据传送给PC机 作为主机 PC机将这些数据进行加工处理或显示 打印 同时将各种控制命令送给各个从机 以实现集中管理和最优控制 显然 要组成这样的系统 首先要解决PC机与各单片机之间的数据通信问题 这是一个多机通信问题 在解决该问题之前 先来讨论一下PC机与一台89C51之间点对点 亦即双机 通信的软件设计 返回 7 589C51与PC机间通信软件的设计 7 5 1PC机通信软件设计7 5 289C51通信软件设计 返回 7 5 1PC机通信软件设计 1 通信协议波特率 1200b s 信息格式 8位数据位 1位停止位 无奇偶检验 传送方式 PC机采用查询方式收发数据 89C51采用中断方式接收 查询方式发送 校验方式 累加和校验 握手信号 采用软件握手 发送方在发送之前先发一联络信号 用 号的ASCII码 接收方接到 号后回送一个 号作为应答信号 随后依次发送数据块长度 字节数 发送数据 最后发送校验和 收方在收到发送方发过来的校验和后与自己所累加的校验和相比较 相同则回送一个 0 表示正确传送并结束本次的通信过程 若不相同则回送一个 F 并使发送方重新发送数据 直到接收正确为止 返回 7 5 1PC机通信软件设计 2 PC机发送文件子程序首先介绍通过串口发送一个文件的函数sendf 规定欲发送的这个文件存在当前盘上 并且为了便于说明问题 只传送总字节小于256个字符的文件 sendf 函数程序流程图如图7 30所示 PC机发送文件子函数sendf 程序清单如下 返回 图7 30PC机发送文件子函数sendf 流程图 返回 7 5 1PC机通信软件设计 返回 7 5 1PC机通信软件设计 3 PC机接收文件子程序接收函数receivef 采用查询方式从串口接收一个总字节数小于256个字符的文件 接收的文件也存于当前盘上 接收文件子函数receivef 的程序流程图如图7 31所示 返回 图7 31PC机接收文件子函数receivef 流程图 返回 7 5 1PC机通信软件设计 返回 返回 7 5 1PC机通信软件设计 4 PC机主程序 函数 在有了上述发送和接收文件两个子函数之后 主函数的编写就非常简单了 主函数的工作只是在完成串口初始化后 根据键入的命令来决定是发送文件还是接收文件 主函数流程图如图7 32所示 PC机主函数如下 返回 7 5 1PC机通信软件设计 图7 32PC机主函数流程图 返回 7 5 1PC机通信软件设计 这里采用的是带参主函数main intargc char argv 其中 argc是一个整型变量 argv 是一个字符型指针数组 利用main函数的参数可以使主程序从系统得到所需数据 也就是说带参函数可直接从DOS命令行中得到参数值 当然 这些值是字符串 当程序运行时 在DOS下执行 EXE文件 可以根据输入的命令行参数进行相应的处理 例如 执行程序mypro时 若要从当前盘上将名为f1 c的文件从串口发送出去 需键入下述命令 myprosf1 c其中 mypro是源文件mypro c经编译连接后生成的可执行文件mypro exe 键入命令 myprorf2 c可以从串口接收若干字符 并写入当前盘上名为f2 c的文件中去 返回 7 5 289C51通信软件设计 1 单片机查询发送子程序本程序将片外RAM从1000H开始的小于256B的数据从串行口发送出去 发送的数据字节数在R7中 用R6作累加和寄存器 程序流程图如图7 33所示 单片机查询发送子程序如下 图7 33单片机查询发送子程序流程图 返回 SEND MOVA 3FHMOVSBUF AJNBTI CLRTI 发 号 即3FHJNBRI CLRRIMOVA SBUFCJNEA 2EH SEND 应答信号是 即 2EH 则发字节数MOVA R7MOVR3 A 暂存总字节数MOVSBUF AJNBTI CLRTIMOVR6 00HMOVDPTR 1000H SEND1 MOVXA DPTRMOVSBUF A 发送一个字符JNBTI CLRTIADDA R6 计算校验和MOVR6 AINCDPTRDJNZR7 SEND1 计数器 R7 不为零则转SEND1MOVA R6MOVSBUF AJNBTI CLRTI 发送校验和MOVA SBUFCJNEA 46H SEND2 如收到应答是 F 即 46H 则重发数据RETSEND2 MOVDPTR 1000HMOVR6 00HMOVA R3MOVR7 AAJMPSEND1 返回 7 5 289C51通信软件设计 2 单片即接收中断服务子程序在中断服务子程序中 为了区别所接收的信号是联络信号还是字节数 是数据还是校验和 需要设立不同的标志位 为此在可位寻址的RAM中设定 位地址00H接收联络信号标志位01H接收字节数标志位02H接收数据标志位03H接收文件结束标志位在初始化时 这些位均为0 程序流程图如图7 34所示 在中断服务子程序中 将接收到的字节数存入R7中 接收的数据存入片外RAM从1000H开始的单元中 单片机接收中断服务子程序如下 返回 图7 34单片机接收中断服务子程序流程图 返回 RECE CLRESCLRRIJB00H RECE1MOVA SBUFCJNEA 3FH RECE2 收的不是 号则退出MOVA 2EHMOVSBUF AJNBTI CLRTI 发送应答信号 即2EHSETB00HSETBESRETIRECE2 MOVA 24HMOVSBUF AJNBTI CLRTI 发送应答信号 即24HSETBESRETIRECE1 JB01H RECE4MOVA SBUF 接收字节数MOVR7 AMOVR3 A 暂存总字节数SETB01HSETBESRETIRECE4 JB02H RECE5MOVA SBUF 接收一字符MOVX DPTR A 存入外RAM中ADDA R6MOVR6 A INCDPTRDJNZR7 RECE7SETB02HRECE7 SETBESRETIRECE5 MOVA SBUFCJNEA 06H RECE8 06H为R6的字节地址MOVA 4FH 校验和不正确 重发数据MOVSBUF AJNBTI CLRTI 校验正确发 0 即4FHSETB03HSETBESRETIRECE8 MOVDPTR 1000HMOVR6 00HMOVA R3MOVR7 AMOVA 46HMOVSBUF AJNBTI CLRTI 校验不正确 发 F 即46HCLR02HSETBESRETI 返回 7 5 289C51通信软件设计 3 单片机主程序主程序流程图如图7 35所示 单片机主程序如下 图7 35单片机的主程序流程图 返回 ORG0000HAJMPMAINORG0023HAJMPRECEORG0040HMAIN MOVSP 60HMOVSCON 50H 串口初始化MOVTMOD 20HMOVTH1 0F3HMOVTL1 0F3HMOVPCON 00H 设置波特率SETBTR1 启动定时器1SETBEA 开放中断SETBES 开放串行中断L3 CLR00HCLR01HCLR02HCLR03HMOVR6 00HMOVDPTR 1000HL2 JB03H L1SJMPL2L1 ACALLSENDAJMPL3 返回 7 6PC机与多个单片机间通信 应用IBM PC系列微机和多个单片机构成小型分布系统在一定范围内是最经济可行的方案 已被广泛采用 这种分布系统在许多实时工业控制和数据采集系统中 充分发挥了单片机功能强 抗干扰性能好 温限宽 面向控制等优点 同时又可以利用PC机弥补单片机在数据处理及交互性等方面的不足 在应用系统中 一般是以IBM PC系列微机作为主机 定时扫描以单片机为核心的智能化控制器 即从机作为前沿机 以便采集数据或发送控制信息 在这样的系统中 智能化控制器既能独立完成数据处理和控制任务 又可以将数据传送给PC机 PC机则将这些数据形象地显示在CRT上或通过打印机打印成各种报表 并将控制命令传送给各个前沿单片机 以实现集中管理和最优控制 下面将讨论PC机与多个单片机之间的通信问题 返回 7 6PC机与多个单片机间通信 7 6 1采用RS 232C标准总线通信7 6 2采用RS 422A标准总线的通信系统 返回 7 6 1采用RS 232C标准总线通信 1 采用MAX232芯片的RS 232C接口的通信电路PC机与多个单片机通信接口电路如图7 36所示 整个通信系统的硬件结构设计为主从式串行总线型 PC机串口给出的已是标准的RS 232C电平 而单片机则为TTL CMOS电平 采用单一电源的MAX232芯片就可实现电平的转换和驱动 返回 7 6 1采用RS 232C标准总线通信 图7 36多个单片机与PC机通信电路 返回 7 6 1采用RS 232C标准总线通信 2 多个单片机与PC机通信协议的约定PC机和89C51单片机双向传送数据代码和功能代码 数据代码是通信过程必须传送的目的代码 功能代码是应答信号 如PC机要向单片机发数据 PC机允许单片机发数据 有误码重发等 以及表征数据特征和数量的代码 通信程序除具备前述的通信协议约定以外 还必须具有以下功能 返回 7 6 1采用RS 232C标准总线通信 1 帧格式PC机必须能够向单片机发送被寻呼的单片机站号 地址 命令 字段 数据首地址长度 数据块及各种核验值 单片机必须能够向PC机发进自身站号 地址 国据长度 国据块及校验值 2 差错检测通信线的传输差错是不可避免的 通信系统必须具有识别这种差错的能力 例如 可以采用数据位累加法 即统计信息位中1的个数来进行差错检测 也可采用累加和校验法 返回 7 6 1采用RS 232C标准总线通信 3 差错处理每发送一数据块 仅当数据块接收正确时 才会发送一个响应帧 否则 回送出错信息 要求重发该数据块 直至被正确接收为止 为了防止系统出错引起撍浪鴶 最多只允许重发三次 否则转出错处理程序 显示系统出错 返回 7 6 1采用RS 232C标准总线通信 我们把通信协议分为三段 即主机与从机的连接挂钩 握手阶段 发送 接收 阶段以及结束阶段 连接阶段主要是完成通信联络任务 主机发送从机的地址信号 从机接收到后如果与本机地址相符 回送应答信号 置SM2 0 否则不予理睬 SM2仍为1 实现主机与从机间的点对点通信 然后便可以开始发送或接收数据 在发送或接收数据过程中 选择校验方法 对数据的传输进行校验 结束阶段则是当通信系统出错或误码次数越限时宣告通信失败而结束通信 返回 7 6 1采用RS 232C标准总线通信 3PC机的通信软件PC机的通信软件必须包括如下内容 根据用户的要求和通信协议规定 对8250初始化 即设置波特率 1200b s 数据位数 8位 奇偶类型和停止位位数 l位 需要指出的是 这里的奇偶校验位用作发送地址码或数据的特征值 而数据通信的校核采用累加和校验方法 返回 7 6 1采用RS 232C标准总线通信 确定数据传送方式 采用查询方式发送和接收 在发送地址或数据时 首先由输入指令检查发送保持寄存器是否为空 若空 则由输出指令将一个数据输出给8250 8250会自动依据初始化设置的要求把二进制数串行发送到串行通信线上 在接收数据时 8250把串行数据转换成并行数据送到接收器的数据寄存器中 并把 接收数据准备好 信号放入状态寄存器中 计算机读到这个信号后 就可以用输入指令从接收器的数据寄存器中读入一个数据了 返回 7 6 1采用RS 232C标准总线通信 确定PC机为主机 所有单片机为从机 从机的地址码为0F1H 0F4H 下面给出查询方式的PC机通信主程序框图 如图7 37所示 PC机开始设置为地址传送方式 从0F1H地址码开始发送 然后接收地址回送码 如回送地址等于发送地址码 则说明与1号从机握手成功 继而可以设置为数据传送方式 开始与1号从机交换数据 传送数据结束后 又开始与2号从机 地址码0F2H 联络 如PC机发送从机地址后 接收回送地址码与发送地址码不等 则与此地址码的从机握手失败 继续与其他从机联络 为了避免出现死循环 设置了按PC机任意键退出的功能 返回 图7 37多个单片机与PC机通信主程序框图 返回 7 6 1采用RS 232C标准总线通信 4 单片机的通信软件单片机的波特率要与PC机一致 定时器T1作为波特率发生器 设置为工作模式2 串口设置为工作方式3 数据的传送格式为11位 即1位起始位 8位数据位 1位停止位和作为数据 地址控制位的第9位 采用查询方式发送和接收数据 单片机在通信开始阶段 首先设置为传送地址方式 等待接收地址 只有当接收到本机的地址码时 才回送本机地址给PC机 以作为应答信号 然后设置为传送数据方式 以便开始传送救据 其通信数据的约定要与PC机一致 即以什么样的数据为结束标志 多少位数据为一个数据块或多少位数据进行一次累加和校验 校验回送码为00H时表示发进正确 0FFH为错误 需要重发 重发的次数也要与PC机取得一致 不超过三次 返回 7 6 1采用RS 232C标准总线通信 下面给出单片机查询方式通信的主程序 其程序框图如图7 38所示 4台从机的通信程序基本相同 不同之处只是地址码不同 图7 38单片机查询方式通信的主程序 返回 7 6 2采用RS 422A标准总线的通信系统 RS 422A标准是美国电气工业协会 EIA 公布的 平衡电压数字接口电路的电气特性 标准 是为改善RS 232C标准的电气特性 又考虑与RS 232C兼容而制定的 RS 422A比RS 232C传输信号距离长 速度快 传输率最大为10Mb s 在此速率下 电缆允许长度为120m 如采用较低传输速率 如在90000b s时 最大距离可达1200m RS 422A每个通道要用二相信号线 如果其中一根是逻辑1状态 另一根就为逻辑0 RS 422A电路由发送路 平衡连接电缆 电缆终端负载 接收器几部分组成 规定电路中只允许有一个发送器 可有多个接收器 因此 通常采用点对点通信方式 该标准允许驱动器输出为 2V 6V 接收器可以检测到的输入信号电平可低到200mV 返回 7 6 2采用RS 422A标准总线的通信系统 目前 RS 422与TTL的电平转换最常用的芯片是传输线驱动器SN75174或MC3487和传输线接收器SN75175或MC3486 其内部结构及引脚如图7 39所示 SN75174是具有三态输出的单片4差分线驱动器 其设计符合EIA标准RS 422A规范 适用于噪声环境中长总线线路的多点传输 采用 5V电源供电 功能上可与MC3487互换 SN75175是具有三态输出的单片4差分接收器 其设计符合EIA标准RS 422A规范 适用于噪声环境中长总线线路上的多点总线传输 该片采用 5V电源供电 功能上可与MC3486互换 这里主要讨论采用RS 422A标准总线实现上位机与多台前沿下位控制机之间的远距离通信 返回 图7 39RS 422电平转换芯片SN75174和SN75175 返回 7 6 2采用RS 422A标准总线的通信系统 分布式通信系统网络采用了主从式串行总线结构 如图7 40所示 所有下位控制机全部挂在上位PC机的

温馨提示

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

评论

0/150

提交评论