第6章-单片机串行口_第1页
第6章-单片机串行口_第2页
第6章-单片机串行口_第3页
第6章-单片机串行口_第4页
第6章-单片机串行口_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第6章单片机串行口主要内容:6.1串行通信的基本概念6.2MCS-51串行接口的基本结构6.3串行口的工作方式6.4串行口波特率的确定及串行口初始化6.5串行口的应用重点、难点:掌握单片机与外部通信基本方式;了解串行通信的分类,掌握异步通信的原理、帧格式;了解常见的数据传输方式。了解单片机串行口的结构,掌握控制寄存器SCON的使用方法。掌握单片机串行口的工作方式及使用方法。掌握串行口波特率的设置。了解方式0进行串并口的扩展,掌握双机通信及多机通信的原理及编程(中断和查询)方法。掌握RS232串行通信标准,了解RS485通信原理。(1)并行通信多个数据位同时传输,速度快。因传输线多,特别适用于近距离通信。(2)串行通信数据是一位一位地在通信线上传输,速度慢。因传输线少,特别适用于远距离通信。6.1串行通信的基本概念1.串行通信的分类(1)异步通信以字符为单位传送,字符间隔不固定发送端和接收端时钟彼此独立(异步)通信双方须规定相同的字符帧格式和波特率①字符帧格式由起始位、数据位、奇偶校检位、停止位等4部分组成。起始位:位于字符的开头,1位,用低电平0表示,表示字符的开始,通知接收端准备接收。数据位;紧跟在起始位之后,可以是5-8位数据,发送时低位在前,高位在后。奇偶校验位:1位,位于数据位之后,用户根据需要加入。用来表示串行通信中采用奇校验还是偶校验。停止位:位于字符最后,以高电平1表示字符的结束,告诉接收端本帧数据发送完毕,为下一帧数据作准备。②波特率波特率,即每秒钟传送的二进制位数,其单位为bps(bitspersecond),是衡量串行数据速度快慢的重要指标。国际标准:110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、28.8Kbps、33.6Kbps、56Kbps。假如在异步串行通信中,传送一个字符,包括12位(其中有1个起始位,8个数据位,1个奇偶校验位,2个停止位),其传输速率是1200b/s,每秒所能传送的字符数是1200/(1+8+1+2)=100个。(2)同步通信一个信息帧中包含许多字符,每个信息帧用同步字符作为开始。由统一的时钟来实现发送端与接收端之间的严格同步接收端检测到有一串数位和同步字符相匹配时,把此后的数位作为实际传输信息来处理。同步信息帧通常由同步字符、数据字符和校验字符CRC三部分组成。同步字符1同步字符2数据字符1数据字符2……数据字符nCRC1CRC22.串行通信的数据传输方式(1)单工方式:信息传送只能在一个方向上进行。(2)半双工方式:通信双方之间也只有一根数据传输信号线,通过接收和发送转换开关,使得双方可以交替进行发送和接收,但两个方向的数据传送不能同时进行。(3)全双工方式:通信双方之间有两条数据传输信号线,可以在同一时刻进行两个方向的数据传送。6.2MCS-51串行接口的基本结构1.串行口的内部结构MCS-51单片机内部的串行接口是全双工的。该接口有两根串行通信传输线RXD(P3.0)和TXD(P3.l),数据的接收和发送就是通过这两根信号线来实现的。在物理上存在两个互相独立的接收、发送缓冲器SBUF,通过特殊功能寄存器SBUF来访问。两个缓冲器共用一个地址99H(特殊功能寄存器SBUF的地址)串行口还有接收缓冲作用,即从接收寄存器中读出前一个已收到的字节之前就能开始接收第二字节。收发数据是在发送/接收控制器的作用下完成的,波特率由定时计数器T1决定。2.串行口的控制寄存器(1)串行控制寄存器SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI①SM0、SM1:指定串行通道的工作方式。SM0SM1工作方式说明波特率00方式0同步移位寄存器fosc/1201方式110位异步收发由定时器控制10方式211位异步收发fosc/32或fosc/6411方式311位异步收发由定时器控制②SM2:多机通信控制位。主要用于方式2和方式3中。在方式2和方式3处于接收状态时,如SM2=l,REN=1,且接收到的第9位数据RB8是1,则RI(接收中断标志位)才被置1。若接收到的第9位数据RB8是0,则RI不会置1。在方式2和方式3处于接收状态时,如SM2=0,无论接收到的第9位数据RB8是0还1,则RI都会被置1。在方式1中,如SM2=1,只有在接收到有效停止位时,则RI才会被置1。所以,方式1中SM2一般设置为0,以免丢失数据。在方式0中,SM2必须为0。③REN:允许串行接收控制位。由软件置1或清除。REN=1,允许接收REN=0,禁止接收④TB8:发送数据位8,由软件进行置1或清0。。在方式2和方式3时,它就是要发送的第9个数据位。如在多处理通信中,用于表示是地址帧还是数据帧。在方式0和方式1中,此位不用。⑤RB8:接收数据位8。在方式2和3时,它是接收到的第9个数据位在方式1中,若SM2=0,RB8是接收到的停止位在方式0中,此位不用。⑥TI:发送中断标志位。在方式0中,当发送完第8位数据时,由硬件置1在其他方式中,在发送停止位前,由硬件置1。TI=l时,申请中断,CPU响应中断后,发送下一帧数据。该位必须由软件清0。⑦RI:接收中断标志位。在方式0中,接收第8位结束时,由硬件置1;在其他方式中,在接收停止位的中间时刻,由硬件置1。RI=1时,申请中断,要求CPU取走数据。(但在模式1中,SM2=1时,若未接收到有效的停止位,则不会对RI置位。)该位必须由软件清0。(2)电源控制寄存器PCON电源控制寄存器PCON的格式如下所示:D7D6D5D4D3D2D1D0SMODD7位SMOD是串行口波特率倍增位。SMOD为1时,串行口工作方式1、方式2、方式3的波特率加倍。具体值见各种工作方式下的波特率计算公式。6.3串行口的工作方式1.方式0:同步移位寄存器,用于扩展并行口

RXD:输入或输出引脚TXD:移位脉冲输出接收和方式都是8位波特率固定为:fosc/12(2)数据输入:

(1)数据输出:

2.方式1:10位帧,用于双机通信起始位:1位数据位:8位停止位:1位10位的异步通信接口,即传送一帧信息为10位。一位起始位“0”,8位数据位(先低位后高位),一位停止位“1”,其中起始位和停止位是在发送时自动插入的,数据位由TXD发送,由RXD接收。波特率可变。硬件上,T1的计数输出不仅使TF1置位,而且会产生一个脉冲送串行口。方式1的波特率这时就取决于T1(注意只是T1,不是T0)的溢出频率(每秒钟T1溢出多少次)和PCON中的SMOD的值。方式1的波特率=(2SMOD/32)×Tl的溢出频率(1)串行发送:(写SBUF启动发送过程)

(2)串行接收:(置REN=1启动接收过程)

3.方式2和方式3:11位帧,用于多机通信起始位:1位数据位:9位停止位:1位串行口发送/接收的一帧信息共11位:一位是起始位“0”,8位数据,一位奇偶校验位,一位停止位“1”。方式2和方式3的发送、接收过程是完全一样的,只是波特率不同。方式2的波特率=(2SMOD/64)×fosc方式3的波特率=(2SMOD/32)×T1的溢出频率(1)串行发送:(写SBUF启动发送过程)

(2)串行接收:(置REN=1启动接收过程)

6.4串行口波特率的确定及串行口初始化1.波特率的计算(1)方式0的波特率:固定等于fosc/12。(2)方式2的波特率:固定等于(2SMOD/64)×fosc。SMOD为波特率加倍位。(3)方式1或方式3的波特率:等于(2SMOD/32)×T1的溢出频率。定时器1溢出频率=fosc/[12×(256-X)]方式1、3的波特率=2SMOD×fosc/[12×32×(256-X)]当时钟频率选用11.0592MHz时,极易获得标准的波特率SMOD位数值的选择直接影响着波特率的精确度2.串行口初始化的步骤确定串行口工作方式(配置SCON寄存器)确定T1的工作方式(配置TMOD寄存器)设置SMOD位(若不用SMOD,可跳过此步)计算T1的初值,装载TH1和TL1启动T1(置位TR1)串行口中断设置(配置IE、IP寄存器)【例6-1】某8051单片机控制系统,主振频率为12MHz,要求串行口发送数据为8位、波特率为1200b/s,编写串行口的初始化程序(设SMOD=1)。我们设SMOD=1,则T1的时间常数X的值为:X=256-2SMOD×fosc/(12×32×波特率)=256-21×12×106/(12×32×1200)=256-52.08=203.92≈0CCH初始化程序为:MOVSCON,#50H ;串行口工作于方式1ORLPCON,#80H ;SMOD=1MOVTMOD,#20H ;T1工作于方式2,定时方式MOVTH1,#0CCH ;设置时间常数初值MOVTL1,#0CCHSETBTR1 ;启动T16.5串行口的应用6.5.1串行口方式0用做扩展并行I/O口【例6-2】用8051串行口外接CD4094扩展8位并行输出口,8位并行输出口的各位都接一个显示发光二极管。要求发光二极管从左到右以一定延时轮流显示,且不断循环。发光二极管为共阴极接法。ORG0000HMOVSCON,#00H;串行口方式0初始化MOVA,#80H;最左一位发光管先亮CLRP1.0START:MOVSBUF,ALOOP:JNBTI,LOOP;查询TISETBP1.0;启动并行输出LCALLDELAY;调用延时程序CLRTIRRA;循环右移一位CLRP1.0LJMPSTART【例6-3】用8051串行口外加移位寄存器扩展8位并行输入口。输入数据由8个开关提供,另有一个开关K提供联络信号。当K=0时.表示要求输入数据。输入的8位开关量,为逻辑模拟子程序LOG提供输入信号。 ORG0000HSTART:JBP1.1,$ SETBP1.0;并行置入数据

CLRP1.0;开始串行移位

MOVSCON,#10H;串行口方式0启动接收

LOOP:JNBRI,$;查询RI CLRRI MOVA,SBUF LCALLSUB;数据交给SUB模拟子程序

LJMPSTART6.5.2双机通信【例6-4】按图连接两个单片机系统(假设已经扩展了外部数据存储器),编程将甲机的片外RAM的2000H-201FH单元的数据块从串行口发送。假设串行口工作在方式3,TB8为奇偶校验位。乙机接收甲机发送过来的数据块,并存入片内RAM的20H-3FH单元。接收过程要求判断RB8,若出错则设F0标志为1,正确则设F0标志为0。波特率为1200bit/s,采用12MHz的晶振。 ORG0000H LJMPSTART ORG0100HSTART:MOVTMOD,#20H MOVTL1,#0E6H MOVTH1,#0E6H SETBTR1 MOVSCON,#0C0H MOVDPTR,#2000H MOVR7,#20H(1)采用查询方式①甲机发送程序:SEND:MOVXA,@DPTR MOVC,P MOVTB8,C MOVSBUF,ALOOP:JNBTI,LOOP CLRTI INCDPTR DJNZR7,SEND SJMP$ ENDORG0000HLJMPSTARTORG0100HSTART:MOVTMOD,#20H MOVTL1,#0E6H MOVTH1,#0E6H SETBTR1 MOVR0,#20H MOVR7,#20H MOVSCON,#0D0HREAD:JNBRI,READ CLRRI②乙机接收程序 MOVA,SBUF JNBPSW.0,PZERO JNBRB8,ERROR LJMPRIGHTPZERO:JBRB8,ERRORRIGHT:MOV@R0,A INCR0 DJNZR7,READ CLRPSW.5 LJMPLOOPERROR:SETBPSW.5LOOP:SJMPLOOP END(2)采用中断方式①甲机发送程序: ORG0000H LJMPSTART ORG0023H LJMPSINTSTART:MOVSP,#60H MOVSCON,#0C0H MOVDPTR,#2000H MOVR7,#20H MOVTMOD,#20H MOVTL1,#0E6H MOVTH1,#0E6H SETBEA SETBES SETBTR1MOVXA,@DPTR MOVC,P MOVTB8,C MOVSBUF,ALOOP:SJMPLOOPSINT:CLRTI DJNZR7,NEXT CLRES LJMPEXITNEXT:INCDPTR MOVXA,@DPTR MOVC,P MOVTB8,C MOVSBUF,AEXIT:RETI END②乙机接收程序: ORG0000H LJMPSTART ORG0023H LJMPSINTSTART:MOVSP,#60H MOVSCON,#40H MOVR7,#20H MOVTMOD,#20H MOVTL1,#0E6H MOVTH1,#0E6H SETBEA SETBES SETBTR1 MOVR0,#20H MOVR7,#20H MOVSCON,#0D0HLOOP:LJMPLOOPSINT:CLRRI MOVA,SBUF JNBPSW.0,PZERO JNBRB8,ERROR LJMPRIGHTPZERO:JBRB8,ERRORRIGHT:MOV@R0,A DJNZR7,NEXT CLRES LJMPEXITNEXT:INCR0EXIT:RETI END6.5.3多机通信1.多机通信原理单片机的主从式多机通信方式要有一台主机和多台从机。主机发送的信息可以传送到各个从机或指定的从机,各从机发送的信息只能被主机接收,从机之间不能直接进行通信。具体过程如下:全部从机均初始化为方式2或方式3,SM2=1,允许中断。主机发送要寻址的从机地址,其中TB8=1表示发送的是呼叫地址帧(TB8=0时为数据帧)。所有从机均接收主机发送的地址,并进行地址比较。被寻址的从机确认地址后,置本机的SM2=0,向主机返回地址,供主机核对。核对无误后,主机向被寻址的从机发送命令,通知从机接收或发送数据。通信只能在主、从机之间进行,两个从机之间的通信需通过主机作中介。本次通信结束后,从机重置SM2=1,主机可再对其他从机寻址。【例6-5】采用查询方式将主机50H~5FH中的数据发送给02号从机;02号从机将接收到的数据放到内部RAM30H~3FH单元中,波特率为1200波特,fosc=11.0592MHz,预置值TH1=0E8H。 ORG0000H LJMPMAIN ORG0030HMAIN:MOVTMOD,#20H MOVTL1,#0E8H MOVTH1,#0E8H SETBTR1 MOVSCON,#D8HM1:MOVSBUF,#02HL1:JNBTI,L1 CLRTIL2:JNBRI,L2 CLRRI

MOVA,SUBF XRLA,#02H JZRHT LJMPM1RHT:CLRTB8 MOVR0,#50HM1:MOVR7,#10HL3:MOVA,@R0 MOVSBUF,AL4:JNBTI,L4 CLRTI INCR0 DJNZR7,L3 LJMPMAIN END①主机程序: ORG0000H LJMPMAIN ORG0030HMAIN:MOVTMOD,#20H MOVTL1,#0E8H MOVTH1,#0E8H SETBTR1 MOVR0,#30H MOVR6,#10H MOVSCON,#0F0HSR1:JNBRI,SR1 CLRRISR2:MOVA,SUBF XRLA,#02H JNZSR1 CLRSM2;②从机程序:

MOVSBUF,#02HSR3:JNBTI,SR3 CLRTISR4:JNBRI,SR4 CLRRI JNBRB8,RHT SETBSM2 LJMPSR1RHT:MOVA,SBUF MOV@R0,A INCR0 DJNZR6,SR4 LJMPSI END6.5.4单片机与PC机间的通信1.RS-232接口(1)RS-232接口简介①机械特性现在的PC机上出现的COM1和COM2就是标准的RS-232C接口,采用9针阳头。引脚序号信

温馨提示

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

评论

0/150

提交评论