Download presentation
Presentation is loading. Please wait.
Published byPaulette Roussy Modified 5年之前
1
第9章 串口及串行通信技术 ● 教学目标 介绍MCS-51串行通信接口技术 介绍MCS-51单片机之间的串行通信接口技术
● 教学目标 介绍MCS-51串行通信接口技术 介绍MCS-51单片机之间的串行通信接口技术 介绍PC机与单片机间的串行通信接口技术 ● 学习要求 掌握单片机串行通信接口的基本功能,了解串行通信接口的一般结构 熟悉单片机串行通信接口,掌握单片机之间的串行通信接口以及 PC机与单片机间的串行通信接口程序编制
2
9.1 MCS-51串行通信接口 9.1.1 MCS-51串行口的结构
MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。 MCS-51串行口的结构 MCS-51系列单片机的串行接口由发送缓冲器、接收缓冲器以及两个专 用寄存器SCON和PCON组成,占用两条I/O专线(P3.0、P3.1),分别为RXD和TXD,从而构成全双工的通信方式。两个独立的接收、发送缓冲器SBUF(属于特殊功能寄存器)共用一个字节地址(99H),一个用来发送;一个用来接收。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入。 在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。
4
串行口的发送过程由指令MOV SBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。 串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令(MOV A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。 在整个串行收发过程中,CPU的操作时间很短,使得CPU还可以从事其它的各种操作(指工作在中断方式下),从而大大提高了CPU的效率。
5
⑴ 串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU在写SBUF,就是修改发送缓冲器;读SBUF,就是读接收缓冲器。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。 ⑵ 串行口控制寄存器SCON SCON寄存器用来控制串行口的工作方式和状态,它是一个可按位寻址的特殊功能寄存器。在复位时所有位被清零,其字节地址为98H。SCON寄存器的格式 如下
6
SM0 SM1 工作方式 1 2 3
7
⑶ 特殊功能寄存器PCON PCON主要是为CHMOS型单片机的电源控制设置的专用寄存器,字节地址为87H,不能按位寻址。
8
MCS-51的串行口有四种工作方式,它是由SCON中的SM1和SM0来决定
可变 9位UART 方式3 1 fosc/32或fosc/64 方式2 8位UART 方式1 fosc/12 同步移位寄存器 方式0 波特率 功能说明 工作方式 SM1 SM0
9
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传送下一个待发送的信息,以继续发送数据。
10
⑵ 方式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标志。
11
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的值,计算方法如下: 方式1波特率= ×定时器T1的溢出率
12
⑵ 方式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传送波特率相同。
13
3) 方式2 串行口工作为方式2时,被定义为9位异步通信接口。 方式2波特率= ×振荡器频率 ⑴ 方式2发送 发送数据由TXD端输出,发送一帧信息为11位,其中一位起始位(0)、八位数据位(先低位后高位)、一位可控位1或0的第9位数据和一位停止位“1”。附加的第9位数据为SCON中的TB8(SCON中的D3位)的值,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。
14
⑵ 方式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相同。 方式3波特率= ×定时器T1的溢出率
15
MCS-51串行通信的波特率 ⑴ 方式0的波特率 波特率是固定的,其值为fosc/12(fosc为主机频率)。 ⑵ 方式2的波特率 方式2波特率= ×振荡器频率 若SMOD=0,则所选波特率为fosc/64; 若SMOD=1,则波特率为fosc/32。 ⑶ 方式1或方式3的波特率 波特率= ×定时器T1的溢出率 定时器T1溢出率=
16
72H 2 6MHz 110 D0H MHz 600 E8H 1.2K F4H 2.4K FAH 4.8K FDH 9.6K 1 19.2K FFH 12MHz 62.5K 串口方式1或3 × 375K 串口方式2 1M 串口方式0 相应初值 所选方式 C/T 定时器T1 SMOD Fosc 波特率
17
9.2 MCS-51单片机之间的通信 MCS-51单片机的串行通信技术根据其应用可分为双机通信和多机通信。 9.2.1 MCS-51双机通信技术 最简单的双机异步通信接口电路
18
符合RS-422标准的双机通信接口电路
19
1) 查询方式进行双机通信 甲机发送,乙机接收,双方都用查询方式的程序编制。 ⑴ 甲机发送 甲机片内RAM中70H~7FH单元中的数据从串行口输出。定义以工作方式2发送,TB8作奇偶校验位。其中fosc=12MHz,波特率为375kbit/s,所以SMOD=1。 参考程序: ⑵ 乙机接收 乙机接收到16字节数据并存入片外1000H~100FH单元中。接收过程要求判断奇偶校验位RB8。若出错,置F0标志为1;正确,则置F0标志为0,然后返回。 参考程序:
20
2) 中断方式进行双机通信 双机通信的接收方采用中断方式来接收数据,以提高CPU的工作效率,发送方仍采用查询方式发送数据。 ⑴ 甲机发送 将外部数据存储器1000H为首地址的字节单元中的数据向乙机发送,在发送之前将数据块长度N发送给乙机,当发送完N个字节后,再发送一个累加校验和。 发送的波特率为9600,两机晶振均为 MHz。双机都工作于方式1,定时器Tl按方式2工作,经查表得初值为FDH,SMOD=0。 参考程序:
21
⑵ 乙机接收 乙机接收甲机发送的数据,并写入以4000H为首址的外部数据存储器中,首先接收数据长度N,然后接收N个字节的数据,再接收校验码,进行累加和校验,数据传送结束后,向甲机发送一个状态字,表示正确或出错,出错则要求重发。接收采用中断的方式,设置两个标志位来判断接收到的信息是数据块长度、数据还是校验和。 参考程序:
22
9.2.2 MCS-51多机通信技术 通常MCS-51的多机通信采用主从式多机通信方式。在这种方式中,只有一台主机,有多台从机。主机发送的信息可以传到各个从机或指定的从机,各从机发送的信息只能被主机接收。
23
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系统的串行通信。
24
多机通信的过程如下: ① 使所有从机的SM2=1,处于准备接收一帧地址数据的状态;
② 主机设第9位数据为1,发送一帧地址信息,与所需的从机进行联络; ③ 每个从机接收到地址信息后,各自将其与自己的地址相比较,对于地址相符的从机,使SM2=0,准备接收主机随后发来的所有信息;对于地址不相符的从机,仍保持SM2=1状态,对主机随后发来的数据不理睬,直至发送新的一帧地址信息; ④ 主机发送控制指令与数据给被寻址的从机。一帧数据的第9位置0,表示发送的是数据或控制指令。
25
⑴ MCS-51系列单片机构成的多机通信系统最多允许接255台从机(地址为00H~FEH);
2)多机通信的软件协议 在多机通信系统中,要保证主机与从机之间可靠地通信,除前面所讲的必须保证接口具有识别功能外,还必须事先达成一些通信协议,规定一些供主机和从机识别的命令和状态字,如: ⑴ MCS-51系列单片机构成的多机通信系统最多允许接255台从机(地址为00H~FEH); ⑵ 地址FFH(第九位为1)作为一条控制指令,使所有从机都处于SM2=0的状态; ⑶ 其余控制指令有(以数据形式发送): ① 00H——主机要求从机接收数据指令 ② 01H——主机要求从机发送数据指令 ⑷ 从机状态字格式如下: RRDY TRDY ERR D0 D1 D2 D3 D4 D5 D6 D7 ⑸ 主机开始发送或接收数据,发送或接收的第一个字节为数据块长度。
26
3) 软件设计 ⑴ 主机串行通信子程序 主机串行口设为方式3,允许接收,并置TB8为1,故控制字为 B=D8H。 主机参考程序
27
⑵ 从机串行通信程序 从机的串行通信采用中断的方式启动,即接收到地址帧后就进行串行口中断申请,CPU响应后,进入中断服务程序。 主机参考程序
28
4) 有关多机通信的几个相关问题 ⑴ 在主从多机通信系统中,中断服务程序要分别装入各个从机,以便当主机发出待寻址的从机地址后,所有从机(SM2=1、REN=1)都能接收地址帧,在确认主机寻址本机后,参与主从通信。 ⑵ 以上程序只介绍了多机通信的基本过程,在实际应用中要根据情况进行补充和修改。 ⑶ 在上述的主从通信程序中,为了简单,没有给出信息出错处理程序。事实上,在串行通信过程中出现传送错误的事时有发生。为确保通信可靠,需要这样的程序。例如,用校验和的方法,或每个数据发送两遍。当从机检测到数据不相符(来自主机的发送和与从机累计的接收和不等,或从机两次接收到的数据不一致)时,均认为出错。此时,从机应反映到主机,主机接收到这样的信息后,应重新发送数据,直到从机接收正确。
29
9.3 PC机与单片机间的通信 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米。
30
⑵ RS-232C的电气特性 RS-232C是在TTL电路出现之前研制的,所以它的电平不是+5V和地,它使用负逻辑,其低电平“0”在+5~+15V之间,高电平“1”在-5~-15V之间,最高能承受+25V的信号电平。 RS-232C不能和TTL电平直接相连,使用时必须加上适当的接口电路,否则将使TTL电路烧毁。有专门集成电路,进行电平转换,如MC1488、MC1489等是专门用在计算机(或终端)与RS-232C标准进行电平转换的接口芯片。
31
⑶ RS-232C机械特性及引脚功能 RS-232C标准总线为25根,对其机械特性并未作严格规定,不过目前都习惯采用于母型结构,即将插头及插座插紧即可 。
32
2)RS-232C的应用 ⑴ 使用MODEM连接
33
⑵ 直接连接 当计算机和终端之间不使用MODEM或其它通信设备(DCE)而直接通过RS-232C接口连接时,一般只需要5根线(不包括保护地线以及本地4、5之间的连线),但其中多数应采用反馈与交叉相结合的连接法。
34
⑶ 三线连接法 一种最简单的RS-232C连线方式,只需2、3交叉连接线以及信号地线,而将各自的RTS和DTR分别接到自己的CTS和DSR端 。
35
PC机与单片机之间的双机通信技术 1)通信接口电路设计 ⑴ PC机与单片机RS-232C串口通信接口
36
⑵ PC机与单片机RS-422/RS-485串行通信接口
37
2)串行通信程序 通信程序由主机(PC系列机)程序和从机(MCS-51系列单片机)程序两部分组成。 ⑴ 主机通信程序设计 设信息传送波特率为9600bit/s。数据格式为:l位停止位,8位数据位、一个停止位,偶校验,微机以查询方式发送。该程序的功能是将键盘输入的字符发送给单片机,单片机再将收到的字符发送回来,PC机再查询接收并显示在屏幕上。当输入“ENTER”键时结束本次数据传送,PC机使用串口2。
38
⑵ MCS-51单片机通信软件
39
PC机与单片机之间多机通信技术 在工业过程控制及数据采集系统中,往往需要控制很多点(站)或采样很多数据,而且这些点大都分布在一个车间或一个厂内,有些甚至在更远的地方(如油田数据采样系统或天然气供气系统等),对于这样的系统通常采用主从式控制系统,即用一台主机(如工业PC)多台从机(如8051系列单片机)。
40
异步通信接口芯片可发送11位数据帧,其中包括1位起始位,8位数据位,1位奇偶校验位和1位停止位,其格式如下:
1)多机通信原理 在工业PC或一般PC机中,均配有串行通信适配器接口,在此接口适配器中的接口芯片虽然本身不具有与MCS-51系列单片机串行的完全相同的格式,但通过软件的方法,可使该芯片能够满足MCS-51系列单片机多机通信的要求。 异步通信接口芯片可发送11位数据帧,其中包括1位起始位,8位数据位,1位奇偶校验位和1位停止位,其格式如下: 停止位 奇偶位 D7 D6 D5 D4 D3 D2 D1 D0 起始位 MCS-51系列单片机多机通信的典型数据帧格式为: 停止位 TB8 D7 D6 D5 D4 D3 D2 D1 D0 起始位 不同之处仅仅是奇偶校验位和TB8。如果我们通过编程,使异步通信接口芯片的奇偶校验位完全模拟MCS-51系列单片机的SB8位的功能,即可实现两机间的通信。
41
2)多机通信接口设计 一个串行接口总线可以采用RS-232C(一般IBM-PC机上均有此种接口适配器),也可以采用RS-422或RS-485(在工业PC机中常采用这种总线)。不论采用何种总线,只是接口电路不同。MCS-51系列单片机本身具有一个全双工的串行口,只需配备一个驱动、隔离电路,即可组成一个简单可行的多机通信接口。
42
3)多机通信软件设计 ⑴ PC机通信程序 约定如下: ① 波特率设置:9600 bit/s。 ② 数据传送格式:l个起始位,8个数据位,1个可编程位(奇偶位),1个停止位。 ③ 校验方式:由于奇偶校验位被用作发送地址和数据的特征位,故数据 ④ 数据传送方式:发送和接收均采用查询方式。
44
⑵ 单片机通信软件 单片机的数据通信由串口完成,定时器T1作为波特率发生器。程序规定: ① 波特率设置:9600 bit/s ② 数据传送格式:l个起始位,8个数据位,1个可编程位(TB8),1个停止位。 ③ 工作方式设置:定时器T1设置为方式2,串行口设置为工作方式3。 ④ 数据传送方式:单片机通过中断方式发送和接收数据。
46
小 结 串行通信中的数据是一位一位依次传送的,而计算机系统或计算机终端内部数据是并行传送的。因此,发送端必须把并行数据变成串行才能在线路上传送,接收端接收到串行数据又需要变换成并行数据才可以送给终端。并/串和串/并转换通常采用UART芯片实现。 MCS-51有四种不同的工作方式,并可以设置不同的波特率。使用时可根据需要选取相应的工作方式,从而得到需要的字符帧格式和波特率。 单片机点对点异步通信,包括单片机之间和单片机与PC机之间的双机通信。由于单片机中信号电平是TTL型,通常要附加电平转换接口电路,使其符合某个串行通信接口标准的电压要求(如RS-232C或RS-422/485)。通信双方按照通信约定,选用相同的字符帧格式和波特率,编制各自的程序来实现数据交换。 单片机多机通信是指两台以上单片机组成的网络结构,在主从式多机系统中,只有一台主机,可以是单片机,也可以是PC 机。
47
思考题与习题九 ⑴ 简述MCS-51串行口发送和接收数据的过程。
⑵ MCS-51串行口控制寄存器SCON中的SM2的含义是什么?主要在什么方式下使用? ⑶ 简述MCS-51串行口在四种方式下的字符格式。 ⑷ 试比较MCS-51串行口在四种方式下发送和接收数据的基本条件。 ⑸ 简述MCS-51串行口在四种方式下波特率产生的方法。 ⑹ 试用中断法编出串行口方式1下的发送程序。设8031单片机主频为 MHz,波特率为4800bps,发送数据缓冲区在外部RAM,始地址为TBLOCK,数据长度为20H,采用偶校验,放在发送数据第8位(数据长度不发送)。 ⑺ 试用中断法编出串行口方式1下的接收程序。设8031单片机主频仍为 MHz,波特率为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。试编出主站端既能发送又能接收的全双工通信程序。
Similar presentations