单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用

上传人:E**** 文档编号:89473033 上传时间:2019-05-25 格式:PPT 页数:41 大小:1.14MB
返回 下载 相关 举报
单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用_第1页
第1页 / 共41页
单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用_第2页
第2页 / 共41页
单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用_第3页
第3页 / 共41页
单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用_第4页
第4页 / 共41页
单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用》由会员分享,可在线阅读,更多相关《单片机原理与应用 教学课件 ppt 作者 杭和平 第8章_AT89C51串行通信及其应用(41页珍藏版)》请在金锄头文库上搜索。

1、第八章 AT89C51串行通信及其应用,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.1 并行通信和串行通信,计算机与外界的信息交换称为通信,通常有并行和串行两种通

2、信方法。,并行通信:所传送数据的各位同时发送或接收。,串行通信:所传送数据的各位按顺序一位一位地发送或接收。,8.1.2 异步通信和同步通信,串行通信的通信方式,异步通信,同步通信,1异步通信的数据传送,异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。传送用一个起始位表示字符的开始,用停止位表示字符的结束。,8.1.2 异步通信和同步通信,起始位:发送器是通过发送起始位而开始一个字符的传送。 数据位:串行通信中所要传送的数据内容。在数据位中,低位在前,高位在后。数据位通常是8位。 校验位:用于对字符传送作正确性检查,因此校验位是可以省略的。 停止位:一个字符传送结束的标志

3、,停止位在一帧数据的最后。停止位可能是1、1.5或2位,在实际应用中根据需要确定。 位时间:一个格式位的时间宽度。 帧(frame):从起始位开始到停止位结束的全部内容称之为一帧,帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。,8.1.2 异步通信和同步通信,2同步通信的数据传送,同步数据传送时,发送端和接收端必须使用同一时钟源才能保证它们之间的准确同步,因此发送方除了传送数据外,还要同时传送时钟信号。,8.1.3 串行通信传输方式,串行通信的传输方式,单工制式,半双工制式,全双工制式,1单工(Simplex)制式,8.1.3 串行通信传输方式,2半双工(Half Du

4、plex)制式,3全双工(Full Duplex)制式,8.1.4 串行通信的传输速率,波特率bps(Bit per second)是数据传送的速率,其定义是每秒钟传送的二进制数的位数。 波特率的倒数即为每位传输所需要的时间。则: 1波特率(Bit per second)=1位/秒(1 bit/s),数据传送的速率是120字符/s,若每个字符为10位的二进制数,则传送波特率为 1200 波特率。,例如:,8.2.1 AT89C51串行口的结构,AT89C51片内有一个全双工的串行通讯接口。,由发送缓冲寄存器SBUF、接收缓冲寄存器SBUF和移位寄存器三部分构成。,8.2.2 AT89C51串行

5、口控制寄存器,1串行数据缓冲寄存器SBUF,SBUF是串行数据缓冲寄存器。在逻辑上,SBUF只有一个,既表示发送寄存器,又表示接收寄存器。它们有相同名字和单元地址,但它们不会出现冲突,因为在物理上,SBUF有两个:一个只能被CPU读出数据(接收寄存器),一个只能被CPU写入数据(发送寄存器)。,8.2.2 AT89C51串行口控制寄存器,2串行控制寄存器SCON,它用于定义串行口的工作方式及实施接收和发送控制。,8.2.2 AT89C51串行口控制寄存器,(1)SM0、SM1:串行口工作方式控制位,其定义如表8-2所示:,(2)SM2:多机通信控制位。,8.2.2 AT89C51串行口控制寄存

6、器,(4)TB8:方式2和方式3中,要发送的第9位数据。,(5)RB8:方式2和方式3中,要接收的第9位数据。,(3)REN:允许接收位。,REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。该位由软件置位或复位。,8.2.2 AT89C51串行口控制寄存器,(6)TI:发送中断标志位。,可寻址标志位。方式0时,发送完第8位数据后,该位由硬件置位;其它方式下,在发送停止位之前由硬件置位,因此,TI=1表示帧发送结束,可由软件查询TI位标志,也可以请求中断。TI必须由软件清0。,(7)RI:接收中断标志位。,可寻址标志位。方式0时,接收完第8位数据后,该位由硬件置

7、位;在其他工作方式下,当接收到停止位时,该位由硬件置位,RI=1表示帧接收完成,可由软件查询RI位标志,也可以请求中断。RI必须由软件清0。,8.2.2 AT89C51串行口控制寄存器,3电源管理寄存器PCON,8.2.3 AT89C51串行口工作方式及波特率,1工作方式0,8位移位寄存器输入/输出方式。多用于外接移位寄存器以扩展I/O端口,8.2.3 AT89C51串行口工作方式及波特率,2工作方式1,方式1为波特率可变的10位异步通讯接口方式。发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。,输出:当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。串行数据从TX

8、D引脚输出,发送完一帧数据后,就由硬件置位TI。,输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认开始位0,就开始接收一帧数据。在方式1接收时,应先用软件清零RI和SM2标志。,8.2.3 AT89C51串行口工作方式及波特率,2工作方式1,波特率计算:,SMOD是控制寄存器PCON中的一位控制位,其取值有0和1两种状态。显然,当SMOD0时,波特率 (定时器T1溢出率) /32,而当SMOD1时,波特率 (定时器T1溢出率) /16。 定时器的溢出率,就是指定时器一秒钟内的溢出次数。,8.2.3 AT89C51串行口工作方式及波特率,定时初值计算:,当定时/计数器

9、T1用作波特率发生器时,通常选用定时初值自动重装的工作方式2,从而避免了通过程序反复装入计数初值而引起的定时误差,使得波特率更加稳定。,8.2.3 AT89C51串行口工作方式及波特率,例8-1:已知fosc=12MHz,SMOD=1,波特率=2400 bit/s,求串行方式1时T1定时初值。并说明由此产生的实际波特率是否有误差,为什么?,解:根据,若fosc=11.0592MHz,其余条件不变,则T1定时初值为:,8.2.3 AT89C51串行口工作方式及波特率,当时钟频率选用11.0592MHZ时,很容易获得标准的波特率,所以很多单片机系统选用此数值的晶振。使用T1设置常用的波特率参见表8

10、-4。,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串行口工作方式及

11、波特率,采用汇编语言程序设计: MOV TMOD,#20H ; T1设置为工作方式2 MOV TL1,#0E8H ; T1定时器初值 MOV TH1,#0E8H ; T1定时器重装初值 MOV PCON,#80H ; SMOD设置为1 MOV SCON,#40H ; 串行口方式1 SETB TR1 ; T1启动 SETB ES ; 开串口中断 SETB EA ; 开总中断,8.2.3 AT89C51串行口工作方式及波特率,采用C51语言程序设计: 程序如下 : void serial_init (void) TMOD=0x20; / T1设置为工作方式2 TL1=0xE8; / T1定时器初值

12、 TH1=0xE8; / T1定时器重装初值 PCON=0x80; / SMOD设置为1 SCON=0x40; / 串行口方式1 TR1=1; / T1启动 ES=1; / 开串口中断 EA=1; / 开总中断 ,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工

13、作方式2,方式2的波特率是固定的,而且有两种。,由此公式可知,当SMOD为0时,波特率为fosc/64,当SMOD为1时,波特率为fosc/32。,8.2.3 AT89C51串行口工作方式及波特率,4工作方式3,方式3和方式2除波特率不同外,其它性能完全相同。,8.2.3 AT89C51串行口工作方式及波特率,8.3 串行通信协议,8.3.1 RS-232协议,RS-232是目前被广泛使用的异步串行数字通信电气标准,由美国电子工业协会EIA(Electronics Industry Association)于1962年公布,1969年最后修订而成,RS(Recommended Standard

14、)表明它是一种被推荐的标准。,1RS-232协议简介,8.3 串行通信协议,8.3 串行通信协议,3电气特性,RS-232协议规定最大的通信速度为20Kb/s,现在已经出现高达2Mb/s速率的基于RS-232的通信系统。作为单片机系统,由于其处理能力有限,工作频率不是很高,一般可实现的最高波特率在112Kb/s左右。 RS-232协议规定最长的通信距离是15m,目前市售的长线驱动器已经可以将通信距离延长到数千米。,8.3 串行通信协议,4TTL电平与RS-232电平的转换,EIA-RS-232C电平: 逻辑1 3-15v 逻辑0 +3+15v TTL电平: 逻辑1 +2.7+5v 逻辑0 0v

15、+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设置完成) 。,分析:,ORG 0023H ; 串行口中断入口 LJMP SERIAL SERIAL:JNB RI,SE

16、RIAL_RET ; 若无接收标志,则中断返回 MOV 40H,SBUF ; 接收到的字符存入40H单元 CLR RI ; 清除接收标志 SERIAL_RET: RETI ; 中断子程序返回,采用汇编语言程序设计:,采用C51语言程序设计: 程序如下 : unsigned char data rcv_data _at_ 0x40; void serial(void) interrupt 4 using 2 / 串行口中断 unsigned char c; if (RI) c = SBUF; rcv_data = c; RI=0; ,8.3 串行通信协议,8.3.2 RS-485/422A协议,RS-422A通信标准是EIA(Electronic Industry Association)公布的“平衡电压数字接口电路的电气特性”标准 。 RS-422A总线信号传输速率最大为10Mb/s;在此

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号