1 / 47

● 教学目标

第 9 章 串口及串行通信技术. ● 教学目标. 介绍 MCS-51 串行通信接口技术. 介绍 MCS-51 单片机之间的串行通信接口技术. 介绍 PC 机与单片机间的串行通信接口技术. ● 学习要求. 掌握单片机串行通信接口的基本功能,了解串行通信接口的一般结构. 熟悉单片机串行通信接口,掌握单片机之间的串行通信接口以及 PC 机与单片机间的串行通信接口程序编制. 9.1 MCS-51 串行通信接口.

Download Presentation

● 教学目标

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第9章 串口及串行通信技术 ● 教学目标 介绍MCS-51串行通信接口技术 介绍MCS-51单片机之间的串行通信接口技术 介绍PC机与单片机间的串行通信接口技术 ● 学习要求 掌握单片机串行通信接口的基本功能,了解串行通信接口的一般结构 熟悉单片机串行通信接口,掌握单片机之间的串行通信接口以及 PC机与单片机间的串行通信接口程序编制

  2. 9.1 MCS-51串行通信接口 MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。 9.1.1 MCS-51串行口的结构 MCS-51系列单片机的串行接口由发送缓冲器、接收缓冲器以及两个专 用寄存器SCON和PCON组成,占用两条I/O专线(P3.0、P3.1),分别为RXD和TXD,从而构成全双工的通信方式。两个独立的接收、发送缓冲器SBUF(属于特殊功能寄存器)共用一个字节地址(99H),一个用来发送;一个用来接收。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。 在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。

  3. 串行口的发送过程由指令MOV SBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。 串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令(MOV A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。 在整个串行收发过程中,CPU的操作时间很短,使得CPU还可以从事其它的各种操作(指工作在中断方式下),从而大大提高了CPU的效率。

  4. ⑴ 串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU在写SBUF,就是修改发送缓冲器;读SBUF,就是读接收缓冲器。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。 ⑵ 串行口控制寄存器SCON SCON寄存器用来控制串行口的工作方式和状态,它是一个可按位寻址的特殊功能寄存器。在复位时所有位被清零,其字节地址为98H。SCON寄存器的格式 如下

  5. ⑶ 特殊功能寄存器PCON PCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,字节地址为87H,不能按位寻址。

  6. SM0 SM1 工作方式 功能说明 波特率 0 0 方式0 同步移位寄存器 fosc/12 0 1 方式1 8位UART 可变 1 0 方式2 9位UART fosc/32或fosc/64 1 1 方式3 9位UART 可变 9.1.2 MCS-51系列单片机串行接口的工作方式 MCS-51的串行口有四种工作方式,它是由SCON中的SM1和SM0来决定

  7. 1)方式0 串行接口工作方式0为同步移位寄存器方式,其波特率是固定为振荡频率fosc的1/12。在这种工作方式下,发送和接收串行数据都通过RXD(P3.0)进行,从TXD(P3.1)输出移位脉冲,控制外部的移位寄存器移位。 ⑴ 方式0发送 数据从RXD引脚串行输出,TXD引脚输出同步脉冲。发送操作在TI=0的情况下开始,由指令(MOV SBUF,A)将一个数据写入串行口发送缓冲器时启动发送,串行口将8位数据以fosc/12的固定波特率由低位到高位逐位从RXD引脚输出,当8位数据发送完后,硬件自动置中断标志TI为1,并向CPU请求中断(若中断已开放),CPU响应中断后,先将TI清零,再向SBUF传送下一个待发送的信息,以继续发送数据。

  8. ⑵ 方式0接收 在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率对RXD引脚输入的数据信息进行采样。当接收器接收完8位数据后,硬件自动置中断标志RI=1,并向CPU发出请求中断,CPU响应中断(或采用查询方式)后,通过指令(MOV A,SBUF)将接收的数据传送给累加器A。在再次接收之前,必须用软件将RI清零。 在方式0工作时,必须使SCON寄存器中的SM2位为“0”,这并不影响TB8位和RB8位。方式0发送或接收完数据后由硬件置位TI或RI,CPU在响应中断后要用软件清除TI或RI标志。

  9. 方式1波特率= ×定时器T1的溢出率 2) 方式1 在方式1时,串行口被设置为波特率可变的8位异步通信接口。 ⑴ 方式1发送 串行口以方式1发送时,数据位由TXD端输出,发送1帧信息为10位,其中一位起始位“0”、八位数据位(先低位后高位)和一个停止位“1”。在TI=0的条件下,CPU执行一条数据写入发送缓冲器SBUF的指令(MOV SBUF,A),发送电路自动在8位数据位前后分别加一位起始位和一位停止位,就启动串行传送过程,在移位脉冲的作用下,从TXD线上依次发送一帧信息。当发送完数据后,置中断标志TI为“1”,TXD自动维持高电平。 方式1所传送的波特率取决于定时器1的溢出率和特殊功能寄存器PCON中SMOD的值,计算方法如下:

  10. ⑵ 方式1接收 当串行口置为方式1,且REN=1,RI=0时,串行口处于方式1的输入状态。它以所选波特率的16倍的速率对RXD引脚状态采样。当采样到由1到0的负跳变时,且接收电路连续8次采样均为低电平时,表明RXD线上已出现起始位,就启动接收器,开始接收一帧的其余的信息,一帧信息也为10位,一位起始位“0”、八位数据位(先低位后高位)和一个停止位“1”。接收电路开始在每位传送数据的第7、8、9三个脉冲进行采样,并以三取二的原则决定所采样数据的值,以保证可靠无误。在移位脉冲的作用下,逐位移入移位寄存器。 在方式1接收时,必须同时满足以下两个条件:① RI=0,②停止位为“1”或SM2=0时,则接收数据有效,进入SBUF,停止位进入RB8,并置中断请求标志RI为“1”,CPU响应中断(或采用查询方式)后,通过指令(MOV A,SBUF)将接收的数据传送给累加器A,并用软件将RI清零。若上述两个条件不满足,则该组数据丢失,不再恢复。 方式1接收波特率设计方法与方式1传送波特率相同。

  11. 3) 方式2 方式2波特率= ×振荡器频率 串行口工作为方式2时,被定义为9位异步通信接口。 ⑴ 方式2发送 发送数据由TXD端输出,发送一帧信息为11位,其中一位起始位(0)、八位数据位(先低位后高位)、一位可控位1或0的第9位数据和一位停止位“1”。附加的第9位数据为SCON中的TB8(SCON中的D3位)的值,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。

  12. 方式3波特率= ×定时器T1的溢出率 ⑵ 方式2接收 当串行口置为方式2,且REN=1时,串行口以方式2接收数据。方式2的接收与方式1基本相似。数据由RXD端输入,接收11位信息,其中,一位起始位(0)、八位数据位(先低位后高位),一位可控位1或0的第9位数据和一位停止位“1”。当采样到RXD端由1到0的负跳变,并判断起始位有效后,便开始接收一帧信息,当接收器接收到第9位数据后,又同时满足下列两个条件:① RI=0;② SM2=0或接收到的第9位数据位为“1”时,将收到的数据送入SBUF(接收数据缓冲器),第9位数据送入RB8,并对RI置1;若以上两个条件有一个不满足,所接收的信息帧就会被丢失。 4) 方式3 方式3为波特率可变的9位异步通信方式,除了波特率有所区别之外,其余都与方式2相同。

  13. 波特率= ×定时器T1的溢出率 方式2波特率= ×振荡器频率 定时器T1溢出率= 9.1.3MCS-51串行通信的波特率 ⑴ 方式0的波特率 波特率是固定的,其值为fosc/12(fosc为主机频率)。 ⑵ 方式2的波特率 若SMOD=0,则所选波特率为fosc/64; 若SMOD=1,则波特率为fosc/32。 ⑶ 方式1或方式3的波特率

  14. 波特率 Fosc SMOD 定时器T1 C/T 所选方式 相应初值 串口方式0 1M 12MHz × × × × 串口方式2 375K 12MHz 1 × × × 串口方式1或3 62.5K 12MHz 1 0 2 FFH 19.2K 11.0592MHz 1 0 2 FDH 9.6K 11.0592MHz 0 0 2 FDH 4.8K 11.0592MHz 0 0 2 FAH 2.4K 11.0592MHz 0 0 2 F4H 1.2K 11.0592MHz 0 0 2 E8H 600 11.0592MHz 0 0 2 D0H 110 6MHz 0 0 2 72H

  15. 9.2 MCS-51单片机之间的通信 MCS-51单片机的串行通信技术根据其应用可分为双机通信和多机通信。 9.2.1 MCS-51双机通信技术 最简单的双机异步通信接口电路

  16. 符合RS-422标准的双机通信接口电路

  17. 1) 查询方式进行双机通信 甲机发送,乙机接收,双方都用查询方式的程序编制。 ⑴ 甲机发送 甲机片内RAM中70H~7FH单元中的数据从串行口输出。定义以工作方式2发送,TB8作奇偶校验位。其中fosc=12MHz,波特率为375kbit/s,所以SMOD=1。 参考程序: ⑵ 乙机接收 乙机接收到16字节数据并存入片外1000H~100FH单元中。接收过程要求判断奇偶校验位RB8。若出错,置F0标志为1;正确,则置F0标志为0,然后返回。 参考程序:

  18. 2) 中断方式进行双机通信 双机通信的接收方采用中断方式来接收数据,以提高CPU的工作效率,发送方仍采用查询方式发送数据。 ⑴ 甲机发送 将外部数据存储器1000H为首地址的字节单元中的数据向乙机发送,在发送之前将数据块长度N发送给乙机,当发送完N个字节后,再发送一个累加校验和。 发送的波特率为9600,两机晶振均为11.0592MHz。双机都工作于方式1,定时器Tl按方式2工作,经查表得初值为FDH,SMOD=0。 参考程序:

  19. ⑵ 乙机接收 乙机接收甲机发送的数据,并写入以4000H为首址的外部数据存储器中,首先接收数据长度N,然后接收N个字节的数据,再接收校验码,进行累加和校验,数据传送结束后,向甲机发送一个状态字,表示正确或出错,出错则要求重发。接收采用中断的方式,设置两个标志位来判断接收到的信息是数据块长度、数据还是校验和。 参考程序:

  20. 9.2.2 MCS-51多机通信技术 通常MCS-51的多机通信采用主从式多机通信方式。在这种方式中,只有一台主机,有多台从机。主机发送的信息可以传到各个从机或指定的从机,各从机发送的信息只能被主机接收。

  21. 1) 多机通信原理 MCS-51串行控制寄存器中的SM2就是为了满足这一要求而设置的多机控制位 方式2或3接收时,若SM2=1,表示置多机通信功能位,这时出现两种可能的情况: ①接收到第9位数据为1,数据装入SBUF,并置RI=1,向CPU发出中断请求; ②接收到第9位数据为0,不产生中断,信息将被丢失。 若SM2=0,则接收到的第9位信息无论是0还是1,都产生RI=1的中断标志,接收到的数据装人SBUF。根据这个功能,便可实现多个MCS-51系统的串行通信。

  22. 多机通信的过程如下: ①使所有从机的SM2=1,处于准备接收一帧地址数据的状态; ②主机设第9位数据为1,发送一帧地址信息,与所需的从机进行联络; ③每个从机接收到地址信息后,各自将其与自己的地址相比较,对于地址相符的从机,使SM2=0,准备接收主机随后发来的所有信息;对于地址不相符的从机,仍保持SM2=1状态,对主机随后发来的数据不理睬,直至发送新的一帧地址信息; ④主机发送控制指令与数据给被寻址的从机。一帧数据的第9位置0,表示发送的是数据或控制指令。

  23. D7 D6 D5 D4 D3 D2 D1 D0 ERR TRDY RRDY 2)多机通信的软件协议 在多机通信系统中,要保证主机与从机之间可靠地通信,除前面所讲的必须保证接口具有识别功能外,还必须事先达成一些通信协议,规定一些供主机和从机识别的命令和状态字,如: ⑴ MCS-51系列单片机构成的多机通信系统最多允许接255台从机(地址为00H~FEH); ⑵地址FFH(第九位为1)作为一条控制指令,使所有从机都处于SM2=0的状态; ⑶ 其余控制指令有(以数据形式发送): ① 00H——主机要求从机接收数据指令 ② 01H——主机要求从机发送数据指令 ⑷ 从机状态字格式如下: ⑸ 主机开始发送或接收数据,发送或接收的第一个字节为数据块长度。

  24. 3) 软件设计 ⑴ 主机串行通信子程序 主机串行口设为方式3,允许接收,并置TB8为1,故控制字为11011000B=D8H。 主机参考程序

  25. ⑵ 从机串行通信程序 从机的串行通信采用中断的方式启动,即接收到地址帧后就进行串行口中断申请,CPU响应后,进入中断服务程序。 主机参考程序

  26. 4) 有关多机通信的几个相关问题 ⑴ 在主从多机通信系统中,中断服务程序要分别装入各个从机,以便当主机发出待寻址的从机地址后,所有从机(SM2=1、REN=1)都能接收地址帧,在确认主机寻址本机后,参与主从通信。 ⑵以上程序只介绍了多机通信的基本过程,在实际应用中要根据情况进行补充和修改。 ⑶在上述的主从通信程序中,为了简单,没有给出信息出错处理程序。事实上,在串行通信过程中出现传送错误的事时有发生。为确保通信可靠,需要这样的程序。例如,用校验和的方法,或每个数据发送两遍。当从机检测到数据不相符(来自主机的发送和与从机累计的接收和不等,或从机两次接收到的数据不一致)时,均认为出错。此时,从机应反映到主机,主机接收到这样的信息后,应重新发送数据,直到从机接收正确。

  27. 9.3PC机与单片机间的通信 9.3.1 PC机RS-232C标准接口简介 1)RS-232C接口 ⑴ RS-232C传递信息的格式标准 RS-232C 对所传递的信息规定如下:信息的开始为起始位,信息的结尾为停止位,它可以是一位、一位半或两位,信息本身可以是5、6、7、8位再加一位奇偶校验位。如果两个信息之间无信息,则应写“1”表示空。 RS-232C传送的波特率(bit/s)规定为19200、9600、4800、2400、600、300、150、110、75、50。RS-232C接口总线的传送距离一般不超过15米。

  28. ⑵ RS-232C的电气特性 RS-232C是在TTL电路出现之前研制的,所以它的电平不是+5V和地,它使用负逻辑,其低电平“0”在+5~+15V之间,高电平“1”在-5~-15V之间,最高能承受+25V的信号电平。 RS-232C不能和TTL电平直接相连,使用时必须加上适当的接口电路,否则将使TTL电路烧毁。有专门集成电路,进行电平转换,如MC1488、MC1489等是专门用在计算机(或终端)与RS-232C标准进行电平转换的接口芯片。

  29. ⑶ RS-232C机械特性及引脚功能 RS-232C标准总线为25根,对其机械特性并未作严格规定,不过目前都习惯采用于母型结构,即将插头及插座插紧即可 。

  30. 2)RS-232C的应用 ⑴ 使用MODEM连接

  31. ⑵ 直接连接 当计算机和终端之间不使用MODEM或其它通信设备(DCE)而直接通过RS-232C接口连接时,一般只需要5根线(不包括保护地线以及本地4、5之间的连线),但其中多数应采用反馈与交叉相结合的连接法。

  32. ⑶ 三线连接法 一种最简单的RS-232C连线方式,只需2、3交叉连接线以及信号地线,而将各自的RTS和DTR分别接到自己的CTS和DSR端 。

  33. 9.3.2 PC机与单片机之间的双机通信技术 1)通信接口电路设计 ⑴PC机与单片机RS-232C串口通信接口

  34. ⑵ PC机与单片机RS-422/RS-485串行通信接口

  35. 2)串行通信程序 通信程序由主机(PC系列机)程序和从机(MCS-51系列单片机)程序两部分组成。 ⑴ 主机通信程序设计 设信息传送波特率为9600bit/s。数据格式为:l位停止位,8位数据位、一个停止位,偶校验,微机以查询方式发送。该程序的功能是将键盘输入的字符发送给单片机,单片机再将收到的字符发送回来,PC机再查询接收并显示在屏幕上。当输入“ENTER”键时结束本次数据传送,PC机使用串口2。

  36. ⑵ MCS-51单片机通信软件

  37. 9.3.3 PC机与单片机之间多机通信技术 在工业过程控制及数据采集系统中,往往需要控制很多点(站)或采样很多数据,而且这些点大都分布在一个车间或一个厂内,有些甚至在更远的地方(如油田数据采样系统或天然气供气系统等),对于这样的系统通常采用主从式控制系统,即用一台主机(如工业PC)多台从机(如8051系列单片机)。

  38. 起始位 D0 D1 D2 D3 D4 D5 D6 D7 奇偶位 停止位 起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 1)多机通信原理 在工业PC或一般PC机中,均配有串行通信适配器接口,在此接口适配器中的接口芯片虽然本身不具有与MCS-51系列单片机串行的完全相同的格式,但通过软件的方法,可使该芯片能够满足MCS-51系列单片机多机通信的要求。 异步通信接口芯片可发送11位数据帧,其中包括1位起始位,8位数据位,1位奇偶校验位和1位停止位,其格式如下: MCS-51系列单片机多机通信的典型数据帧格式为: 不同之处仅仅是奇偶校验位和TB8。如果我们通过编程,使异步通信接口芯片的奇偶校验位完全模拟MCS-51系列单片机的SB8位的功能,即可实现两机间的通信。

  39. 2)多机通信接口设计 一个串行接口总线可以采用RS-232C(一般IBM-PC机上均有此种接口适配器),也可以采用RS-422或RS-485(在工业PC机中常采用这种总线)。不论采用何种总线,只是接口电路不同。MCS-51系列单片机本身具有一个全双工的串行口,只需配备一个驱动、隔离电路,即可组成一个简单可行的多机通信接口。

  40. 3)多机通信软件设计 ⑴ PC机通信程序 约定如下: ① 波特率设置:9600 bit/s。 ② 数据传送格式:l个起始位,8个数据位,1个可编程位(奇偶位),1个停止位。 ③ 校验方式:由于奇偶校验位被用作发送地址和数据的特征位,故数据 ④ 数据传送方式:发送和接收均采用查询方式。

  41. ⑵ 单片机通信软件 单片机的数据通信由串口完成,定时器T1作为波特率发生器。程序规定: ① 波特率设置:9600 bit/s ② 数据传送格式:l个起始位,8个数据位,1个可编程位(TB8),1个停止位。 ③ 工作方式设置:定时器T1设置为方式2,串行口设置为工作方式3。 ④ 数据传送方式:单片机通过中断方式发送和接收数据。

  42. 小 结 串行通信中的数据是一位一位依次传送的,而计算机系统或计算机终端内部数据是并行传送的。因此,发送端必须把并行数据变成串行才能在线路上传送,接收端接收到串行数据又需要变换成并行数据才可以送给终端。并/串和串/并转换通常采用UART芯片实现。 MCS-51有四种不同的工作方式,并可以设置不同的波特率。使用时可根据需要选取相应的工作方式,从而得到需要的字符帧格式和波特率。 单片机点对点异步通信,包括单片机之间和单片机与PC机之间的双机通信。由于单片机中信号电平是TTL型,通常要附加电平转换接口电路,使其符合某个串行通信接口标准的电压要求(如RS-232C或RS-422/485)。通信双方按照通信约定,选用相同的字符帧格式和波特率,编制各自的程序来实现数据交换。 单片机多机通信是指两台以上单片机组成的网络结构,在主从式多机系统中,只有一台主机,可以是单片机,也可以是PC 机。

  43. 思考题与习题九 ⑴ 简述MCS-51串行口发送和接收数据的过程。 ⑵ MCS-51串行口控制寄存器SCON中的SM2的含义是什么?主要在什么方式下使用? ⑶ 简述MCS-51串行口在四种方式下的字符格式。 ⑷ 试比较MCS-51串行口在四种方式下发送和接收数据的基本条件。 ⑸ 简述MCS-51串行口在四种方式下波特率产生的方法。 ⑹ 试用中断法编出串行口方式1下的发送程序。设8031单片机主频为11.0592MHz,波特率为4800bps,发送数据缓冲区在外部RAM,始地址为TBLOCK,数据长度为20H,采用偶校验,放在发送数据第8位(数据长度不发送)。 ⑺ 试用中断法编出串行口方式1下的接收程序。设8031单片机主频仍为11.0592MHz,波特率为4800bps,接收数据缓冲区在外部RAM,始地址为RBLOCK,数据长度为20H,采用偶校验(数据长度不发送)。 ⑻ 试用中断法编出8031串行口方式2下的发送程序。设:波特率为fosc/64,发送数据缓冲区在外部RAM,始地址为TBLOCK,数据长度为30H,采用偶校验,放在发送数据第9位上(数据长度不发送)。 ⑼ 请用中断法编出8031串行口方式2下的接收程序。设:波特率为fosc/32,接收数据缓冲区在外部RAM,始地址为RBLOCK,数据长度为20H,采用奇校验,放在发送数据第9位上(数据长度不发送)。 ⑽ 设8031单片机的发送数据缓冲区和接收数据缓冲区都在内部RAM, 始地址分别为TBLOCK和RBLOCK,数据长度为20H。试编出主站端既能发送又能接收的全双工通信程序。

More Related