




已阅读5页,还剩97页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7 1串行通信概述7 2串行口的结构7 3串行口的四种工作方式7 4波特率的设定与计算7 5STC89C52单片机之间的通信7 6PC与单片机间的通信 7 1串行通信概述7 1 1数据通信1 并行通信和串行通信 数据通信的两种常用形式 1 并行方式 数据的各位同时发送或同时接收 并行通信 并行传送特点 逻辑清晰 控制简单 传送速度快 但因需要多根传输线 故一般只在近距离通信中使用 2 串行方式 数据的各位依次逐位传送 串行通信 串行传送特点 控制较并行传送复杂 传输速度慢 但因只需较少传输线 故适合于远距离通信 有时为了节省线缆数量 即使在计算机内部 CPU和某些外设之间也可以采用非并行的传输方式 如IIC SPI USB等标准传输方式 但它们与这里所述的串行通信有明显不同 总之 串行通信是以微处理器为核心的系统之间的数据交换方式 而IIC SPI USB等标准接口是微处理器系统与非微处理器型外设之间的数据交换方式 前者可以是对等通信 而后者只能采用主从方式 2 单工 半双工 全双工按照传输数据流向 串行通信具有3种传输形式 单工 半双工和全双工 在单工制式下 通信线的一端为发送器 TXD 一端为接收器 RXD 数据只能按照一个固定的方向传送 在半双工制式下 系统由一个TXD和一个RXD组成 但不能同时在两个方向上传送 收发开关由软件方式切换 在全双工制式下 通信系统每端都有TXD和RXD 可以同时发送和接收 即数据可以在两个方向上同时传送 实际应用中 尽管多数串行通信接口电路具有全双工功能 但仍以半双工为主 简单实用 7 1 2异步通信和同步通信在串行数据通信中 有同步和异步两种基本方式 同步和异步的最本质区别在于通信双方是否采用使用相同的时钟源 1 异步通信 以字符为单位组成字符帧进行的数据传送 数据以帧为单位进行传送 一帧数据由起始位 数据位 可编程校验位 可选 和停止位构成 帧和帧之间可以有任意停顿 起始位 占1位 用于实现发送方和接收方之间的同步 当不进行数据通信时 通信线路保持高电平 当发送端准备向接收端传输数据时 首先发送起始位 即逻辑上的0电平 使得串行通信线路的电平由高变低 接收端在检测到这一电平变化后 可以准备接收数据 数据位 可以是字符或数据 一般为5 8位 由低位到高位依次传送 可编程校验位 占1位 是用户自定义的特征位 用于通信过程中数据差错的校验 或传送多机串行通信的联络信息 常用的差错校验方法有奇偶校验 和校验及循环冗余码校验 停止位 占1位 位于数据位末尾 用于告知一帧结束 始终为高电平 数据传输结束后 发送端发送逻辑1 将通信线路再次置为高电平 表示一帧数据发送结束 异步通信特点 灵活 对收发双方的时钟精度要求较低 收发双方不同步时 能依靠在每帧开始时的不断对齐 自行纠正偏差 适用于数据的发送和接收 传送速度较低 每个字节都要建立一次同步 STC89C52单片机只支持异步通信 2 同步通信 数据以块为单位进行的数据传送 发送方先发送1 2个字节的同步字符 接收方检测到同步字符 一般由硬件实现 后 即准备接收后续的数据流 由于同步通信省去了字符开始和结束标志 而且字节和字节之间没有停顿 其速度高于异步通信 同步通信特点 数据成批传送 传输效率高 以数据块为单位连续传送 数据结构紧凑 对通信硬件要求高 要求双方有准确的时钟 7 1 3波特率波特率是表征串行通信数据传输快慢的物理量 波特率 每秒发送二进制数码的位数 即bps 位 秒 常用波特率 50 110 300 600 1200 2400 4800 9600 19200 38400波特等 串行通信的收发双方必须采用相同的波特率 发送 接收时钟频率与波特率有关 即fT R n BRT R式中 fT R为收发时钟频率 单位为Hz BRT R为收发波特率 n为波特率因子 同步通信n 1 异步通信n可取1 16或64 也就是说 同步通信中数据传输的波特率即为同步时钟频率 而异步通信中 时钟频率可为波特率的整数倍 例7 1 设单片机以1200bps的波特率发送120字节的数据 每帧10位 问至少需要多长时间 解 所谓 至少 是指串行通信不被打断 且数据帧与帧之间无等待间隔的情况 需传送的二进制位数为10 120 1200位所需时间T 1200 位 1200 bps 1秒 7 2串行口的结构 STC89C52RC单片机内部集成有一个可编程的全双工的异步通信串行口 可以作为通用异步接收 发送器 UART 也可作为同步移位寄存器使用 2个数据缓冲器SBUF在物理上是相互独立的 一个用于发送数据 另一个用于接收数据 2个SBUF共用一个地址 99H 通过读写指令区别是对哪个SUBF的操作 C51 ucharcounter 待发送存放变量 SBUF counter 完成一次数据发送 counter SBUF 完成一次数据接收 汇编 MOVSBUF DATA 完成一次数据发送 MOVA SBUF 完成一次数据接收 发送控制器的作用是在门电路和定时器T1的配合下 将发送缓冲器SBUF中的并行数据转为串行数据 并自动添加起始位 可编程位 停止位 这一过程结束后自动使发送中断请求标志位TI置1 用以通知CPU已将发送缓存器SBUF发中的数据输出到了TXD引脚 接收控制器的作用是在输入移位寄存器和定时器T1或T2的配合下 使来自RXD引脚的串行数据转为并行数据 并自动过滤掉起始位 可编程位 停止位 这一过程结束后自动使接收中断请求标志位RI置1 用以通知CPU接收的数据已存入接收缓冲器SBUF STC89C52串行通信以定时器T1或定时器T2作为波特率信号发生器 其溢出脉冲经过分频单元后送到收 发控制器中 RXD P3 0 和TXD P3 1 用于串行信号或时钟信号的传入或传出 80C51单片机P3口 7 2 2串行口特殊功能寄存器 与STC89C52单片机串行口控制有关的特殊功能寄存器有4个 分别是串行口控制寄存器SCON 电源控制寄存器PCON 从机地址控制寄存器SADEN和SADDR 1 串口控制寄存器SCON 98H 1 SM0 FE 当PCON寄存器的SMOD0 PCON 6为1时 该位用于帧错误检测 当检测到一个无效停止位时 通过UART接收器设置该位 FE必须由软件清 0 当PCON寄存器的SMOD0 PCON 6为0时 SM0与SM1一起用来选择串行口的工作 2 SM2 多机通信控制位多机通信在方式2和方式3下进行 当串口以方式2或方式3接收时 如果SM2 1 则只有当接收到的第9位数据 RB8 为1时 才使RI置1 产生中断请求 并将接收到的前8位数据送入SBUF 当接收到的第9位数据 RB8 为0时 则将接收到的前8位数据丢弃 当SM2 0时 则不论第9位数据是1还是0 都将前8位数据送入SBUF中 并使RI置1 产生中断请求 在方式1时 如果SM2 1 则只有收到有效的停止位时才会激活RI 在方式0时 SM2必须为0 3 REN 允许串行接收位 由软件置1或清0 REN 1允许串行口接收数据 REN 0禁止串行口接收数据 4 TB8 发送的第9位数据 方式2和方式3 TB8是要发送的第9位数据 其值由软件置1或清0 在双机串行通信时 一般作为奇偶校验位使用 在多机串行通信中用来表示主机发送的是地址帧还是数据帧 TB8 1为地址帧 TB8 0为数据帧 在方式0和1中 不使用TB8 5 RB8 接收的第9位数据 方式2和方式3 RB8存放接收到的第9位数据 在方式1 如SM2 0 RB8是接收到的停止位 在方式0 不使用RB8 6 TI 发送中断标志位方式0 串行发送的第8位数据结束时TI由硬件置1 在其他方式中 串行口发送停止位的开始时置TI为1 TI 1 表示一帧数据发送结束 TI的状态可供软件查询 也可申请中断 CPU响应中断后 在中断服务程序中向SBUF写入要发送的下一帧数据 TI必须由软件清 0 7 RI 接收中断标志位方式0时 接收完第8位数据时 RI由硬件置1 在其他工作方式中 串行接收到停止位时 该位置1 RI 1 表示一帧数据接收完毕 并申请中断 要求CPU从接收SBUF取走数据 该位的状态也可供软件查询 RI必须由软件清 0 对TI RI有以下三点需要特别注意 1 可通过查询TI RI判断数据是否发送 接收结束 当然也可以采用中断方式 2 串行口是否向CPU提出中断请求取决于TI与RI进行相 或 运算的结果 即当TI 1 或RI 1 或TI RI同时为1时 串行口向CPU提出中断申请 因此 当CPU响应串行口中断请求后 首先需要使用指令判断是RI 1还是TI 1 然后再进入相应的发送或接收处理程序 3 如果TI RI同时为1 一般而言 需优先处理接收子程序 这是因为接收数据时CPU处于被动状态 虽然串口输入有双重输入缓冲 但是 如果处理不及时 仍然会造成数据重叠覆盖而丢失一帧数据 所以应当尽快处理接收的数据 而发送数据时CPU处于主动状态 完全可以稍后处理 不会发生差错 2 电源控制寄存器PCON 第四章4 6节省电工作模式 仅SMOD SMOD0与串口有关 SMOD 波特率选择位 SMOD0 帧错误检测有效控制位 当SMOD0 1 SCON寄存器中的SM0 FE位用于FE 帧错误检测 功能 当SMOD0 0 SCON寄存器中的SM0 FE位用于SM0功能 与SM1一起指定串行口工作方式 复位时SMOD0 0 3 从机地址控制寄存器SADEN和SADDR为了方便多机通信 STC89C52单片机设置了从机地址控制寄存器SADEN和SADDR 其中SADEN是从机地址掩膜寄存器 地址为B9H 复位值为00H SADDR是从机地址寄存器 地址为A9H 复位值为00H 7 3串行口的4种工作方式7 3 1方式0 8位同步移位寄存器方式 当单片机工作在6T模式时 其波特率固定为fCLK 6 当单片机工作在12T模式时 其波特率固定为fCLK 12 由RXD引脚输入或输出数据 TXD引脚输出fCLK 12时钟信号 12T模式 以8位数据为一帧 不设起始位和停止位 先发送或接收最低位 方式0功能结构示意图 1 方式0发送 机器周期 RXD 数据 TXD 移位脉冲 方式0发送时 当CPU执行一条将数据写入发送缓冲器SBUF的指令时 产生一个正脉冲 串行口开始把SBUF中的8位数据以fCLK 12或fCLK 6的固定波特率从RXD引脚串行输出 低位在先 TXD引脚输出同步移位脉冲 发送完8位数据置位中断标志位TI 2 方式0接收 机器周期 RXD 数据 TXD 移位脉冲 当向SCON寄存器写入控制字时 产生一个正脉冲 串行口开始接收数据 接收器以fCLK 12或fCLK 6的固定波特率采样RXD引脚的数据信息 当接收完8位数据时 中断标志RI置1 表示一帧数据接收完毕 可进行下一帧数据的接收 在单片机应用系统中 如果并行口的I O资源不够 而串行口又无它用时 可以用来扩展并行I O口 这种扩展方法不会占用片外RAM地址 而且也节省单片机的硬件开销 只需外加1根I O口线 但扩展的移位寄存器芯片越多 口的操作速度也就越慢 方式0主要用于串并转换 不是用于异步串行通信 I O口数量不足时 可通过串口方式0进行扩展 但需要相应的扩展芯片配合 这种扩展方法不会占用片外RAM地址 而且也节省单片机的硬件开销 只需外加1根I O口线 但扩展的移位寄存器芯片越多 口的操作速度也就越慢 扩展输出芯片 74LS164 CD4094 扩展输入芯片 74LS165 CD4014 例7 2 利用74LS164扩展并行输出口 并实现8个LED由上向下循环点亮 74LS164 8位串入并出移位寄存器 工作原理 1 清零端 MR 若为低电平 输出端都为0 2 清零端若为高电平 且时钟端 CP 出现上升沿脉冲 则输出端Q锁存输入端D的电平 3 串行数据输入端 A B 可控制数据 当A B任意一个为低电平 则禁止新数据的输入 在时钟端脉冲CP上升沿作用下Q0为低电平 当A B有一个高电平 则另一个就允许输入数据 并在上升沿作用下确定串行数据输入口的状态 4 前级Q端与后级D端相连 移位作用 最先接收到的数将进入最高位 程序分析 串口初始化 SCON 0 方式0 SM0SM1 00 中断请求标志位清0 RI 0 TI 0 禁止接收数据 REN 0 串行数据输出时 一组数据发送完成 TI会被置1 可以采用中断法或查询方式进行判别 满足条件 发送下一组数据 否则 循环等待直到TI置1 方式0发送串行输出低位在先 高位在后 而164是先串入的数进入最高位 若需要实现下图效果 仅D1点亮 则164应输出11111110B 发送端数据应为LED 01111111B 欲使LED由上向下点亮 发送端数据应右移且最高位置1 LED 1 0 x80 0 x80 10000000B KeilC51 includesbitMR P2 7 voidtime unsignedintucMs voidmain unsignedcharindex LED SCON 0 MR 1 while 1 LED 0 x7f for index 0 index 1 0 x80 TI 0 time 1000 voidtime unsignedintucMs defineDELAYTIMES239unsignedcharucCounter while ucMs 0 for ucCounter 0 ucCounter DELAYTIMES ucCounter ucMs 例7 3 利用串行口外接两片8位并行输入串行输出的寄存器74LS165扩展两个8位并行输入口 要求从16位扩展口读入10组共20B数据 并将其转存到内部RAM30H开始的单元 S L 0 并行接收数据 S L 1 允许串行移位 MOVR7 10 设置读入数据组数MOVR0 30H 设置内部RAM数据区首地址START CLRP1 0 并行置入数据 0SETBP1 0 允许串行移位 1MOVR2 02H 每组为2BRXDATA MOVSCON 10H 串口工作在方式0 允许接收WAIT JNBRI WAIT 未接收完一帧 则等待CLRRI RI标志清 0 准备下次接收MOVA SBUF 读入数据MOV R0 A 送至片内RAM缓冲区INCR0 指向下一个地址DJNZR2 RXDATA 未读完一组数据 则继续DJNZR7 START 10组数据未读完重新并行置数 7 3 2方式1 10位异步收发通信模式 一帧信息 1个起始位 0 8位数据位 1个停止位 1 指定T1或T2为波特率时钟发生器 一般选择定时方式2 发送数据由TXD输出 接收数据由RXD输入 初始化 RI TI REN SM0 SM1 方式1主要用于点对点 双机 通信 方式1功能结构示意图 1 方式1发送 TXD TX时钟 D1 D2 D3 D4 D5 D6 D7 D0 起始 停止 当CPU执行一条写SBUF的指令 就启动发送 TX时钟的频率就是发送的波特率 发送开始时 内部发送控制信号变为有效 将起始位向TXD脚输出 此后每经过一个TX时钟周期 便产生一个移位脉冲 并由TXD引脚输出一个数据位 8位数据位全部发送完毕后 中断标志位TI置1 2 方式1接收 方式1接收时 REN 1 数据从RXD P3 1 引脚输入 当检测到起始位的负跳变 则开始接收 接收时 定时控制信号有两种 一种是接收移位时钟 RX时钟 它的频率和传送的波特率相同 另一种是位检测器采样脉冲 频率是RX时钟的16倍 以波特率的16倍速率采样RXD脚状态 当采样到RXD端从1到0的负跳变时就启动检测器 接收的值是3次连续采样 第7 8 9个脉冲时采样 取两次相同的值 以确认起始位 负跳变 的开始 较好地消除干扰引起的影响 当确认起始位有效时 开始接收一帧信息 每一位数据 也都进行3次连续采样 第7 8 9个脉冲采样 接收的值是3次采样中至少两次相同的值 当一帧数据接收完毕后 同时满足以下两个条件 接收才有效 1 RI 0 即上一帧数据接收完成时 RI 1发出的中断请求已被响应 SBUF中的数据已被取走 说明 接收SBUF 已空 2 SM2 0或收到的停止位 1 方式1时 停止位已进入RB8 则将接收到的数据装入SBUF和RB8 装入的是停止位 且中断标志RI置1 若不同时满足两个条件 收的数据不能装入SBUF 该帧数据将丢弃 7 3 3方式2和方式3 11位数据异步通信方式 一帧信息 1个起始位 0 8位数据位 1个可编程位 P 1个停止位 1 方式2和方式3的操作两种方式的共同点是发送和接收时具有第9位数据 正确运用SM2 多机通信控制位 能实现多机通信 不同点在于 方式2的波特率是固定的 而方式3的波特率由定时器T1或T2的溢出率决定 可编程位的作用 用于奇偶校验或多机通信标识 TB8既可作为多机通信地址帧或数据帧的标识位 如地址帧可约定为 1 数据帧时为0 也可作为数据的奇偶校验位 发送时由硬件方式将TB8作为可编程位插入数据帧中 接受时由硬件方式将数据帧的可编程位存入RB8中 方式2功能结构示意图 方式2和方式1相比 除波特率发生源略有不同 发送时由TB8提供给移位寄存器第9位数据不同外 其余功能结构均基本相同 发送 接收数据过程及时序基本相同 方式3功能结构示意图 1 方式2和方式3发送 2 方式2和方式3接收 SM0 SM1 10 且REN 1时 以方式2接收数据 数据由RXD端输入 接收11位信息 当位检测逻辑采样到RXD的负跳变 判断起始位有效 便开始接收一帧信息 在接收完第9位数据后 需满足以下两个条件 才能将接收到的数据送入SBUF 接收缓冲器 1 RI 0 意味着接收缓冲器为空 2 SM2 0或接收到的第9位数据位RB8 1 当满足上述两个条件时 收到的数据送接收SBUF 第9位数据送入RB8 且RI置1 若不满足这两个条件 接收的信息将被丢弃 7 4波特率的设定与计算在串行通信中 收发双方必须采用相同的通讯速率 即波特率 STC89C52单片机串行通信以定时器T1和定时器T2作为波特率信号发生器 其溢出脉冲经过分频单元后送到收 发控制器中 分频单元的内部结构如下图 1 方式0波特率与系统时钟频率fCLK有关 一旦系统时钟频率选定且在STC ISP编程器中设置好 方式0的波特率固定不变 当用户在烧录用户应用程序时STC ISP编程器中设置单片机为6T 双倍速时 其波特率为fCLK的1 6 若设置单片机为12T 单倍速时 其波特率为fCLK的1 12 2 方式2波特率与系统时钟频率 SMOD位的值有关 其计算公式为 3 方式1和方式3串行口工作在方式1或方式3时 波特率设置方法相同 采用定时器T1或定位器T2作为波特率发生器 其计算公式为 T1溢出脉冲可有两种分频路径 即16分频或32分频 SMOD是决定分频路径的逻辑开关 T1溢出率取决于计数速率和定时器的预置值 计数速率与C T TMOD 的状态有关C T 0 计数速率 fosc 12C T 1 计数速度取决于外部输入时钟频率 当定时器T1作波特率发生器使用时 通常是选用自动重装载方式 在方式2中 TL1作计数用 而自动重装载的值放在TH1内 设计数初值为X 那么每过 256 X 个机器周期 T1产生一次溢出 此时 波特率随 SMOD和初值X而变化 解出时间常数装载值为 当单片机工作在12T模式时 当单片机工作在6T模式时 解出时间常数装载值为 当设置定时器T2作为波特率发生器 定时器T2的溢出脉冲经16分频后作为串行口发送脉冲 接收脉冲 其波特率计算公式为 实际使用时 经常根据已知波特率和时钟频率来计算T1 T2的初值 在使用时钟振荡频率为12MHz时 将初值X和带入公式计算出的波特率有一定误差 为减小波特率误差 可使用的时钟频率为11 0592MHz或22 1184MHz 此时定时初值为整数 但该外接晶振用于系统精确的定时服务不是十分的理想 例如单片机外接11 0592MHz晶振时 机器周期 12 11 0592MHz 1 085us 是一个无限循环的小数 当单片机外接22 1184MHz晶振时 机器周期 12 22 1184MHz 0 5425us 也是一个无限循环的小数 因此不能够为定时应用提供精确的定时 如果要产生很低的波特率 如波特率选55 可以考虑使用定时器T1工作在方式1 即16位定时器方式 但在这种情况下 定时器T1溢出时 需在中断服务程序中重新装入初值 中断响应时间和执行指令时间会使波特率产生一定的误差 可用改变初值的方法加以调整 定时器T2作波特率发生器是16位自动重装载初值的 位数比定时器1作为波特率发生器要多 定时器T1作为串口波特率发生器工作在方式2是8位自动重装初值 因此可以支持更高的传输速度 设置波特率的常用初始化片断如下 MOVTMOD 20H 设置定时器T1工作在方式2MOVTH1 XXH 装载定时初值MOVTL1 XXHSETBTR1 开启定时器T1MOVPCON 80H 波特率倍增MOVSCON 50H 设置串行口工作在方式1 例7 4 若STC89C52单片机系统时钟频率fCLK为11 0592MHz 工作在12T模式 采用T1定时器工作在方式2作为波特率发生器 波特率为2400波特 求初值 解 取SMOD 0 将已知条件带入公式解得X 244 F4H 另查表也可得 例7 5 设STC89C52单片机系统时钟频率fCLK为11 0592MHz T2工作方式在波特率发生器方式 波特率为9600波特 1 设计分析 根据题意知T2工作波特率发生器方式 T2产生发送时钟和接收时钟 则TCLK 1 RCLK 1 1 求定时初值 选择T2为定时模式 启动T2工作 即TR2 1我们选择向上计数 即DCEN 0 这时波特率计算公式如下 取SMOD 0 由于MCU选12T 则n 32 已知波特率为9600 fCLK为11 0592MHz令N RCAP2H RCAP2L 则9600 即TH2 FFH TL2 DCH RCAP2H FF RCAP2L DCH 2 确定特殊功能寄存器T2CON T2MOD值T2CON 34H 即TCLK 1 RCLK 1 TR2 1 T2MOD 00H 即DCEN 0 2 程序清单 汇编程序InitUart MOVSCON 50H 串行口工作在方式1MOVT2MOD 00 设置T2加法计数 时钟输出不使能MOVT2CON 34H T2为波特率发生器并启动T2计数MOVTH2 0FFH 设置定时寄存器计数初值MOVTL2 0DCHMOVRCAP2L 0DCH 设置自动重装寄存器计数初值MOVRCAP2H 0FFHRET C51程序voidinitUart void SCON 0 x50 T2MOD 0 x00T2CON 0 x34 TH2 0 xff TL2 0 xdc RCAP2L 0 xdc RCAP2H 0 xff 7 5STC89C52单片机之间的通信复习 与串口通信相关寄存器 SCON 98H PCON 87H D7D6D5D4D3D2D1D0SCON SM0 FESM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H D7D6D5D4D3D2D1D0PCONSMODSMOD0 与串行通信无关 7 5STC89C52单片机之间的通信7 5 1串行通信接口7 5 2双机串行通信编程7 5 3多机通信 7 5STC89C52单片机之间的通信单片机的串行通信接口设计时 需考虑如下问题 1 确定通信双方的数据传输速率 2 由数据传输速率确定采用的串行通信接口标准 3 在通信接口标准允许的范围内确定通信的波特率 为减小波特率的误差 通常选用11 0592MHz的晶振频率 4 根据任务需要 确定收发双方使用的通信协议 5 通信线的选择 一般选用双绞线较好 并根据传输的距离选择纤芯的直径 如果空间的干扰较多 还要选择带有屏蔽层的双绞线 6 通信协议确定后 最后进行通信软件设计 7 5 1串行通信接口1 TTL电平通信接口两个STC89C52单片机相距在1 5m之内 可直接用TTL电平传输方法实现双机通信 以TTL电平串行传输数据的方式抗干扰性差 传输距离短且传输速率低 为提高串行通信的可靠性 增大串行通信的距离以及提高传输速率 一般都采用标准串行接口来实现串行通信 2 RS 232C接口RS 232C在1969年发布 RS 232C规定任何一条信号线的电压均为负逻辑关系 即逻辑1 3V 15V 逻辑0 3V 15V 3V 3V为过渡区 不作定义 由于RS 232C接口标准出现较早 采用该接口存在以下问题 1 传输距离短 传输速率低 2 有电平偏移 3 抗干扰能力差 当单片机双机通信距离在1 5 15m之间时 可考虑用RS 232C标准接口实现点对点的双机通信 为了使用RS 232C接口通信 必须在单片机系统中加入电平转换芯片 以实现TTL电平向RS 232C电平的转换 常见的TTL到RS 232C的电平转换器有MC1488 MC1489和MAX232A等芯片 3 RS 422A接口RS 422A与RS 232C的主要区别是 收发双方的信号地不再共地 RS 422A采用了平衡驱动和差分接收的方法 用于数据传输的是两条平衡导线 这相当于两个单端驱动器 输入同一个信号时 其中一个驱动器的输出永远是另一个驱动器的反相信号 因此 两条线上传输的信号电平 当一个表示逻辑 1 时 另一条一定为逻辑 0 若传输中 信号中混入干扰和噪声 共模形式 由于差分接收器的作用 就能识别有用信号并正确接收传输的信息 并使干扰和噪声相互抵消 RS 422A与TTL电平转换常用的芯片为传输线驱动器SN75174或MC3487和传输线接收器SN75175或MC3486 RS 422A能在长距离 高速率下传输数据 它的最大传输率为10Mbps 电缆允许长度为12m 如果采用较低传输速率时 最大传输距离可达1219m 4 RS 485接口RS 422A双机通信需四芯传输线 应用于长距离通信很不经济 因此在工业现场 通常采用双绞线传输的RS 485串行通信接口 RS 485是RS 422A的变型 它与RS 422A的区别 RS 422A为全双工 采用两对平衡差分信号线 RS 485为半双工 采用一对平衡差分信号线 RS 485最大传输距离约为1219m 最大传输速率为10Mbps 通信线路要采用平衡双绞线 平衡双绞线的长度与传输速率成反比 在100kbps速率以下 才可能使用规定的最长电缆 只有在很短的距离下才能获得最大传输速率 一般100m长双绞线最大传输速率仅为1Mbps 7 5 2双机串行通信编程 例7 6 假定有甲乙两机 以方式1进行异步通信 采用下图所示的双机串行通信电路 其中甲机发送数据 乙机接收数据 双方晶振频率为 11 0592MHz 通信波特率为2400bps 甲机循环发送数字0 F 乙机接收后返回接收值 若发送值与返回值相等 则继续发送下一数字 否则需重发当前数字 数码管 7SEG BCD 带译码电路可直接输入数据0 F 无需显示字模 KeilC51 分析 串口 定时器初始化 采用2400波特率 PCON 0 查表得TH1 TL1 0 xf4 T1采用方式2 TMOD 0 x20 串口工作在方式1 允许接收 清中断标志 SCON 0 x50 发送程序 include defineucharunsignedcharvoidtime unsignedintucMs 延时单位 msvoidinitUart void 初始化串口波特率 使用定时器T1voidmain void ucharcounter 0 time 1 延时等待外围器件完成复位initUart while 1 SBUF counter 发送联络信号while TI 0 等待发送完成TI 0 清TI标志位 采用查询法检查收发是否完成 发送值和接收值分别显示在双方LED数码管上 程序清单 while RI 0 等待乙机回答RI 0 if SBUF counter P2 counter 显示已发送值if counter 15 counter 0 修正计数器值time 500 voidinitUart void 初始化串口波特率 使用定时器T1SCON 0 x50 串口工作在方式1 接收允许PCON 0 波特率不加倍TMOD 0 x20 T1工作在方式2TH1 0 xf4 TL1 0 xf4 TCON 0 x40 TR1 1 接收程序 include defineucharunsignedcharvoidtime unsignedintucMs 延时单位 msvoidinituart void 初始化串口波特率 使用定时器T1voidmain void ucharreceive 定义接收缓冲time 1 延时等待外围器件完成复位initUart while 1 while RI 1 等待接收完成RI 0 清RIreceive SBUF 取接收值SBUF receive 结果返送发送缓冲器while TI 0 等待发送结束TI 0 清TIP2 receive 显示接收值 例7 7 甲乙两机以方式2进行双机串行通信中 要求用汇编语言编写发送中断和接收中断服务程序 以TB8作为奇偶校验位 采用偶校验 设第2组的工作寄存器区的R0作为发送数据区地址指针 第1组寄存器区的R1作为接收数据区的指针 奇偶校验原理 若发送数据为0 x45 01000101B 其奇偶校验位P 1 包含奇数个1 将P TB8 发送时可连同数据0 x45一起发出 接收端可自动将其可编程位放入RB8中 只要将待测数据送入累加器Acc即可由硬件求出奇偶校验值 使P赋值 再与RB8进行比较便可判断收发过程是否有误 PIPT1 PUSHPSWPUSHAccSETBRS1CLRRS0CLRTIMOVA R0 MOVC PMOVTB8 CMOVSBUF AINCR0POPAccPOPPSWRETI 发送中断服务程序 接收中断服务程序 PITI PUSHPSWPUSHAccSETBRS0CLRRS1CLRRIMOVA SBUFMOVC PJNCL1JNBRB8 ERPAJMPL2L1 JBRB8 ERP L2 MOV R1 A 数据送内存INCR1POPAccPOPPSWRETIERP 出错处理程序段入口RETI 注意 改错 P160页 红色字体R1 7 5 3多机通信 主从式通信系统 1主机 多从机 每个从机都被赋予唯一的地址 一般还要预留1 2个 广播地址 主机与各从机之间能实现双向通信 而各从机之间不能直接通信 只能通过主机才能沟通 1 多机通信原理串行口控制寄存器SCON中的SM2为多机通信接口控制位 串行口以方式2或3接收时 若SM2 1 表示置多机通信功能位 这时出现两种可能情况 1 接收到的第9位数据RB8为1时 数据才装入SBUF 并置位RI 1 向CPU发中断请求 2 接收到的第9位数据RB8为0时 则不产生中断 信息抛弃 若SM2 0时 则接收到第9位数据RB8无论是0还是1 都将数据装入接收缓冲器SBUF并置位中断标志RI 请求CPU处理 多机通信系统示意图 TXD TXD TXD RXD RXD RXD TXD RXD 主机 从机1 从机2 从机3 从机地址 01H 02H 03H 1 各从机初始化 MOVSCON 0B0H 或 0F0H TXD RXD 主机 2 主机发送信息 其中第9位数据TB8作为区分地址 数据的标识 TB8 1表示地址 TB8 0表示数据 例如 主机发送地址帧信息02H 02H是从机2的地址 SBUF 1 各从机初始化 MOVSCON 0B0H 或 0F0H TXD RXD 主机 2 主机发送信息 其中第9位数据TB8作为区分地址 数据的标识 TB8 1表示地址 TB8 0表示数据 例如 主机发送地址帧信息02H 02H是从机2的地址 0 SBUF 1 0 0 0 0 0 0 1 RB8 1 各从机初始化 MOVSCON 0B0H 或 0F0H TXD RXD 主机 2 主机发送信息 其中第9位数据TB8作为区分地址 数据的标识 TB8 1表示地址 TB8 0表示数据 例如 主机发送地址帧信息02H 02H是从机2的地址 3 各从机响应中断 在中断程序中判断接收到地址与本机相符 相符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度云端智能翻译服务合作协议范本
- 2025年专业市场场地租赁与特色品牌招商合作框架协议
- 2025年二手车辆融资担保与信用风险评价合作协议
- 2025年生态蔬菜冷链物流配送与采购合作协议
- 2025年KTV广告资源整合与独家经营授权合同
- 2025年度金融机构员工绩效补充劳动合同范本
- 2025医疗器械租赁终止及设备更新补充协议
- 2025年电子商务平台佣金分成及营销支持合作协议
- 2025年度茶叶功能性产品研发与品牌授权合作协议
- 2025年智慧餐饮节能减排工程及综合能源管理合同模板
- 龙虎山正一日诵早晚课
- 微积分的力量
- 中国股票市场投资实务(山东联盟)知到章节答案智慧树2023年山东工商学院
- 安徽宇邦新型材料有限公司年产光伏焊带2000吨生产项目环境影响报告表
- 号线项目tcms便携式测试单元ptu软件使用说明
- 艺术课程标准(2022年版)
- 癫痫所致精神障碍
- 卫生部手术分级目录(2023年1月份修订)
- 电荷及其守恒定律、库仑定律巩固练习
- YY 0666-2008针尖锋利度和强度试验方法
- GB/T 6663.1-2007直热式负温度系数热敏电阻器第1部分:总规范
评论
0/150
提交评论