资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第八章 AT89C51串行通信及其应用,第八章 AT89C51串行通信及其应用,1,8.1 串行通信概述,8.1.1 并行通信和串行通信,8.1.2 异步通信和同步通信,8.1.3 单片机串行通信传输方式,8.1.4 串行数据通信的传输速率,8.2 AT89C51串行口,8.2.1 AT89C51串行口的结构,8.2.2 AT89C51串行口控制寄存器,8.2.3 AT89C51串行口的工作方式及波特率计算,8.3 串行通信协议,8.3.1 RS-232协议,8.3.2 RS-485/422A协议,8.3.3串行通信的数据校验,8.4 串行通讯的应用,8.1 串行通信概述,2,8.1.1 并行通信和串行通信,计算机与外界的信息交换称为通信,通常有并行和串行两种通信方法。,并行通信:所传送数据的各位同时发送或接收。,串行通信:所传送数据的各位按顺序一位一位地发送或接收。,8.1.1 并行通信和串行通信计算机与外界的信息交换称为通信,3,8.1.2 异步通信和同步通信,串行通信的通信方式,异步通信,同步通信,1异步通信的数据传送,异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。传送用一个起始位表示字符的开始,用停止位表示字符的结束。,8.1.2 异步通信和同步通信串行通信的通信方式异步通信 同,4,8.1.2 异步通信和同步通信,起始位,:发送器是通过发送起始位而开始一个字符的传送。,数据位,:串行通信中所要传送的数据内容。在数据位中,低位在前,高位在后。数据位通常是8位。,校验位,:用于对字符传送作正确性检查,因此校验位是可以省略的。,停止位,:一个字符传送结束的标志,停止位在一帧数据的最后。停止位可能是1、1.5或2位,在实际应用中根据需要确定。,位时间,:一个格式位的时间宽度。,帧(frame),:从起始位开始到停止位结束的全部内容称之为一帧,帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。,8.1.2 异步通信和同步通信起始位:发送器是通过发送起始位,5,8.1.2 异步通信和同步通信,2同步通信的数据传送,同步数据传送时,发送端和接收端必须使用同一时钟源才能保证它们之间的准确同步,因此发送方除了传送数据外,还要同时传送时钟信号。,8.1.2 异步通信和同步通信2同步通信的数据传送,6,8.1.3 串行通信传输方式,串行通信的传输方式,单工制式,半双工制式,全双工制式,1单工(Simplex)制式,8.1.3 串行通信传输方式串行通信的传输方式单工制式 半双,7,8.1.3 串行通信传输方式,2半双工(Half Duplex)制式,3全双工(Full Duplex)制式,8.1.3 串行通信传输方式2半双工(Half Duple,8,8.1.4 串行通信的传输速率,波特率bps,(Bit per second)是数据传送的速率,其定义是每秒钟传送的二进制数的位数。,波特率的倒数即为每位传输所需要的时间。则:,1波特率(Bit per second)=1位/秒(1 bit/s),数据传送的速率是120字符/s,若每个字符为10位的二进制数,则传送波特率为,1200 波特率,。,例如:,8.1.4 串行通信的传输速率 波特率b,9,8.2.1 AT89C51串行口的结构,AT89C51片内有一个全双工的串行通讯接口。,由发送缓冲寄存器SBUF、接收缓冲寄存器SBUF和移位寄存器三部分构成。,8.2.1 AT89C51串行口的结构AT89C51片内有一,10,8.2.2 AT89C51串行口控制寄存器,1串行数据缓冲寄存器SBUF,SBUF是串行数据缓冲寄存器。在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。它们有相同名字和单元地址,但它们不会出现冲突,因为在物理上,SBUF有两个:一个只能被CPU读出数据(接收寄存器),一个只能被CPU写入数据(发送寄存器)。,8.2.2 AT89C51串行口控制寄存器 1串行数据缓冲,11,8.2.2 AT89C51串行口控制寄存器,2串行控制寄存器SCON,它用于定义串行口的工作方式及实施接收和发送控制。,8.2.2 AT89C51串行口控制寄存器 2串行控制寄存,12,8.2.2 AT89C51串行口控制寄存器,SM0、SM1,工作方式,功能描述,波特率,0 0,方式0,8位移位寄存器,fosc/12,0 1,方式1,10位UART,可变,1 0,方式2,11位UART,fosc/64或fosc/32,1 1,方式3,11位UART,可变,(1)SM0、SM1:串行口工作方式控制位,其定义如表8-2所示:,(2)SM2:多机通信控制位。,8.2.2 AT89C51串行口控制寄存器 SM0、SM1工,13,8.2.2 AT89C51串行口控制寄存器,(4)TB8:方式2和方式3中,要发送的第9位数据。,(5)RB8:方式2和方式3中,要接收的第9位数据。,(3)REN:允许接收位。,REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。该位由软件置位或复位。,8.2.2 AT89C51串行口控制寄存器(4)TB8:方,14,8.2.2 AT89C51串行口控制寄存器,(6)TI:发送中断标志位。,可寻址标志位。方式0时,发送完第8位数据后,该位由硬件置位;其它方式下,在发送停止位之前由硬件置位,因此,TI=1表示帧发送结束,可由软件查询TI位标志,也可以请求中断。,TI必须由软件清0,。,(7)RI:接收中断标志位。,可寻址标志位。方式0时,接收完第8位数据后,该位由硬件置位;在其他工作方式下,当接收到停止位时,该位由硬件置位,RI=1表示帧接收完成,可由软件查询RI位标志,也可以请求中断。,RI必须由软件清0,。,8.2.2 AT89C51串行口控制寄存器(6)TI:发送,15,8.2.2 AT89C51串行口控制寄存器,3电源管理寄存器PCON,8.2.2 AT89C51串行口控制寄存器 3电源管理寄存,16,8.2.3 AT89C51串行口工作方式及波特率,1工作方式0,8位移位寄存器输入/输出方式。多用于外接移位寄存器以扩展I/O端口,8.2.3 AT89C51串行口工作方式及波特率 1工作方,17,8.2.3 AT89C51串行口工作方式及波特率,2工作方式1,方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。,输出:当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。,输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认开始位0,就开始接收一帧数据。在方式1接收时,应先用软件清零RI和SM2标志。,8.2.3 AT89C51串行口工作方式及波特率 2工作方,18,8.2.3 AT89C51串行口工作方式及波特率,2工作方式1,波特率计算:,SMOD是控制寄存器PCON中的一位控制位,其取值有0和1两种状态。显然,当SMOD0时,波特率(定时器T1溢出率)/32,而当SMOD1时,波特率(定时器T1溢出率)/16。,定时器的溢出率,就是指定时器一秒钟内的溢出次数。,8.2.3 AT89C51串行口工作方式及波特率 2工作方,19,8.2.3 AT89C51串行口工作方式及波特率,定时初值计算:,当定时/计数器T1用作波特率发生器时,通常选用定时初值自动重装的工作方式2,从而避免了通过程序反复装入计数初值而引起的定时误差,使得波特率更加稳定。,8.2.3 AT89C51串行口工作方式及波特率 定时初值计,20,8.2.3 AT89C51串行口工作方式及波特率,例8-1:已知fosc=12MHz,SMOD=1,波特率=2400 bit/s,求串行方式1时T1定时初值。并说明由此产生的实际波特率是否有误差,为什么?,解:,根据,若fosc=11.0592MHz,其余条件不变,则T1定时初值为:,8.2.3 AT89C51串行口工作方式及波特率 例8-1:,21,8.2.3 AT89C51串行口工作方式及波特率,当时钟频率选用11.0592MHZ时,很容易获得标准的波特率,所以很多单片机系统选用此数值的晶振。使用T1设置常用的波特率参见表8-4。,8.2.3 AT89C51串行口工作方式及波特率 当时钟频率,22,8.2.3 AT89C51串行口工作方式及波特率,例8-2:设89C51单片机串行口工作于方式1,已知fosc=11.0592MHz,定时器T1作为波特率发生器,要求波特率=2400bit/s,SMOD=1,开放中断,试编写初始化程序。,根据题目要求,首先计算T1定时器的初值(可以直接利用例8-1的计算过程)。然后利用TMOD寄存器,将T1设置为工作方式2(注意:这里是T1的工作方式,而不是串行口的工作方式)。再将PCON寄存器的SMOD设置为1,然后TH1寄存器加载E8H,最后启动T1,开放中断,即可产生2400bit/s的波特率。,分析:,8.2.3 AT89C51串行口工作方式及波特率 例8-2:,23,8.2.3 AT89C51串行口工作方式及波特率,采用汇编语言程序设计:,MOVTMOD,#20H;T1设置为工作方式2,MOVTL1,#0E8H;T1定时器初值,MOVTH1,#0E8H;T1定时器重装初值,MOVPCON,#80H;SMOD设置为1,MOVSCON,#40H;串行口方式1,SETBTR1;T1启动,SETBES;开串口中断,SETBEA;开总中断,8.2.3 AT89C51串行口工作方式及波特率 采用汇编语,24,8.2.3 AT89C51串行口工作方式及波特率,采用C51语言程序设计:,程序如下:,void serial_init(void),TMOD=0 x20;/T1设置为工作方式2,TL1=0 xE8;/T1定时器初值,TH1=0 xE8;/T1定时器重装初值,PCON=0 x80;/SMOD设置为1,SCON=0 x40;/串行口方式1,TR1=1;/T1启动,ES=1;/开串口中断,EA=1;/开总中断,8.2.3 AT89C51串行口工作方式及波特率 采用C51,25,8.2.3 AT89C51串行口工作方式及波特率,3工作方式2,方式2为11,位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位),1个附加的第9位和1个停止位(1)。,发送数据时,第9位数据来自发送机SCON中的TB8,这可使用如下指令完成:,SETB TB8 ;TB8位置“1”,CLR TB8 ;TB8位置“0”,8.2.3 AT89C51串行口工作方式及波特率 3工作方,26,8.2.3 AT89C51串行口工作方式及波特率,3工作方式2,方式2的波特率是固定的,而且有两种。,由此公式可知,当SMOD为0时,波特率为fosc/64,当SMOD为1时,波特率为fosc/32。,8.2.3 AT89C51串行口工作方式及波特率 3工作方,27,8.2.3 AT89C51串行口工作方式及波特率,4工作方式3,方式3和方式2除波特率不同外,其它性能完全相同。,8.2.3 AT89C51串行口工作方式及波特率 4工作方,28,8.2.3 AT89C51串行口工作方式及波特率,8.2.3 AT89C51串行口工作方式及波特率,29,8.3 串行通信协议,8.3.1 RS-232协议,RS-232是目前被广泛使用的异步串行数字通信电气标准,由美国电子工业协会EIA(Electronics Industry Association)于1962年公布,1969年最后修订而成,RS(Recommended Standard)表明它是一种被推荐的标准。,1RS-232协议简介,8.3 串行通信协议 8.3.1 RS-232协议,3
展开阅读全文