第八章单片机串行接口.ppt_第1页
第八章单片机串行接口.ppt_第2页
第八章单片机串行接口.ppt_第3页
第八章单片机串行接口.ppt_第4页
第八章单片机串行接口.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章 51单片机串行接口,一 有关串行通信的基本概念和名词 通信:计算机与外界的信息交换称为通信。 两种基本通信方式:并行通信和串行通信 并行通信:一次被传输的数据有多少位,就需要多少根数据传输线。 特点:通信速度快,编程简单。 缺点:不适合长距离传输,传输线多。大多数单片机,DSP等都具有并行接口总线,比如常见的地址、数据和控制三总线接口。,串行通信:数据在一根线路上按照位的先后顺序一位一位的传送。 特点:占用线路少,硬件接口简单,比较适合长距离传输,一般比并行通信方式略慢。串行通信需要定义专门的通信协议。 基本的串行通信方式有同步通信和异步通信两种。 串行通信中的数据是按帧(Frame)

2、进行传输。 通信方向:异步串行通信的三种工作方式: 单工、半双工、全双工(p133. 图8-2) 通信协议:指通信双方为确保通信成功而订立并共同遵守的通信约定,主要包括数据帧格式,时钟速率,检查纠错方式。各种串行通信方式都必须严格遵守其通信协议才能保证通信的正确性。,1. 异步传送方式中的帧数据格式,一帧数据:,一个字符在异步传送中称为一帧数据,一帧数据由4部分组成: 起始位、数据位、奇偶位、停止位,一帧数据,起始位,数据位,奇偶位,停止位,第n个字符,第n+1个字符,数据位:,起始位:,奇偶位:,58位。数据的最低位在前,最高位在后。,紧跟在最高位之后,占用一位,奇偶校验时,根据协议置“1”

3、或“0”,停止位:,为逻辑“1”信号,占用1位或2位,当接收端收到停止位时,表示一帧数据结束。,2.波特率(Baud rate):简单理解为每秒钟一根串行线路上可以传输的二进制数据位数,如PC机串行口常见的波特率值:600,1200,2400,4800,9600,19200 比特率(bps,bit per second):指每秒钟能够传输的有效二进制位数。例如某设置中一帧数据为10位,其中有效字节位数为8位,波特率为9600,则比特率=89600/10=7680 bps,波特率发生器: 串行通信中数据是按照一定的时钟频率按位向外一位一位移入移出内部移位寄存器的,用于产生该移位时钟的电路叫波特率

4、发生器。 在51单片机中,方式0采用固定波特率方式,方式1为可变波特率方式,通常是由T1定时器溢出作为波特率发生器的。 双机异步串行通信的几种不同接口方式。 1)单片机双机直连(TTL电平,仅适用于很短通信距离和较低波特率,连接如下图,2)RS-232串行接口 国际电子工业协会(EIA)制定RS-232串行通信接口标准,规定如下: TXD,RXD信号:逻辑1=-3-15V,逻辑0=+3+15V,RS-232C最大通信距离在15m左右,PC机串口即是一个标准RS-232口,PC机RS-232C DB9串行口引脚,RS-232电平和单片机TTL电平间需要电平转换芯片接口,常用的是MAX232.,4

5、85、422串行通信接口(*仅做了解*) 为进一步提高串行通信的距离,采用差分输出驱动方式可以有效大幅提高可靠通信距离,即485通信方式,其中485为半双工,422为全双工通信方式,接口方式和常用芯片如下:,485半双工通信接口示意图和真值表,发送,接收,488全双工串行接口(*仅做了解*),二 MCS-51单片机串行口结构,1、数据缓冲器SBUF,包括物理上独立的发送缓冲器、接收缓冲器,发送缓冲器:只能写入不能读出,接收缓冲器:只能读出不能写入,二者共用一个地址99H,2、串行口控制寄存器,字节地址为98H,可位寻址,位地址为98H9FH,SM0 SM1 SM2 REN TB8 RB8 TI

6、 RI,SCON (98H),SM0、SM1:串行口工作方式选择位,如表6-3所示,0 0 0 移位寄存器方式(用于I/O扩展),0 1 1 8位UART,波特率可变,1 0 2 9位UART,波特率为fosc/32或fosc/64,1 1 3 9位UART,波特率可变,串行口工作方式,REN:,*TB8:,在方式2和方式3中要发送的第9位数据,需要时由软件置位或复位,*RB8:,在方式2和方式3中要接收的第9位数据,在方式1时,如SM2=0,RB8是接收到的停止位。在方式0中,不使用RB8,TI:,发送中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位的开始时

7、置“1”,必须由软件清“0”,RI:,接收中断标志。在方式0串行发送第8位结束时由硬件置“1”,或在其他方式中串行发送停止位的开始时置“1”,必须由软件清“0”,3、特殊功能寄存器PCON,其字节地址87H,没有位寻址功能。,PCON(87H),SMOD:波特率选择位。SMOD=1时,波特率加倍,三、串行口工作方式,1、方式0,移位寄存器输入输出方式,可外接移位寄存器,以扩展I/O口,方式0的波特率为:,波特率=fosc/12,74LS164,数据输出,移位脉冲,方式0 发送,一个数据写入SBUF,串口将数据从RXD输出 (波特率fosc/12),TXD输出同步移位信号, 发送完后TI自动置1

8、,必须由软件清TI位。,D7 D0,方式0扩展I/O口硬件逻辑图,串入并出扩展输出端口,方式0 接收,REN置1,串口将数据从RXD输入 (波特率fosc/12),TXD输出同步移位信号, 一个字符数据接收完RI置1,必须软件清RI位,方式0扩展I/O口硬件逻辑图,并入串出扩展输入端口,2、方式1,波特率可变的8位异步通信接口方式。,波特率=(2SMOD/32)T1溢出率,方式1发送,CPU 执行一条写SBUF指令,就启动了串口发送,当SEND和DATA有效时,数据从TXD输出。,方式1接收,允许接收位REN被置“1”后,接收器就开始工作,RXD引脚上发生由“1”到“0”的跳变,接收器开始接收

9、。,停止位,起始位,四、波特率的设计,(1)方式0的波特率是固定的:,波特率=fosc/12,波特率=2SMOD/32T1的溢出率,(2)方式1波特率取决于T1的溢出率,(3)定时器1作波特率发生器,T1的溢出率=计数速度/(2K-初值),K为定时器T1的位数,K=8(方式2) K=13(方式0) K=16(方式1),T1为计数器时:,T1为定时器时:,T1的溢出率= fosc/ 12(2K-初值),最常用,五、串行口的应用,1、方式0的应用,共阳LED数码管: 公共端(字位) 接高电平, 笔划(字段) 置为低电平 就被点亮了,1 1 0 0 0 0 0 0,0C0H = “0”,比如要显示“

10、0” 须令a b c d e f 为“0” 电平,g h为“1”电平。,再比如要显示“3” 须令a b c d g 为“0” 电平,e f h为“1”电平。,1 0 1 1 0 0 0 0,0B0H = “3”,某共阴数码管脚位图,某4位共阴数码管脚位图,例:利用串行口工作方式0扩展出8位并行I/O口,驱动共阳LED数码管显示09。,共阳LED数码管显示0-9数 字的子程序(查表) : DSPLY:MOV DPTR, #TABLE MOVC A, A+DPTR MOV SBUF, A JNB TI, $ CLR TI RET TABLE:DB 0C0H,0F9H,0A4H DB 0B0H,99

11、H,92H DB 82H,0F8H,80H,90H,AB,CLK,h g f e d c b a,CLR,AB,CLK,CLR,AB,CLK,CLR,+5V,74LS164,74LS164,74LS164,h g f e d c b a,h g f e d c b a,+5V,共阳LED 数码管,VCC,TxD,RxD,8051,P1.0,DISPLY:MOVSCON,#00H MOVR7,#03H MOVR0,#DISBUF SETBP1.0 L1: MOVA,R0 MOV DPTR, #TABLE MOVC A, A+DPTR,MOVSBUF,A JNBTI,$ CLRTI INCR0 D

12、JNZR7,L1 CLRP1.0 RET,P1.0 作 串 行 输 出 选 择 信 号,TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H DISBUF EQU 70H,2、方式1的应用(双机通信),RXD TXD GND,RXD TXD GND,甲机,乙机,思考: 硬件连接如上图,试编程实现甲机连续发送16个数据给乙机,提示:通常查询发送,中断接收 也可查询接收,但要耗费 CPU资源。,例:把内部RAM 40H5FH单元中的ASCII码,由甲机发送到乙机,波特率1200,无奇偶校验,晶振fosc=11.0592MHz。 解:设置

13、甲机在方式1下发送,SCON40H;乙机串行方式1接收,SCON50H。T1做波特率发生器,TH1重装初值E8H,TMOD20H。 波特率计算 波特率=2SMOD/32T1的溢出率 T1的溢出率=fosc/(28-x)*12 因此T1的初值 代入条件得 x=256-24=232=E8H,参考程序:甲机发送 MOV TMOD,#20H ; T1 方式2 MOV TL1,#0E8H MOV TH1,#0E8H ; 赋初值 SETB TR1 ;启动T1 MOV SCON,#40H ;串口方式1 MOV R0,#40H ;内部RAM指针 MOV R1,#32 NEXT: MOV A,R0 ;取ASCI

14、I码 MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R1, NEXT ; 循环将32字节发送完,乙机接收:将收到的32字节放在607FH单元。 (查询接收方式) MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H ;波特率与甲机相同 SETB TR1 MOV R0, #60H ;存放区首址 MOV R1,#32 NEXT: JNB RI,$ MOV A,SBUF MOV R0,A CLR RI DJNZ R1,NEXT ;未完继续接收,中断接收方法程序范例:(主程序) ORG 0000H LJMP MAIN ORG 0023H LJMP COMINT ORG 0100H MAIN: MOV R0,#60H MOV R1,#32 MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H,SETB TR1 SETB ES SETB EA SJMP $,中断服务子程序 COMINT: MOV A,SBUF MOV R0,A INC R0 CLR RI RETI,串行口通信的C语言样例代码 /UART串口初始化函数,9600,N,8,1格式,发送接收均可,使能串口中断 void uart_init() SCON = 0 x50; TMOD = 0 x20; TH1 = TL1

温馨提示

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

评论

0/150

提交评论