串行口(4.5,4.6)_第1页
串行口(4.5,4.6)_第2页
串行口(4.5,4.6)_第3页
串行口(4.5,4.6)_第4页
串行口(4.5,4.6)_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第六章MCS 51单片机串行口 6 1串行通信的基础知识 在MCS 51单片机内部 有一个通用异步接收 发送器 UART 这是一个全双工串行接口 能同时进行发送和接收数据 利用这个串行接口 可以实现单片机之间的单机通信 多机通信 以及与PC机之间的通信 一 数据通信的基本概念单片机数据通信就是指CPU与外部的信息交换二 通信方式基本的通信方式有两种 并行通信 数据的各位同时传送串行通信 数据一位一位顺序传送8位数据并行传送需要8条数据传送线 而串行通信只需要一条传送线 因此 用串行通信节省传输线 距离比较远时 更能显示它的优点 单片机广泛用于工业控制和数据采集系统中 他们往往作为前端机安放在工业现场 而远离系统主机 采用串行通信可大大降低成本 并提高系统的可靠性 信号线减少 降低了线路故障 三 串行通信分类 按串行数据的同步方式 串行通信可分为同步通信和异步通信两类 1 异步通信 数据以字符 或子节 为单位组成字符帧 也称数据帧 传送 字符帧由发送端逐帧发送 通过传输线被接收设备逐帧接收 发送端和接收端可以由各自的时钟来控制数据的发送和接收 这两个时钟源彼此独立 互不同步 那么 接收端如何知道发送端何时开始发送和何时结束发送呢 这是由字符帧格式规定的 平时 发送线为高电平 逻辑1 每当接收端检测到传输线上发送过来的低电平逻辑0 字符帧中的起始位 时 就知道发送端已开始发送 每当接收端接收到字符帧中的停止位时 就知道一帧字符信息已发送完毕 用一个起始位表示字符帧的开始 接着N位数据位 第N 1位是奇偶校验位 然后是停止位 用停止位表示数据帧的结束 数据传送的顺序是低位在前 高位在后 在异步串行通信方式中 数据发送端与数据接收端对帧格式和传送的速度的规定要一致 保证收 发端的波特率在一个帧间能同步 这样 就可以实现多个字符的可靠传送 帧格式和波特率是两个重要指标 由用户根据实际情况选定 1 帧格式起始位为1位 数据位N位 N 5 6 7或8 若所传数据为ASCII码 则常取7位 奇偶校验占1位 也可以不要校验位 停止位可以是1位 1 5位或2位 2 波特率以1秒钟可传送的数据位数来定义 例如收 发端采用波特率为110 一个帧采用1起始位 8数据位 1奇偶校验位 1停止位 11位 则1秒钟最多可传送110 11 10帧 第N 1个帧 0 1 停止位 起始位 低位 高位 7位数据位 奇偶校验 停止位 第N个数据帧 图6 1异步串行通信帧格式 异步通信的优点是不需要传送同步脉冲 故所需设备简单 缺点是帧中因包含有起始位和停止位而降低了有效数据的传输速率 2 同步通信 同步通信是一种连续串行传送数据的通信方式 一次通信只传送一帧信息 这里的信息帧和异步通信中的字符帧不同 通常含有若干个数据字符 如图 帧由同步字符 数据字符和校验字符三部分组成 同步字符位于帧结构开头 用于确认数据字符的开始 接收端不断对传输线采样 并把采样到的字符和双方约定的同步字符比较 只有比较成功后才会把后面接收到的字符加以存储 数据字符在同步字符之后 个数不受限制 由所需传输的数据块长度决定 校验字符有1到2个 位于帧结构末尾 用于接收端对接收到的数据字符的正确性校验 在同步通信中 同步字符可以采用统一的标准格式 也可以由用户约定 在单同步字符帧结构中 同步字符常采用ASCII码中规定的SYN 即16H 代码 在双同步字符帧结构中 同步字符一般采用国际通用标准代码EB90H 同步通信的数据传输速率较高 通常可达56Mb s或更高 同步通信的缺点是要求发送时钟和接收时钟保持严格同步 四 数据转换MCS 51单片机串行接口电路为用户提供了两个串行口缓冲寄存器 SBUF 一个称为发送缓冲器 它的用途是接收片内总线送来的数据 即发送缓冲器只能写不能读 发送缓冲器中的数据通过TXD引脚向外传送 另一个称为接收缓冲器 它的用途是向片内总线发送数据 即接收缓冲器只能读不能写 接收缓冲器通过RXD引脚接收数据 因为这两个缓冲器一个只能写 一个只能读 所以共用一个地址99H 串行接口电路如图6 2所示 图6 2MCS 51串行口寄存器结构 6 2MCS 51单片机串行通信的控制寄存器1 串行口控制寄存器 SCON SCON是MCS 51单片机的一个可位寻址的专用寄存器 用于串行数据通信的控制 单元地址为98H 位地址为98H 9FH 寄存器的内容及位地址表示如下 各位的说明如下 1 SM0 SM1 串行口工作方式选择位其状态组合和对应工作方式为 SM0SM1工作方式00方式001方式1 10方式211方式32 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 允许接收位REN 0禁止接收数据REN 1允许接收数据4 TB8 发送数据位8在方式2 3时 TB8的内容是要发送的第9位数据 其值由用户通过软件来设置 5 RB8 接收数据位8在方式2 3时 RB8是接收的第9位数据 在方式1时 RB8是接收的停止位在方式0时 不使用RB86 TI 发送中断标志位在方式0时 发送完第8位数据后 该位由硬件置位 在其它方式下 于发送停止位之前 由硬件置位 因此 TI 1表示帧发送结束 其状态既可供软件查询使用 也可请求中断 TI由软件清 0 7 RI 接收中断标志位在方式0时 接收完第8位数据后 该位由硬件置位 在其它方式下 于接收到停止位之前 该位由硬件置位 因此 RI 1表示帧接收结束 其状态既可供软件查询使用 也可请求中断 RI由软件清 0 2 电源控制寄存器 PCON PCON不可位寻址 字节地址为87H 它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器 其内容如下 与串行通信有关的只有D7位 SMOD 该位为波特率倍增位 当SMOD 1时 串行口波特率增加一倍 当SMOD 0时 串行口波特率为设定值 当系统复位时 SMOD 0 6 3MCS 51单片机串行通信工作方式串行口的工作方式由SM0和SM1确定 编码和功能如表6 1所示 方式0和方式2的波特率是固定的 而方式1和方式3的波特率是可变的 由T1的溢出率决定 表6 1串行口工作方式 6 3 1串行工作方式01 数据输出 发送 当数据写入SBUF后 数据从RXD端在移位脉冲 TXD 的控制下 逐位移入74LS164 74LS164能完成数据的串并转换 当8位数据全部移出后 TI由硬件置位 发生中断请求 若CPU响应中断 则从0023H单元开始执行串行口中断服务程序 数据由74LS164并行输出 其接口逻辑如图6 3所示 图6 3接口逻辑 2 数据输入 接收 要实现接收数据 必须首先把SCON中的允许接收位REN设置为1 当REN设置为1时 数据就在移位脉冲的控制下 从RXD端输入 当接收到8位数据时 置位接收中断标志位RI 发生中断请求 其接口逻辑如图6 4所示 由逻辑图可知 通过外接74LS165 串行口能够实现数据的并行输入 图6 4外接移位寄存器输入 6 3 2串行工作方式1方式1为10位为一帧的异步串行通信方式 其帧格式为1个起始位 8个数据位和1个停止位 如图6 6所示 图6 6方式1的帧格式 1 数据输出 发送 数据写入SBUF后 开始发送 此时由硬件加入起始位和停止位 构成一帧数据 由TXD串行输出 输出一帧数据后 TXD保持在高电平状态下 并将TI置位 通知CPU可以进行下一个字符的发送 2 数据输入 接收 当REN 1且接收到起始位后 在移位脉冲的控制下 把接收到的数据移入接收缓冲寄存器 SBUF 中 停止位到来后 把停止位送入RB8中 并置位RI 通知CPU接收到一个字符 3 波特率的设定工作在方式1时 其波特率是可变的 波特率的计算公式为 其中 SMOD为PCON寄存器最高位的值 其值为1或0 当定时器1作波特率发生器使用时 选用工作方式2 即自动加载定时初值方式 选择方式2可以避免通过程序反复装入定时初值所引起的定时误差 使波特率更加稳定 假定计数初值为X 则计数溢出周期为 溢出率为溢出周期的倒数 则波特率的计算公式为 实际使用中 波特率是已知的 因此需要根据波特率的计算公式求定时初值X 用户只需要把定时初值设置到定时器1 就能得到所要求的波特率 4 应用举例 用方式1实现双机串行通信 1 通信双方的硬件连接作为应用系统首先要研究通信双方如何连接 一种办法是把两片8051的串行口直接相连 一片8051的TXD与另一片的RXD相连 RXD与另一片的TXD相连 地与地连通 由于8051串行口的输出是TTL电平 两片相连所允许的距离极短 2 通信双方的软件约定为实现双机通信 我们规定如下 假定A机为发送机 B机为接收机 当A机发送时 先送一个 AA 信号 B机收到后回答一个 BB 信号 表示同意接收 当A机接收到 BB 后 开始发送数据 每发送一次求一次 检查和 假定数据块长16个字节 起始地址为30H 一个数据块发送完后再发出 检查和 B机接收的数据并转存到数据区 起始地址也为30H 同时每接收一次也计算一次 检查和 当一个数据块收齐后 再接收A机发来的 检查和 并将它与B机的 检查和 进行比较 若两者相等 说明接收正确 B机回答一个00 若两者不相等 说明接收不正确 B机回答一个FF 请求重发 A机收到00的答复后 结束发送 若收到的答复非0 则重新将数据发送一次 双方均以1200波特的速率传送 假设晶振频率为6MHz 计算定时器1的计数初值 为使波特率不倍增 设定PCON寄存器的SMOD 0 则PCON 00H 3 基本的通信程序设计程序框图如图6 7所示 图6 7双机通信程序结构图 根据结构图设计出下述通信程序 A机通信程序 ASTART MOVTMOD 20H 设定定时器1工作方式2MOVTL1 0F2H 设定计数初值MOVTH1 0F2H 计数重装值MOVPCON 00H 波特率不倍增SETBTR1 启动T1MOVSCON 50H 设置串行口方式1ATT1 MOVSBUF 0AAH 发送 AA AWAIT1 JBCTI ARR1 等待一帧发送完SJMPAWAIT1ARR1 JBCRI ARR2 等待应答信号SJMPARR1 ARR2 MOVA SBUFXRLA 0BBHJNZATT1 判断是否是应答信号 00 ATT2 MOVR0 30HMOVR7 10HMOVR6 00HATT3 MOVSBUF R0MOVA R6ADDA R0MOVR6 AINCR0AWAIT2 JBCTI ATT4SJMPAWAIT2 发送有效数据ATT4 DJNZR7 ATT3 判断是否传送完毕MOVSBUF R6 AWAIT3 JBCTI ARR3SJMPAWAIT3 等待ARR3 JBCRI ARR4SJMPARR3 等待ARR4 MOVA SBUFJNZATT2AEND RETB机通信程序 BSTART MOVTMOD 20H 设定定时器1工作方式2MOVTH1 0F2H 设定计数初值MOVTL1 0F2H 计数重装值MOVPCON 00H 波特率不倍增SETBTR1MOVSCON 50H BRR1 JBCRI BRR2SJMPBRR1 等待BRR2 MOVA SBUF 把接收到的数据送入AXRLA 0AAH 判断接收到数据是否是 AA JNZBRR1 如果不是继续等待BTT11 MOVSBUF 0BBH 发送应答信号BWAIT1 JBCTI BRR3 等待SJMPBWAIT1BRR3 MOVR0 30H 接收有效数据MOVR7 10HMOVR6 00HBRR4 JBCRI BRR5SJMPBRR4 BRR5 MOV R0 SBUFMOVA R6ADDA R0MOVR6 AINCR0DJNZR7 BRR4BWAIT2 JBCRI BRR6SJMPBWAIT2BRR6 MOVA SBUFXRLA R6JZBENDMOVSBUF 0FFHBWAIT3 JBCTI BRR3SJMPBWAIT3BEND MOVSBUF 00HBWAIT4 JBCTI RETURNSJMPBWAIT4RETURN RET 6 3 3串行工作方式2方式2为11位为一帧的异步串行通信方式 其帧格式为1个起始位 9个数据位和1个停止位 如图8 8所示 图8 8方式2的帧格式 在方式2下 字符还是8个数据位 只不过增加了一个第9个数据位 D8 而且其功能由用户确定 是一个可编程位 在发送数据时 应先在SCON的TB8位中把第9个数据位的内容准备好 这可使用如下指令完成 SETBTB8 TB8位置 1 CLRTB8 TB8位置 0 发送数据 D0 D7 由MOV指令向SBUF写入 而D8位的内容则由硬件电路从TB8中直接送到发送移位器的第九位 并以此来启动串行发送 一个字符帧发送完毕后 将TI位置 1 其他过程与方式1相同 方式2的接收过程也于方式1基本类似 所不同的只在第9

温馨提示

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

评论

0/150

提交评论