串行通信及其接口.ppt

上传人:xt****7 文档编号:4260578 上传时间:2020-01-04 格式:PPT 页数:86 大小:1.95MB
返回 下载 相关 举报
串行通信及其接口.ppt_第1页
第1页 / 共86页
串行通信及其接口.ppt_第2页
第2页 / 共86页
串行通信及其接口.ppt_第3页
第3页 / 共86页
点击查看更多>>
资源描述
单片机应用技术 主讲教师 苏晓龙 全校公共选修课 计算机学院信息科学系 办公室 计A315 1 答疑地点 计A315 1 E mail suxl 第7章串行通信及其接口 7 1串行通信的基本概念7 2MCS 51的串行口7 3串行口的控制7 4串行口的应用 7 1串行通信的基本概念 返回本章首页 计算机与外部的信息交换称为通信 基本的通信方式有两种 并行通信 parallelcommunication 和串行通信 serialcommunication 并行通信 所传送数据的各位同时发送或接收 串行通信 所传送数据的各位按顺序一位一位地发送或接收 并行通信 速度快 但成本高 传输距离受限 串行通信 通信线少 传输距离远 但速度较慢 7 1串行通信的基本概念 返回本章首页 图7 1并行通信与串行通信 a 并行通信 b 串行通信 7 1串行通信的基本概念 一 串行通信按数据流传输方向分 1 单工 Simplex 两个传输站点之间一方只能发送 另一方只能接收 2 半双工 HalfDuplex 两个传输站点之间任何一方都能发送数据 但由于设备之间只有一条通信线路 在同一时刻只能在一个方向上传输数据 如对讲机 串行通信的基本概念 一 串行通信按数据流传输方向分 两个传输站点之间双方使用不同的通信线路 同时发送和接收数据 如电话 3 全双工 FullDuplex 串行通信的基本概念 二 串行通信的两种基本工作方式 异步方式 同步方式 所有串行通信都需要一个时钟信号来作为数据的定时参考 发送器和接收器用时钟来决定何时发送和读取每一位数据 根据采用统一时钟还是本地局部时钟 分为同步传输和异步传输两种 同步传输用一个时钟确定一个数据位 异步传输用多个时钟确定一个数据位 串行通信的基本概念 二 串行通信的两种基本工作方式 不发送数据时 传输线呈现高电平 MARK状态 1 异步方式 Asynchronous 采用不同的编码方案 发送字符可为5 6 7 或8位 采用奇校验 保证 1 的个数为奇数 采用偶校验 保证 1 的个数为偶数 异步串行通信数据格式 串行通信的基本概念 二 串行通信的两种基本工作方式 1 异步方式 Asynchronous 例 发送一个由8位数据位构成的字符45H 奇校验 1位停止位 停止位可以是1 1 5或2位 异步传输先发送低位 LSB 异步传输的时钟定时方法 数据 61H 1 0 0 0 1 1 停止位 发送方利用内部时钟来决定什么时候发送每个位 接收方检测开始信号的下降沿 然后利用它的内部时钟从每一位的中间接收该位 0 0 起始位 LSB MSB 串行通信的基本概念 串行通信的基本概念 不发送数据时 传输线呈现高电平 MARK状态 同步字符可以为1个或2个 根据双方约定 接收方监测到同步字符后 接收被发送的字符流 将接收到的字符转换成并行数据 内同步 外同步 同步传输的时钟定时方法 数据 61H 1位 1 1 0 0 0 0 1 先发送高位 MSB 发送方在时钟信号的下降沿发送字节 接收方在时钟信号的上升沿接收字节 时钟 串行通信的基本概念 0 同步通信的帧格式 同步传输需要定义一个帧的开始和结束 通常用1个同步字符 标志符 来表示 串行通信的基本概念 三 串行传送速率 在串行通信中 常用波特率来表示数据传输的速率 波特率 每秒传送的二进制位数 单位 波特Bd 如串行通信规定 一个串行字符包括1个起始位 7个数据位 1个奇偶校验位和1个停止位 共10个数据位构成 每秒传送120个字符 则波特率为 10位 字符 120字符 秒 1200位 秒传送每一位占用的时间为 1秒 1200 0 833毫秒 波特率因子 发送 接收时钟与波特率之比 7 2MCS 51的串行口 7 2 1串行口的结构7 2 2串行口的工作方式7 2 3波特率的计算 返回本章首页 MCS 51有一个可编程的全双工串行通信接口 可作为通用异步接收 发送器 UART UniversalAsychronousReceiver Transmitter 也可作为同步移位寄存器 其帧格式可为8位 10位 11位 并可设置多种不同的波特率 它通过引脚RXD和TXD与外界进行通信 7 2 1串行口的结构 MCS 51内部有两个物理上独立的接收 发送缓冲器SBUF SBUF属于特殊功能寄存器 一个用于存放接收到的数据 另一个用于存放欲发送的数据 可同时发送和接收数据 两个缓冲器共用一个地址99H 通过对SBUF的读 写指令来区别是对接收缓冲器还是对发送缓冲器进行操作 CPU在写SBUF时 就是修改发送缓冲器 读SBUF 就是读接收缓冲器的内容 接收或发送数据 是通过串行口对外的两条独立收发信号线RXD P3 0 TXD P3 1 来实现的 因此可以同时发送 接收数据 串行口的结构如图7 3所示 7 2 1串行口的结构 图7 3串行口结构示意图 7 2 1串行口的结构 7 2 1串行口的结构 1 串行口控制寄存器SCON 图7 6SCON格式 该寄存器的字节地址为98H 可位寻址 SCON格式如图7 6所示 其各位的含义如下 SM0 SM1 串行口4种工作方式的选择位 串行口的4种工作方式如表7 1所示 表8 1串行口的4种工作方式 1 串行口控制寄存器SCON SM2 多机通信控制位 用于方式2或方式3中 1 串行口控制寄存器SCON 当串行口以方式2或方式3接收时 如果SM2 1 只有当接收到的第9位数据 RB8 为 1 时 才将接收到的前8位数据送入SBUF 并将RI置 1 产生中断请求 当接收到的第9位数据 RB8 为 0 时 则将接收到的前8位数据丢弃 如果SM2 0 则不论第9位数据是 1 还是 0 都将前8位数据送入SBUF中 并将RI置 1 产生中断请求 在方式1时 如果SM2 1 则只有收到停止位时才会激活RI 在方式0时 SM2必须为0 REN 允许串行接收位 由软件置 1 或清 0 REN 1时 允许串行口接收数据 REN 0时 禁止串行口接收数据 1 串行口控制寄存器SCON TB8 发送的第9位数据 方式2和方式3时 TB8是要发送的第9位数据 可作为奇偶校验位使用 也可作为地址帧或数据帧的标志 其中 TB8 1为地址帧 TB8 0为数据帧 RB8 接收到的第9位数据 方式2和方式3时 RB8存放接收到的第9位数据 在方式1 如果SM2 0 RB8是接收到的停止位 在方式0 不使用RB8 TI 发送中断标志位 发送中 TI必须保持零电平 方式0时 串行发送第8位数据结束时由硬件置 1 其它工作方式 串行口发送停止位的开始时置 1 TI 1 表示一帧数据发送结束 可供软件查询 也可申请中断 CPU响应中断后 在中断服务程序中向SBUF写入要发送的下一帧数据 TI必须由软件再清 0 1 串行口控制寄存器SCON RI 接收中断标志位 接收中RI必须保持零电平 方式0时 接收完第8位数据时 RI由硬件置1 其它工作方式 串行口接收到停止位时 该位置 1 RI 1 表示一帧数据接收完毕 并申请中断 要求CPU从接收SBUF取走数据 该位的状态也可供软件查询 如果再接收 RI必须由软件再清 0 2 特殊功能寄存器PCON 图7 7PCON格式 返回本节 其字节地址为87H 没有位寻址功能 PCON的格式如图7 7所示 其中与串行接口有关的只有D7位 SMOD 波特率选择位 当SMOD 1时 比SMOD 0时的波特率加倍 因此也称SMOD位为波特率倍增位 7 2 2串行口的工作方式 串行口工作方式 方式0为同步移位寄存器输入 输出方式 常用于外接移位寄存器 以扩展并行I O口 8位数据为一帧 不设起始位和停止位 先发送或接收最低位 波特率固定为fosc 12 方式0发送当CPU执行一条将数据写入发送缓冲器SBUF的指令时 产生一个正脉冲 串行口即把SBUF中的8位数据以fosc 12的固定波特率从RXD引脚串行输出 低位在先 TXD引脚输出同步移位脉冲 发送完8位数据后将中断标志位TI置 1 时序如图7 8所示 7 2 2串行口的工作方式 1 方式0 图7 8方式0发 收时序 7 2 2串行口的工作方式 方式0接收方式0接收时 REN为串行口接收允许接收控制位 REN 0 禁止接收 方式0下 SCON中的TB8 RB8位没有用到 发送或接收完8位数据由硬件将TI或中断标志位RI置 1 CPU响应中断 TI或RI标志位须由用户软件清 0 可采用如下指令 CLRTI TI位清 0 CLRRI RI位清 0 方式0时 SM2位 多机通信控制位 必须为0 7 2 2串行口的工作方式 2方式1 7 2 2串行口的工作方式 方式1用于数据的串行发送和接收 TXD脚和RXD脚分别用于发送和接收数据 方式1收 发一帧的数据为10位 1位起始位 0 8位数据位 1位停止位 1 先发送或接收最低位 波特率由下式确定 方式1波特率 2SMOD 32 定时器T1的溢出率 SMOD为PCON寄存器的最高位的值 0或1 方式1发送方式1输出时 数据位由TXD端输出 当CPU执行一条数据写发送缓冲器SBUF的指令时 就启动发送 图7 9 a TX时钟的频率就是发送的波特率 发送开始时 内部发送控制信号变为有效 将起始位向TXD输出 此后 每经过一个TX时钟周期 便产生一个移位脉冲 并由TXD输出一个数据位 8位数据位全部发送完毕后 中断标志位TI置 1 TI必须由用户清0 以便下一次发送 2方式1 7 2 2串行口的工作方式 图7 9方式1发 收时序 a 发送时序 b 接收时序 方式1接收接收数据的时序如图7 9 b 所示 当CPU采样到RXD端从1到0的跳变时 3次采样中至少2次有效 开始接收数据 一帧数据接收完毕以后 必须同时满足以下两个条件 这次接收才真正有效 然后RI自动置1 1 RI 0 2 SM2 0或收到的停止位 1 若这两个条件不满足 则收到的数据不能装入SBUF 该帧数据将丢失 中断标志RI必须由用户清0 以便下一次接收 通常情况下 串口以方式1工作时 SM2 0 2方式1 7 2 2串行口的工作方式 3方式2 7 2 2串行口的工作方式 方式2为9位异步通信方式 每帧数据均为11位 1位起始位0 8位数据位 先低位 1位可程控的第9位数据和1位停止位 方式2的波特率由下式确定 方式2波特率 2SMOD 64 fosc 方式2发送前 先根据通信协议由软件设置SCON中的TB8 例如 双机通信时的奇偶校验位或多机通信时的地址 数据的标志位 方式2发送数据波形如图7 10所示 图7 10方式2发送时序 方式2接收SM0 SM1 10 且REN 1 数据由RXD端输入 接收11位信息 当位检测逻辑采样到RXD引脚从1到0的负跳变 并判断起始位有效后 便开始接收一帧信息 在接收完第9位数据后 需满足以下两个条件 才能将接收到的数据送入SBUF 1 RI 0 意味着接收缓冲器为空 2 SM2 0或接收到的第9位数据位RB8 1 3方式2 7 2 2串行口的工作方式 当上述两个条件满足时 接收到的数据送入SBUF 接收缓冲器 第9位数据送入SCON中的RB8 并将RI置 1 若不满足这两个条件 则接收的信息将被丢弃 串行口方式2接收数据的时序波形如图7 11所示 由方式2的TI RI也必须由用户清0 才能进行下一次的发送和接收 3方式2 7 2 2串行口的工作方式 图7 11方式2接收时序 4 方式3 当SM0SM1 11时 串行口工作在方式3 方式3为波特率可变的9位异步通信方式 除了波特率外 方式3和方式2相同 方式3的波特率由下式确定 方式3波特率 2SMOD 32 定时器T1的溢出率 返回本节 方式3发送和接收数据的时序波形见方式2的图 图7 10和图7 11 7 2 3波特率的计算 表7 2波特率计算公式 方式0和方式2的波特率是固定的 方式1和方式3的波特率可由定时器T1的溢出率来确定 7 2 3波特率的计算 1 方式0时 波特率固定为时钟频率fosc的1 12 且不受SMOD位的值的影响 若fosc 12MHz 则波特率为fosc 12 即1Mb s 2 方式2时 波特率与SMOD位的值有关 方式2波特率 2SMOD 64 fosc 若fosc 12MHz 则当SMOD 0时 波特率 187 5kb s 当SMOD 1时 波特率 375kb s 3 串行口工作在方式1或方式3时 常用定时器T1作为波特率发生器 其波特率为 波特率 2SMOD 64 T1的溢出率 7 2 3波特率的计算 实际设定波特率时 T1常设置为方式2定时 自动装初值 这种方式不仅操作方便 也可避免因软件重装初值而带来的定时误差 实际使用时 经常根据已知波特率和时钟频率来计算T1的初值 为避免繁杂的初值计算 常用的波特率和初值间的关系列成表7 3 以供查用 表7 3定时器T1产生的常用波特率 7 2 3波特率的计算 表7 3中有两点需要注意 7 2 3波特率的计算 时钟振荡频率为12MHz或6MHz时 表中初值和相应的波特率之间有一定误差 例如 FDH的对应的理论值是10416波特 时钟6MHz 与9600波特相差816波特 消除误差可以通过调整时钟振荡频率fosc来实现 例如采用的时钟振荡频率为11 0592MHz 如果串行通信选用很低的波特率 例如 波特率选为55 可将定时器T1设置为方式1定时 但在这种情况下 T1溢出时 需要在中断服务程序中重新装入初值 中断响应时间和执行指令时间会使波特率产生一定的误差 可用改变初值的方法加以调整 例 若51单片机的时钟振荡频率为11 0592MHz 选用T1为方式2定时作为波特率发生器 波特率为2400b s 求初值 结果可直接从表7 3中查到 为F4H 这里因时钟振荡频率选为11 0592MHz 计算过程中无余数 可使初值为整数 从而产生精确的波特率 7 2 3波特率的计算 4 波特率的自动检测 在分布式多波特率通信系统中 常常要求从设备在软件上能做到波特率随主设备自动调整 使系统适应性更强 智能化程度更高 当然 一般情况下 波特率自动检测的范围仅限于标准波特率 7 2 3波特率的计算 常用实现波特率自动检测的方法有3种 1 从设备启动通信程序后 逐一选择标准波特率 向主设备发送某个事先约定的握手代码 直到收到主设备发回的确认码 即可判定通信波特率 2 利用串行异步通信每一帧起始位为低电平 停止位为高电平 用定时器记录每帧长度 从而判定系统通信波特率 3 利用主设备发送某一特殊码型 从设备收到的码值会随主设备的波特率不同而不同 当从机收到约定的特殊码型时 便可确认系统的通信波特率 7 2 3波特率的计算 7 3串行口的控制 7 3 1主从机间的通信7 3 2RS 232C串行接口标准及应用 返回本章首页 7 3 1主从机间的通信 1 双机串行异步通信 利用串行口可以实现两台机器间的全双工通信 如图7 12所示 设甲乙两台机器按全双工方式收发ASCII码字符 数据位为8位 其中最高一位用来作奇偶校验位 采用偶校验方式 要求传送的波特率为1200b s 假设发送缓冲区OUTBUF首址为片内RAM60H 接收缓冲区INBUF首址为RAM70H 时钟频率fosc 6MHz 试编写有关的通信程序 图7 12双机通信系统 1 确定通信方式 根据系统要求 通信双方要相互约定 7位ASCII码加1位校验位共8位数据 故可采用串行口方式1进行通信 51单片机的奇偶校验位P是当累加器A中 1 的个数为奇数时P 1 为偶数时P 0 直接把P的值放入ASCII码的最高位 奇偶校验位 即为偶校验方式 7 3 1主从机间的通信 1 双机串行异步通信 2 计算定时器T1的计数初值 对于串行口方式1 波特率由定时器T1的溢出率和SMOD决定 定时器T1采用工作方式2 可以避免计数溢出后用软件重装定时初值 取SMOD 0 按式 5 4 可求得计数初值X为 7 3 1主从机间的通信 1 双机串行异步通信 也可以通过查表7 3确定X F3H 3 确定相关寄存器参数 1 串行口控制寄存器SCON SM0 SM1 01时为方式1 在SM2 0和REN 1条件下 允许接收数据 其余各位均取0 则SCON 01010000B 50H 2 电源控制寄存器PCON 7 3 1主从机间的通信 1 双机串行异步通信 由于SMOD 0 因此 PCON 00H 同系统复位以后的状态 可不赋值 3 确定定时器方式寄存器TMOD 3 确定相关寄存器参数 1 双机串行异步通信 由于只用T1 且为定时方式2 因此 TMOD 00100000B 20H 请注意 串行通信端口的接收中断RI 发送中断TI共用一个中断向量 0023H 因此 串行口中断请求后 中断服务程序首先要判断是RI TI当中的哪个请求中断 4 编写有关的通信程序 主程序 ORG0000H LJMPMAIN ORG0023H 串行中断入口LJMPSINOUT 1 双机串行异步通信 ORG0030HMAIN MOVTMOD 20H 定时器T1设为方式2MOVTL1 0F3H 装入定时器初值 MOVTH1 0F3H 8位重装值 SETBTR1 启动定时器T1 MOVSCON 50H 串行口设为方 MOVR0 60H OUTBUF首址 MOVR1 70H INBUF首址 SETBEA 开中断SETBES 允许串行口中断 LCALLSOUT 先发送1个字符 LJMP 等待中断 4 编写有关的通信程序 1 双机串行异步通信 中断服务程序 SINOUT JNBRI SEND 若不是接收 则转向 发送 LCALLSIN 若是接收 则调用接 收子程序 RETI 中断返回 SEND LCALLSOUT 若是发送 则调用发 送子程序 RETI 中断返回 发送子程序 4 编写有关的通信程序 1 双机串行异步通信 发送子程序SOUT MOVA R0 取发送数据到A MOVC P 偶校验位赋予C MOVACC 7 C 送入ASCII码最高 位中 INCR0 修改发送数据指针MOVSBUF A 发送数据 CLRTI 清发送中断标志 RET 子程序返回 4 编写有关的通信程序 1 双机串行异步通信 接收子程序 SIN MOVA SUBF 读入接收缓冲区内容 JNBP EXIT 若P 0 则接收正确 ERROR 若P 1 则接收错误 出错处理 EXIT ANLA 7FH 删去校验位 MOV R1 A 存入接收缓冲区INCR1 修改接收缓冲区指针CLRRI 清接收中断标志RET 子程序返回 4 编写有关的通信程序 1 双机串行异步通信 图7 16两台8751互传数据 1 双机串行异步通信 2 主从式多机通信 7 3 1主从机间的通信 51系列单片机的多机通信通常采用主从式多机通信方式 在主从式多机系统中 有一台主机 多台从机 利用这种方式可以构成各种分布式控制系统 其系统结构如图7 17所示 其中 n个从机各有惟一的一个地址码 地址码是识别从机身份的标志 主机发出的信息可以传送到各个从机或传送到某个指定的从机 而从机发出的信息只能被主机接收 图7 17主从式多机通信系统 2 主从式多机通信 7 3 1主从机间的通信 多机通信中 要保证主机与从机间进行可靠的通信 通信接口必须具有从机身份的识别功能 串行口控制寄存器SCON中的SM2位就是为满足这一要求而设置的多机通信控制位 2 主从式多机通信 7 3 1主从机间的通信 串行口以方式2或方式3实现多机通信 主机发出的信息有两类 一类为地址信息 用来确定需要和主机通信的从机 其特征是主机串行传送的第9位信息TB8为1 即主机令TB8 1呼叫从机 另一类是数据信息 特征是串行传送的第9位信息TB8为0 实现主从间的数据传输 对从机来说 也要利用SCON寄存器中的SM2位的控制功能来区分地址信息和数据信息 2 主从式多机通信 7 3 1主从机间的通信 在接收时 令RI 0 若SM2为1 则仅当接收到的第9位信息RB8为1时 接收到的一帧信息才有效 接收到的数据才装入SBUF 置位RI 请求CPU对主机发出的信息进行处理 若SM2为1 接收到的第9位信息RB8为0时 则接收到的一帧信息无效 若从机令SM2为0 则接收到一个数据后 不管第9位信息RB8是0还是1 都将数据装入接收缓冲器SBUF 并置位中断标志RI 请求CPU处理 因此 对于从机来说 在接收地址时 应使SM2 1 以便接收到主机发来的地址码 从而确定主机是否打算和从机通信 一经确认后 从机应使SM2 0 以便接收数据或识别下一个地址码 2 主从式多机通信 7 3 1主从机间的通信 主从式多机通信的一般过程如下 2 主从式多机通信 7 3 1主从机间的通信 1 使所有从机的SM2位置1 此时 所有的从机处于监听状态 以便接收主机发来的地址码 2 主机发出一帧地址信息 其中包括8位需要与之通信的从机地址码 第9位信息TB8为1 3 所有从机接收到地址帧后 各自将所接收到的地址与本机地址相比较 若与本机地址相同 则该从机便使SM2位清0以接收主机随后发来的数据信息 对于地址不符合的从机 仍保持SM2 1的状态 仍处于监听状态 对主机随后发来的数据不予理睬 直至主机发送一个新的地址帧 4 主机给已被寻址的从机发送控制指令和数据 数据帧的第9位为0 2 主从式多机通信 7 3 1主从机间的通信 RS 232C是美国电子工业协会EIA ElectronicIndustryAssociation 于1962年制定的一种串行通信接口标准 1987年1月修改的RS 232C标准称为RS 232D 不过两者差别不大 因此仍可用旧标准 RS 232C标准规定了在串行通信中数据终端设备 简称DTE 如个人计算机 和数据通信设备 简称DCE 如调制解调器 间物理连接线路的机械 电气特性 以及通信格式和约定 该标准是异步串行通信中应用最广泛的总线标准 7 3 2RS 232C串行接口标准及应用 1 RS 232C的引脚功能 7 3 2RS 232C串行接口标准及应用 完整的RS 232C接口由主信道 辅信道共22根连线组成 不过该标准对引脚的机械特性并未做严格规定 一般采用标准的25芯D型插座 通过25芯D型插头连接 其接口信号名称及主要信号流向如图7 18 a 所示 尽管辅信道也可用于串行通信 但速率低 很少用 此外 当两个设备以异步方式通信时 也无需使用主信道中所有的联络信号 因此RS 232C接口也可以采用9芯D型插座 如微机系统中的串行口 其接口信号名称及主要信号流向如图7 18 b 所示 1 RS 232C的引脚功能 图7 18RS 232C接口插座 a a 25芯D型插座RS 232C接口信号名称及主要信号流向 1 RS 232C的引脚功能 图7 18RS 232C接口插座 b b 9芯D型插座上的RS 232C接口信号名称及主要信号流向 7 3 2RS 232C串行接口标准及应用 2 RS 232C串行接口标准中主信道重要信号的含义 7 3 2RS 232C串行接口标准及应用 RS 232C串行接口标准中主信道重要信号的含义如下 TXD 串行数据发送引脚 输出 RXD 串行数据接收引脚 输入 DSR 数据设备 DCE 准备就绪信号 输入 主要用于接收联络 当DSR信号有效时 表明本地的数据设备 DCE 处于就绪状态 DTR 数据终端 DTE 准备就绪信号 输出 用于DTE向DCE发送联络 当DTR信号有效时 表示DTE可以接收来自DCE的数据 2 RS 232C串行接口标准中主信道重要信号的含义 7 3 2RS 232C串行接口标准及应用 RTS 发送请求 输出 当DTE需要向DCE发送数据时 向接收方 DCE 输出RTS信号 CTS 发送允许或清除发送 输入 作为 清除发送 信号使用时 由DCE输出 当CTS有效时 DTE将终止发送 如DCE忙或有重要数据要回送DTE 而作为 允许发送 信号使用时 情况刚好相反 当接收方接收到RTS信号后进入接收状态 接收方准备就绪后向请求发送方回送CTS信号 发送方检测到CTS有效后 启动发送过程 3 电平转换 7 3 2RS 232C串行接口标准及应用 为保证数据的可靠传送 RS 232C标准规定发送数据线TXD和接收数据线RXD均采用EIA电平 即传送数字 1 时 传输线上的电平在 3V 15V之间 传送数字 0 时 传输线上的电平在 3 15V之间 但单片机串行口采用正逻辑的TTL电平 这样就存在TTL电平与EIA电平之间的转换问题 例如当单片机与PC机进行串行通信时 PC机的COM1或COM2口发送引脚TXD信号是EIA电平 不能直接与单片机串行口接收端RXD引脚相连 同样单片机串行口发送端TXD引脚输出信号采用正逻辑的TTL电平 也不能直接与PC机串行口COM1或COM2的RXD端相连 3 电平转换 7 3 2RS 232C串行接口标准及应用 RS 232C与TTL之间电平转换芯片主要有传输线发送器MC1488 把TTL电平转成EIA电平 传输线接收器MC1489 把EIA电平转成TTL电平 MAX232以及Sipex202 232系列RS 232电平转换专用芯片 其中MAX232以及Sipex202 232系列芯片集成度高 单 5V电源 内置了电压倍增电路及负电源电路 工作 只需外接5个容量为0 1 1 F的小电容即可完成两路RS 232与TTL电平之间的转换 是单片机应用系统中最常用的RS 232电平转换芯片 MAX232电平转换芯片的引脚如图7 19所示 内部结构及典型应用电路如图7 20所示 图7 19MAX232管脚图 3 电平转换 7 3 2RS 232C串行接口标准及应用 图7 20MAX232芯片的典型应用电路 3 电平转换 7 3 2RS 232C串行接口标准及应用 MAX232的推荐工作条件见表7 4 3 电平转换 7 3 2RS 232C串行接口标准及应用 表7 4MAX232的推荐工作条件 MCS 51单片机利用MAX232与PC机通信典型电路如图所示 4 RS 232C的连接 7 3 2RS 232C串行接口标准及应用 4 RS 232C的连接 实际上 RS 232C接口联络信号没有严格定义 通过RS 232C接口标准通信的两个设备可能只使用其中的一部分联络信号 在极端情况下也可能不使用联络信号 只通过TXD RXD和GND三根连线实现串行通信 此外 联络信号的含义和连接方式也可能因设备种类的不同而有差异 正因如此 通过RS 232C接口通信的设备可能遇到不兼容的问题 7 3 2RS 232C串行接口标准及应用 1 应用方式0扩展MCS 51芯片的输出口 在 串入并出 芯片 如74LS164 74LS165 74HC595等 的配合下 通过串行口方式0可扩展MCS 51芯片的输出口 当使用74LS164芯片扩展输出口时 MCS 51芯片的RXD引脚接74LS164芯片的串行数据输入端 TXD引脚接74LS164芯片的移位脉冲输入端CLK 如图7 21 a 所示 74HC595芯片功能比74LS164更强 采用16引脚封装 提供串行数据输出端SDO 级联方便 将前一片的串行数据输出端SDO接下一片的串行数据输入端SDI即可 当输出允许为高电平时 并行数据输出端QA QH为高组态 7 4串行接口的应用 图7 21利用串行口方式0扩展输出口 a 通过74LS164 串入并出 芯片扩展输出口 b 通过74HC595 串入并出 芯片扩展输出口 1 应用方式0扩展MCS 51芯片的输出口 当使用74HC595芯片扩展输出口时 MCS 51芯片的RXD引脚接74HC595芯片的串行数据输入端SDI TXD引脚接74HC595芯片的串行移位脉冲输入端SRCLK 并行数据输出锁存脉冲RCLK可由CPU另一I O引脚 如P1 7提供 串行移位寄存器清除端可接高电平 如图7 21 b 所示 值得注意的是 74HC595串行移位脉冲SRCLK对边缘有严格要求 当CPUI O引脚驱动能力不足时 需在CPUI O引脚与74HC595芯片的SRCLK输入端之间加驱动器 如CD40106芯片等 此外还必须注意通过74HC595 串入并出 芯片输出时 应先送b7位 7 4串行接口的应用 1 应用方式0扩展MCS 51芯片的输出口 串行数据输出过程概括如下 在发送中断标志TI为0 即无效 的情况下 执行写串行数据输出缓冲器SBUF指令 如 MOVSBUF A 即可将SBUF寄存器中的内容由低位到高位依次输出到RXD引脚 同时TXD引脚输出移位脉冲 使外接的 串入并出 芯片逐一接收来自RXD引脚上的串行数据 当8位数据发送结束后 发送中断标志TI自动置1 输出数据 即SBUF寄存器内容 也就出现在74LS164芯片的并行输出端 这样在执行写SBUF寄存器操作后 可通过查询TI标志来确定发送过程是否完成 当然 在中断处于开放状态下 串行中断允许ES为1 中断允许EA为1 TI有效时 将产生串行中断请求 值得注意的是 CPU响应串行中断后不会自动清除TI 需要用 CLRTI 指令清除TI 以便输出新的串行数据 1 应用方式0扩展MCS 51芯片的输出口 参考程序如下 MOVSCON 00000000B 定义串行口工作方 式 并清除发送中断TIMOVSUBF A 输出串行数据LOOP JNBTI LOOP 等待一帧数据发送结束 在 并入串出 芯片 如74LS165 74HC597 的配合下 即可通过串行口方式0扩展MCS 51的输入引脚 其中MCS 51的RXD引脚接74LS165芯片的串行数据输出端 TXD引脚接74LS165芯片的移位脉冲CLK 如图7 22所示 图7 22利用串行口方式0扩展输入口 1 应用方式0扩展MCS 51芯片的输出口 串行数据输入过程概括如下 在REN位为1 允许接收 的情况下 通过执行 CLRRI 指令启动串行接收过程 即在移位脉冲 来自TXD引脚 作用下 74LS165芯片并行数据b0 b7逐一移位到RXD引脚 并保存到CPU内的串行接收缓冲器内 当接收到b7位数据时 串行接收中断标志位RI为1 表明已接收了一帧数据 CPU读SBUF寄存器即可获得串行输入数据 这样在REN为1后 可通过查询RI标志来确定接收过程是否结束 当然 在中断处于开放状态下 串行中断允许ES为1 中断允许EA为1 且RI有效时 将产生串行中断请求 值得注意的是 CPU响应串行中断后 不会自动清除RI 需要用 CLRRI 指令清除RI 以便接收新的数据 1 应用方式0扩展MCS 51芯片的输出口 在方式0中 串行口控制寄存器SCON内的TB8 RB8两位没有定义 可设为0 但SM2位必须为0 电源控制寄存器PCON中的波特率倍增位SMOD1位也没有定义 可以是任意值 由于方式0不能自动插入及检测起始位 停止位 因此工作在方式0下的串行口不能作为串行通信口 只能用于扩展I O口 参考程序如下 MOVSCON 00000000B 定义串行口工 作方式CLRP1 7 输出送数脉冲 允许 74LS165芯片接收并 锁存并行输入端数据 NOPSETBP1 7 延迟一个机器周期后 取消 送数负脉冲SETBREN 允许接收CLRRI 清除接收中断标志RI 启动 接收串行LOOP JNBRI LOOP 等待一帧数据接收结束MOVA SBUF 读串行输入数据 1 应用方式0扩展MCS 51芯片的输出口 7 4串行接口的应用
展开阅读全文
相关资源
相关搜索

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


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

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


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