气象仪器课件:第8章 串行口通信接口

上传人:努力****83 文档编号:106945379 上传时间:2022-06-14 格式:PPT 页数:57 大小:667.50KB
返回 下载 相关 举报
气象仪器课件:第8章 串行口通信接口_第1页
第1页 / 共57页
气象仪器课件:第8章 串行口通信接口_第2页
第2页 / 共57页
气象仪器课件:第8章 串行口通信接口_第3页
第3页 / 共57页
点击查看更多>>
资源描述
第 8 章串行口通信接口8.1 串行通信基本知识8.2 MCS-51串口控制器8.3 串行口的工作方式8.4 波特率的制定方法8.5 串行通信的接口电路8.6 串口的编程与应用思考题与习题第 8 章串行口通信接口8.1.1 概述概述计算机与外界的信息交换称为通信。基本通信方式有两种:并行通信(parallel communication):所传送数据的各位同时发送或接收。串行通信(serial communication):所传送数据的各位按顺序一位一位地发送或接收。图8.1为这两种通信方式的示意图。8.1 串行通信基本知识串行通信基本知识第 8 章串行口通信接口图8.1 两种通信方式的示意图(a) 并行通信;(b) 串行通信第 8 章串行口通信接口在并行通信中,一个并行数据占多少二进制位,就需要多少根数据传输线。这种方式的特点是通信速度快,但传输线多,价格较贵,适合近距离传输;而串行通信仅需2根传输线即可,故在长距离传输数据时,成本较低。但由于它每次只能传输一位,因此传输速度较慢。下面介绍串行通信中的一些基本概念。第 8 章串行口通信接口8.1.2 串行通信的制式串行通信的制式在串行通信中,数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种制式。图8.2为三种制式的示意图。 第 8 章串行口通信接口图8.2 单工、半双工和全双工三种制式示意图第 8 章串行口通信接口在单工制式下,通信线的一端为发送器,一端为接收器,数据只能按照一个固定的方向传送,如图8.2(a)所示。在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,如图8.2(b)所示。在这种制式下,数据能从A站传送到B站,也可以从B站传送到A站,但是不能同时在两个方向上传送,即只能一端发送,一端接收。其收/发开关一般是由软件控制的电子开关。第 8 章串行口通信接口全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送,如图8.2(c)所示。在实际应用中,尽管多数串行通信接口电路具有全双工功能,但一般情况下,只工作于半双工制式下,因为这种用法简单、实用。第 8 章串行口通信接口波特率波特率(baud rate)波特率为每秒钟传送二进制数码的位数,单位为b/s,即位/秒,亦称波特。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,与字符帧格式有关。单片机串行通信的传送速率一般为509600波特。异步串行通信和同步串行通信异步串行通信和同步串行通信在异步串行通信中,数据是一帧一帧传送的,每帧数据包括一位起始位、一个字节数据、一位校验位和一位停止位。每帧数据之间可以插入若干个高电平的空闲位。第 8 章串行口通信接口异步串行通信要求发送数据和接收数据双方约定相同的数据格式和波特率,用启、停位来协同发送与接收过程。接收和发送端采用独立的移位脉冲控制数据的串行移出与移入,发送移位脉冲与接收移位脉冲是异步的,因此称为异步串行通信。在异步串行通信中,每帧数据只有一个字节数据,也不需要同步脉冲,因此应用较为灵活。但由于每帧需要插入启/停位,因此传输速度较慢。 第 8 章串行口通信接口同步串行通信是一种连续的数据传送方式。每次传送一帧数据,每帧数据由同步字符和若干个数据及校验字符组成。同步串行通信中,发送和接收双方有同一个同步脉冲控制,数据位的串行移出移入是同步的,因此称为同步串行通信。同步串行通信速度快,适应于大量数据传输的场合,但需要同步脉冲信号。 第 8 章串行口通信接口MCS-51有一个可编程的全双工串行通信接口,可作为通用异步接收/发送器(UART- Universal Asychronous Receiver/Transmitter),也可作为同步移位寄存器。其帧格式可为8位、10位、11位,并可设置多种不同的波特率。它通过引脚RXD和TXD与外界进行通信。8.2 MCS-51串口控制器串口控制器第 8 章串行口通信接口MCS-51内部有两个物理上独立的接收、发送缓冲器SBUF。SBUF属于特殊功能寄存器。一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是对发送缓冲器进行操作。CPU在写SBUF时,就是修改发送缓冲器;读SBUF,就是读接收缓冲器的内容。接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据。第 8 章串行口通信接口8.2.1 串口控制寄存器串口控制寄存器(SCON)SCON的字节地址是98H,其格式及各位的含义如下:位名称 SM0 SM1 SM2 REN TB8 RB8 TI RI 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SM0、SM1串行口4种工作方式的选择位。串行口的4种工作方式如表8.1所示。第 8 章串行口通信接口表表8.1 串行口的串行口的4种工作方式种工作方式SM0 SM1 工作方式 功 能 说 明 波 特 率 0 0 0 同步移位寄存器方式(用于扩展 I/O 口) fosc/12 0 1 1 8 位异步收、发,一帧为 10 位 由定时器控制 1 0 2 9 位异步收、发,一帧为 11 位 fosc/64 或 fosc/32 1 1 3 9 位 11 位异步收、发,一帧为 11 位 由定时器控制 第 8 章串行口通信接口 SM2多机通信控制位,用于方式2或方式3中。当串行口以方式2或方式3接收时,如果SM2=1,只有当接收到的第9位数据(RB8)为“1”时,才将接收到的前8位数据送入SBUF,并将RI置“1”,产生中断请求;当接收到的第9位数据(RB8)为“0”时,则将接收到的前8位数据丢弃。如果SM2=0,则不论第9位数据是“1”还是“0”,都将前8位数据送入SBUF中,并将RI置“1”,产生中断请求。在方式1时,如果SM2=1,则只有收到停止位时才会激活RI。在方式0时,SM2必须为0。第 8 章串行口通信接口 REN允许串行接收位,由软件置“1”或清“0”。REN=1时,允许串行口接收数据;REN=0时,禁止串行口接收数据。 TB8发送的第9位数据。方式2和方式3时,TB8是要发送的第9位数据,可作为奇偶校验位使用,也可作为地址帧或数据帧的标志。其中,TB8=1为地址帧,TB8=0为数据帧。第 8 章串行口通信接口 RB8接收到的第9位数据。方式2和方式3时,RB8存放接收到的第9位数据。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。 TI发送中断标志位。发送中,TI必须保持零电平。方式0时,串行发送第8位数据结束时由硬件置“1”。其它工作方式,串行口发送停止位的开始时置“1”。TI=1,表示一帧数据发送结束,可供软件查询,也可申请中断。CPU响应中断后,在中断服务程序中向SBUF写入要发送的下一帧数据,TI必须由软件再清“0”。 第 8 章串行口通信接口 RI接收中断标志位。接收中RI必须保持零电平。方式0时,接收完第8位数据时,RI由硬件置1。其它工作方式,串行口接收到停止位时,该位置“1”。RI=1,表示一帧数据接收完毕,并申请中断,要求CPU从接收SBUF取走数据。该位的状态也可供软件查询。如果再接收,RI必须由软件再清“0”。第 8 章串行口通信接口8.2.2 特殊功能寄存器特殊功能寄存器(PCON)PCON的字节地址为87H,没有位寻址功能。其格式如下: SMOD SMOD:波特率选择位。当SMOD=1时,比SMOD=0时的波特率加倍,因此也称SMOD位为波特率倍增位。第 8 章串行口通信接口8.3.1 方式方式0方式0为同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口。8位数据为一帧,不设起始位和停止位,先发送或接收最低位。波特率固定为fosc/12。方式0发送 当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个正脉冲,串行口即把SBUF中的8位数据以fosc/12的固定波特率从RXD引脚串行输出,低位在先,TXD引脚输出同步移位脉冲,发送完8位数据后将中断标志位TI置“1”。时序如图8.4所示。8.3 串行口的工作方式串行口的工作方式第 8 章串行口通信接口图8.4 方式0发、收时序第 8 章串行口通信接口方式0接收 方式0接收时,REN为串行口接收允许接收控制位,REN=0,禁止接收。方式0下,SCON中的TB8、RB8位没有用到,发送或接收完8位数据由硬件将TI或中断标志位RI置“1”,CPU响应中断。TI或RI标志位须由用户软件清“0”,可采用如下指令:CLR TI;TI位清“0”CLR RI ;RI位清“0”方式0时,SM2位(多机通信控制位)必须为0。第 8 章串行口通信接口8.3.2 方式方式1方式1用于数据的串行发送和接收。TXD脚和RXD脚分别用于发送和接收数据。方式1收、发一帧的数据为10位,1位起始位(0),8位数据位,1位停止位(1),先发送或接收最低位。波特率由下式确定:方式1波特率=(2SMOD/32)定时器T1的溢出率SMOD为PCON寄存器的最高位的值(0或1)。 第 8 章串行口通信接口方式1发送 方式1输出时,数据位由TXD端输出。当CPU执行一条数据写发送缓冲器SBUF的指令时,就启动发送。图8.5(a)TX时钟的频率就是发送的波特率。发送开始时,内部发送控制信号变为有效,将起始位向TXD输出。此后,每经过一个TX时钟周期,便产生一个移位脉冲,并由TXD输出一个数据位。8位数据位全部发送完毕后,中断标志位TI置“1”。TI必须由用户清0,以便下一次发送。第 8 章串行口通信接口图8.5 方式1发、收时序(a) 发送时序;(b) 接收时序第 8 章串行口通信接口方式1接收 接收数据的时序如图8.5(b)所示。当CPU采样到RXD端从1到0的跳变时(3次采样中至少2次有效),开始接收数据。一帧数据接收完毕以后,必须同时满足以下两个条件,这次接收才真正有效,然后RI自动置1。(1) RI=0。(2) SM2=0或收到的停止位=1。若这两个条件不满足,则收到的数据不能装入SBUF,该帧数据将丢失。中断标志RI必须由用户清0,以便下一次接收。通常情况下,串口以方式1工作时,SM2=0。 第 8 章串行口通信接口8.3.3 方式方式2方式2为9位异步通信方式。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控的第9位数据和1位停止位。方式2的波特率由下式确定:方式2波特率=(2SMOD/64)fosc方式2发送 发送前,先根据通信协议由软件设置TB8(例如,双机通信时的奇偶校验位或多机通信时的地址/数据的标志位)。方式2发送数据波形如图8.6所示。第 8 章串行口通信接口图8.6 方式2发送时序第 8 章串行口通信接口方式2接收 SM0、SM1=10,且REN=1。数据由RXD端输入,接收11位信息。当位检测逻辑采样到RXD引脚从1到0的负跳变,并判断起始位有效后,便开始接收一帧信息。在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF。 (1) RI=0,意味着接收缓冲器为空。(2) SM2=0或接收到的第9位数据位RB8=1。第 8 章串行口通信接口当上述两个条件满足时,接收到的数据送入SBUF(接收缓冲器),第9位数据送入RB8,并将RI置“1”。若不满足这两个条件,则接收的信息将被丢弃。串行口方式2接收数据的时序波形如图8.7所示。由方式2的TI,RI也必须由用户清0,才能进行下一次的发送和接收。第 8 章串行口通信接口图8.7 方式2接收时序第 8 章串行口通信接口8.3.4 方式方式3当SM0、SM1=11时,串行口工作在方式3。方式3为波特率可变的9位异步通信方式,除波特率外,方式3和方式2相同。方式3发送和接收数据的时序波形见方式2的图(图8.6和图8.7)。方式3的波特率由下式确定:方式3波特率=(2SMOD/32)定时器T1的溢出率第 8 章串行口通信接口方式0和方式2的波特率是固定的;方式1和方式3的波特率可由定时器T1的溢出率来确定。(1) 方式0时,波特率固定为时钟频率fosc的1/12,且不受SMOD位的值的影响。若fosc=12 MHz,则波特率为fosc/12,即1 Mb/s。(2) 方式2时,波特率与SMOD位的值有关。方式2波特率=(2SMOD/64)fosc若fosc=12 MHz,则当SMOD=0时,波特率=187.5 kb/s;当SMOD=1时,波特率=375 kb/s。8.4 波特率的制定方法波特率的制定方法第 8 章串行口通信接口(3) 串行口工作在方式1或方式3时,常用定时器T1作为波特率发生器,其波特率为:波特率=(2SMOD/64)T1的溢出率实际设定波特率时,T1常设置为方式2定时(自动装初值),这种方式不仅操作方便,也可避免因软件重装初值而带来的定时误差。实际使用时,经常根据已知波特率和时钟频率来计算T1的初值。为避免繁杂的初值计算,常用的波特率和初值间的关系列成表8.2,以供查用。第 8 章串行口通信接口表表8.2 定时器定时器T1产生的常用波特率产生的常用波特率定时器 T1 波特率/(b/s) fosc/MHz SMOD C/ T 方式 初值 方式 0:1 M 方式 2:375 k 方式 1、3:62.5 k 19.2 k 9.6 k 4.8 k 2.4 k 1.2 k 137.5 k 110 12 12 12 11.0592 11.0592 11.0592 11.0592 11.0592 11.986 6 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 FFH FDH FDH FAH F4H E8H 1DH 72H 第 8 章串行口通信接口表8.2中有两点需要注意: 时钟振荡频率为12 MHz或6 MHz时,表中初值和相应的波特率之间有一定误差。例如,FDH的对应的理论值是10416波特(时钟6 MHz),与9600波特相差816波特。消除误差可以通过调整时钟振荡频率fosc来实现。例如采用的时钟振荡频率为11.0592 MHz。 如果串行通信选用很低的波特率,例如,波特率选为55,可将定时器T1设置为方式1定时。但在这种情况下,T1溢出时,需要在中断服务程序中重新装入初值。中断响应时间和执行指令时间会使波特率产生一定的误差,可用改变初值的方法加以调整。第 8 章串行口通信接口例例:若51单片机的时钟振荡频率为11.0592 MHz,选用T1为方式2定时作为波特率发生器,波特率为2400 b/s,求初值。 结果可直接从表8.2中查到,为F4H。这里因时钟振荡频率选为11.0592 MHz,计算过程中无余数,可使初值为整数,从而产生精确的波特率。第 8 章串行口通信接口8.5.1 RS-232C接口接口 RS-232C是使用最早,应用最多的一种异步串行通信总线标准。它是美国电子工业协会(EIA)1962年公布,1969年最后修定而成的。其中,RS表示recommended standard,232是该标准的标识号,C表示一次修定。1987年修订为EIA-232D,1991年修订为EIA-232E,1997年修订为EIA-232F。由于修订的内容不多,因此人们习惯于早期的名字“RS-232C”。8.5 串行通信的接口电路串行通信的接口电路第 8 章串行口通信接口RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终端设备(DCE)之间的电气性能。由于MCS-51系列单片机本身有一个全双工的串行接口,因此该系列单片机用RS-232C串行接口总线非常方便。下面介绍RS-232C的一些主要特性。第 8 章串行口通信接口1. 机械特性机械特性RS-232C接口规定使用25针连接器,但一般应用中并不一定用到RS-232C标准的全部信号线,而常常使用9针连接器,连接器的引脚定义如图8.8和表8.3所示。图中所示为阳头定义,通常的PC机主板上都采用这种器件,对应的阴头用于连接线。使用时要注意每行的序号顺序是相反的。第 8 章串行口通信接口图8.8 9针RS-232C连接器(a) 阳头;(b) 阴头第 8 章串行口通信接口表表8.3 9针针RS-232C接口器引脚定义接口器引脚定义序 号 名 称 功 能 信号方向 1 DCD 数据载波检测 输入 2 RXD 接收数据(串行输入) 输入 3 TXD 发送数据(串行输出) 输出 4 DTR DTE 就绪(数据终端准备就绪) 输出 5 GND 信号地 6 DSR DCE 就绪(数据通信就绪) 输出 7 RTS 请求发送 输出 8 CTS 清除传送 输入 9 RI 振铃指示 输入 第 8 章串行口通信接口2. 电气特性电气特性RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,因此它的电平不同于TTL,而是采用负逻辑电平,即逻辑“0”:+3+15 V;逻辑“1”:-3-15V。因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!RS-232C串行接口总线适用于:设备之间的通信距离不大于15 m的场合。第 8 章串行口通信接口3. RS-232C电平与电平与TTL电平转换器电平转换器MCS-51系列单片机串行口与PC机的RS-232C接口不能直接对接,必须进行电平转换。常用的有MAX232等芯片。它能满足RS-232C的电气规范,且仅用+5 V电源,内置电子泵电压转换器将+5 V转换成-10+10 V。该芯片与TTL/CMOS电平兼容,片内有2个发送器,2个接收器,使用比较方便。图8.9为MAX232的引脚和接线图。第 8 章串行口通信接口图8.9 MAX232接口芯片(a) 引脚图;(b) 接线图 第 8 章串行口通信接口8.5.2 RS-485接口接口由于串行通信简单易用,因此在工业领域也大量使用串行通信作为数据交换的手段。可是工业环境通常会有噪声干扰传输线路,在用RS-232C串行通信进行传输时经常会受到外界的电气干扰而使信号发生错误。为了解决以上问题,RS-485串行通信方式就应运而生了。RS-232C利用传输信号线与公共地之间的电压差,而RS-485则利用信号导线之间的信号电压差。它通过传输线驱动器,把逻辑电平变换成电位差,完成始端的信号传送;通过传输线接收器,把电位差转换成逻辑电平,完成终端的信息接收,如图8.10所示。 第 8 章串行口通信接口图8.10 RS-485接口示意图第 8 章串行口通信接口RS-485比RS-232C传输距离长、速度快,其传输速率最大可达10 Mb/s,最大距离可达1200 m。RS-485是一点对多点的通信接口,一般采用双绞线的结构。普通的PC机一般不带RS-485接口,因此要使用RS-232C/RS-485转换器。在计算机和单片机组成的RS-485通信系统中,如图8.11所示,下位机由单片机系统组成,主要完成工业现场信号的采集和控制。第 8 章串行口通信接口上位机为工业PC机,负责监视下位机的运行状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态和工业现场被控设备的工作状态。系统中的各节点(包括上位机)的识别是通过设置不同的站地址来实现的。对于单片机,可以通过MAX1487等芯片来完成TTL/RS-485的电平转换。图8.12和表8.4分别是它的引脚和引脚说明。第 8 章串行口通信接口图8.11 RS-485总线组成的测控系统 第 8 章串行口通信接口8.6.4 单片机单片机与与PC机的串行通信机的串行通信在8.5.1节曾介绍,MCS-51系列单片机串行口与PC机的RS-232C接口不能直接对接,必须进行电平转换。常用的电平转换器件有MAX232等芯片。本节将举一个例子说明PC机与51单片机双机通信的软件设计的要点。图8.18是单片机与PC机串口通信的硬件连接原理图。 第 8 章串行口通信接口图8.18 单片机与PC的串行接口图第 8 章串行口通信接口例子的功能为:PC机通过测试程序的发送按键将发送区的字符发送给单片机。单片机接收数据后,依次装入内部接收RAM缓冲区中;并在按下发送键时,将缓冲区数据全部返回给PC机。第 8 章串行口通信接口1. MCS-51单片机通信程序单片机通信程序51单片机通过中断方式接收PC机发送过来的字节数据,通过查询方式获得键输入。程序采用如下设置:串行口:工作方式3,波特率为9600 b/s,11位信息帧,1位起始位,8位数据位,1位奇偶校验位,1位停止位。定时器:T1方式2工作,计数常数为FDH,SMOD=0。程序区:程序复位入口为0000H,串行口中断入口为0023H。数据区:寄存器区0为通用寄存区;寄存器区1为串行口接收中断寄存器区;30H3EH为栈空间操作区;3FH为接收数据指针位;40H以后作为接收数据缓冲区。第 8 章串行口通信接口2. PC机通信软件机通信软件在Windows系统中,通常采用Microsoft Communications Control(以下简称MSComm)控件进行串口编程。MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。MSComm控件在串口编程时非常方便,程序员不必花时间去了解较为复杂的API函数,而且在Visual C+(VC)、Visual Basic(VB)、Delphi等语言中均可方便使用。下面就以Visual Basic为例说明PC机串行通信软件编制。第 8 章串行口通信接口1. 计算机并行通信和串行通信各有什么特点?2. 波特率的具体含义是什么?为什么说串行通信的双方波特率必须相同?3. 试叙述利用SM2控制位进行多级通信的过程。4. 用Proteus仿真两个89C51单片机的通信。其功能为:单片机A在P1口设置8个键;单片机B在P1口有8个LED显示,在P3.7上有一个按键;两个单片机通过串口连接。单片机B作为主机,单片机A作为从机。当B机的键按下后,通过串口向A发出一次请求,A把8个键的状态通过串口传给B,B通过P1口显示A机键的状态。思考题与习题思考题与习题
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!