单片机c程序设计5串行口及串行通信技术.ppt

上传人:max****ui 文档编号:11493849 上传时间:2020-04-25 格式:PPT 页数:51 大小:2.15MB
返回 下载 相关 举报
单片机c程序设计5串行口及串行通信技术.ppt_第1页
第1页 / 共51页
单片机c程序设计5串行口及串行通信技术.ppt_第2页
第2页 / 共51页
单片机c程序设计5串行口及串行通信技术.ppt_第3页
第3页 / 共51页
点击查看更多>>
资源描述
89C51串行口及串行通信技术,单片机c程序设计之,89C51串行口及串行通信技术,目标:本章旨在向学员介绍:1)串口工作原理2)串口应用,时间:6学时教学方法:ppt+实验,在计算机系统中,CPU和外部通信有两种形式:并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。,一、数据通信,1串行通信基本知识,串行通信有什么特点?,在并行数据传送中,通常会利用8条或更多条线路同时传送数据,例如与打印机和硬盘通信。并行传输可以在短时间传送大量的数据,但因为多条线路之间要保持同步,难以进行较长距离的数据传输。为了传送数据到距离较远的设备,往往会采用串行通信。在串行通信中,数据只是一位一位地传送,这与并行通信不同。,一、数据通信,1串行通信基本知识,二、信息传输的检错和纠错,最简单的检错方法是奇偶校验,即在传送字符的各位之外,再传送1位奇/偶校验位。可采用奇校验或偶校验。,串行数据在传输过程中,由于干扰可能引起信息的出错如何发现传输中的错误,叫检错发现错误后,如何消除错误,叫纠错,奇校验:使所有传送的数位(含字符的各数位和校验位)中,含1的个数为奇数个。,偶校验:使所有传送的数位(含字符的各数位和校验位)中,含1的个数为偶数个。,注意:奇偶校验能够检测出奇数个位误码,但是不能纠错。,三、传输速率,在串行通讯中,用波特率来描述数据的传输速率。波特率,即每秒钟传送的二进制位数,单位bps。收、发双方的波特率必须一致。,例:要求每秒传送120个字符,每个字符(每帧)为10位。解:波特率:12010=1200bps,每位传送时间:Td=1/1200=0.833ms,四、串行通信的传输方式,单工传送:只允许数据按照一个固定的方向传送。,四、串行通信的传输方式,半双工传送:只有1根线传送数据信号,要求通讯双方的发送和接收由电子开关切换。由于只有一条信道,所以数据不能同时在两个方向上传送。,四、串行通信的传输方式,全双工传送:通讯双方能同时进行发送和接收操作,五、串行通信的两种类型,异步通信,一个字符一个字符地传输,每个字符一位一位地传输,传输一个字符时,以起始位开始,然后传输字符本身各位接着传输校验位,最后以停止位结束该字符传输。一次传输的起始位、字符各位、校验位、停止位构成一个字符帧(数据帧)信息,起始位,8位真正的数据位,奇偶校验位,停止位,附加位用途?,如何传输8位数据?,异步通信数据格式如下:起始位逻辑01位数据位逻辑0或15位、6位、7位、8位(大都是8位)校验位逻辑0或11位或无停止位逻辑11位空闲位逻辑1任意数量或无,帧与帧间可有任意个空闲位,起始位后紧跟数据的最低位。,若干空闲位,例:传送8位数据45H(0100,0101B),奇校验,则信号线上的波形为:,异步通信的优缺点?,同步通信,在每组信息的开始,加上同步字符,靠同步字符完成收发双方同步的。多个字符成组传送。同步字符和字符组以及需要的其他字符(如校验)构成一个信息帧。,异步通信的优点是字符帧长度不受限制,故设备简单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。,该数据块纯是有效数据,传输的字符中有和同步字符一致的怎么办?,六、串行接口必须具备的功能,串行接口电路的种类和型号很多。能够完成异步通信的硬件接口电路称为UART,即通用异步接收器/发送器。能够完成同步通信的硬件接口电路称为USRT。即通用同步接收器/发送器。既能够完成异步又能同步通信的硬件接口电路称为USART。,UniversalAsynchronousReceiver/Transmitter,UniversalSynchronousReceiver/Transmitter,需要什么样的串口硬件设备呢?,51单片机中的串口是异步串口,串行接口电路必须具备如下基本功能:,发送器:并串数据转换,添加标识位(附加位)和校验位,设置发送结束标志,申请中断。接收器:串并数据转换,检查错误,去掉标识位(附加位),保存有效数据,设置接收结束标志,申请中断。控制器:接收编程命令和控制参数,设置工作方式:同步/异步、字符格式、波特率、校验方式、数据位与同步时钟比例等。,串口这种硬件帮CPU轻松的完成数据发送和接收的功能!编程时配置好了串口的寄存器,那么串口就开始独立工作了,最后串口以某种方式通知CPU串口的工作做好了!,六、串行接口必须具备的功能,串行口相关寄存器,字节地址98H,D7D6D5D4D3D2D1D0,D7D6D5D4D3D2D1D0,字节地址97H,数据寄存器SBUF为通过TXD引脚传送1个字节的数据,必须先将它放置在SBUF中,UART将数据字节按位转换为高或低电平通过TXD引脚传送出去,电平的持续时间取决于波特率。同样地,在接收数据时,UART从RXD引脚接收电平,并将之转换为字节放在SBUF中。,串行口控制寄存器SCON,电源控制寄存器PCON,字节地址99H,D7D6D5D4D3D2D1D0,串行口工作方式,数据中包含了一位起始位和一位停止位,方式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串行口初始化编程格式,查询方式发送流程图,中断方式接收流程图,中断服务程序,#includevoidmain(void)TMOD=0 x20;/使用Timer1,8位自动重新加载模式TH1=0 xFD;/9600波特率,已知fosc=11.0592MHZTL1=0 xFD;SCON=0 x40;/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逐字发送一次字符串“HelloWorld”。(查询,中断两种方式发送),1.根据波特率算定时器初值2.查询如何实现?检查TI,清TI3.中断如何实现?配置好EAES,建立中断服务函数,清TI4.定时器的用途就是做波特率发生器,虽然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,定义unsignedcharbdatatemp;/待发送的数据,全局sbittemp_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)不予理睬,直至发送新的地址帧。主机给已被寻址的从机发送控制指令和数据(数据帧的第9位置0)。,例程,主机程序voidmain(void)TMOD=0 x20;/T1方式2TL1=TH1=0 xfd;/波特率9600PCON=0 x00;TR1=1;SCON=0 xF0;/串行口方式3TB8=1;/发送从机地址SBUF=从机地址;while(TI!=1);TI=0;while(RI!=1);/等待从机回答RI=0;if(SBUF!=从机地址)error();elseTB8=0;SBUF=数据;while(TI!=1);TI=0;,要求:主机采用查询方式,从机采用中断方式通信。,例程(续),从机程序bitaddr_ok=0;voidslave()interrupt4using1RI=0;ES=0;if(addr_ok=0)if(SBUF!=从机地址)ES=1;return;SM2=0;SBUF=从机地址;while(TI!=1);TI=0;addr_ok=1;else*pbuff+=SBUF;/接收数据pbuff是事先做好的接收缓冲区ES=1;voidmain(void)TMOD=0 x20;/T1方式2TL1=TH1=0 xfd;/波特率9600PCON=0 x00;TR1=1;SCON=0 xf0;/串行口方式3ES=1;EA=1;/开串行口中断while(1);,术语,Copyright2008版权所有东软集团,
展开阅读全文
相关资源
相关搜索

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


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

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


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