嵌入式第6章3mcs-51的串行接口.ppt

上传人:牧羊曲112 文档编号:6414957 上传时间:2023-10-28 格式:PPT 页数:77 大小:1.19MB
返回 下载 相关 举报
嵌入式第6章3mcs-51的串行接口.ppt_第1页
第1页 / 共77页
嵌入式第6章3mcs-51的串行接口.ppt_第2页
第2页 / 共77页
嵌入式第6章3mcs-51的串行接口.ppt_第3页
第3页 / 共77页
嵌入式第6章3mcs-51的串行接口.ppt_第4页
第4页 / 共77页
嵌入式第6章3mcs-51的串行接口.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《嵌入式第6章3mcs-51的串行接口.ppt》由会员分享,可在线阅读,更多相关《嵌入式第6章3mcs-51的串行接口.ppt(77页珍藏版)》请在三一办公上搜索。

1、6.3 MCS-51的串行接口,6.3.1 串行通信基础计算机与外部设备或计算机与计算机之间的数据交换称为通信。通信分为并行通信与串行通信两种基本方式。并行通信:将数据的各位用多条数据线同时进行传送,外加地址线和通信控制线。优点是传输速率高,缺点是长距离传输成本高,可靠性差,只适用于近距离传输。串行通信:将数据分成1位1位的形式在一条传输线上逐 个地传送。优点是传输线少,长距离传送时成本低,缺 点是传输速率低。,6.3.1 串行通信基础,(a)并行通信方式(b)串行通信方式图4.10 并行和串行通信方式,6.3.1 串行通信基础,1.串行通信的种类根据数据传输方式的不同,可将串行通信分为同步

2、通信和异步通信。1)同步通信同步通信是一种数据连续传输的串行通信方式,通信时发送方把需要发送的多个字节数据和校验信息连接起来,组成数据块。发送时,发送方只需在数据块前插入12个特殊的同步字符,然后按特定速率逐位输出(发送)数据块内的各位数据。接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。,6.3.1 串行通信基础,典型的同步通信格式如下:在这种通信方式中,数据块内的各位数据之间没有间 隔,传输效率高;发送、接收双方必须保持同步(使用同一时钟信号),且数据块长度越大,对同步要求就越高。同步通信设备复杂,成本高,一般只用在高速数字通信系统中。,6.3.1 串行通信基础,2)异

3、步通信异步通信是以字符帧为单位进行传输。每帧数据由4部分组成:起始位(占1位)、数据位(占 位)、奇偶校验位(占位,也可以没有校验 位)、停止位(占1或2位)。图4.11中给出的是8位数据位、1位奇偶校验位和1位 停止位,加上1位起始位,共11位组成一个传输帧。,6.3.1 串行通信基础,图4.11 异步通信字符帧格式,6.3.1 串行通信基础,发送方:传送时先输出起始位“”作为联络信号,接下来的是数据位和奇偶校验位,停止位“1”表示一个字符的结束。其中,数据的低位在前,高位在后。字符之间允许有不定长度的空闲位。接收方:传送开始后,接收设备不断检测传输线的电平状态,当收到一系列的“1”(空闲位

4、或停止位)之后,检测到一个“”,说明起始位出现,就开始接收所规定的数据位和奇偶校验位以及停止位。异步通信的特点:所需传输线少,设备开销较小,在单片机控制系统中得到广泛的应用。但每个字符要附加23位用于起止位,各帧之间还有间隔,因此传输效率不高。,6.3.1 串行通信基础,2.串行通信数据传输方向 根据串行通信数据传输的方向,可将串行通信系统传输方式分为:单工方式、半双工方式和全双工方式,如图4.12所示。图4.12 数据传输方式,6.3.1 串行通信基础,1)单工:数据传输仅能从发送设备传输到接收设备。2)半双工:两个串行通信设备之间只有一条数据线,数据传输可以沿两个方向,但需要分时进行。3)

5、全双工:是指两个串行通信设备之间可以同时进行 接收和发送。3种方式中,全双工方式的效率最高;半双工方式配置和编程相对灵活,传输成本较低;串行通信设备常选用半双工方式。,6.3.1 串行通信基础,3.波特率数据的传输速率可以用波特率表示。波特率是信号每秒变化的次数,单位是:符号/s比特率是每秒传送二进制数的位数单位是:(bit/s或kbit/s)。如每秒传送240个字符,而每个字符格式包含10位这时的波特率为10位(bit)240个/s=2400 bit/s。在异步串行通信中,接收方和发送方应使用相同的波特率,才能成功传送数据。,6.3.2 串行接口的基本结构,MCS-51单片机内部有一个全双工

6、异步串行I/O接口。MCS-51串行接口的内部简化结构如图4.13所示。图4.13 MCS-51串行接口结构图,6.3.2 串行接口的基本结构,P3.0是串行数据接收端RXD,P3.1是串行数据发送端TXD。串行接口的结构由串行接口控制电路、发送电路和接收电路3部分组成。发送电路由发送缓冲器(SBUF)、发送控制电路组成,用于串行接口的发送。接收电路由接收缓冲器(SBUF)、接收控制电路组成,用于串行接口的接收。两个数据缓冲器(SBUF)在物理上相互独立,在逻辑上却占用同一字节地址99H。,6.3.3 串行接口的控制与实现,单片机串行接口工作方式是通过初始化设置,将两个相应控制字分别写入串行控

7、制寄存器SCON(98H)和电 源控制寄存器PCON(97H)即可。1.和串行接口有关的特殊功能寄存器1)数据缓冲器(99H)发送缓冲器:只管发送数据,CPU写入SBUF的时候(MOV SUBF,A)即为发送;接收缓冲器:只管接收数据,CPU读取SBUF的过程(MOV A,SUBF)即为接收。,6.3.3 串行接口的控制与实现,发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。所以可同时发送数据、接收数据。对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。接收缓冲器是双缓冲结构,以避免在接收下一帧 数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,就会丢失前一

8、个字节的内容。,6.3.3 串行接口的控制与实现,2)串行接口控制寄存器SCON(98H)用于控制串行接口的工作状态,其格式如下:,6.3.3 串行接口的控制与实现,(1)SM0和SM1:用于设置串行接口的工作方式,2位可选择4种工作方式,如表4-3所示。其中,UART是通用异步接收和发送器的英文缩写,是晶振频率。,表4-3 串行接口的工作方式设置,/64或,6.3.3 串行接口的控制与实现,(2)REN:允许串行接收位。由软件置位或清零。REN=1时,串行接口允许接收数据;REN=0时,则禁止接收。(3)TB8:在方式2或方式3中,是发送数据的第9位。可以用作数据的奇偶校验位,或在多机通信中

9、,作为地址帧/数据帧的标志位。(4)RB8:在方式2或方式3中,是接收到数据的第9位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。,6.3.3 串行接口的控制与实现,(5)TI:发送中断标志位。由内部硬件使TI置“1”,向CPU发中断申请。必须用软件将其清“0”,取消此中断申请。(6)RI:接收中断标志位。由内部硬件使RI置“1”,向CPU发中断申请。必须用软件将其清“0”,取消此中断申请。(7)SM2:为多机通信控制位,主要用于方式2和方式3。通过控制SM2,可以实现多机通信。,7.3.2 多机通信接口,1多机通信原理 串行口控制寄存器SCON

10、中的SM2为多机通信接口控制位。串行口以方式2或3接收时,若SM2为1,则仅当接收到的第9位数据RB8为1时,数据才装入SBUF,置位RI,请求CPU对数据进行处理;当SM2为0时,则接收到一个数据后,不管第9位数据RB8是0还是1,都将数据装入接收缓冲器SBUF并置位中断标志RI,请求CPU处理。发送:先发送地址帧(TB8=1),再发送数据帧(TB8=0)。,MCS-51单片机多机通信系统举例,发送分二步:1.先发送地址(第九位为1 即TB8=1)所有子机都能接收 2.再发送数据(第九位为0即TB8=0)只有地址指定的子机接收,接收分二步:1.待接收状态 置SM2=1,只接收RB8=1的信息

11、帧,即地址信息 2.收到的地址与本机符合时,置SM2=0,即可接收数据信息 因为:数据帧的RB8=0,6.3.3 串行接口的控制与实现,(8)电源控制寄存器PCON(97H)其中只有1位SMOD与串行接口工作有关,格式如下:(9)SMOD:波特率系数控制位。在串行接口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率加倍,否则不加倍。复位时,SMOD=0。PCON的地址为97H,不能位寻址,需要字节传送。,6.3.3 串行接口的控制与实现,2.串行接口的工作方式 串行接口可由SCON中的SM0、SM1设置4种工作方式。1)方式0串行接口为同步移位寄存器的输入/输出方式,而

12、不是 通信方式,可外接移位寄存器,用于扩展并行I/O接口。注意:数据都由RXD(P3.0)引脚输入或输出,TXD引脚 总是用于输出同步移位脉冲。发送和接收均为8位数据,低位在先,高位在后。波特 率固定为/12。,6.3.3 串行接口的控制与实现,2)方式0输出 方式0时输出时序如图4.14所示。图4.14 方式0 输出时序,6.3.3 串行接口的控制与实现,当执行任何一条写SBUF的指令时,就启动了串行接口的发送过程(如MOV SBUF,A)。内部的定时逻辑在SBUF写入数据之后,经过一个完整的机器周期,输出移位寄存器中输出位的内容送RXD引脚输出;移位脉冲由TXD引脚输出,它使RXD引脚输出

13、的数据移入外部移位寄存器。当数据的最高位D7位移出后,停止发送数据和移位脉冲,就完成了1B的输出,并把中断标志(TI)置“1”。如要再发送下一字节数据,必须用软件先将TI清“0”。,6.3.3 串行接口的控制与实现,3)方式0输入 方式0时输入时序如图4.15所示。当SCON中的接收允许位REN=1和 RI=0时,就会启动一次串行接口接收过程。串行数据从RXD引脚输入,移位脉冲由TXD引脚输出。当接收完一帧数据后,由硬件将输入移位寄存器中的内容写入SBUF,并把中断标志(RI)置“1”。如要再接收数据,就再用软件将RI清“0”。,6.3.3 串行接口的控制与实现,方式0时输入时序如图4.15所

14、示。图4.15 方式0 输入时序,6.3.3 串行接口的控制与实现,4)方式1串行接口为波特率可变的8位数据的异步通信接口。TXD为数据发送引脚,RXD为数据接收引脚。传送1帧数据为10位,其中,1位起始位(0),8位数据位(低位在先),1位停止位(1)。方式1的波特率由定时器(T1)的溢出率和SMOD的状态决定。,6.3.3 串行接口的控制与实现,5)方式1输出 方式1的发送时序如图4.16所示。图4.16 方式1的发送时序,6.3.3 串行接口的控制与实现,执行一条写SBUF的指令就启动了发送过程。在发送移位时钟的作用下,从TXD引脚先送出起始位(0),然后是8位数据位,最后是停止位(1)

15、。1帧10位数据发送完后,将中断标志(TI)置“1”,向CPU申请中断。如要再发送下一字节数据,必须用软件先将TI清“0”。,6.3.3 串行接口的控制与实现,6)方式1输入软件使REN=1和RI=0时,就启动了接收过程。接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,说明起始位有 效,将其移入输入移位寄存器,并开始接收这1帧信息 的其余位。接收过程中,将每个数据位宽度分成16个状态,并在中 间的第7、8、9状态时对RXD采样,采样数据从输入移 位寄存器右边移入,起始位移至输入移位寄存器最左边 时,控制电路进行最后一次移位。,6.3.3 串行接口的控制

16、与实现,当RI=0,且SM2=0(或接收到的停止位为“1”)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。如要再接收数据,就再用软件将RI清“0”。图4.17 方式1的接收时序,6.3.3 串行接口的控制与实现,7)方式2和方式3串行接口为9位数据的异步通信接口。TXD为数据发送引脚,RXD为数据接收引脚。传送1帧数据为11位。其中1位起始位(0),然后是8位数据位(低位在先),第10位是SCON中的TB8或RB8,最后1位是停止位(1)。方式2的波特率固定为晶振频率的1/64或1/32,方式3波特率由定时器(T1)的溢出率和S

17、MOD的状态决定。,6.3.3 串行接口的控制与实现,8)方式2和方式3 输出 方式2和方式3的发送时序如图4.18所示。,图4.18 方式2和方式3的发送时序,6.3.3 串行接口的控制与实现,CPU向SBUF写入数据时,就启动了发送过程。SCON中的TB8写入输出移位寄存器的第9位,8位数据装入SBUF。发送开始时,先把起始位0输出到TXD引脚,然后是9位数据位,最后是停止位(1)。1帧11位数据发送完后,将中断标志(TI)置“1”,向CPU申请中断。如要再发送下一字节数据,必须用软件先将TI 清0。,6.3.3 串行接口的控制与实现,9)方式2和方式3输入 方式2和方式3的接收时序如图4

18、.19所示。图4.19 方式2、方式3的接收时序,6.3.3 串行接口的控制与实现,软件使REN=1和RI=0时,就启动了接收过程。接收器就以所选频率的16 倍速率开始采样RXD引脚的电平状态,当检测到RXD引脚发生负跳变时,说明起始位有效,将其移入输入移位寄存器,开始接收这1帧数据。接收时,将每个数据位宽度分成16个状态,并在中间的第7、8、9状态时对RXD采样,采样数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。,6.3.3 串行接口的控制与实现,当RI=0,且SM2=0(或接收到的第9位数据为“1”)时,接收到的数据装入接收缓冲器和RB8(接收数据的第9位

19、),置RI=1,向CPU请求中断。如要再接收数据,就再用软件将RI清“0”。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。,6.3.3 串行接口的控制与实现,3.波特率的计算串行通信双方对发送或接收数据的波特率事先要约定好保持一致。MCS-51单片机的波特率设置与工作方式有关,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率和SMOD的状态决定。,6.3.3 串行接口的控制与实现,各种方式的波特率计算由以下公式确定:方式0的波特率=/12 方式2的波特率=(2SMOD/64)方式1的波特率=(2SMOD/32)(T1溢出率)方式

20、3的波特率=(2SMOD/32)(T1溢出率),6.3.3 串行接口的控制与实现,当T1作为波特率发生器时,常使T1工作在自动重装初值的8位定时器方式,并禁止T1中断。这种方式可避免重新设定定时初值而产生波特率误差。TH1从初值计数到产生溢出,它每秒溢出的次数称为溢出率。T1溢出率=/12256-(TH1),6.3.3 串行接口的控制与实现,在单片机的应用中,相同机种单片机的波特率很容易达到一致,只要晶振频率相同,可以采用完全一致的设置参数。异机种单片机的波特率设置较难达到一致,这时的设计原则应使两个通信设备之间的波特率误差小于2.5%。常用的串行接口波特率、晶振频率以及各参数的关系如表4-4

21、所示。,6.3.3 串行接口的控制与实现,表4-4常用波特率、晶振频率与定时器(T1)的参数关系,6.3.4 用串行接口扩展并行I/O接口,串行接口工作在方式0时用于扩展并行I/O接口。74LS164为一个1位串行输入8位并行输出的移位寄存器,TXD引脚输出的移位脉冲将RXD引脚输出的数据(低位在先)逐位移入74LS164,扩展8个LED指示灯。74LS165为一个8位并行输入1位串行输出的移位寄存器,TXD引脚输出的移位脉冲将74LS165的8位并行输入的数据(低位在先)逐位移入RXD引脚,扩展8个按键。图4.20为一个串行接口扩展并行I/O接口方案。,6.3.4 用串行接口扩展并行I/O接

22、口,【例】【功能】如图4.20所示的8个LED指示灯,指示8个按键闭合状态,有键按下时对应的指示灯亮。图4.20 串行接口扩展并行I/O接口方案,6.3.4 用串行接口扩展并行I/O接口,【实现程序】SIO:MOVSCON,#10H;REN=1,RI=0,SM0=0,SM1=0,;串行口工作在方式0,且启动接收过程LOOP:CLR P1.0;允许并行读入按键到74LS165,S/=0;有按键的位读数为0 SETB P1.0;允许串行移位,S/=1 CLR RI;启动接收 JNB RI,$;若RI=0,8位数据未接收完,等待 MOV A,SBUF;若RI=1,8位数据接收完,读入A CLR TI

23、;清发送标志,准备发送 MOV SBUF,A;启动发送,输出数据位0,;将点亮对应位LED JNB TI,$;8位数据未发送完,等待 SJMP LOOP;8位数据发送完,循环,6.3.5 串行通信接口标准,除了满足波特率、工作方式和特殊功能寄存器的设定外,串行通信双方必须采用相同的接口标准,才能进行正常的通信。由于不同设备串行接口的信号线定义、电气规格等特性都不尽相同,因此要使这些设备能够互相连接,需要统一的串行通信接口。下面介绍常用的RS-232C和RS-485串行通信接口标准。,6.3.5 串行通信接口标准,1.RS-232C接口 RS-232C定义了数据终端设备(DTE)与数据通信设备(

24、DCE)之间的物理接口标准。接口标准包括引脚定义、电气特性和电平转换几方面内容:1)引脚定义 RS-232C接口规定使用25针“D”型口连接器,常用9针“D”型口连接器替代25针连接器。连接器引脚定义如图:,6.3.5 串行通信接口标准,RS-232C接口主要信号线的功能定义如表4-5所示。,表4-5 RS-232C标准接口主要引脚定义,6.3.5 串行通信接口标准,6.3.5 串行通信接口标准,2)电气特性RS-232C采用负逻辑电平,规定DC(-3-15V)为逻辑1,DC(+3+15V)为逻辑0。通常RS-232C的信号传输最大距离为30m。最高传输速率为20kbit/s。RS-232C的

25、逻辑电平与通常的TTL和MOS电平不兼容,为了实现与TTL或MOS电路的连接,要外加电平转换电路。,6.3.5 串行通信接口标准,3)RS-232C电平与TTL电平转换驱动电路 常见的TTL到RS-232C的电平转换器有MC1488、MC1489和MAX 202/232/232A等芯片。图4.22 MAXM 202/232/232A内部逻辑功能,6.3.5 串行通信接口标准,2.RS-485接口RS-232C推出的时间较早,传输速率慢,传输距离短,无法满足许多工业现场的使用要求。EIA相继公布了RS-449、RS-423、RS-422和RS-485等替代标准。RS-485以其优秀的特性、较低的

26、成本在工业控制领域得到了广泛的应用。,6.3.5 串行通信接口标准,1)引脚定义RS-485使用两种标准接口连接器,37针“D”型口连接器和9针“D”型口连接器,主要信号线的功能定义如表4-6所示。表4-6 RS-422标准接口主要引脚定义,6.3.5 串行通信接口标准,2)电气特性RS-485工作于半双工方式,采用一对平衡差分信号线。RS-485是一种多发送器标准,在通信线路上最多可以使用32 对差分驱动器/接收器。驱动器输出电平DC(-1.5-6V)为逻辑“1”,DC(+3+15V)为逻辑“0”。接收器输入差分电压在-200mV以下时为逻辑“1”,在+200mV以上时为逻辑“0”。通常RS

27、-485的信号传输最大距离为1200m,最高传输速率为10Mbit/s。,6.3.5 串行通信接口标准,3)RS-485电平与TTL电平转换驱动电路RS-485的驱动接口部分通常由Maxim公司生产的差分平衡器收发芯片MAX 481/483/485/487/489等,每种型号的芯片内部均集成了一个驱动器和一个接收器。MAX 481/483/485/487为8引脚封装,引脚功能说明如下。,6.3.5 串行通信接口标准,(1)RO:接收器输出;(2):接收器输出使能,引脚为“0”,允许接收器,引脚为输出“1”,接收器输出被禁止;(3)DE:驱动器输出使能,引脚为“1”,允许驱动器工 作,引脚为“0

28、”,驱动器工作被禁止;(4)DI:驱动器输入;(5)GND:接地端;(6)A:接收器非反相输入和驱动器非反相输出端;(7)B:接收器反相输入和驱动器反相输出端;(8)VCC:电源端,电压范围可以是4.755.25V;,6.3.5 串行通信接口标准,其引脚分布与典型工作电路如图4.23所示:图4.23 MAX 481/483/485/487引脚图及接口示意图,6.3.6 单片机串行接口通信技术举例,1.单片机与单片机之间的双机通信双机之间通信应考虑接口电路、通信协议和程序编 制等几个方面问题。1)接口电路TTL电平通信接口:系统之间的距离在1m范围内RS-232C通信接口:系统之间的距离在30m

29、范围内RS-485通信接口:系统之间的距离在1200m范围内,6.3.6 单片机串行接口通信技术举例,双机通信根据通信距离和抗干扰性,可选择TTL电平直连,RS-232C和RS-485等接口方法如图4.24所示。(a)TTL电平传输通信接口电路 b)RS-232C通信接口电路 图4.24 双机通信接口电路,6.3.6 单片机串行接口通信技术举例,(c)RS-485通信接口电路 图4.24 双机通信接口电路,6.3.6 单片机串行接口通信技术举例,2)通信协议TTL电平直连,RS-232C双机通信的软件设计方法是一样的。RS-485双机通信是半双工方式,在单片机系统发送或接收数据前,应先将MAX

30、485的发送门或接收门打开。当P1.0=1时,发送门打开,接收门关闭;当P1.0=0时,接收门打开,发送门关闭。,6.3.6 单片机串行接口通信技术举例,下面以图4.24(a)(b)为接口电路,规定双机通信协议如下:(1)通信的甲、乙双方均可发送和接收;(2)约定采用串行口方式1进行通信,1帧信息为10位;(3)波特率为2400Bd,T1工作在定时器方式2,振荡频 率选用11.0592MHZ,查表可得TH1=TL1=0F4H,PCON寄存器的SMOD位为“0”;,6.3.6 单片机串行接口通信技术举例,(4)设甲机是发送方,乙机是接收方。当甲机发送时,先发送一个“0AAH”联络信号,乙机收到后

31、回答一 个“55H”应答信号,表示同意接收;(5)假定数据块长度为100B,数据放在起始地址为 1000H的片外RAM中,一个数据块发送完毕后立即 发送“校验和”;(6)若两者相等,说明接收正确,乙机回答0FH;若两 者不相等,说明接收不正确,乙机回答0F0H,请求 重发。,6.3.6 单片机串行接口通信技术举例,归纳联络信号,并以为指令格式定义如表4-7所示。,6.3.6 单片机串行接口通信技术举例,3)程序实现收发数据采用的是查询方式,程序实现如下。【甲机发送程序】START:CLR EA MOV TMOD,#20H;定时器1置为方式2 MOV TH1,#0F4H;装载定时器初值,波特率2

32、400 MOV TL1,#0F4H MOV PCON,#00H SETB TR1;启动定时器 MOV SCON,#50H;设定串口方式1,且准备接收应答信号 TLP1:MOV SBUF,#READY;发联络信号“0AAH”JNB TI,$;等待1帧发送完毕 CLR TI;允许再发送 JNB RI,$;等待乙机的应答信号 CLR RI;允许再接收 MOV A,SBUF;乙机应答后,读至A XRL A,#OK;判断乙机是否准备完毕 JNZ TLP1;乙机未准备好,继续联络,6.3.6 单片机串行接口通信技术举例,TLP2:MOV DPTR,#ADDR;乙机准备好,设定数据块地址指针初值 MOV R

33、7,#LENTH;设定数据块长度初值 MOV R6,#00H;清校验和单元 TLP3:MOVX A,DPTR MOV SBUF,A;发送一个数据字节 ADD A,R6;求校验和 MOV R6,A;保存校验和 INC DPTR JNB TI,$CLR TI DJNZ R7,TLP3;整个数据块是否发送完毕 MOV SBUF,R6;发送校验和 JNB TI,$CLR TI JNB RI,$;等待乙机的应答信号 CLR RI MOV A,SBUF;乙机应答,读至A XRL A,#SUCC;判断乙机是否接收正确 JNZ TLP2;乙机应答“错误”,转重新发送 RET;乙机应答“正确”,返回,6.3.6

34、 单片机串行接口通信技术举例,【乙机接收程序】START:CLR EA MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H MOV PCON,#00H SETB TR1 MOV SCON,#50H;设定串口方式1,且准备接收 RLP1:JNB RI,$;等待甲机的联络信号 CLR RI MOV A,SBUF;收到甲机信号 XRL A,#READY;判是否为甲机联络信号 JNZ RLP1;不是甲机联络信号,再等待 MOV SBUF,#OK;是甲机联络信号,发应答信号 JNB TI,$CLR TI MOV DPTR,#ADDR;设定数据块地址指针初值 MOV R7,

35、#LENTH;设定数据块长度初值 MOV R6,#00H;清校验和单元,6.3.6 单片机串行接口通信技术举例,RLP2:JNB RI,$CLR RI MOV A,SBUF MOVX DPTR,A;接收数据存储 INC DPTR ADD A,R6;求校验和 MOV R6,A DJNZ R7,RLP2;判数据块是否接收完毕 JNB RI,$;完毕,接收乙机发来的校验和 CLR RI MOV A,SBUF XRL A,R6;比较校验和 JZ GOOG;校验和相等,跳至发正确标志 MOV SBUF,#ERRO;校验和不相等,发错误标志 JNB TI,$;转重新接收 CLCR TIGOOD:MOV S

36、BUF,#OK RET,6.3.6 单片机串行接口通信技术举例,单片机与PC组合构成的分布控制系统是工控系统的一个重要发展方向。在系统中,单片机一般称为下位机,通常用来完成数据的采集和上传。由PC、网络设备、数据库服务器组成的后台应用部分则统称为上位机,对下位机的上传数据进行分析并处理。,6.3.6 单片机串行接口通信技术举例,如图4.25所示的热表控制分布式工控系统。图4.25 热表控制分布式工控系统,6.3.6 单片机串行接口通信技术举例,1)硬件的接口电路MAX485的使能端,DE由AT89C51的P2.7控制。单片机的晶振选用11.0592MHz。如图4.26所示,PC的接口直接接到R

37、S-232串口即可。图4.26 单片机与MAX485接口电路,6.3.6 单片机串行接口通信技术举例,2)软件设计PC应用软件在视窗Windows系统下采用简单易学的Visual Basic(简称VB)编程。VB提供了具有强大功能的通信控件MSCOMM,文件名为MSCOMM.vbx。该控件可设置串行通信的数据发送和接收,对串口状态及串口通信的信息格式和协议进行设置。,6.3.6 单片机串行接口通信技术举例,假设每台PC管理4块热表,仅作主机呼叫,单片机应答判断后,向上传输热量值的通信协议如下:(1)通信的甲、乙双方均可发送和接收;(2)单片机约定采用串行接口方式3进行通信,波特率 为9600B

38、d。(3)待机时热表单片机为接收状态,接收到呼叫后判断 是否呼叫本机;是,向主机传输热量值,否,不作 响应。主机接收到返回值在界面显示。超时提示自 动退出。,6.3.6 单片机串行接口通信技术举例,【PC程序实现(VB程序语言)】Public dealy As string;定义延时参数 Sub Form_Load()MSComm.CommPort=1;设置接口数 MSComm.PortOpen=TURE;开接口 MSComm.Settings=“9600,N,8,1”;设置通信参数 Timer.interval=1000;设置定时时间End SubSub Send_Click1();读取热表

39、1的主机程序;读其他3个热表的程序相似 Dim Istring as string MSComm.InBufferCount=0;输入缓冲区置零 MSComm.Output=“1”;呼叫热表1 Timer.Enabled=true;使能定时器 Do DoEvents();等待接收数据,6.3.6 单片机串行接口通信技术举例,If dealy=“dl”then;判断是否超时 Goto exitsub End if Loop Until(MSComm.InBufferCount=6)TxtReceive.text=MSComm.Input;接收到数据显示 Timer.Enabled=FALSE M

40、SComm.InBufferCount=0Exitsub:MsgBox“超时!无数据返回!”Timer1.Enabled=FALSEEnd Sub Sub Exit_Click()MSComm.PortOpen=FALSE UnLoad Me End Sub,6.3.6 单片机串行接口通信技术举例,【热表1单片机程序实现】【说明】热量值以ASCII码存储于40H45HORG 2000HMAIN:MOV SP,60HMOV TMOD,#20H;在11.0592MHz下,串行接口波特率MOV TH1,#0FDH;9600bps,方式3MOV TL1,#0FDHMOV PCON,#00HSETB T

41、R1MOV SCON,#0D8HLOOP:JBC RI,RECEIVE;接收到数据后立即发出去CLR P2.7;MAX485接收使能端有效NOPSJMP LOOP,6.3.6 单片机串行接口通信技术举例,RECEIVE:MOV A,SBUFCJNE A,“1”,LOOP;判断是否呼叫本机SETB P2.7;MAX485发送使能端有效NOPMOV R1,#06HMOV R0,#40HSCYCLE:LCALL SDATA;发送热量值,调用发送子程序INC R0DJNZ R1,SCYCLE;发送完毕?LJMP LOOPSDATA:MOV A,R0;发送子程序MOV SBUF,ASWAIT:JBC TI,SEXITSJMP SWAITSEXIT:RET,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号