您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第8章_AT89C51串行通信及其应用
第八章AT89C51串行通信及其应用8.1串行通信概述8.1.1并行通信和串行通信8.1.2异步通信和同步通信8.1.3单片机串行通信传输方式8.1.4串行数据通信的传输速率8.2AT89C51串行口8.2.1AT89C51串行口的结构8.2.2AT89C51串行口控制寄存器8.2.3AT89C51串行口的工作方式及波特率计算8.3串行通信协议8.3.1RS-232协议8.3.2RS-485/422A协议8.3.3串行通信的数据校验8.4串行通讯的应用8.1.1并行通信和串行通信计算机与外界的信息交换称为通信,通常有并行和串行两种通信方法。89C51单片机外部设备89C51单片机外部设备RXDTXDRXDTXD并行数据通信串行数据通信并行通信:所传送数据的各位同时发送或接收。串行通信:所传送数据的各位按顺序一位一位地发送或接收。8.1.2异步通信和同步通信串行通信的通信方式异步通信同步通信1.异步通信的数据传送异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。传送用一个起始位表示字符的开始,用停止位表示字符的结束。8.1.2异步通信和同步通信起始位:发送器是通过发送起始位而开始一个字符的传送。数据位:串行通信中所要传送的数据内容。在数据位中,低位在前,高位在后。数据位通常是8位。校验位:用于对字符传送作正确性检查,因此校验位是可以省略的。停止位:一个字符传送结束的标志,停止位在一帧数据的最后。停止位可能是1、1.5或2位,在实际应用中根据需要确定。位时间:一个格式位的时间宽度。帧(frame):从起始位开始到停止位结束的全部内容称之为一帧,帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。8.1.2异步通信和同步通信2.同步通信的数据传送同步数据传送时,发送端和接收端必须使用同一时钟源才能保证它们之间的准确同步,因此发送方除了传送数据外,还要同时传送时钟信号。SYN字符2SYN字符1连续传送的数据…8.1.3串行通信传输方式串行通信的传输方式单工制式半双工制式全双工制式1.单工(Simplex)制式发送端接收端数据线地线8.1.3串行通信传输方式2.半双工(HalfDuplex)制式发送/接收端接收/发送端数据线地线3.全双工(FullDuplex)制式发送/接收端接收/发送端数据线地线8.1.4串行通信的传输速率波特率bps(Bitpersecond)是数据传送的速率,其定义是每秒钟传送的二进制数的位数。波特率的倒数即为每位传输所需要的时间。则:1波特率(Bitpersecond)=1位/秒(1bit/s)数据传送的速率是120字符/s,若每个字符为10位的二进制数,则传送波特率为1200波特率。例如:8.2.1AT89C51串行口的结构AT89C51片内有一个全双工的串行通讯接口。串行移位控制寄存器(98H)接收SBUF(99H)输入移位寄存器接收控制器发送控制器门发送SBUF(99H)≥1定时器1串行口中断TIRITXD(P3.1)RXD(P3.0)内部总线888由发送缓冲寄存器SBUF、接收缓冲寄存器SBUF和移位寄存器三部分构成。8.2.2AT89C51串行口控制寄存器1.串行数据缓冲寄存器SBUFSBUF是串行数据缓冲寄存器。在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。它们有相同名字和单元地址,但它们不会出现冲突,因为在物理上,SBUF有两个:一个只能被CPU读出数据(接收寄存器),一个只能被CPU写入数据(发送寄存器)。8.2.2AT89C51串行口控制寄存器2.串行控制寄存器SCON它用于定义串行口的工作方式及实施接收和发送控制。8.2.2AT89C51串行口控制寄存器SM0、SM1工作方式功能描述波特率00方式08位移位寄存器fosc/1201方式110位UART可变10方式211位UARTfosc/64或fosc/3211方式311位UART可变(1)SM0、SM1:串行口工作方式控制位,其定义如表8-2所示:(2)SM2:多机通信控制位。8.2.2AT89C51串行口控制寄存器(4)TB8:方式2和方式3中,要发送的第9位数据。(5)RB8:方式2和方式3中,要接收的第9位数据。(3)REN:允许接收位。REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。该位由软件置位或复位。8.2.2AT89C51串行口控制寄存器(6)TI:发送中断标志位。可寻址标志位。方式0时,发送完第8位数据后,该位由硬件置位;其它方式下,在发送停止位之前由硬件置位,因此,TI=1表示帧发送结束,可由软件查询TI位标志,也可以请求中断。TI必须由软件清0。(7)RI:接收中断标志位。可寻址标志位。方式0时,接收完第8位数据后,该位由硬件置位;在其他工作方式下,当接收到停止位时,该位由硬件置位,RI=1表示帧接收完成,可由软件查询RI位标志,也可以请求中断。RI必须由软件清0。8.2.2AT89C51串行口控制寄存器3.电源管理寄存器PCON8.2.3AT89C51串行口工作方式及波特率1.工作方式0128345610111213数据输出移位脉冲RXDTXD89C5174LS164D7D6D5D4D3D2D1D08位移位寄存器输入/输出方式。多用于外接移位寄存器以扩展I/O端口8.2.3AT89C51串行口工作方式及波特率2.工作方式1方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。D0D1D2D3D4D5D6D71D0D11D7……00第n+1字符帧第n字符帧8位数据起始位停止位输出:当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认开始位0,就开始接收一帧数据。在方式1接收时,应先用软件清零RI和SM2标志。8.2.3AT89C51串行口工作方式及波特率2.工作方式1波特率计算:3212SMOD的溢出率)(定时器波特率TSMOD是控制寄存器PCON中的一位控制位,其取值有0和1两种状态。显然,当SMOD=0时,波特率=(定时器T1溢出率)/32,而当SMOD=1时,波特率=(定时器T1溢出率)/16。定时器的溢出率,就是指定时器一秒钟内的溢出次数。8.2.3AT89C51串行口工作方式及波特率定时初值计算:当定时/计数器T1用作波特率发生器时,通常选用定时初值自动重装的工作方式2,从而避免了通过程序反复装入计数初值而引起的定时误差,使得波特率更加稳定。波特率初值123222561SMODoscfT8.2.3AT89C51串行口工作方式及波特率例8-1:已知fosc=12MHz,SMOD=1,波特率=2400bit/s,求串行方式1时T1定时初值。并说明由此产生的实际波特率是否有误差,为什么?波特率初值123222561SMODoscfT解:根据HET6958.229042.262562400121012322256611初值若fosc=11.0592MHz,其余条件不变,则T1定时初值为:HET823224256240012100592.11322256161初值8.2.3AT89C51串行口工作方式及波特率当时钟频率选用11.0592MHZ时,很容易获得标准的波特率,所以很多单片机系统选用此数值的晶振。使用T1设置常用的波特率参见表8-4。8.2.3AT89C51串行口工作方式及波特率例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.3AT89C51串行口工作方式及波特率采用汇编语言程序设计:MOVTMOD,#20H;T1设置为工作方式2MOVTL1,#0E8H;T1定时器初值MOVTH1,#0E8H;T1定时器重装初值MOVPCON,#80H;SMOD设置为1MOVSCON,#40H;串行口方式1SETBTR1;T1启动SETBES;开串口中断SETBEA;开总中断8.2.3AT89C51串行口工作方式及波特率采用C51语言程序设计:程序如下:voidserial_init(void){TMOD=0x20;//T1设置为工作方式2TL1=0xE8;//T1定时器初值TH1=0xE8;//T1定时器重装初值PCON=0x80;//SMOD设置为1SCON=0x40;//串行口方式1TR1=1;//T1启动ES=1;//开串口中断EA=1;//开总中断}8.2.3AT89C51串行口工作方式及波特率3.工作方式2D0D1D2D3D4D5D6D70/1D0D110/1……100第n+1字符帧第n字符帧8位数据起始位停止位奇偶校验方式2为11位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位),1个附加的第9位和1个停止位(1)。发送数据时,第9位数据来自发送机SCON中的TB8,这可使用如下指令完成:SETBTB8;TB8位置“1”CLRTB8;TB8位置“0”8.2.3AT89C51串行口工作方式及波特率3.工作方式2642SMODoscf波特率方式2的波特率是固定的,而且有两种。由此公式可知,当SMOD为0时,波特率为fosc/64,当SMOD为1时,波特率为fosc/32。8.2.3AT89C51串行口工作方式及波特率4.工作方式33212SMOD的溢出率)(定时器波特率T方式3和方式2除波特率不同外,其它性能完全相同。8.2.3AT89C51串行口工作方式及波特率8.3串行通信协议8.3.1RS-232协议RS-232是目前被广泛使用的异步串行数字通信电气标准,由美国电子工业协会EIA(ElectronicsIndustryAssociation)于1962年公布,1969年最后修订而成,RS(RecommendedStandard)表明它是一种被推荐的标准。1.RS-232协议简介8.3串行通信协议8.3串行通信协议3.电气特性RS-232协议规定最大的通信速度为20Kb/s,现在已经出现高达2Mb/s速率的基于RS-232的通信系统。作为单片机系统,由于其处理能力有限,工作频率不是很高,一般可实现的最高波特率在112Kb/s左右。RS-232协议规定最长的通信距离是15m,目前市售的长线驱动器已经可以将通信距离延长到数千米。8.3串行通信协议4.TTL电平与RS-232电平的转换通信接口RXDTXDGND电平转换TTL/232EIA-RS-232C电平TTL电平89C51EIA-RS-232C电平:逻辑1–3~-15v逻辑0+3~+15vTTL电平:逻辑1+2.7~+5v逻辑00v~+0.5v单电源电平转换芯片:MAXIM公司的MAX232芯片等。8.3串行通信协议5.单片机通过RS-232与PC机组成点对点通信例8-3:设89C51单片机串行口工作于方式1,已知fosc=11.0592MHz,定时器T1作为波特率发生器,要求波特率=9600bit/s,SMOD=0,若和PC机串口通过RS-232总线连接,试编写串口接收字符中断子程序,接收到的字符存入40H单元。根据题目要求,编写串口接收字符中断子程序。(假设单片机的初始化设置已经参照例8-2设置完成)。分析:ORG0023H;串行口中断入口LJMPSERIALSERIAL:JNBRI,SERIAL_RET;若无接收标志,则中断返回M
本文标题:第8章_AT89C51串行通信及其应用
链接地址:https://www.777doc.com/doc-319471 .html