单片机c程序设计5串行口及串行通信技术.ppt_第1页
单片机c程序设计5串行口及串行通信技术.ppt_第2页
单片机c程序设计5串行口及串行通信技术.ppt_第3页
单片机c程序设计5串行口及串行通信技术.ppt_第4页
单片机c程序设计5串行口及串行通信技术.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

89C51串行口 及串行通信技术,单片机c程序设计之,89C51串行口及串行通信技术,目标: 本章旨在向学员介绍: 1)串口工作原理 2)串口应用,时间:6学时 教学方法:ppt+实验,在计算机系统中,CPU和外部通信有两种形式: 并行通信,即数据的各位同时传送; 串行通信,即数据一位一位顺序传送。,一、数据通信,1 串行通信基本知识,串行通信有什么特点?,在并行数据传送中,通常会利用8条或更多 条线路同时传送数据,例如与打印机和硬盘 通信。并行传输可以在短时间传送大量的数 据,但因为多条线路之间要保持同步,难以 进行较长距离的数据传输。 为了传送数据到距离较远的设备,往往会采 用串行通信。在串行通信中,数据只是一位 一位地传送,这与并行通信不同。,一、数据通信,1 串行通信基本知识,二、信息传输的检错和纠错,最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。,串行数据在传输过程中,由于干扰可能引起信息的出错 如何发现传输中的错误,叫检错 发现错误后,如何消除错误,叫纠错,奇校验:使所有传送的数位(含字符的各数位和校验位)中,含1的个数为奇数个。,偶校验:使所有传送的数位(含字符的各数位和校验位)中,含1的个数为偶数个。,注意:奇偶校验能够检测出奇数个位误码,但是不能纠错。,三、传输速率,在串行通讯中,用波特率来描述数据的传输速率。 波特率,即每秒钟传送的二进制位数,单位bps。收、发双方的波特率必须一致。,例:要求每秒传送120个字符,每个字符(每帧)为10位。 解:波特率: 12010=1200 bps, 每位传送时间:Td=1/1200=0.833ms,四、串行通信的传输方式,单工传送:只允许数据按照一个固定的方向传送。,四、串行通信的传输方式,半双工传送:只有1根线传送数据信号,要求通讯双方的发送和接收由电子开关切换。由于只有一条信道,所以数据不能同时在两个方向上传送。,四、串行通信的传输方式,全双工传送:通讯双方能同时进行发送和接收操作,五、串行通信的两种类型,异步通信,一个字符一个字符地传输,每个字符一位一位地传输,传输 一个字符时,以起始位开始,然后传输字符本身各位接着传 输校验位,最后以停止位结束该字符传输。 一次传输的起始位、字符各位、校验位、停止位 构成一个字符帧(数据帧)信息,起始位,8位真正的数据位,奇偶校验位,停止位,附加位用途?,如何传输8位数据?,异步通信数据格式如下: 起始位 逻辑0 1位 数据位 逻辑0或1 5位、6位、7位、8位(大都是8位) 校验位 逻辑0或1 1位或无 停止位 逻辑1 1位 空闲位 逻辑1 任意数量或无,帧与帧间可有任意个空闲位,起始位后紧跟数据的最低位。,若干空闲位,例:传送8位数据45H(0100,0101B),奇校验,则信号线上的波形为:,异步通信的优缺点?,同步通信,在每组信息的开始,加上同步字符,靠同步字符完成收发双方同步的。 多个字符成组传送。 同步字符和字符组以及需要的其他字符(如校验)构成一个信息帧。,异步通信的优点是字符帧长度不受限制,故设备简单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。,该数据块纯是有效数据,传输的字符中有和同步字符一致的怎么办?,六、串行接口必须具备的功能,串行接口电路的种类和型号很多。 能够完成异步通信的硬件接口电路称为UART,即通用异步接收器/发送器。 能够完成同步通信的硬件接口电路称为USRT。即通用同步接收器/发送器。 既能够完成异步又能同步通信的硬件接口电路称为USART。,Universal Asynchronous Receiver/Transmitter,Universal Synchronous Receiver/Transmitter,需要什么样的串口硬件设备呢?,51单片机中的串口是异步串口,串行接口电路必须具备如下基本功能:,发送器:并串数据转换,添加标识位(附加位)和校验位,设置发送结束标志,申请中断。 接收器:串并数据转换,检查错误,去掉标识位(附加位),保存有效数据,设置接收结束标志,申请中断。 控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。,串口这种硬件帮CPU轻松的完成数据发送和接收的功能! 编程时配置好了串口的寄存器,那么串口就开始独立工作了, 最后串口以某种方式通知CPU串口的工作做好了!,六、串行接口必须具备的功能,串行口相关寄存器,字节 地址 98H,D7 D6 D5 D4 D3 D2 D1 D0,D7 D6 D5 D4 D3 D2 D1 D0,字节 地址 97H,数据寄存器SBUF 为通过TXD引脚传送1个字节的数据,必须先将它放置在SBUF中,UART将 数据字节按位转换为高或低电平通过TXD引脚传送出去,电平的持续时间取决于波特率。同样地,在接收数据时,UART从RXD引脚接收电平,并将之转换为字节放在SBUF中。,串行口控制寄存器SCON,电源控制寄存器PCON,字节 地址 99H,D7 D6 D5 D4 D3 D2 D1 D0,串行口工作方式,数据中包含了一位起始位和一位停止位,方式0,方式1,方式2,3,一、串行口结构,2 、51单片机串行口结构及应用,通用异步全双工串口,可同时收发。 串口输入/输出脚:RXD(P3.0)和TXD(P3.1)。,按不同方式,一帧数据位数8/10/11三种。,方式0,方式1,方式2,3,D8放哪里?,一帧字符发送/接收完,置位标志位(TI/RI)并申请中断 中断控制:中断允许位ES 中断入口:0023H,4、含两个收、发数据缓冲器SBUF(共用一个地址99H ) 发送SBUF放置待发的8位数据,写入SBUF便启动发送。 发送指令:SBUF = SendData; 接收SBUF放置已成功接收的8位数据,供CPU读取。 读取指令:ReceiveData = SBUF;,SM0,SM1:串口4种工作方式选择。,把起始位和结束位也算在内了!,串行口控制寄存器SCON(98H),SM2:多机通讯控制位,一般用于方式2和方式3中。,在方式2,3处于接收方式时, 若SM2=1,且接收到的第8位数据RB8为0时,不激活RI; 若SM2=1,且接收到的第8位数据RB8为1时,激活RI 。 在方式2,3处于接收或发送方式时,若SM2=0,不论接收到的第8位RB8为0还是1,TI、RI都以正常方式被激活。 在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1。 在方式0中,SM2应为0。,专题再论!,TI:发送中断标志,发送一帧结束,TI=1,必须软件清零 RI:接收中断标志,接收一帧结束,RI=1,必须软件清零,TB8:在方式2,3中(11位UART),是发送器要发送的第8位数据(从第0位起计)。,可做奇偶校验位,由软件置位或复位。 在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时,TB8为1,数据帧时,TB8为0。,RB8:在方式2,3中,接收来自发送器的第8位数据(TB8)。,REN:允许接收控制位,=1允许接收;=0禁止接收。,SMOD波特率加倍控制位。=1波特率加倍,=0则不加倍。,二、89C51串行通信工作方式,89C51的串行口有4种工作方式,通过SCON中的SM0、SM1位来决定。,方式0:8位同步移位寄存器(用于I/O扩展) 一帧8位,无起、停位。 RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。 波特率B = fosc/12,如:fosc=12MHz,B=1MHz,每位数据1s。 发送:写入SBUF(启动发送,从TXD端口送出,低位在前),一帧发送完,自动TI=1。 接收:REN=1且RI=0,启动接收,一帧接收完,自动RI=1。,例:用串行口方式0扩展8位并行I/O输出口。,74HC164实现:串行并行的数据转换,方式1:10位异步通讯方式。,一帧10位:起位+8位数据位+停位。 波特率:用T1作波特率发生器,B=(2SMOD/32)T1溢出率。 发送:写入SBUF(启动发送),一帧发送完后,TI自动置1。 接收:接收前,需要软件编程完成REN=1,RI=0且SM2=0的设置。相当于做好串口接收允许的准备。 此后串口自动接收其他设备发送的数据,接收到一帧数据后串口自动将8位数据装入SBUF,并使RI=1; 接收前准备工作未做好时,串口不工作,丢弃接收数据,不置位RI。,工作交给串口完成!,一帧11位:起位+9位数据位+停位。 第9位数据位在TB8/RB8中,常作校验位或多机通讯标识位 波特率: 方式2:B=(2SMOD/64)fosc 。 方式3:B=(2SMOD/32)T1溢出率 发送:先填写TB8,写入SBUF(启动发送),发送完TI=1。 接收:设置REN=1,RI=0且第9位(TB8)为1 (或SM2=0),串口自动将接收数据装入SBUF,自动将第9位装入RB8,自动使RI=1;同方式1一样,若设置不匹配,丢弃接收数据,不置位RI。,方式2和方式3: 11位异步通讯方式。,与方式1比,只是增加了第9位, 并且方式2波特率不可变,方式3可变。,关于波特率的计算:,方式0为固定波特率:B=fosc/12 方式2可选两种波特率: B=(2SMOD /64)fosc 方式1、3为可变波特率,用T1作波特率发生器。 B=(2SMOD/32)T1溢出率,在方式1,3下,波特率由T1溢出率和SMOD共同决定。实际上,当T1做波特率发生器时,通常工作在模式2下,即自动重装载的8位定时器,此时TL1作计数用,自动重装载的值在TH1内。,方式1,3下的波特率:,T1模2溢出时间:,T1模式2定时初值:,定时器1产生的常用波特率,SCON,PCON, SBUF -串口相关的寄存器 TMOD, TH1, TL1,TR1 ,-定时器相关的寄存器以及位 EA, ES-中断相关的寄存器以及位,三、89C51串行口初始化编程格式,查询方式发送流程图,中断方式接收流程图,中断服务程序,#include void main (void) TMOD = 0x20; /使用Timer1, 8位自动重新加载模式 TH1 = 0xFD; /9600波特率,已知fosc=11.0592MHZ TL1 = 0xFD; SCON = 0x40; /SM0、SM1=01,模式1,8位数据,1位终止位 TR1 = 1; while(1) SBUF = a; /将字符a不断的放入SBUF; while (TI = 0); /等待发送结束(TI=1); TI = 0; /清零TI ,串口查询方式发送例子,四、串行口编程实例,修改例程代码,单片机晶振fosc=11.0592MHz,以波特率19200逐字发送一次字符串“Hello World”。(查询,中断两种方式发送),1.根据波特率算定时器初值 2.查询如何实现?检查TI,清TI 3.中断如何实现?配置好EA ES,建立中断服务函数,清TI 4.定时器的用途就是做波特率发生器,虽然TF1一直溢出, 但不影响定时器做波特率发生器的功能,定时器依然继续 工作。但是和TF1相关的工作肯定受影响了,如查询TF1产 生方波。,思考:如何循环发送,接收一次“hello,world!”的功能。(查询、中断两种),1.波特率如何设定? 2.开辟多大缓冲区? 3.什么时候接收数据会到达? 4.如果要是把接收到的数据发送出去怎么办? 5.和发送类似,查询接收和中断接收如何处理?,要求:9600波特率,已知fosc=11.0592MHZ,四、串行口编程实例,波特率2400,方式1带奇偶校验的发送“hello,world!”,方式1是8位数据位的怎么发?ASCII是几位的?做手脚!,数据放到ACC中,PSW寄存器中自动生成奇偶位P,表征 有奇数or偶数个1。当ACC中1的个数为奇数个时候,P=1,定义 unsigned char bdata temp;/待发送的数据,全局 sbit temp_7=temp7; ACC=temp; temp_7=P; SBUF = temp;,奇校验or偶校验?,波特率2400,方式3带奇偶校验的发送“hello,world!”,方式3是9位数据位的,第8位数据发送时候放到TB8中!,小结:发送和接收,发送 一句话描述: CPU执行一条写SBUF指令便启动了串行口发送,数据从TXD输出。 细节分析:在指令执行期间,CPU送来“写SBUF”信号,将并行数据送入SBUF,并启动串口发送控制器。一帧信息发送完毕后, 发送控制器硬件置发送中断标志TI=1,向CPU申请中断,告诉CPU本帧数据成功发送。,接收 允许接收控制位REN被置1,接收器就开始工作。跳变检测器采样RXD引脚上的电平。当采样到从1到0的负跳变时,启动接收控制器接收数据。如果接收到的起始位的值不是0,则起始位无效,复位接收电路。如果起始位为0,则开始接收本帧其它各位数据。控制器发出内部移位脉冲将RXD上的数据逐位移入移位寄存器,直到8位数据及停止位全部移入,置位RI。8位数据放到SBUF中。,方式2、方式3都是9位异步通信接口。发送或接收一帧信息由11位组成,其中1位起始位、9位数据位和1位停止位。方式2与方式3仅波特率不同,方式2的波特率为fosc/32(SMOD=1时)或fosc/64(SMOD=0时),而方式1、3的波特率由定时器/计数器T1及SMOD决定。 在方式2、方式3时,发送、接收数据的过程与方式1基本相同,所不同的仅在于对第9位数据的处理上。发送时,第9位数据由SCON中的TB8位提供。接收数据时,当第9位数据移入移位寄存器后,将8位数据装入SBUF,第9位数据装入SCON中的RB8。,小结:发送和接收 (续),3. 多机通信,当串口工作在方式2,3,若SM2=0, 不论接收到的第8位RB8为0还是1, RI都以正常方式被激活。 但是若SM2 = 1时候则不是这样的。 当处于接收方式时, 若SM2=1,且接收到的第9位数据RB8=0时,不激活RI; 若SM2=1,且RB8=1时,则置RI=1。 当SM2=1时是多机通信方式, 此时串口通常工作在方式2,3(需要第8位数据)。,RI置位作用是什么?,3 多机通信,图 主从式多机通信系统,主机,从机n,从机2,从机1,RXD,TXD,TXD,RXD,TXD,RXD,TXD,RXD, ,发送端的TB8可作为区别地址帧或数据帧的标识位,地址帧时,TB8为1,数据帧时,TB8为0。,3 多机通信,主从多机通信的过程如下: 使所有的从机的SM2位置1,以便接收主机发来的地址。 主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位置1(TB8),表示发送的是地址。 所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的从机,使SM2位清0以接收主机随后发来的所有信息(主机发送8位数据),并把本机地址发给主机作为应答;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据(TB8为0)不

温馨提示

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

评论

0/150

提交评论