第7章串行口应用基础.ppt_第1页
第7章串行口应用基础.ppt_第2页
第7章串行口应用基础.ppt_第3页
第7章串行口应用基础.ppt_第4页
第7章串行口应用基础.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第7章51单片机串行口应用基础,7.1串行通信的再认识7.2认识51单片机的串行口7.351单片机串行口的工作方式7.451单片机串行口应用举例7.5实验与设计,并行示意图,串行示意图,7.1串行通信的再认识,发送端:将并行数据转换成串行数据;接收端:将串行数据转换成并行数据。7.1.1异步串行通信与同步串行通信7.1.2波特率7.1.3串行通信的检错与纠错7.1.4串行接口芯片,7.1.1异步串行通信与同步串行通信,1、异步串行通信异步通信是指通信的发送和接收设备使用各自的时钟控制数据的发送和接收过程。,帧格式:,例如:,传送一个7位的ASCII码字符,再加上一个起始位、一个奇偶校验位和一个停止位组成的一帧共10位。传输字符“E”的ASCII码(45H)的波形。(奇校验),2、同步通信,3、比较(1)从硬件设备的要求看(2)从数据的传输效率看,7.1.2串行传送速率-波特率,波特率:指每秒钟内所传送二进制数据的位数,单位为波特(Bd),实际上它是传送每一位信息所用时间内的倒数。如果一个串行字符由个起始位,个数据位,个奇偶校验位和个停止位等10个数位构成,每秒钟传送120个字符,则实际传送的波特率为:10位/字符120字符/秒1200位/秒1200波特传送每位信息所占用的时间:秒/12000.833毫秒,常用的标准波特率:,110、300、600、1000、1200、2400、4800、9600和19200波特。它也是国际上规定的标准波特率。同步传送的波特率高于异步方式,可达到64000波特。,7.1.3串行通信的检错与纠错,1、奇偶校验2、代码和校验3、循环冗余校验(CRC校验)7.1.4串行接口芯片UART和USART调制解调器,7.2认识51单片机的串行接口,全双工的串行口。它能同时发送和接收数据。使用时用的是寄存器。7.2.1结构7.2.2控制寄存器,7.2.1串行口的结构原理,一个是发送寄存器,一个是接收寄存器。串行发送时:从片内总线向发送SBUF写入数据;串行接收时:从接收SBUF向片内总线读出数据。它们都是可寻址的寄存器,但因为发送和接收不能同时进行,所以给这两个寄存器赋以同一地址(99H)。,7.2.2串行口控制寄存器,串行控制寄存器SCON电源控制寄存器PCON1、串行控制寄存器SCON(P170),SM0、SM1:,串行口工作方式选择位,这两位的组合决定了串行口的4种工作方式。,SM2是多机通信控制位:REN是允许接收位:当REN=1时,允许接收数据;当REN=0时,禁止接收数据。该位由软件置位或复位。TB8是发送数据的第9位。RB8是接收数据的第9位。TI是发送中断标志位。RI是接收中断标志位。,2、电源控制寄存器PCON,最高位SMOD是串行口波特率的倍增位。当SMOD=1时,串行口波特率加倍。系统复位时,SMOD=0。,7.3串行口的工作方式,通过SCON的SM0、SM1确定。7.3.1串行口工作方式0同步移位寄存器输入/输出模式,可外接移位寄存器,以扩展I/O口。格式:,P3.0(RXD):总是用于数据的输出或输入,P3.1(TXD):总是用于输出移位脉冲,每一移位脉冲将使RXD端输出或者输入一位二进制码。波特率:晶振频率fosc的1/12,1、方式0输出,初始化:SCON=0 x00;置标志:TI=0;写操作:SBUF=0 xDATA;当8位数据发送完毕的时候,标志TI=1。准备下一次数据发送。软件中置TI=0,然后才能发送下一组数据。,方式0的数据输出可以采用查询方式,也可以采用中断方式。,在查询方式下,通过while、if语句查询TI的值,如果TI=1则结束查询,可以发送下一组数据;如果TI=0,则继续查询。在中断方式下,TI置位产生中断申请,在中断服务程序中发送下一组数据。此时,需要开启相应的中断请求(EA、ES)。,【例7-1】方式0数据发送,74LS164:8位串入/并出寄存器,A、B为两个数据输入;CP为时钟输入;/MR为复位输入(低电平有效);Q0-Q7数据输出,查询方式,#includevoidmain()unsignedchari=0 x55;SCON=0 x00;SBUF=i;while(TI)TI=0;while(1);,中断方式:,#includevoidSISR(void)interrupt4TI=0;voidmain()unsignedchari=0 x55;SCON=0 x00;ES=1;EA=1;SBUF=i;while(1);,2、方式0输入,方式0输入时,REN为串行口接收允许控制位。REN=0,禁止接收。在方式0下,程序可以按照如下的流程来进行数据的接收:初始化:SCON=0 x10;此时,在TXD端发送同步移位脉冲,在同步脉冲为低电平的时候,8位数据从RXD引脚由低位到高位逐位接收。,当8位数据接收完毕的时候,硬件自动置RI=1,请求中断,表示接收数据已装人接收缓冲器,可以由CPU读取准备下一次接收数据。由于RI不会自动清零,当需要接收下一组数据的时候,必须在软件中置RI=0,然后才可以接收下一组数据。此时,同样可以采用查询和中断两种方式,分别介绍如下。,在查询方式中,使用JB/JNB语句查询RI的值,如果RI=1则结束查询,可以接收下一组数据;如果RI-0,则继续查询。在中断方式中,在RI置位后产生中断申请,在中断服务程序中接收下一组数据。此时,需要开启相应的中断请求。,【例7-2】方式0输入,74LS165:8位并入/串出移位寄存器,CLK,CLKINK:时钟输入端(上升沿有效)AH:并行数据输入端SER:串行数据输入端QH:输出端/QH:互补输出端SH/LD:移位控制/置入控制(低电平有效),查询方式:,#includesbitSL=P32;voidmain()unsignedchari;SCON=0 x10;while(1)SL=0;SL=1;while(RI)RI=0;i=SBUF;P1=i;,中断方式:,#includeunsignedinti;sbitSL=P32;voidSISR(void)interrupt4RI=0;i=SBUF;P1=I;SL=0;SL=1;,voidmain()SCON=0 x10;ES=1;EA=1;SL=0;SL=1;while(1);,7.3.2串行口工作方式1,串行口的工作方式1是波特率可变的串行异步通信方式。数据帧由10位组成,按顺序分别为起始位、8位数据位、停止位。数据在传输时,低位在前,高位在后。,1、方式1的波特率,方式1波特率=T1溢出率2SMOD/32使T1工作于定时器、模式2。T1的初始值为X,则每过256-X个机器周期的时候,T1便将产生一次溢出。溢出的周期为:(256-X)12/fosc溢出率:fosc/12(256-X)。,根据:方式1波特率=T1溢出率2SMOD/32波特率=(2SMOD/32)fosc/12(256-X)通过上面的式子可得到定时器T1在模式2下的初值X:X=256-(2SMODfosc)/(384波特率),波特率foscSMOD初值,1106072H137.511.98601DH120011.05920E8H240011.05920F4H480011.05920FAH960011.05920FDH1920011.05921FDH6250011.05921FFH,串口方式1初始化及波特率初始化的程序示例如下:,TMOD=0X20;/T1定时方式,模式2TH1=0XF4;TL1=0XF4;TR1=1;PCON=0X00;/设置SMOD为0SCON=0X50;/设置方式1,允许接收,2、方式1的数据发送,初始化串口,设置SCON寄存器以及PCON寄存器。初始化定时器,设置波特率。置串行接口控制寄存器SCON的TI=0,启动串行口发送。执行写发送缓冲器SBUF语句,,硬件自动发送起始位,起始位为逻辑低电平。在发送移位脉冲的作用下,数据帧依次从TXD引脚发出。在发送8位数据时,低位首先发送,高位最后发送。最后硬件自动发送停止位,停止位为逻辑高电平。在8位串行数据发送完毕后,也就是在插入停止位的时候,使TI置1,用以通知CPU可以发过下一帧的数据。此时可以采用查询或者中断两种方式来获知TI是否置位。当TI置位后,程序中清雾TI,以便于发送下一个数据。,3、工作方式1的数据接收,初始化串口,设置SCON寄存器以及PCON寄存器。将SCON的REN位置1,启动串行口串行数据接收,RXD引脚便进行串行口的采样。初始化定时器,设置波特率。在数据传递的时候RXD引脚的状态为1,当检测到从1到0的跳变的时候,确认数据起始位0。开始接收一帧的串行数据,在接收移位脉冲的控制下,将收到的数据一位一位地送入移位寄存器,直到9位数据完全接收完毕,其中最后一位为停止位。,当RI=0,并且接收到的停止位为1,或者SM2=0的时候,8位数据送人接收缓冲器SBUF中,停止位送人RB8中,同时置RI=1;否则,8位数据不装人SBUF,放弃当前接收到的数据。此时可以采用查询或者中断两种方式来获知RI是否置位。当数据送人接收缓冲器之后,便可以执行读SBUF语句来读取数据,示例如下。ch=SBUF;最后,软件中清标志位RI,以便于接收下一次串行数据。,7.3.3串行口工作方式2,方式2为固定波特率的串行异步通信方式,在方式2中数据帧的格式如图所示。一帧数据由11位构成,按照顺序分别为:起始位1位、8位串行数据(低位在前)、可编程位1位、停止位1位。,方式2的波特率:方式2波特率=fosc2SMOD/64,7.3.4串行口工作方式3方式3为11位异步发送接收方式,在方式3中数据帧的格式:1帧数据由11位构成,按照顺序分别为:起始位1位、8位串行数据(低位在前)、可编程位1位、停止位1位。,7.4串行口的应用举例,7.4.1初始化设定SCON的SM0、SM1两位二进制编码。对于方式2或3,应根据需要在TB8中写入待发送的第9位数据。若选定的操作方式不是方式0,还需设定发送的波特率:设定SMOD的状态,以控制波特率是否加倍。若选定操作方式1或3,则应对定时器T1进行初始化以设定其溢出率。,7.4.2编程步骤:,(1)定好波特率(2)填写控制字(3)串行通信可采用两种方式,即查询方式和中断方式先发后查先查后收中断方式发送数据:发送一个数据、等待中断,在中断中再发送下一个数据。中断方式接收数据:等待中断、在中断中接收一个数据。,【例7-9】波特率计算及初始化编程,设某51单片机系统,其串行口工作于方式3,要求传送波特率为1200。作为波特率发生器的定时器T1工作在模式2时,请求出计数初值为多少?设单片机的振荡频率为6MHz。X=256-(2SMODfosc)/(384波特率),TH1=256fosc/(波特率1232/2SMOD)=256-2SMOD13当SMOD=0时:TH1=25613=243=0F3H。当SMOD=1时:TH1=256213=230=0E6H。,初始化编程:,TMOD=0X20;TH1=TL1=0XF3;TR1=1;PCON=0X00;SCON=0XD0;/设置方式1,允许接收,【例7-10】编程:高4位灯和低4位灯以1s亮1s灭的频率进行闪烁。,分析:,(1)4位亮、4位灭的交替数据为11110000B和00001111B;(2)串行口采用方式0,SCON=00H;(3)1s由定时器T0产生:硬件定时50mS,软件计数20次;T0定时器方式、模式1、初值为:50000=65536-XX=15536=3CB0H(4)1s采用中断的方式,20次中断到,将输出的数据取反操作。,【例7-11】串行口自收自发,将51单片机的TXD接RXD,实现单片机串行口数据自发自收,并将接

温馨提示

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

评论

0/150

提交评论