资源描述
,第二级,第三级,第四级,第五级,第,5,章 串行数字通信,*,第,5,章 串行数字通信,概述,串行口的结构与工作原理,串行口的控制寄存器,串行口的工作方式,串行口的应用编程,1,5.2.1,概 述,单片机应用与数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。如下图所示。,2,数据通信方式有两种:并行通信与串行通信,并行通信,:所传送数据的各位同时发送或接收,数据有多少位就需要多少根数据线。,特点,:速度快,成本高,适合近距离传输。,缺点,:,当距离较远、位数又多时,会导致通信线路复杂且成本高。,如计算机并口,打印机,,8255,。,串行通信,:所传送数据的各位按顺序一位一位 地发送或接收。只需一根数据,一根地线,共,2,根 (如双向通信发送和接收各需,1,根数据线。),特点,:成本低,硬件方便,适合远距离通信,,缺点,:,传输速度低。,3,4,串行通信的分类:同步串行通信和异步串行通信,一、异步通信,:,通信的双方应该有一个约定,什么时候开始发送,什么时候发送完毕;接收方收到的信息是否正确等,这就是,通信协议,。,异步串行通信一帧数据格式:,一个起始位“,0”,表示字符的开始,然后是,5,8,位数据即该字符的代码,规定低位在前,高位在后,接 下来是奇偶校验位,(,可省略,),,最后以停止位“,1”,表示字符的结束。,5,优点:硬件结构简单。,缺点:传输速度慢。,P,1,D0,D1,D2,D3,D4,D5,D6,D7,P,1,0,第,n,个字符(一帧),n-1,n+1,0,D0,起始位,数据位(,5,8,位),校验位,停止位,6,二、同步通信,在同步通信中,发送方在数据或字符开始处就用同步字符,(,常约定,1,2,个字节,),指示一帧的开始,由时钟来实现发送端和接收端同步,接收方一旦检测到与规定的同步字符符合,下面 就连续按顺序传送若干个数据,最后发,校,验字节。见下图:,SYN,字符,1,SYN,字符,2,数据,1,数据,2,.,数据,n,连续传送,n,个数据,校验,7,三、单工、半双工、全双工通信方式,按通信方向分类:单工、半双工、全双工通信方式,1,单工方式,:,一端是发送端,另外一端是接收端:数据传输仅能沿一个方向,不能实现反向传输。,2.,半双工方式,每端口有一个发送器和一个接收器,通过开关连接在线路上,数据可以双向传送,但不能同时发送和接收,.,要通过换向器转换方向。即接收和发送不能同时进行,只能分时发送和接收,甲机发送乙机接收,或者乙机发送甲机接收,因而两机之间只需一条数据线。,8,3.,全双工方式,通信双方用两个独立的收发器单独连接,可以同时发送和接收数据,因而提高了速度。全双工形式的串行通信必须使用两根数据线。,9,1.,实现数据格式化,因为,CPU,发出的数据是并行数据,接口电路应实现不同串行通信方式下的数据格式化任务,如自动生成起止方式的帧数据格式,(,异步方式,),或在待传送的数据块前加上同步字符等。,在串行传输中,通信的双方都按通信协议进行,所谓,通信协议,就是通信双方必须共同遵守的 一种约定,约定包括数据的格式、同步的方式、传送的步骤、检纠错方式及控制字符的定义 等。,串行接口的基本任务就是:,10,2.,进行串、并转换,在发送端,接口将,CPU,送来的并行信号转换成串行数据进行传送;而在接收端,接口要将接 收到串行数据变成并行数据送往,CPU,,由,CPU,进行处理。,3.,控制数据的传输速率,接口应具备对数据传输率,波特率的控制选择能力,即具有波特率发生器。,4.,进行传送错误检测,在发送时,对传送的数据自动生成校验位或校验码,在接收端能检查校验位或校验 码,以确定传送中是否有误码。,11,51,系列单片机内有一个全双工的异步通信接口,通过对串行接口写控制字可以选择其数据格 式,同时内部有波特率发生器,提供可选的波特率,可完成双机通信或多机通信。,四、波特率,单位时间内传送的信息量。在计算机中,以每秒传送的二进制位数为单位。,例如:,100,字符,/,秒,,1,个字符,11,位,,波特率为:,10011=1100,(波特),平均每位传送占用时间,Td=1/1100=0.909ms,12,(一)通信线的连接,通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离,.,不同的通信距离,串行通信电路有不同的连接方法。,五,.,串行通信总线标准及接口,13,RXD,TXD,GND,RXD,TXD,GND,RXD,TXD,GND,电,平,转,换,RXD,TXD,GND,RXD,TXD,GND,电,平,转,换,RXD,TXD,GND,微机,微机其他设备,较远距离传送电路,近距离传送电路,14,信号的调制与解调,电话线计算机,串行通信口传输的信号是数字信号,(,方波脉冲序列,),,它要求通信媒介,(,如电缆、双绞线,),必须有比方波本身频率更宽的频带,否则高颁分量将被滤掉。,在远距离通信时,通常是利用电话线传送信息。,由于电话线频带很窄,约,303000Hz,,如图所示,若用数字信号直接通信,经过传送线后,信号就会产生畸变,从而导致通信失败。,电话线,计算机,图数字信号通过电话线传送产生畸变,15,利用调制手段,将数字方波信号变换成某种能在通信线上传输而不受影响的波形信号,正弦波正是最理想的选择。,不仅因为产生正弦波很方便,更重要的是正弦波不易受通信线,(,电话线,),固有频率的影响。,将载波信号,(,待传送的数字信号,),通过一种信号进行编码称为,调制,。该信号的恢复称为,解调,,相应的设备称为,调制器,(Mdu2acor),和,解调器,(,DemodulaM,),。,由于串行通信大都是,双向,进行的,通信线路的任一端既需要调制器也需要解调器,将调制器和解调器合二为一的装置称为,调制解调器,,又称,MODEM,。,16,微,机,接,口,调,制,解,调,器,调,制,解,调,器,接,口,微,机,电,话,分,机,电,话,分,机,远距离传送电路,数字信号通过调制器变成模拟信号通过电话线传送到对方,接收方通过解调器将模拟信号转换成数字信号接收。,17,(二)串行通信接口总线标准,测控系统中,计算机通信主要采用异步串行通信方式,常用的异步总线标准有三种:,RS-232,(,RS-232A RS-232B RS-232C,),RS-449,(,RS422 RS423 RS485,),20mA,电流环,这里重点介绍,RS-232,RS-232C,:速率:,20Kbit/S,,,最大通信距离 :,15m,RS422,:,10Mbit/s,,,:300m,90Kbit/s,,:,1200m,18,抗干扰能力,采用标准的通信接口,本身具有一定的抗干扰能力,但是工业现场的情况往往很恶劣,因而要根据具体情况进行选择。,RS232C,:一般场合,RS422,:共模信号比较强,光纤:电磁干扰较强,19,(三),RS,232C,美国电子工业协会(,EIA,)公布的一种异步通信标准。,RS232C,标准是:,设备之间通信的距离不大于,15,米,最大传输速率,20KB/S,采用负逻辑:“,1”5V 15V,“0”+5V ,+,15V,不带负载时输出电平:,25V +25V,输出短路电流:,0.5A,最大负载电容,:2500pF,当计算机采用,RS232,标准时必须通过电平,,MAX232,是,EIA,和,TTL,电平转换芯片。内部具有电压提升电路,并有两路接收器和发送器。其连线和引脚如图,20,TTL,电平可以由专用集成电路转换成,RS232C,标准,;,如,:MC1488,或,75188 TTL RS232C,从,MC1489,或,75189 RS232C TTL,由于,MC1488,需要采用,12V,电源,一般在单片机通信中大量使用的是只需要,+5V,电源、具有发送和接收的一体化芯片,如:,MAX232,、,ICL232,、,ADM202,等。,21,MCS51,之间的双机通信,RXD,TXD,GND,TXD,GND,8xx51,8xx51,RXD,MCS,51,和,PC,机的,双机通信,22,5.2,串行口的结构,与工作原理,51,单片机有一个可编程的全双工异串行通信接口,它可作,UART,用,也可作同步移位寄存器,其帧格式可有,8,位、,10,位或,l l,位,并能设置各种波特率,给使用者带来很大的灵活性。,23,5.2.1,串行口的内部结构,MCS-51,串行口的结构由串行口控制电路、发送电路和接收电路,3,部分组成,其结构如图所示。发送电路由发送缓冲器,SBUF,和发送控制电路组成,用于串行口的发送;接收电路由接收缓冲器,SBUF,和接收控制电路组成,用于串行口的接收。,MOV A,SBUF,MOV SBUF,A,24,5 l,单片机通过引脚,RXD(P3.0),串行数据接收端,),和引脚,TXD(P3.l),串行数据发送端,),与外界进行通信。,图中有两个物理上独立的接收、发送缓冲器,SBUF,,它们占用同一地址,99H,,可同时发送、接收数据。,发送缓冲器只能写入,不能读出,,CPU,写,SBUF,,一方面修改发送寄存器,同时启动数据串行发送;,接收缓冲器只能读出、不能写入。读,SBUF,,就是读接收寄存器。,25,1,串口发送过程,当单片机执行“写”,SBUF,命令(如,MOV SBUF,,,A,),时,将累加器,A,中欲发送的字符送入,SBUF,(,发送)后,发送控制器在发送时钟的作用下,自动在发送字符前后添加起始位、停止位和其他控制位,然后在发送时钟的控制下,逐位从,TXD,线上串行发送字符帧。发送完后使发送中断标志,TI=1,,,发出串口发送中断请求。,26,2,串口接收过程,串行口在接收时,接收控制器会自动对,RXD,线进行监视。当确认,RXD,线上出现起始位后,接收控制器就从起始位后的数据位开始,将一帧字符中的有用位逐位移入接收缓冲寄存器,SBUF,(,接收)中,自动去掉起始位、停止位或空闲位,并使接收中断标志,RI=1,,,发出串口接收中断请求。这时,只要执行“读”,SBUF,命令(如,MOV A,,,SBUF,),便可以得到接收的数据。,27,串行控制寄存器,SCON,用以存 放串行口的控制和状态信息。,8XX51,串行口正是通过对上述专用寄存器的设置、检测与读取 来管理串行通信的。,特 殊功能寄存器,PCON,的最高位,SMOD,为串行口波特率的倍增控制位。,波特率发生器,可以有两种选择:,1.,定时器,T1,作波特率发生器,改变计数初值就可以改变串行通信的速率,称为可变波特率。,2.,以内部时钟的分频器作波特率发生器,因内部时钟频率一定,称为固定波特率,28,5.2.2,串行口的控制寄存器,1,串行口的空制寄存器,SCON,8XX51,串行通信的方式选择,接受和发送控制及串行口的标志均由专用寄存器,SCON,控制和指示,其格式如下,:,SM0,SM1,SM2,REN,TB8,RB8,TI,RI,方式选择,多机控制,串行接收,允许,/,禁止,欲发的第九位,收到的第九位,发送中断有,/,无,接收中断有,/,无,29,SM0.SM1:,串行口工作方式控制位。,0 0-,方式,0,0 1-,方式,1,1 0-,方式,2,1 1-,方式,3,REN,:串行接收允许位。,0-,禁止接收,1-,允许接收,TB8:,在方式,2,3,中,TB8,是发送机要发送的第,9,位数据。,RB8:,在方式,2,3,中,RB8,是接受机收到的第,9,位数据,该数据来自发送机的,TB8,。,TI:,发送中断标志位。发送前必须用软件清零,发,送过程中,TI,保持零电平,发送完一帧数据后,由,硬件置“,1”,,如果再发送,必须用软件再清零。,30,RI:,接收中断标志位。接收前,必须用软件清零,接,收过程中,RI,保持零电平,接收完一帧数据后由,片内硬件自动置“,1”,。如果再接收必须用软件清,零。,SM2:,多机通信控制位,仅用于方式,2,和方式,3,。,当选择方式,2,或方式,3,时,发送机设置,SM2=1,以发送第九位,TB8,为,1,作为地址帧寻找从机,以,TB8,为,0,作为数据帧进行通信,从机初始化时设,置,SM2=1,若接收到的第九位数据,RB8=0,不置位,RI,即不引起接收中断,亦既不接收数据帧,继续,监听,如接收到的,RB8=1,置位,RI,引起接收中断,中断程序中判断所接收的地址帧和本机的地址。,31,是否符合,若不符合,维持,SM2=1,继续监听,若符合,则 清,SM2,接收对放发来的后续信息,.,综上所述,SM2,的作用为,:,在方式,2,3,中,发送机,SM2=1(,程序设置,).,接收机,SM2=1,若,RB8=1,激活,RI,引起接收中断,.,RB8=0,不激活,RI,不引起接断,.,SM2=0,无论,RB8=1,还是,RB8=0,均激活,RI,引起,接收中断。,在方式,1,中,当接收时,SM2=1,则只有收到有效停止位才 激活,RI,,在方式,0,中,SM2,应置为,0,。,SM2=1,接收地址状态,SM2=0,接收数据状态,.,32,PCON,的字节地址为,87H,无位地址,只能字节,寻址,.,初始化时,SMOD=0.,SMOD,X,X,X,X,X,X,X,PCON,87H,2,电源控制寄存器,PCON,PCON,的格式如下图所示,串行通信只用其中的最高位,SMOD,SMOD:,波特率加倍位。在计算串行方式,1,、,2,、,3,的波特率时,,SMOD,0,不加倍,;,SMOD,1,加倍,33,5.2.3,串行口的工作方式,根据串行通信数据格式和波特率的不同,51,系列单片机的串行通信有四种工作方式,通过编程进行选择,各工作方式的特点如下,:,1.,方式,0,串行口被设定为,同步移位寄存器,。这时,串行口的内部结构可简化为图所示。,RXD,(,P3.0,)引脚用于输入或输出数据,,TXD,(,P3.1,)引脚用于输出同步移位脉冲。波特率固定为,f,osc/12,。发送和接收均为,8,位数据,低位在前,高位在后。串口工作于方式,0,时,,SM2,、,RB8,和,TB8,皆不起作用,通常将它们均设置为,0,状态。,34,移位寄位器方式多用于接口的扩展,当用单片机构成系统时,往往感到并行口不够用,此时可通过外接串入并出移位寄存器扩展输出接口;通过外接并入串出移位寄存器扩展输入接口,方式,0,也可应用于短距离的单片机之间的通信。,2.,方式,1,为,10,位异步通信方式,即每帧数据由,1,个起始位,“,0”.,八个数据位 和,1,个停止位“,1”,共,10,位构成,.,其,中起始位和停止位在发送时是自动插入的,.,以,TXD,为串行数据的发送端,T1,提供位时钟,RXD,为数据的接收端,由,T1,提供移位时钟,是波特率可,变方式,35,波特率,=(2,SMOD,/32)(TI,的溢出率,),=(2,SMOD,/32)(fosc/12(256-x),根据给定的波特率,可以计算,T1,的计数初值,X,。,11,位异步发送,/,接收方式,即每帧数据由有一个起始位,“,0,”,9,个数据位和,1,个停止位,“,1,”,组成,.,发送时九个数据位,由,SCON,寄存器的,TB8,位 提供,接收到的第九位数据存放在,SCON,寄存器的,RB8,位,.,第九位数据可作为检验位,也可用于多机通信中,识别传送的是地址还是数据的特征位。,波特率固定为,(2,SMOD,/64)fosc.,3.,方式,2,36,4.,方式,3,数据格式同方式,2,,所不同的是,波特率可变,计,算,方式同方式,1,。,37,5.3 MCS-51,串行口的应用,5.3.1,串并变换,串行口方式,0,的应用有两种:一种是把串行口变为串入并出的输出口,;,另一种是把串行口变为并入串出的输入口。,如图所示电路,将串行口设置为方式,0,,外接一片串入、并出,/,串出的,8,位同步移位寄存器,CD4094,或,74LS164,。,单片机串口输出端,RXD,接移位寄存器串行输入端,DATA,,,移位时钟脉冲,TXD,端接移位寄存器时钟控制端,CLK,,,在移位时钟控制下串行数据移入寄存器;,P1.0,接移位寄存器输出允许端,STB,,,通过软件置位或复位控制并行输出。,1,、,串入并出的输出口,例,5.1,38,2,、,并入串出的输入口,如图所示,在串口方式,0,下外接一个并入串出的移位寄存器,CD4014,或,74LS165,,,即可扩展一个并行输入口。串口,RXD,端输入,CD4014,输出端,Q8,移出的串行数据,,TXD,端仍然提供移位时钟给移位寄存器的时钟端,CLK,。,例,5.2,39,2,、,并入串出的输入口,如图所示,在串口方式,0,下外接一个并入串出的移位寄存器,CD4014,或,74LS165,,,即可扩展一个并行输入口。串口,RXD,端输入,CD4014,输出端,Q8,移出的串行数据,,TXD,端仍然提供移位时钟给移位寄存器的时钟端,CLK,。,例,5.2,40,5.3.2,单片机的双机通信,除方式,0,外,串口在方式,1,、方式,2,和方式,3,下均用于异步串行通信。,MCS-51,单片机的异步串行通信根据应用可分为双机通信和多机通信。,双机之间的串行通信应考虑接口电路、通信协议,等,。,根据两机通信距离的远近采取不同的接口电路,如果两个,8031,应用系统相距很近,将它们的串行口直接相连,如图,5.4(a),所示;如果想增加通信距离,减少通道及电源干扰,必须在通信线路上加入辅助电路,如加入光耦合器和电平转换电路,如图,5.4(b),所示。,1,、,接口电路,41,2,、,双机的通信协议,为确保通信成功,通信双方要遵守共同约定的协议。协议内容包括双方采取一致的通信方式,一致的波特率设定,确认接收机、发送机,设定通信开始发送机的呼叫信号、接收机的应答信号,通信结束的标志信号等。,按图,5.4,(,a),所示,,串行口工作方式,1,进行甲机发送、乙机接收异步通信,通信双方波特率均采用,2400,波特,甲机的呼叫信号为“,10H,”,,,乙机同意接收的应答信号为“,20H,”,,,不同意接收的应答信号为“,30H,”,。,正确回发,0FH,。,42,通信协议,1,号机是发送方,,2,号机是接收方。,1,号机发送时,先发送一个“,E1”,联络信号,,2,号机收到后回答一个“,E2”,应答信号,表示同意接收。,1,号机收到应答信号“,E2”,后,开始发送数据,每发送一个数据字节都要计算“校验和”。,假定数据块长度为,16,个字节,起始地址为,40H,,,一个数据块发送完毕后立即发送“校验和”。,2,号机接收数据并转存到数据缓冲区,起始地址也为,40H,,,每接收到一个数据字节便计算一次“校验和”。当接收完一个数据块后,再接收,1,号机发来的“校验和”,并将它与本机求出的校验和进行比较。,43,通信协议,若校验和进行比较时,两者相等,说明接收正确,,2,号机回答,00H,;,若两者不相等,说明接收不正确,,2,号机回答,FFH,,,请求重发。,1,号机接到,00H,后结束发送。若收到的答复不是,00H,,,则重新发送数据一次。,双方约定采用串行口方式,1,进行通信,波特率为,2400,波特。方式,1,的波特率计算公式如下:,根据给定的波特率,可以计算,T1,的技术初值,X,。,44,5.3.3,单片机与,PC,的通信,1,、,接口设计,在数据处理和过程控制应用领域,通常需要一台,PC,,,由它来管理一台或若干台以单片机为核心的智能测量控制仪表。这时,也就是要实现,PC,和单片机之间的通信。,采用,MAX232,芯片的,PC,和单片机串行通信接口电路,与,PC,相连采用,9,芯标准插座。,45,2,、,程序编写,单片机通信程序编写,功能为:将,PC,键盘的输入发送给单片机,单片机收到,PC,发来的数据后,回送同一数据给,PC,,,并在屏幕上显示出来。只要屏幕上显示的字符与所输入的字符相同,就说明二者之间的通信正常。,通信双方约定:波特率为,2400 b/s,;,信息格式为,8,个数据位,,1,个停止位,无奇偶校验位。,MCS-51,通过中断方式接收,PC,发送的数据并回送。单片机串行口工作在方式,1,,晶振频率为,6MHz,,,波特率,2400b/s,,,定时器,T1,按方式,2,工作,经计算,定时器预置值为,0F3H,,,SMOD=1,。,46,参考程序如下:,ORG 0000H,LJMP CSH ;,转初始化程序,ORG 0023H,LJMP INTS ;,转串行口中断程序,ORG 0050H,CSH,:,MOV TMOD,#20H ;,设置定时器,1,为方式,2,MOV TL1,#0F3H ;,设置定时器预置值,MOV TH1,#0F3H,SETB TR1 ;,启动定时器,1,MOV SCON,#50H ;,串行口初始化,MOV PCON,#80H,SETB EA ;,允许串行口中断,SETB ES,LJMP MAIN ;,转主程序,(,主程序略,),INTS,:,CLR EA ;,关中断,CLR RI ;,清串行口中断标志,PUSH DPL ;,保护现场,PUSH DPH,PUSH A,MOV A,SBUF ;,接收,PC,发送的数据,MOV SBUF,A ;,将数据回送给,PC,WAIT,:,JNB TI,WAIT ;,等待发送,CLR TI,POP A ;,发送完,恢复现场,POP DPH,POP DPL,SETB EA ;,开中断,RETI ;,中断返回,47,PC,通信程序编写,48,49,小,结,MCS-51,系列单片机内部具有一个全双工的异步串行通信,I/O,口,该串行口的波特率和帧格式可以编程设定。,MCS-51,串行口有,4,种工作方式:方式,0,、方式,1,、方式,2,、方式,3,,帧格式有,10,位、,11,位。方式,0,和方式,2,的传送波特率是固定的,方式,1,和方式,3,的波特率是可变的,由定时器的溢出率决定。,单片机与单片机之间以及单片机与,PC,之间都可以进行通信,异步通信的程序通常采用两种方法:查询法和中断法。,50,
展开阅读全文