网站地图 | RSS订阅 老铁博客 - 上海SEO优化|上海网站建设|蜘蛛池出租|站群代搭建
你的位置:首页 » 网站建设 » 正文

串口通信原理及操作流程

2019-8-6 13:4:59 | 作者:老铁SEO | 0个评论 | 人浏览

  串口通信原理及操作流程_电子/电路_工程科技_专业资料。51单片机 串口通信讲解

  串行口通讯原理及操作流程 并行与串行通信方式比较 并行通信方式 8位数据同时传送 串行通信方式 8位数据顺位传送 数据传输速度相对较慢 传输线少 长距离传输成本低 数据传输控制较为复杂 数据传输速度快 传输线多 长距离传输成本高 数据传输较为简单 异步与同步串行通信方式 异步串行通信方式 不要求收发双方时钟严格一致 每个字符要附加2~3位(起始位、 校验位、停止位) 各帧之间有任意间隔,位之间间 隔一定 用于单片机和单片机,单片机与 计算机之间通信 同步串行通信方式 发送方时钟对接收方时钟的直接控 制,使双方完全同步 每个字符之间不留空隙,既保持位 同步关系也保持字符同步关系 以特定的位组合01111110作为帧的 开始和结束标志 实现的硬件设备较为复杂 单片机串口 串行通信接口总线标准 测控系统中,计算机通信主要采用异步串行通信方式,常用的异 步总线标准有三种: ●RS-232(RS-232A RS-232B RS-232C) ●RS-449 (RS422 RS423 RS485) ●20mA电流环 这里重点介绍RS-232 RS-232C:速率:20Kbit/S, 最大通信距离: 15m RS422: 10Mbit/s: 300m 90Kbit/s: 1200m RS-232电平与TTL电平的转换 1计算机为 RS-232电平信号 ,单片机为TTL电 平信号(TXD P3.1口 发送 RXD P3.0口 接收) 2计算机与单片机的通信根本在于不同电平信号 之间的转换和传输 单片机串口原理图 波特率和定时器初值的设定 波特率:每秒传输二进制代码的位数。(1波特=1位/ 秒,单位bps(位/秒)) 串行口4种工作方式对应波特率: (见P131) (串口常用工作方式1) 电源管理寄存器PCON SMOD-串口通信波特率有关 SMOD=0:串口方式1,2,3时,波特率正常 SMOD=1:串口方式1,2,3时,波特率加倍 TI溢出率: T1定时器溢出的频率,即 TI定时器每次溢出所需 时间T的倒数1/T。 常用波特率初值表 注: 串口方式1定时器1方式2 常用晶振11.0592(MHZ) 波特率9600 SMOD=0 初值: TL0=0xfd TH0=0xfd 十进制数:(253) 近距离传送电路 RXD TXD GND RXD TXD GND 微机 RXD TXD GND 电 平 转 换 较远距离传送电 路 RXD TXD GND 微机其他 设备 电 平 转 换 RXD TXD GND RXD TXD GND 远距离传送电路 接 口 微 机 调 制 解 调 器 电 话 分 机 电 话 分 机 调 制 解 调 器 接 口 微 机 数字信号通过调制器变成模拟信号通过电话线传送到 对方,接收方通过解调器将模拟信号转换成数字信号 接收。 MCS—51之间的双机通信 RXD TXD GND 8xx51 TXD GND 8xx51 51单片机与计算机的通信 +5V TXD RXD C1 T1IN R1OUT C ? 1 VCC R1IN T1OUT 1 EA RST 6 7 8 9 1 2 3 4 5 C C ? 1 89C51 ? 2 V+ VCC C3 +5V C4 C2 C ? 2 MAX232 XTAL1 XTAL2 GND GND V- PC机 COM1 或 COM2 C5 ?F C1=C2=C3=C4=C5=1 51单片机串行口结构 151单片机串行口是可编程全双工的通信接口,能同时进行数据的发送和 接收, 也可作为同步移位寄存器使用。 251单片机串行口组成: 1. 两个独立的串行数据缓冲寄存器SBUF(一个发送缓冲寄存器,一个 接收缓冲寄存器 2.发送控制器 3.接受控制器 4.输入移位寄存器 5.若干控制门电路 单片机通过特殊功能寄存器SBUF对串行接收或串行发送寄存器进行访问, 两个寄存器共用一个地址,但在物理意义上是两个独立的寄存器。 串行口基本结构 发送 SBUF (99H) 控制门 TXD(P3.1) 发送控制器 定 时 器 T1 TI A RI ? 中断 接收控制器 接收 SBUF (99H) 输入移位寄存器 RXD(P3.0) 串行口控制寄存器SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 方式选择 多机控 串行接收 欲发的 收到的 发送中 接收中 制 允许/ 禁 第九位 第九位 断有/ 断有/ 无 无 止 SM0.SM1:串行口工作方式控制位。 0 0---方式0, 0 1---方式1 1 0---方式2, 1 1---方式3 REN:串行接收允许位。 0---禁止接收, 1---允许接收 TB8: 在方式2,3中,TB8是发送机要发送的第9位数据。 RB8:在方式2,3中,RB8是接受机收到的第9位数据, 该数据来自发送机的TB8。 TI:发送中断标志位。发送前必须用软件清零,发 送过程中TI保持零电平,发送完一帧数据后,由 硬件置 “1”,如果再发送,必须用软件再清零。 RI:接收中断标志位。接收前,必须用软件清零,接 收过程中RI保持零电平,接收完一帧数据后由 片内硬件自动置“1”。如果再接收必须用软件清 零。 SM2:多机通信控制位 主要用于方式2、3。在不同串口工作方式下,通 过控制SM2,可以实现多机通信。 SM2作用: 在方式2,3中,发送机SM2=1(程序设置). 接收机SM2=1,若RB8=1,激活RI,引起接收中断RB8=0, 不激活RI,不引起接断。SM2=0,无论RB8=1还是RB8=0 均激活RI引起接收中断。在方式 0 中, SM2应置为0。 在方式1中, 当接收时SM2=1, 则只有收到有效停止位 才激活RI。 串行口方式1编程与实现 串行口工作方式1数据形式: 10位数据,1位起始位(0),8位数据 位(最低位在前,最高位在后),1位停止位(1)。 帧之间可有空闲也可无空闲。 数据输出时序图: 串口初始化设置:1确定T1的工作方式(编程 TMOD寄存器)2计算T1的初值,装载TH1,TL1; 3启动T1(编程TCON中的TR1位)4确定串行 口工作方式(编程SCON寄存器)5串行口工作 在中断方式时,进行中断设置(编程IE,IP寄存 器) 数据输入时序图: #includereg52.h #define uchar unsigned char uchar a,flag; void init() { TMOD=0x20; //设置定时器 1 为模式 2 TH1=0xfd; //装初值设定波特率 TL1=0xfd; TR1=1; //启动定时器 串口初始化程序分析 SM0=0; //串口通信模式设置 SM1=1; REN=1; //串口允许接收数据 EA=1; //开总中断 ES=1; //开串行中断 } 主函数分析 void main() { init(); while(1) { if(flag==1) //如果有数据则进入这个语句 { ES=0; //进入发送数据时先关闭串行中断 flag=0; SBUF=a; //将数据原样发回 while(!TI); //等待数据发完 TI=0; ES=1; //退出进再开串行中断 } } } 中断函数程序分析 void serial() interrupt 4 //串行中断函数 { P1=SBUF; //将数据发送给 P1 口显示(测试用) a=SBUF; //收取数据 flag=1; //标志置位 RI=0; }

  • 本文来自: 老铁博客,转载请保留出处!欢迎发表您的评论
  • 相关标签:串口程序  
  • 已有0位网友发表了一针见血的评论,你还等什么?

    必填

    选填

    记住我,下次回复时不用重新输入个人信息

    必填,不填不让过哦,嘻嘻。

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。