版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第第6 6章章 串行接口串行接口v6.1 6.1 串行通信的基础知识串行通信的基础知识v6.2 MSC-516.2 MSC-51系列单片机的串行接口系列单片机的串行接口v6.3 6.3 串行口工作模式串行口工作模式v6.4 6.4 串行口应用举例串行口应用举例6.1 6.1 串行通信的基础知识串行通信的基础知识 计算机与外设的信息交换称为通信。通信的基本方式:并行通信和串行通信。并行通信:指数据的各位同时进行传送。串行通信:指数据的各位按顺序一位一位传送。 611 串行通信的两种基本方式串行通信的两种基本方式 串行通信基本方式:异步通信和同步通信。1 1、异步通信方式、异步通信方式 起始位起
2、始位 1 1位位 “ “0”0”有效有效 用一帧表示一个字符用一帧表示一个字符 数据位数据位 5-85-8位位一个字符包括一个字符包括4 4个部分个部分 奇偶校验位奇偶校验位 1 1位位 停止位停止位 1 1位、位、1 1位半、位半、2 2位位 “1”1”有效有效起始位起始位奇偶校验位奇偶校验位DNDND1D1D0D0图图6-1 6-1 异步通信的字符格式异步通信的字符格式停止位停止位在异步通信时,通信双方必须事先约定。 (1)字符格式)字符格式。 双方要事先约定数据位的位数、奇偶校验形式及起始位和停止位的位数。 例如:用ASC码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共
3、10位。当然停止位也可以大于1位。 (2)波特率)波特率(Baud rate)。波特率就是传送速率,即每秒传送的二进制位数每秒传送的二进制位数。单位为bit/s或波特。 波特率与字符的传送速率之间的关系为: 波特率波特率= 一个字符的二进制编码位数一个字符的二进制编码位数*字符数字符数/秒秒. 要求发送端与接收端的波特率必须一致。假设:数据传送率是120字符/s,每个字符格式包含十个代码位(一个起始位、一个终止位、8个数据位),波特率为:10120=1200bit/s=1200波特 2同步通信方式 异步通信由于要在每个数据前后附加起始位、停止位,每发送一个字符约有20%的附加数据,占用了传输时
4、间,降低了传送效率。 同步通信则去掉每个数据的起始位和停止位,把要发送的数据按顺序连接成一个数据块,在数据块的在数据块的开头附加开头附加12个同步字符,在数据块的末尾加差错个同步字符,在数据块的末尾加差错校验字符校验字符。同步通信的数据格式如下图所示。在数据块内部,数据与数据之间没有间隙。同步字符同步字符 数据数据1 1 数据数据2 2 数据数据N N 校验字符校验字符1 1 校验字符校验字符2 2 同步字符同步字符要求:发送和接收双方要保持完全的同步,所以,要要求:发送和接收双方要保持完全的同步,所以,要求发送和接收设备必须使用求发送和接收设备必须使用同一时钟同一时钟。解决办法解决办法:(1
5、 1)对于近距离通信:采用在传输线中增加一根时钟)对于近距离通信:采用在传输线中增加一根时钟信号线来解决。信号线来解决。(2 2)对于远距离通信:通过解调器从数据流中提取同)对于远距离通信:通过解调器从数据流中提取同步信号,用锁相技术实现收、发频率完全相同的时步信号,用锁相技术实现收、发频率完全相同的时钟信号。钟信号。 如上所述,异步通信技术较为简单,应用范围广;如上所述,异步通信技术较为简单,应用范围广;同步通信传输速率高,适用于高速率、大容量的数同步通信传输速率高,适用于高速率、大容量的数据通信,但硬件复杂。据通信,但硬件复杂。612 串行通信的数据传送方式串行通信的数据传送方式1 1、单
6、工方式:数据传送是单向的,一端为发送另一、单工方式:数据传送是单向的,一端为发送另一端为接收,只需一条数据线。端为接收,只需一条数据线。 图图6-36-3(a a)2 2、半双工方式:数据传送是双向的,、半双工方式:数据传送是双向的,ABAB,BABA,同一时间只能做一个方向传送,只需一条数据线。同一时间只能做一个方向传送,只需一条数据线。 图图6-36-3(b b)3 3、全双工方式:数据传送是双向的,、全双工方式:数据传送是双向的,A A、B B两端可同两端可同时发送,又可同时接收,需两根数据线。时发送,又可同时接收,需两根数据线。 图图6-36-3(c c)A AB BA AB BA A
7、B B 613 串并转换和串行接口串并转换和串行接口(1 1)串并转换实现:由串并接口电路)串并转换实现:由串并接口电路+ +适当的软件配适当的软件配合合 串行接口芯片:异步接收串行接口芯片:异步接收/ /发送器发送器UARTUART 同步接收同步接收/ /发送器发送器USARTUSART(2 2) UARTUART组成:组成: 接收器接收器 发送器发送器 控制器控制器 串行串行并行并行 (接收器完成)(接收器完成) 并行并行串行串行 (发送器完成)(发送器完成) 主要功能:主要功能:完成格式信息的插入,滤除及错误校验完成格式信息的插入,滤除及错误校验 (控制器完成)(控制器完成) 格式信息指
8、异步通信中的起始位、奇偶位、停止位。格式信息指异步通信中的起始位、奇偶位、停止位。 n62 MCS-51系列单片机的串行接口系列单片机的串行接口n 对于单片机来说,为了进行串行通信,同样也需要有相应的串行接口电路。只不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部,成为单片机芯片的一个组成部分。MCS-51系列单片机有一个全双工的串行口 。n6.2.1 MSC-516.2.1 MSC-51系列单片机串行口的结构系列单片机串行口的结构 6.2.2 MSC-516.2.2 MSC-51系列单片机串行口的控制系列单片机串行口的控制 6.2.3 6.2.3 波特率设计波特率设计n621 51
9、系列单片机串行口的结构系列单片机串行口的结构1 1、组成:、组成: 发送数据缓冲器:只能写入,不能读出发送数据缓冲器:只能写入,不能读出 接收数据缓冲器:只能读出,不能写入接收数据缓冲器:只能读出,不能写入 发送控制器发送控制器 输出控制门输出控制门 接收控制器接收控制器 输入移位寄存器输入移位寄存器两个专用寄存器两个专用寄存器 SCONSCON:存放串行口的控制和状态信息:存放串行口的控制和状态信息 PCONPCON:改变串行通信波特率:改变串行通信波特率 发送缓冲器和接收缓冲器两个用同一符号发送缓冲器和接收缓冲器两个用同一符号SBUFSBUF,地址地址99H99H,用指令判断选哪个,用指令
10、判断选哪个 MOV SBUFMOV SBUF,A A 写入;写入;MOV AMOV A,SBUF SBUF 读出读出发送发送SBUFSBUF(99H99H)发送控制器发送控制器接收控制器接收控制器输入移位寄存器输入移位寄存器串串行行控控制制寄寄存存器器(98H98H)门门定定时时器器T1T111接收接收SBUFSBUF(99H99H)串行口中断串行口中断8 88 88 8TXD(P3.1)TXD(P3.1)RXD(P3.0)RXD(P3.0)TITIRIRI内部总线内部总线图图6-4 6-4 串行口结构框图串行口结构框图串行口发送示意图串行口发送示意图11110000MOVA, #0D2H M
11、OV SBUF, A D2H串行口接收示意图串行口接收示意图110MOV A, SBUF D2H 622 MCS-51单片机串行口的控制单片机串行口的控制1串行口控制寄存器串行口控制寄存器SCON 可设定串行口的工作模式、接收/发送控制及设置状态标志。字节地址98H,可位寻址。 SM0、SM1:工作模式选择位,可选择4种工作模式。 表表6-16-1 串行口的工作模式串行口的工作模式 SM0 SM1工工 作作 模模 式式 功功 能能 说说 明明 波波 特特 率率 0 0模式模式0同步移位寄存器方式同步移位寄存器方式fosc/12 0 1模式模式110位异步接收发送位异步接收发送 可变可变(由定时
12、器控制由定时器控制) 1 0模式模式211位异步接收发送位异步接收发送 fosc/32或或fosc/64 1 1模式模式311位异步接收发送位异步接收发送 可变可变(由定时器控制由定时器控制)SM0 SM1 SM2 REN TB8 RB8 TI RISM0 SM1 SM2 REN TB8 RB8 TI RID0D0D2D2D1D1D3D3D4D4D5D5D6D6D7D7 SM2:多机通信控制位。SM2=1,允许多机通信。 在主从式多机通信中,SM2用于从机的接收控制用于从机的接收控制。设SM2=1:从机只接收地址帧;若接收到的第9位数据(RB8)为0时(数址帧),不启动接收中断标志RI(即RI
13、=0),并且将接收到的前8位数据丢弃;只有当RB8为1时(地址帧),才将接收到的前8位数据送入SBUF中,并置位RI,以产生中断申请。 若SM2=0:从机可接收所有信息;不论第9位数据是0还是1,都置RI=1,接收到的数据都装入到SBUF中。 在模式1:若SM2=1,则只有接收到有效停止位时,RI才置1。 在模式0:SM2必须是0。 REN:允许接收控制位。该位由软件置1或清0。 REN=1时,允许接收数据;若REN=0,则禁止接收; TB8:在模式2和模式3中,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位。 它可作奇偶校验位(单机通信时)。 在多机通信中可作为发送地址帧或数据
14、帧的标志位。多机通信时,一般约定:发送地址帧时,设置发送地址帧时,设置TB8=1;发送数据帧时,设置;发送数据帧时,设置TB8=0。 在模式0或模式1中,该位未用。 RB8:在模式2和模式3中,RB8是接收数据的第9位,它即可以是约定的奇偶校验位(单机通信时)。 也可以是约定的地址/数据标志位 (多机通信时) 。可根据RB8被置位的情况对接收数据进行某种判断,多机通信:若若RB8=1,说明收到的数据为地址帧;,说明收到的数据为地址帧; RB8=0,收到的数据为数据帧。,收到的数据为数据帧。 在模式1时,若SM2=0(即不是多机通信情况),则RB8是已接收到的停止位。模式0中该位未用。 TI:发
15、送中断标志。 在一帧数据发送结束时由硬件置位。 TI=1表示表示“发送缓冲器已空发送缓冲器已空”,通知CPU可以发送下一帧数据。 TI位可作为查询;也可作为中断申请标志位。 TI不会自动复位,必须由软件清0。 RI:接收中断标志。 在接收到一帧有效数据后由硬件置位。 RI=1表示一帧数据接收完毕表示一帧数据接收完毕,并已装入接收缓冲器中,即即表示表示接收缓冲器已满接收缓冲器已满,通知CPU可取走该数据。 该位可作为查询,也可作为中断申请标志位。 同样RI不会自动复位,必须由软件清0。2电源控制寄存器PCONn字节地址为87H,不可位寻址,内容如下: 低低4 4位:位:CHMOSCHMOS器件的
16、掉电方式控制位。器件的掉电方式控制位。 SMODSMOD:波特率倍增位:波特率倍增位,在模式,在模式1 1、2 2、3 3中中 SMOD=1SMOD=1,波特率提高,波特率提高1 1倍;倍; SMOD=0SMOD=0,波特率不增倍;,波特率不增倍; 复位时,复位时,PCON=00HPCON=00HSMOD GF1 GF0 PD IDLSMOD GF1 GF0 PD IDLD7D7D5D5D6D6D4D4D3D3D2D2D1D1D0D0 6 62 23 3 波特率设计波特率设计 串行口有4种工作模式,对应着3种波特率。1 1模式模式0 0的波特率的波特率 波特率固定:每个机器周期产生一个移位时钟
17、,可发送或接收一位数据。且不受SMOD位的影响。即 模式模式0 0的波特率的波特率=fosc/12=fosc/122 2模式模式2 2的波特率的波特率 由系统的振荡频率fosc和SMOD共同确定,即 模式模式2 2的波特率的波特率=2=2SMODSMODfosc /64fosc /643 3模式模式1 1和模式和模式3 3的波特率的波特率 模式1和模式3的移位时钟由定时器T1的溢出率决定,故波特率由T1的溢出率与SMOD值共同决定,即 模式模式1 1和模式和模式3 3的波特率的波特率= 2= 2SMODSMODT1T1的溢出率的溢出率/32/32 当T1做波特率发生器使用时,最典型的用法是使T
18、1工作在模式2(初值自动加载)、定时方式,若计数初值为X,则每经过“256X”个机器周期。定时器T1就会产生一次溢出;溢出周期为: (256256X X) 溢出率为溢出周期的倒数,所以 波特率波特率= = 此时,定时器定时器T1T1工作在模式工作在模式2 2时的初值应为:时的初值应为: X=X=(256256 )1212fosc2SMOD32fosc12(256-X)fosc(SMOD+1)384波特率波特率例例6-1 6-1 已知51系列单片机系统晶振频率为11.0592 MHz,选用定时器T1工作模式2做波特率发生器,波特率为2400波特,求初值X。解:设波特率选择位SMOD=0,则有:
19、X=25611.0592*106(0+1)/(384*2400)=244=F4H 所以,(TH1)=(TL1)=F4H。 系统晶振频率选为11.0592 MHz是为了使初值为整数,从而产生精确的波特率。63 串行口工作模式串行口工作模式v6.3.1 6.3.1 模式模式0 0v6.3.2 6.3.2 模式模式1 1v6.3.3 6.3.3 模式模式2 2v6.3.4 6.3.4 模式模式3 3 631 模式模式0 模式0是同步移位寄存器方式,用于扩展并行I/o口。 模式0以8位为一帧数据,没有起始位和停止位,低位在前、高位在后,其帧格式为: 8位串行数据的输入或输出都是通过RXD端,而TXD端
20、用于送出同步移位脉冲,作为外接器件的同步移位信号。波特率固定为fosc/12。 发送与接收工作过程:发送与接收工作过程: 模式0的发送是在TI=0的情况下,由一条写发送缓冲器的指令开始。 例如: MOV SBUF ,A D0 D1 D2 D3 D4 D5 D6 D7 低位低位高位高位 CPU执行完该指令,串行口即将8位数据从RXD端送出(低位在前),同时,在TXD端发出同步移位脉冲。8位数据发送完毕后,由硬件置位TI=1。可通过查询TI位来确定是否发送完一组数据,TI=1表示发送缓冲器已空; 模式0的接收是在RI=0和REN=1的条件下,启动串行口接收。接收数据由RXD端输入(低位在前),TX
21、D端仍发出同步移位脉冲。接收到8位数据以后,由硬件使RI=1。可通过查询RI位来确定是否接收到一组数据,RI=1表示接收数据已装入接收缓冲器,可以由CPU用指令读取; 当CPU读取数据后,需用软件清RI,以准备接收下一组数据。632 模式模式1 模式1是串行异步通信方式。TXD为数据发送端,RXD为数据接收端。波特率可变。 一帧数据10位:1位起始位,位起始位,8 8位数据位,位数据位,1 1位停止位位停止位 模式模式1的发送的发送:在在TI=0时,由时,由MOV SBUFMOV SBUF,A A指令启动指令启动。启动发送后,串行口自动地插入一位起始位(逻辑0),接着是8位数据(低位在前),然
22、后又插入一位停止位(逻辑1),在发送移位脉冲作用下,依次由TXD端发出。 一帧信息发完之后,由硬件使一帧信息发完之后,由硬件使TI置置1,用以通知CPU可以发送下一帧数据。 模式1发送时的定时信号,也就是发送移位脉冲发送移位脉冲,是由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值是0还是1)而取得的。D0 D1 D2 D3 D4 D5 D6 D7D0 D1 D2 D3 D4 D5 D6 D7停止停止起始位起始位 模式模式1 1的接收的接收:在REN置1的条件下,串行口采样引脚RXD。 在无信号时,RXD端的状态为1,当采样到1至0的跳变时,确认是起始位“0”,就开始接收一帧数据。
23、在接收移位脉冲的控制下,把收到的数据一位一位地送入输入移位寄存器,直到9位数据全部收齐(包括一位停止位) 当RI=0且停止位为1或者SM2=0时,8位数据送入接收缓冲器SBUF,停止位进入RB8,同时硬件使硬件使RIRI置置1 1; 否则,8位数据不装入SBUF,放弃接收的结果。 模式1接收时,应先用软件清RI或SM2标志。 ORG 0 AJMP START ORG 20HSTART: MOV SP,#60H MOV SCON,#01010000B ;设定串行方式1:8位异步,允许接收 MOV TMOD,#20H ;设定计数器1为模式2 ORL PCON,#10000000B ;波特率加倍 M
24、OV TH1,#0F3H ;设定波特率为4800 MOV TL1,#0F3H SETB TR1 ;计数器1开始计时AGAIN: JNB RI,$ ;等待接收 CLR RI ;清接收标志 MOV A,SBUF ;接收数据缓冲 MOV SBUF,A ;送发送数据 JNB TI,$ ;等待发送完成 CLR TI ;清发送标志 SJMP AGAIN END 633 模式模式2 模式2也是串行异步通信方式。TXD为数据发送端,RXD为数据接收端。 一帧数据11位:1位起始位、8位数据位、1位可编程位、1位停止位,其帧格式为: 模式2的波特率有两种:一种是一种是fosc/32;fosc/32;另一种是另一
25、种是fosc/64fosc/64。 模式2的发送包括9位有效数据,在启动发送之前,应把要发送的第9位数值装入SCON寄存器中的TB8位,(是由用户根据通信协议用软件来设置。) 启动发送:设置好TB8的值以后,在TI=0的条件下,执行一条MOV SBUFMOV SBUF,A A 指令就可以。 串行口能自动把TB8取出,并装入到第9位数据的位置,逐一发送出去。D0 D1 D2 D3 D4 D5 D6 D7D0 D1 D2 D3 D4 D5 D6 D7停止停止起始位起始位0/10/1 发送完毕,由硬件使TI置1。这些过程与模式1基本相同。 模式2的接收与模式1基本相似。不同之处是要接收9位有效数据。
26、在模式1时是把停止位当作第9位数据来处理,而在模式2(或模式3)中存在着真正的第9位数据。因此,接收数据真正有效的条件为:(1) RI=0;(2) SM2=0或收到的第9位数据为1。 第一个条件是提供“接收缓冲器已空”的信息,即CPU已把SBUF中上次收到的数据读走,允许再次写入。 第二个条件则提供了根据SM2的状态和所接收到的第9位状态来决定接收数据是否有效。若第9位是一般的奇偶校验位(单机通信时),应令SM2=0,以保证可靠的接收;若第9位作地址/数据标志位(多机通信时),应令SM2=1,这样,当第9位为1时,表明接收的信息为地址帧,串行口将接收该地址信号。 若上述两个条件成立,接收的前8
27、位数据进入 SBUF,以准备让CPU读取,接收的第9位数据进入RB8,同时置位RI。 若以上条件不成立,则这次接收无效,放弃接收结果,即8位数据不装入SBUF,也不置位RI。 6 63 34 4 模式模式3 3 模式3同样是串行异步通信方式,其一帧数据格式,接收、发送过程与模式2完全相同,所不同的仅在于波特率。 模式模式2 2的波特率只有固定的两种的波特率只有固定的两种,而而模式模式3 3的波特的波特率由定时器率由定时器T1T1的溢出率及的溢出率及SMODSMOD决定。决定。这一点与模这一点与模式式1 1相同。相同。64 串行口应用举例串行口应用举例 6.4.1 6.4.1 用串行口扩展用串行
28、口扩展I/0I/0口口6.4.2 6.4.2 单片机双机通信技术单片机双机通信技术6.4.3 6.4.3 单片机多机通信技术单片机多机通信技术51系列单片机的串行口基本上是异步通信接口,利用串行口控制寄存器SCON中的有关控制位,可以实现单机通信、多机通信以及利用串行口来扩展I/O口。6 64 41 1 用串行口扩展用串行口扩展I/OI/O口口n串行口的模式0不属于通信,n工作在模式0时可以和外接的移位寄存器结合来进行并行I/O口的扩展。当串行口别无它用时,则可利用串行口模式0来扩展并行I/O口。n优点:这种方法不占用片外RAM地址,而且还能简化单片机系统的硬件结构。n缺点:操作速度较慢。n1
29、 1扩展并行输出口扩展并行输出口n在模式0时外接一个串入/并出的移位寄存器,就可以扩展一个8位并行输出口。所用的移位寄存器应该带有输出允许控制端,这样可以避免在数据串行输入时,并行输出端出现不稳定的输出。采用串入采用串入/ /并出移位寄存器并出移位寄存器CD4094CD4094(也可用(也可用74LS16474LS164)(1 1)先对)先对SCONSCON寄存器初始化,进行工作模式设置寄存器初始化,进行工作模式设置 模式模式0 0的设置:只把的设置:只把00H00H送入送入SCONSCON即可。即可。(2 2)数据输出:)数据输出: 中断方式:中断方式:TI=1TI=1,产生中断申请,产生中
30、断申请,可采用可采用 中断后才发下一组数据。中断后才发下一组数据。 查询方式:查询方式:TI=0TI=0,继续查询;,继续查询; TI=1TI=1,结束查询,发下一组数据。,结束查询,发下一组数据。STBSTB:输出允许控制端:输出允许控制端STB=1STB=1,打开输出控制门,打开输出控制门,输出输出例例6-2 用8751串行口外接CD4094扩展8位并行输出口,8位输出端的各位都接一个发光二极管。要求编程实现:发光二极管从左到右以一定延迟轮流点亮,并不断循环。假设发光二极管为共阴极,则电路连接如图6-6所示。解: 数据的串行发送采用查询方式,显示的延迟由数据的串行发送采用查询方式,显示的延
31、迟由延时程序延时程序DELAYDELAY实现。编程如下:实现。编程如下: ORG 0200H ORG 0200H BFS0BFS0:MOV SCON MOV SCON ,#00H #00H ;串行口模式;串行口模式0 0的初始化的初始化 CLR ES CLR ES ;禁止串行中断;禁止串行中断 MOV A MOV A ,#80H #80H ;拟先点亮最左边一位;拟先点亮最左边一位 LOOPLOOP:CLR P1.0 CLR P1.0 ;关闭并行输出;关闭并行输出 MOV SBUF MOV SBUF ,A A ;数据送;数据送SBUF,SBUF,启动串行输出启动串行输出 JNB TI JNB T
32、I ,$ $ ;查询;查询TI=0TI=0,未发送完等待,未发送完等待 SETB P1.0 SETB P1.0 ;TI=1,TI=1,发送完启动并行输出发送完启动并行输出 ACALL DELAY ACALL DELAY ;调延时程序;调延时程序 CLR TI CLR TI ;软件清;软件清TI TI RR A RR A ;右移一位,准备显示下一位;右移一位,准备显示下一位 SJMP LOOP SJMP LOOP ;转移,继续发送;转移,继续发送 RETRET2 2、扩展并行输入口:、扩展并行输入口:在模式在模式0 0时时, ,外接一个并入外接一个并入/ /串出的移位寄存器串出的移位寄存器, ,
33、就可就可以扩展一个以扩展一个8 8位并行输入口。位并行输入口。如图外接一个并入如图外接一个并入/ /串出的移位寄存器串出的移位寄存器CD4014CD4014(也可(也可用用74LS16574LS165)数据输入:数据输入: 中断方式:中断方式:RI=1RI=1,产生中断申请,产生中断申请,可采用可采用 中断后才读取数据。中断后才读取数据。 查询方式:查询方式:RI=0RI=0,继续查询;,继续查询; RI=1RI=1,结束查询,读取数据。,结束查询,读取数据。80518051P1.0P1.0TXDTXDRXDRXDCD4014CD4014Q8Q8CLKCLK并行输入并行输入P/SP/SP/SP
34、/S:预置:预置/ /移位控制端移位控制端P/S=1P/S=1:8 8位数据并行置入移位数据并行置入移位寄存器位寄存器P/S=0P/S=0:8 8位数据串行移位输出位数据串行移位输出 例例6-3 用8751串行口外接CD4014扩展8位并行输入口,输入数据由8个开关提供,另有一个开关S提供联络信号,电路连接如图6-7所示。当S=0时,要求输入数据,并连续输入8组数据,读入的数据转存到内部RAM 40H开始的单元中。试编程实现。 解 : 用串行口模式0接收数据,初始化时应使REN为1,采用查询方式输入数据。 ORG 0300HORG 0300HBJS0BJS0:JB P1.0 JB P1.0 ,
35、LP2 LP2 ;开关;开关K K未闭合,转返回未闭合,转返回 MOV R6 MOV R6 ,#08H #08H ;K K闭合,读入次数送闭合,读入次数送R6 R6 MOV R1 MOV R1 ,#40H #40H ;存放数据的首地址送;存放数据的首地址送R1 R1 CLR ES CLR ES ;禁止串行中断;禁止串行中断 MOV SCON MOV SCON ,#10H #10H ;设模式;设模式0,RI0,RI清清0,0,启动接收启动接收LPLP: SETB P1.1 SETB P1.1 ;P/S=1P/S=1,并行置入开关数据,并行置入开关数据 CLR P1.1 CLR P1.1 ;P/S
36、=0P/S=0,开始串行,开始串行 LP1LP1:JNB RI,LP1 JNB RI,LP1 ;查询;查询RI,RI=0,RI,RI=0,未接收完等待未接收完等待 CLR RI CLR RI ;接收完;接收完, ,清清RI,RI,准备接收下一个准备接收下一个 MOV A MOV A ,SBUF SBUF ;读取数据送入累加器;读取数据送入累加器 MOV R1 MOV R1 ,A A ;送内部;送内部RAMRAM区区 INC R1 INC R1 ;修改地址,指向下一个单元;修改地址,指向下一个单元 DJNZ R6 DJNZ R6 ,LP LP ;计数器减;计数器减1,1,不为不为0,0,转继续接
37、收转继续接收LP2LP2:RET RET ;接收完,子程序返回;接收完,子程序返回 642 单片机双机通信技术单片机双机通信技术 双机通信也称为点对点的异步通信。 进行双机通信时,是通过双方的串行口进行,其串行接口的硬件连接方式有多种,应根据实际需要进行选择。 1 1串行接口的硬件连接串行接口的硬件连接 (1 1)TTLTTL电平信号直接传输电平信号直接传输 当通信双方传输距离近时(小于5 m),可以采用单片机自身的TTL电平直接传输信息,这时双方的串行口可以直接连接,如图6-8所示。 (2) RS-232C电平信号传输电平信号传输 当通信双方距离较近时(15 m),可采用RS-232C 电平
38、信号传输。RS-232C通信接口是一种标准的串行接口,在电气特性上RS-232C采用负逻辑: 它规定它规定 逻辑逻辑“1”1”:-5V-5V-15V-15V 逻辑逻辑“0”0”:+5V+5V+15V+15V 单片机信号是单片机信号是TTLTTL电平电平 逻辑逻辑“1”1”:大于:大于+2.4V+2.4V 逻辑逻辑“0”0”:小于:小于+0.4V+0.4V RS-232信号电平与TTL电平不匹配,为了实现二者的连接,必须进行电平转换。一般采用专用芯片: MC1488:长线传输驱动器,完成TTLRS-232转换,MC1489:长线传输接收器,完成RS-232TTL转换。 MAX232:能完成发送转
39、换和接收转换的双重功能。 单一+5V供电,内置自升压电平转换电路专用芯片MAX232。一个芯片内含2个接收器和2个发送器,故可以同时完成发送转换和接收转换。v其引脚及连接如图所示,n引脚功能说明如下:n (1)C1+,C1-,C2+,C2-:外接电容端;n (2)R1in,R2in:2路RS-232C电平输入端。可接传 输线; (3) R1out,R2out :2路转换后的TTL电平输出端。可送单片机的RXD端; (4)T1in,T2in:2路TTL电平输入端。可接单片机的TXD端; (5) T1out,T2out :2路转换后的RS-232C电平信号输出端。可接传输线; (6)V+,V-:分
40、别经电容接电源和地 两个单片机之间双机通信,采用MAX232 进行电平转换,其硬件连接方法如图所示。 采用双绞线,传输速率小于20kbit/s 80318031与终端的接收,电平转换采用与终端的接收,电平转换采用MC1488MC1488、MC1489MC1489 (3 3)RS-422ARS-422A、RS-485RS-485电平信号传输电平信号传输 当通信双方距离较远时(大于15 m以上),可采用RS-422或RS-485C串行标准进行数据传输。 RS-422ARS-422A和和RS-485CRS-485C标准都是采用双线差分信号传输,标准都是采用双线差分信号传输,能更有效地抑制远距离传输中
41、的信号干扰。能更有效地抑制远距离传输中的信号干扰。TXDTXDRXDRXD80318031MC1489MC1489MC1488MC1488CRTCRT优点:优点: 传输速率快,传输距离远传输速率快,传输距离远 总线驱动能力和抗干扰能力强总线驱动能力和抗干扰能力强 有的电平转换带三态控制,可实现总线缓冲隔离有的电平转换带三态控制,可实现总线缓冲隔离 传输距离传输距离100m100m,速率,速率1Mbit/s1Mbit/s以上以上 传输距离传输距离1000m1000m,速率,速率100kbit/s100kbit/s以上以上 加中继器后传输距离更远加中继器后传输距离更远 RS-422ARS-422A
42、与与TTLTTL电平转换常用的芯片电平转换常用的芯片 传输线驱动器:传输线驱动器:SN75174SN75174、MC3487MC3487、MAX1480MAX1480 传输线接收器:传输线接收器:SN75175SN75175、MC3486MC3486、MAX1481MAX1481 为增加通信距离,减小通道及电源干扰,为增加通信距离,减小通道及电源干扰,可以在通可以在通信线路上采用光电隔离技术。信线路上采用光电隔离技术。 见图见图6-116-11。 图6-11 在图6-11中,发送方的数据由串行口TXD端输出,通过74LS04反相驱动后,经光电耦合器至平衡差分长线驱动器SN75174的输入端,S
43、N75174将输入的TTL信号变换成符合RS-422A标准的差动信号输出,经传输线(双绞线)将信号传送到接收端。 接收方通过平衡差分长线接收器SN75175将RS-422A接口信号转换成TTL电平信号,通过反相驱动后,经光电藕合到达接收方串行口的接收端RXD。 图6-11中每个通道的接收端都有3个电阻R1、R2、R3,其中R1为传输线的匹配电阻,取值范围在1001 k之间,其他2个电阻是为了解决第一个数据的误码而设置的匹配电阻。 还有一点值得注意,光电偶合器必须使用两组独立的电源,方能起到隔离、抗干扰的作用。 2双机通信软件设计双机通信软件设计 为确保通信成功,通信双方必须在软件上有一系列的约
44、定,通常称为软件协议。 本例规定双机通信的软件协议如下: (1) 甲、乙双方均工作在模式3; (2) 采用定时器T1工作在模式2做波特率发生器,波特率为2400 波特,当系统晶振为6 MHz时,计数初值为F3H,SMOD=1; (3) 发送方是把片内RAM 50H5FH单元中的数据块从串行口输出。接收方则把接收的数据块存入片外RAM 2000H200FH单元中; (4) 甲、乙双方使用偶校验,发送方通过对TB8置1或置0来保证发送偶数个“1”,接收方接收到有效数据(8位数据加RB8)后,要判断是否为偶数个“1”,若为偶数1,表明接收正确,置F0标志为0,否则,接收出错,置F0标志为1,然后返回
45、; (5) 甲、乙双方均可发送和接收,并且双方均采用查询方式接收和发送数据。 1)编写发送子程序)编写发送子程序 首先应对串行口进行初始化编程首先应对串行口进行初始化编程:主要是设置定时器T1的工作模式、装载初值,以满足波特率的要求;确定串行口的工作模式及控制设置。Sout:MOV TMOD,#20H ;设置定时器T1为模式2 MOV TL1,#0F3H ;送入波特率的初值 MOV TH1,#0F3H SETB TR1 ;启动定时器T1 MOV SCON,#0D0H ;设串口模式3,允许接收 MOV PCON,#80H ;设SMOD=1 MOV R0,#50H ;发送数据首地址送R0 MOV
46、R7,#10H ;数据块长度送R7TRS:MOV A,R0 ;取数据送A MOV C,P ;奇偶标志P送C MOV TB8,C ;根据P标志设置TB8(偶校验) MOV SBUF,A ;数据送SBUF,启动发送WAIT:JBC TI,CONT ;查TI=1,发送完则转,清TI SJMP WAIT ;TI=0未发送完,等待CONT:INC R0 ;修改数据地址 DJNZ R7,TRS ;一组数据未发送完,继续 RET ;发送完,子程序返回 2 2)编写接收子程序)编写接收子程序Sin:MOV TMOD,#20H ;设置定时器T1为模式2 MOV TL1,#0F3H ;送入波特率的初值 MOV T
47、H1,#0F3H SETB TR1 ;启动定时器T1 MOV SCON,#0D0H ;设串口模式3,允许接收 MOV PCON,#80H ;设SMOD=1 MOV DPTR,#2000H ;送存放数据首地址 MOV R7,#10H ;数据块长度送R7 WAIT:JBC RI,READ ;查RI=1一帧接收完,则转, 同时清RI SJMP WAIT ;RI=0未接收完,等待READ:MOV A,SBUF ;读入一帧数据 JNB P,PZ ;奇偶位P为0则转 JNB RB8,ERR ;P=1时,查RB8=0,则出错, 转出错处理 SJMP YES ;P=1时,查RB8=1,则正确, 转正确处理PZ
48、:JB RB8,ERR ;P=0,查RB8=1,则出错, 转出错处理;YES:MOVX DPTR,A ;P=0,且RB8=0,则正确,存放数据 INC DPTR ;修改存放数据的地址 DJNZ R7,WAIT ;一组数据未接收完,继续 CLR PSW.5 ;接收完,置接收正确标志 RET ;子程序返回ERR:SETB PSW.5 ;置出错标志 RET ;子程序返回 说明: 上述程序是在模式3下进行收发,双方约定偶校验,若约定奇校验,发送和接收程序稍加修改即可。 下面介绍在模式1下进行的双机通信,用累加校验和累加校验和进行校验的编程方法 此例规定通信协议和握手信号如下: (1) 甲、乙双方均采用
49、串行口模式1; (2) 采用定时器T1工作在模式2做波特率发生器,波特率为2400 波特,当系统晶振为6 MHz时,计数初值为F3H,SMOD=1; (3) 发送方是把片内RAM 50H6FH单元中的数据块从串行口输出。接收方则把接收的数据块存入片外RAM 2000H201FH单元中;v(4) 甲、乙双方使用累加和进行校验甲、乙双方使用累加和进行校验。即发送方每发送方每发送一个数据求一次发送一个数据求一次“累加和累加和”,一组数据发完后,将所求的“累加和”作为“校验和”发送给接收方。接收方每接收到一个数据也求一次接收方每接收到一个数据也求一次“累加和累加和”,所有数据接收完,将所求的“累加和”
50、与接收到的“校验和”相比较,如相等,说明正确;否则,说明出错。v(5) 甲机发送数据,乙机接收数据。甲机发送时,先发送一个呼叫信号“A1”,乙机收到后回答一个“B1”的应答信号,表示同意接收。甲机只有收到应答信号“B1”后才开始发送数据。乙机接收数据,若接收正确,向甲机回发“00H”,否则回发“0FFH”,请求重发。甲机收到“00H”的回答后结束发送。否则重新发送数据。程序框图如图6-12所示。 甲机发送程序清单如下甲机发送程序清单如下。 ORG 1000HORG 1000HA1SA1S:MOV TMODMOV TMOD,#20H #20H ;设置定时器;设置定时器T1T1为模式为模式2 2
51、MOV TL1 MOV TL1,#0F3H #0F3H ;送入;送入波特率的波特率的初值初值 MOV TH1MOV TH1,#0F3H #0F3H SETB TR1 SETB TR1 ;启动定时器;启动定时器T1T1 MOV SCON MOV SCON,#50H #50H ;设串口模式;设串口模式1 1,允许接收,允许接收 MOV PCONMOV PCON。#80H #80H ;设;设SMOD=1SMOD=1 AT1 AT1:MOV SBUFMOV SBUF,#0A1H#0A1H;发呼叫信号;发呼叫信号“A1”A1” AS1 AS1:JBC TIJBC TI,AR1 AR1 ;判是否发送完;判
52、是否发送完 SJMP AS1 SJMP AS1 ;未完等待;未完等待 AR1AR1:JBC RIJBC RI,AR2 AR2 ;发送完,接收乙机回答;发送完,接收乙机回答 SJMP AR1SJMP AR1 AR2 AR2:MOV AMOV A,SBUF SBUF ;读取乙机回答信号到;读取乙机回答信号到A A中中 XRL AXRL A,#0B1H #0B1H ;检测回答信号是否为;检测回答信号是否为“B1”B1” JNZ AT1 JNZ AT1 ;不是,转继续呼叫;不是,转继续呼叫 AT2:MOV R0,#50H ;是“B1”, 数据首地址送R0 MOV R7,#20H ;数据块长度送R7 MOV A ,#00H ;累加和单元清0AT3:MOV SBUF,R0 ;发送一个数据 ADD A,R0 ;求累加和 INC R0 ;地址指针加1AS2:JBC TI,AT4 ;判一帧是否发送完 SJMP AS2 ;未完等待AT4:DJNZ R7,AT3 ;数据块未发送完,转发送 MOV SBUF, A ;数据块发送完,发校验和AS3:JBC TI,AR3 ;判是否发送完 SJMP AS3 ;未完等待AR3: JBC RI,AR4 ;发送完、接收乙机的回答 SLMP AR3AR4:MOV A,SBUF ;读取乙机回答信号到A中 JNZ AT2 ;结果不为0,接收出错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版无人驾驶汽车测试协议
- 二零二四年度LED路灯购销合同协议书3篇
- 二零二五年度餐饮行业营销推广服务合同3篇
- 2024版履约担保公司履约担保管理系统
- 2025年生态小区绿化水资源利用承包合同3篇
- 建筑碗扣支架出租合同(2025版)3篇
- 2024路演合同范本:路演活动应急预案合同3篇
- 二零二五年度环保科技水处理技术与应用合同3篇
- 二零二五版防盗门品牌加盟与区域经营合同3篇
- 2025年度旅游度假村麻石景观设计与施工合同4篇
- 化工园区危险品运输车辆停车场建设标准
- 氧气雾化吸入法
- 6月大学英语四级真题(CET4)及答案解析
- 气排球竞赛规则
- 电梯维修保养报价书模板
- 危险化学品目录2023
- FZ/T 81024-2022机织披风
- GB/T 33141-2016镁锂合金铸锭
- JJF 1069-2012 法定计量检定机构考核规范(培训讲稿)
- 综合管廊工程施工技术概述课件
- 公积金提取单身声明
评论
0/150
提交评论