




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 单片机的串行通信技术,7.1 串行通信概述 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式及应用举例 7.4 串行通信设计应用举例,7.1 串行通信概述 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率的概念和串行通信的传输方向 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式及应用举例 7.4 串行通信设计应用举例,7.1 串行通信概述,常用的数据通信包括两种形式:并行通信和串行通信。,并行通信,(1)并行方式数据的各位同时发送或同时接收。 传送速度快,但因需要多根传输线,故一般只在近距离通 信中使用。,7.1.1 数据通信,串行通信,(2)串行方式数据的各位依次逐位发送或接收。 传输速度慢,但因只需较少传输线,故适合于远距离通信。,7.1 串行通信概述 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率的概念和串行通信的传输方向 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式及应用举例 7.4 串行通信设计应用举例,7.1 串行通信概述,7.1.2 异步通信和同步通信,在串行数据通信中,有同步通信和异步通信两种方式。,一帧数据由起始位、数据位、可编程位和停止位构成 特点收发双方不同步时,能够依靠在每帧开始时的不断对齐,自行纠正偏差,故对收发双方的时钟精度要求较低,但因每个字节都要建立一次同步,所以工作速度较低。,1. 异步通信以字符为单位组成字符帧进行的数据传送,2. 同步通信,同步通讯数据格式数据以块为单位连续传送。,在发一组数据时,只在开始用若干个同步字符作为双方的号令,然后连续发送整组数据。,特点数据是以数据块为单位连续传送的,结构紧凑,传输效率高,但要求双方有准确的时钟,对硬件要求高。,7.1 串行通信概述 7.1.1 数据通信 7.1.2 异步通信和同步通信 7.1.3 波特率的概念和串行通信的传输方向 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式及应用举例 7.4 串行通信设计应用举例,7.1 串行通信概述,7.1.3 波特率的概念和串行通信的传输方向,波特率为每秒钟发送二进制数码的位数,即b/S (位/秒)。,在串行通信中,数据传输速率的快慢,通过波特率来衡量。,例如,在异步通信中传输速度为360字符/秒,每个字符又包含10位,则波特率为: 360字符/秒 * 10位/字符 3600波特,标准波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等。,三种传输形式:单工、半双工、全双工,在串行通信中,按照传输数据的流向,可分成三种传输形式:,单工通信 半双工通信 全双工通信 Simplex Half Duplex Full Duplex,80C51 内部设有一个全双工串行接口,收发双方角色固定不能互换,收发双方角色可换但需切换,收发双方互不影响双向通信,RXDReceive Data接收数据 TXDTransmit Data发送数据,7.1 串行通信概述 7.2 串行口的结构组成及控制寄存器 7.2.1串行口的结构组成 7.2.2串行口控制寄存器 7.3 串行通信工作方式及应用举例 7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,7.1 串行口的结构组成,若干寄存器: 两个数据缓冲器SBUF(99H)+串行控制寄存器SCON(98H) +移位寄存器+ 。,两个引脚:数据接收RXD(P3.0) 和数据发送TXD(P3.1)。,内部数据并行写入SBUF发数据串行送出中断标志位TI硬件置1CPU响应中断TI软件清零,写入下一数据,CPU,(1) 发送数据过程(中断法),外界数据串行送入移位寄存器数据并行送入SBUF收标志位RI硬件置1CPU响应中断RI软件清零,读走数据,CPU,(2) 接收数据的过程(中断法),数据传送将串行数据按一定节拍(同步时钟脉冲)输出到传输线上,或从传输线上读入。,同步时钟信号可由系统时钟或定时器产生,发送数据时,发送时钟的下降沿将数据串行移位输出;,接收数据时,接收时钟的上升沿开始对数据位采样。,7.1 串行通信概述 7.2 串行口的结构组成及控制寄存器 7.2.1串行口的结构组成 7.2.2串行口控制寄存器 7.3 串行通信工作方式及应用举例 7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,在物理上有两个SBUF:一个用于发送,另一个用于接收。在逻辑上只有一个SBUF(99H)。 可根据用法区分功能:,uchar counter; 待发送存放变量 SBUF = counter; 完成一次数据发送 counter = SBUF; 完成一次数据接收,CPU,7.2.2 串行口控制寄存器,(1) 串行数据缓冲器,SBUF,SM2、TB8、RB8主要用于多机通讯(略),(2) 串口控制寄存器,SCON(98H),由定时器产生的同步时钟,(3) 电源控制寄存器,PCON(87H),通过SM0和SM1不同的取值,可选择串行通信中的四种工作方式。,7.1 串行通信概述 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式 7.3.1 方式0(八位同步移位寄存器方式) 7.3.2 方式1(十位异步收发通信模式) 7.3.3 方式2、方式3数据帧格式及应用举例 7.4 串行通信设计应用举例,7.3 串行通信工作方式及应用举例,7.3.1 方式0:八位同步移位寄存器方式,数据传输波特率固定为fosc/12 由RXD引脚输入或输出数据(低位在前,高位在后) 由TXD引脚输出同步时钟信号,扩展输出口,扩展输入口,用于扩展并行I/O接口,实例1 利用74LS164扩展并行输出口,并实现发光二极管循环控制功能,能将串行输入数据转为并行输出,工作原理: 1)CLEAR端若为低电平,输出端QAQG都为0; 2)CLEAR端若为高电平,且CLOCK端出现上升沿脉冲,则 输出端锁存输入端的电平,74LS164为8位串并转换移位寄存器,数据发送端A(B)RXD ; 同步时钟端CLKTXD; 数据清除端CLRP1.0,接线原理,#include sbit MR=P10; void delay() /延时 unsigned int i; for (i=0; i20000; i+) void main() unsigned char index, LED; /定义LED指针和显示字模 SCON = 0; /设置串行模块工作在方式0 MR = 1; / CLEAR端1,允许输入数据 while (1) LED=0xFE; for (index=0; index 8; index+) SBUF = LED; /控制L0灯点亮 do while(!TI); /通过TI查询判别数据是否输出结束 LED = (LED1) |1); /左移1位,末位置1 if (LED= 0xff) LED = 0xfe; /若已循环一遍,准备重新开始 delay(); ,实例1参考程序,实例1运行效果,7.1 串行通信概述 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式 7.3.1 方式0(八位同步移位寄存器方式) 7.3.2 方式1(十位异步收发通信模式) 7.3.3 方式2、方式3数据帧格式及应用举例 7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,一帧信息:1个起始位(0)+8位数据位+1个停止位(1) ,其中起始位和停止位是自动插入的。,7.3.2 方式1:10位数据异步通讯方式,用于双机通信,波特率=2SMOD(T1的溢出率)/32 数据位由 P3.0 (RXD)端接收, 由P3.1(TXD)端发送 一帧信息为 10 位: 一位起始位(0), 8 位数据位(低位在前)和一位停止位(1)。 发送过程: 用软件清除 TI后, CPU执行任何一条以 SBUF为目标寄存器的指令, 就启动发送过程。数据由TXD引脚输出, 此时的发送移位脉冲是由定时器/计数器 T1 送来的溢出信号经过 16 或 32 分频而取得的。一帧信号发送完时, 将置位发送中断标志TI=1, 向CPU申请中断。,2. 方式110位UART方式,用软件清除 RI后, 当允许接收位REN=1 时, 接收器以选定波特率的 16 倍的速率采样 RXD引脚上的电平, 即在一个数据位期间有 16 个检测脉冲, 并在第 7、 8、9 个脉冲期间采样接收信号, 然后用三中取二的原则确定检测值, 以抑制干扰。 并且采样是在每个数据位的中间, 避免了信号边沿的波形失真造成的采样错误。 当检测到有从“1”到“0”的负跳变时, 则启动接收过程, 在接收移位脉冲的控制下, 接收完一帧信息。 当最后一次移位脉冲产生时能满足下列两个条件: RI=0; 接收到的停止位为1 或 SM2=0。 则停止位送入RB8,8位数据进入SBUF,并置RI1,完成一次接收过程。否则,所接收到的一帧信息将丢失,接收器复位,并重新开始检测负跳变,以便接收下一帧信息。,接收过程:,发送条件:由SBUF = counter即可启动发送过程 发送完成:硬件TI置1,接收条件:在允许接收位REN=1时即可启动接收过程 接收完成:硬件RI置1,数据SBUF,指定T1为波特率时钟发生器(波特率时钟可变),通常选择定时器方式2(取fosc为11.0592MHz),例如: SCON=0x50; /串口设为方式1,TI和RI清零,允许接收 PCON=0x80; /波特率加倍(2) TMOD=0x20; /T1设为定时方式2 TH1=0xcc; /定时器初值 TL1=0xcc; /重置的定时初值 IE=10010000B;/中断使能(开中断) TR1=1; /启动T1,一般初始化过程,方式1应用举例,例7.3 将89C51单片机的TXD接RXD,实现单片机串行口数据自发自收,并将接收的数据通过P1口输出到发光二极管显示。系统时钟频率为11.0592MHz,自发送接收的波特率为2400bps。编写程序,要求:单片机串行口工作在方式,从TXD发送数据0x55,从RXD将该数据读回,并送P1口通过8个发光二极管显示。电路图如图7.13所示。,应用C51编写的程序如下:,#include #define uchar unsigned char #define uint unsigned int void main() uchar i=0x55;uint j=0; TMOD=0X20; /设置定时器1工作在模式2 TL1=0xf4; /根据传输的波特率设置定时器1初值 TH1=0xf4; PCON=0x00; /电源控制寄存器最高位为0,波特率不加倍 SCON=0x50; /选择工作方式1,使能收发功能 TR1=1; /启动定时器1 while(1) SBUF=i; /发送数据 dowhile(!RI); /等待发送数据返回 RI=0;TI=0; /软件将标志位RI和TI清0 i=SBUF; /读取数据 P1=i; /送入P1口显示 i=i; /将发送数据取反 for(j=0;j12500;j+); /延时 ,双机通信协议 通行方式:例如异步串行通信 波特率: 例如2400b/s 发机要求发送的呼叫信号:例如10H 收机同意接收的应答信号:例如20H 收机不同意接收的应答信号:例如30H 告知数据正确的应答信号:例如0FH 通信结束标志信号:例如0AH ,要求设计一个双机通信方案,甲机发送数据,乙机接收数据。两机的振荡频率为12MHz,波特率设置为2.4k,工作在串口方式1。 甲机循环发送0-15的数字,乙机接收后返回接收值。若发送值与返回值相等,继续发送下一数字,否则重复发送当前数字。 发送值和接收值应显示在LED数码管上; 采用查询法检查收发是否完成。,实例2:,实例2电路原理图,实例2程序流程图,实例2甲机参考程序,#include #define uchar unsigned char #define uint unsigned int void delay(unsigned int time) uint j=0; for(;time0;time-) for(j=0;j15)counter=0;/修正计数器值 delay(500); /延时 ,实例2乙机参考程序,#include #define uchar unsigned char void main(void) uchar receiv; /定义接收缓冲 TMOD=0x20; /T1定时方式2 TH1=0xf4; /2400b/S TL1=0xf4; PCON=0x00; /SMOD0,波特率不加倍 TR1=1; /启动T1 SCON=0x50; /串行方式1,TI和RI清零,允许接收 while(1) while(RI=1) /等待接收完成 RI=0; /清RI标志 receiv=SBUF; /取得接收值 SBUF=receiv; /结果返回主机 while(TI=0); /等待发送完成 TI=0;/清TI标志 P2=receiv; /显示接收 ,实例2运行效果,7.1 串行通信概述 7.2 串行口的结构组成及控制寄存器 7.3 串行通信工作方式 7.3.1 方式0(八位同步移位寄存器方式) 7.3.2 方式1(十位异步收发通信模式) 7.3.3 方式2、方式3数据帧格式及应用举例 7.4 串行通信设计应用举例,7.2 串行口的结构组成及控制寄存器,因此:串行口工作于模式 2 和模式 3 时, 被定义为 9 位异步通信接口。 其每帧数据结构是 11 位的: 首先是起始位(0), 其后是 8 位数据位D0D7(低位在先), 第 10 位是可编程位D8, 最后一位是停止位(1)。,7.2.3 方式2、方式3数据帧格式及应用举例,方式2和方式3的数据帧都是11位用于多机通信 格式为:,可编程位可用作奇偶校验位,但在多机通信时,往往用作地址和数据的区别通讯标识。,一个起始位,8个数据位,一个可编程位和一个停止位,方式2与方式3的区别:,方式 2 和方式3 工作原理相似, 唯一的差别是方式2 的波特率是固定的, 即为 fOSC/ 32或 fOSC / 64; 而方式 3的波特率是可变的, 与定时器 T1的溢出率有关。 方式2的波特率=2SMOD(fosc/64) 方式3的波特率=2SMOD(T1的溢出率)/32 (与方式1同),注: 可编程位可以由软件置1或清0; 发送时在TB8中,连同八位数据通过串口发出。 收到数据后,数据存入接收SBUF内,可编程位存入RB8中。,发送过程:第9位数据-TB8 其它8位-SBUF 进行一次发送。当第9位数据(TB8)输出后,置位TI。 接收过程:在REN=1时,在第9位数据收到后,若下列条件同时满足: RI=0; SM2 =0 或接收到的第 9 位数据为“1”。 则将已接收到的数据装入SBUF和RB8,并置位RI。若不满足则接收无效。 可见,方式2和方式3的接收与方式1接收不同:其RB8装入的是第9位数据而方式1 RB8装入的是停止位。所接收的停止位的值与SBUF、 RB8 和 RI都没有关系, 利用这一特点可用于多机通信中。,方式2和方式3的发送和接收过程,方式2的波特率为固数值:,方式3的波特率和方式1相同,是可变的:,(与方式1同),波特率计算公式,串行口控制寄存器SCON中的SM2为多机通信接口控制位。串行口以方式2或3接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU处理。,多机通信原理,使所有从机的SM21,处于接收地址状态。 主机发送一帧地址信息,其中前8位为地址,第9位为地址标置1 从机收
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省清远市连州市2023-2024学年五年级下学期数学期末监测试卷(含答案)
- 仲秋促销活动方案
- 企业之星活动方案
- 企业传承活动方案
- 企业公司员工活动方案
- 企业参展活动方案
- 企业回访活动方案
- 企业外联活动方案
- 企业宣讲双选会活动方案
- 企业年末贺岁活动方案
- 出租车合租合同协议书
- 针对不同人群的中医健康管理方案研究
- 2024-2025学年度七年级下学期人教版地理11 极地地区导学案
- 自动扶梯吊装方案
- T-ZNZ 261-2024 丘陵山地桃园宜机化建设及管理技术规程
- 第5课 弘扬劳动精神、劳模精神、工匠精神(教学设计) -【中职专用】中职思想政治《职业道德与法治》同步教学教学设计(高教版2023·基础模块)
- 2025年产科门诊护理考试题及答案
- 地铁客运企业ESG实践与创新战略研究报告
- 2025至2030年中国合成云母数据监测研究报告
- 基于改进YOLOv8n的水下鱼类目标识别轻量化模型
- 药品储存与养护课件
评论
0/150
提交评论