片机的串行通信.ppt

上传人:牧羊曲112 文档编号:5997869 上传时间:2023-09-12 格式:PPT 页数:119 大小:1.17MB
返回 下载 相关 举报
片机的串行通信.ppt_第1页
第1页 / 共119页
片机的串行通信.ppt_第2页
第2页 / 共119页
片机的串行通信.ppt_第3页
第3页 / 共119页
片机的串行通信.ppt_第4页
第4页 / 共119页
片机的串行通信.ppt_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《片机的串行通信.ppt》由会员分享,可在线阅读,更多相关《片机的串行通信.ppt(119页珍藏版)》请在三一办公上搜索。

1、,单片机串行通信I/O接口的结构串行通信控制寄存器单片机串行通信的工作方式以及串行通信应用。,第7章 单片机的串行通信,7.1 数据通信,在实际工作中,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也往往要交换信息,所有这些信息交换均可称为通信。通信方式有两种,即并行通信和串行通信。通常根据信息传送的距离决定采用哪种通信方式。例如,在IBM-PC机与外部设备(如打印机等)通信时,如果距离小于30m,可采用并行通信方式;当距离大于30m时,则要采用串行通信方式。89C51单片机具有并行和串行二种基本通信方式。,返回,计算机与外部设备或计算机与计算机之间的数据交换称为通

2、信。通信分为并行通信与串行通信两种基本方式。并行通信:将数据的各位用多条数据线同时进行传送,外加地址线和通信控制线。优点是传输速率高,缺点是长距离传输成本高,可靠性差,只适用于近距离传输。串行通信:将数据分成1位1位的形式在一条传输线上逐 个地传送。优点是传输线少,长距离传送时成本低,缺 点是传输速率低。,7.1串行通信基础,7.1.1 串行通信基础,(a)并行通信方式(b)串行通信方式图7.1 并行和串行通信方式,串行通信的种类,根据数据传输方式的不同,可将串行通信分为同步 通信和异步通信。1 同步通信同步通信是一种数据连续传输的串行通信方式,通信时发送方把需要发送的多个字节数据和校验信息连

3、接起来,组成数据块。发送时,发送方只需在数据块前插入12个特殊的同步字符,然后按特定速率逐位输出(发送)数据块内的各位数据。接收方在接收到特定的同步字符后,也按相同速率接收数据块内的各位数据。,1 同步通信SYNC(Synchronous Data Communication),在这种通信方式中,数据块内的各位数据之间没有间 隔,传输效率高;发送、接收双方必须保持同步(使用同一时钟信号),且数据块长度越大,对同步要求就越高。同步通信设备复杂,成本高,一般只用在高速数字通信系统中。,2 异步通信异步通信是以字符帧为单位进行传输。每帧数据由4部分组成:起始位(占1位)、数据位(占 位)、奇偶校验位

4、(占位,也可以没有校验 位)、停止位(占1或2位)。图7.2中给出的是8位数据位、1位奇偶校验位和1位 停止位,加上1位起始位,共11位组成一个传输帧。,图7.2 异步通信字符帧格式,发送方:传送时先输出起始位“”作为联络信号,接下来的是数据位和奇偶校验位,停止位“1”表示一个字符的结束。其中,数据的低位在前,高位在后。字符之间允许有不定长度的空闲位。接收方:传送开始后,接收设备不断检测传输线的电平状态,当收到一系列的“1”(空闲位或停止位)之后,检测到一个“”,说明起始位出现,就开始接收所规定的数据位和奇偶校验位以及停止位。异步通信的特点:所需传输线少,设备开销较小,在单片机控制系统中得到广

5、泛的应用。但每个字符要附加23位用于起止位,各帧之间还有间隔,因此传输效率不高。,串行通信数据传输方向,根据串行通信数据传输的方向,可将串行通信系统传输方式分为:单工方式、半双工方式和全双工方式,如图7.3所示。图7.3 数据传输方式,串行通信数据传输方向,1)单工:数据传输仅能从发送设备传输到接收设备。2)半双工:两个串行通信设备之间只有一条数据线,数据传输可以沿两个方向,但需要分时进行。3)全双工:是指两个串行通信设备之间可以同时进行 接收和发送。3种方式中,全双工方式的效率最高;半双工方式配置和编程相对灵活,传输成本较低;串行通信设备常选用半双工方式。,图7-4 串行通信中的数据传送方式

6、,波特率(Baud rate),串行通信的速率用波特率来表示,所谓波特率就是指一秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特。即:1波特1bps(位/秒)。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。如每秒传送240个字符,而每个字符格式包含10位,这时的波特率为10位(bit)240个/s=2400 bit/s。在异步串行通信中,接收方和发送方应使用相同的波特率,才能成功传送数据。异步通信的传送速率在50b/s-19200b/s之间,常用于计算机到终端机和打印机之间的通

7、信、直通电报以及无线电通信的数据发送等。,串行通信的过程及通信协议,1、串并转换与设备同步 两个通信设备在串行线路上成功地实现通信必须解决两个问题:一是串并转换,即如何把要发送的并行数据串行化,把接收的串行数据并行化;二是设备同步,即同步发送设备与接收设备的工作节拍,以确保发送数据在接收端被正确读出。,返回,1、串并转换与设备同步,(1)串并转换 串行通信是将计算机内部的并行数据转换成串行数据,将其通过一根通信线传送;并将接收的串行数据再转换成并行数据送到计算机中。,返回,1、串并转换与设备同步,在计算机串行发送数据之前,计算机内部的并行数据被送入移位寄存器并一位一位地输出,将并行数据转换成串

8、行数据。如图7-5所示。在接收数据时,来自通信线路的串行数据被压入移位寄存器,满8位后并行送到计算机内部。如图7-6所示。在串行通信控制电路中,串-并、并-串转换逻辑被集成在串行异步通信控制器芯片中。89C51单片机的串行口和IBM-PC相同。,返回,图7-5,返回,图7-6,返回,(2)设备同步,进行串行通信的两台设备必须同步工作才能有效地检测通信线路上的信号变化,从而采样传送数据脉冲。设备同步对通信双方有两个共同要求:一是通信双方必须采用统一的编码方法;二是通信双方必须能产生相同的传送速率。,返回,(2)设备同步,采用统一的编码方法确定了一个字符二进制表示值的位发送顺序和位串长度,当然还包

9、括统一的逻辑电平规定,即电平信号高低与逻辑1和逻辑0的固定对应关系。通信双方只有产生相同的传送速率,才能确保设备同步,这就要求发送设备和接收设备采用相同频率的时钟。发送设备在统一的时钟脉冲上发出数据,接收设备才能正确检测出与时钟脉冲同步的数据信息。,返回,2、串行通信协议,通信协议是对数据传送方式的规定,包括数据格式定义和数据位定义等。通信双方必须遵守统一的通信协议。串行通信协议包括同步协议和异步协议两种。在此只讨论异步串行通信协议和异步串性协议规定的字符数据的传送格式。,返回,2、串行通信协议,(1)起始位通信线上没有数据被传送时处于逻辑1状态。当发送设备要发送一个字符数据时,首先发出一个逻

10、辑0信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。,返回,2、串行通信协议,(2)数据位 当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8。IBM-PC中经常采用7位或8位数据传送,89C51串行口采用8位或9位数据传送。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次顺序在接收设备中被转换为并行数据。,返回,2、串行通信协议,(3)奇偶校验位 数据位发送完之后,可以发送

11、奇偶校验位。奇偶校验用于有限差错检测,通信双方需约定已知的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑1的个数必须是偶数;如果选择奇校验,那么逻辑1的个数必须是奇数。,返回,2、串行通信协议,(4)停止位约定 在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位,1.5位或2位的高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,直至下一个字符数据的起始位到来。,返回,2、串行通信协议,(5)波特率设置 通信线上传送的所有位信号都保持一致的信号持续时间,每一位的信号持续时间都由数据传送速度确定,而传送速度是以每秒多少个二进制位

12、来衡量的,这个速度叫波特率。如果数据以300个二进制位每秒在通信线上传送,那么传送速度为300波特,通常记为300b/s。,返回,7.2 单片机串行的通信原理及工作方式,7.2.1 单片机串行口的结构主要由两个数据缓冲寄存器SBUF和一个输入移位寄存器,以及一个串行控制寄存器SCON等组成。,7.2.2 单片机串行口的控制,1串行口控制寄存器SCON,(1)SM0、SM1:串行口工作方式选择位。,(2)SM2:在方式2和方式3中主要用于多机通信控制。在方式2和3中,若SM21且接收到的第九位数据(RB8)为1,才将接收到的前8位数据送入接收SBUF 中,并置位RI产生中断请求;否则丢弃前8位数

13、据。若 SM20,则不论第九位数据(RB8)为1还是为0,都将 前8位送入接收SBUF中,并产生中断请求。方式0时,SM2必须置0。(3)REN:串行接收允许位。由软件置位或清除。软件置1时,串行口允许接收,清零后禁止接收。(4)TB8:发送数据的第9位。双机通信时它可作奇偶校验位;在多机通信中可作为区别地址帧或数据帧的标识位。若(RB8)0,说明是数据帧,则使接收中断标志位RI0,信息丢失;若(RB8)1,说明是地址帧,数据装入SBUF并置RI1,中断所有从机,被寻址的目标从机清除SM2以接收主机发来的一帧数据。其他从机仍然保持SM21。(5)RB8:在方式2和方式3中是接收的第9位数据。(

14、6)TI:发送中断标志位。(7)RI:接收中断标志位。,2专用寄存器PCON,PCON的各位的定义和功能如下:当SMODl时,方式1、2、3的波特率加倍,否则不加倍。,7.2.3 单片机串行口的工作方式,1方式0串行接口工作方式0为同步移位寄存器方式,多用于I/O口的扩展,其波特率是固定的,为fosc/12。TXD引脚输出同步移位脉冲,RXD引脚串行输入/输出。2方式1在方式l时,串行口被设置为波特率可变的8位异步通信接口。发送/接收1帧数据为10位,其中1位起始位、8位数据位(先低位后高位)和1位停止位。,3方式2串行口工作为方式2时,被定义为9位异步通信接口。发送/接收1帧数据为11位,其

15、中1位起始位、8位数据位、1位控制/校验位和1位停止位。控制/校验位为第9位数据。4方式3方式3为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余同方式2。,5串行通信的波特率,(1)方式0的波特率在方式0下,串行口通信的波特率是固定的,其值为fosc/12(fosc为主机频率)。,(2)方式2的波特率 串行口方式2波特率的产生与方式0不同,即输入的时钟源不同,其时钟输入部分入图7-15所示。控制接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:SMOD=0时,波特率为fosc的1/64;SMOD=1时

16、,波特率为fosc的1/32。即方式2波特率2SMOD/64fosc,串行口方式2波特率的产生,返回,(3)方式1或方式3的波特率,在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率是可变的。波特率的公式为:,式中:K为定时器T1的位数。,7.3 单片机串行口的应用,7.3.1 串行口扩展显示器【例7-1】用8位串入并出移位寄存器74HC164扩展显示器。,74HC164 8 位串入、并出移位寄存器,功能:把数据从显示缓冲区送到数码管。入口;将要显示的数放在以DIS0为首的8个单元中。出口:把预置的数输出以更新原有的显示。,MOVR2,08H;显示8个数码管 MOVR0,DIS7

17、;显示缓冲区未地址送入R0DL0:MOVA,R0;取要显示数作查表偏移量 MOVDPTR,TAB;指向字形表首 MOVCA,ADPTR;查表得字形码 MOVSBUF,A;发送显示DL1:JNBT1,DL1;等待发送完一帧 CLRT1;清中断标志,准备继续发送 DECR0;更新显示单元 DJNZR2,DL0;重复显示所有数码管TAB:DB 0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4,DB 92H,82H,0F8H,80H,90H;5,6,7,8,9,DB 88H,83H,0C6H,0A1H,86H;A,B,C,D,E,DB 8EH,0BFH,8CH,0FFH;F,P,暗,

18、7.3.2 串行口扩展的键盘,在方式0下,串行口作同步移位寄存器用,以8位数据为一帧,先发送或接收最低位,每个机器周期发送或接收一位,故其波特率是固定的,为fosc12。串行数据由RXD(P3.0)端输入或输出。,CJNER1,08,LP1 SJMPRCVIN1:MOVA,R0 ADDA,A JMPADPTRTAB:AJMPOPR0 AJMPOPR1 AJMPOPR7OPR0:LJMPSTARTOPR7:LJMPSTART END,ORG0100HSTART:MOVR7,20MOVR0,50HMOVDPTR,#TABRCVI:MOV SCON,10HJNBRI,$CLRRIMOVA,SBUFM

19、OVR0,#0MOVR1,#0LP1:RRCAJNCN1INCR0INCR1,7.3.3 双机通信,编程使乙机从甲机接收16个字节数据块,并存入片外3000H300FH单元。接收过程中要求判奇偶校验标志RB8。若出错则置F0标志为1,若正确则置F0标志为0,然后返回。,【例7-3】编程把甲机片内RAM50H5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200波特,fosc110592MHz,预置值TH10E8H。,发送子程序如下:,MOVTMOD,#20H;设置定时器1为方式2 MOVTL1,0E8H;设预置值 MOVTH

20、1,0E8H SETBTRI;启动定时器1 MOVSCON,0C0H;设置串行口为方式3 MOVPCON,00H;SMOD0 MOVR0,#50H;设数据块指针 MOVR7,10H;设数据长度10HTRS:MOVA,R0;取数据送至A MOVC,P MOVTB8,C;奇偶位P送至TB8 MOVSBUF,A启动发送 WAIT:JNBTI,$;判1帧是否发送完 CLRTI INCR0;更新数据单元 DJNZR7,TRS;循环发送至结束 RET,接收子程序编程如下:,MOVTMOD,20H;设置定时器1为方式2 MOVTL1,0E8H;设预置值 MOVTH1,0E8H SETB TR1;启动定时器1

21、 MOVSCON,0C0H;设置串行口为方式3 MOVPCON3,00H;SMOD0 MOVDPTR,3000H;设置数据块指针 MOVR7,10H;设数据块长度 SETB REN;允许接收WAIT:JNBRI,$;判1帧是否接收完 CLRRI,MOVA,SBUF;读入1帧数据 JNBPSW.0,PZ;奇偶位P为0则跳转 JNBRB8,ERR;Pl,RB80则出错 SJMPYES;二者全为1则正确PZ:JBRB8,ERR;P0,RB8l则出错YES:MOVXDPTR,A;正确,存放数据 INCDPTR;修改地址指针 DJNZR7,WAIT;判断数据块接收完否 CLRPSW.5;接收正确且接收完

22、清F0标志 RET;返回ERR:SETBPSW.5;出错则置F0标志为“l”RET;返回,7.3.4 多机通信,多机通信的实现,主要靠主、从机之间正确地设置与判断多机通信控制位SM2和发送或接收的第9数据位(D8)。以下简述如何实现多机通信。,多机之间的通信过程可归纳如下:,(1)主、从机均初始化为方式2或方式3,置SM21,允许中断。(2)主机置TB81,发送要寻址的从机地址。(3)所有从机均接收主机发送的地址,并进行地址比较。(4)被寻址的从机确认地址后,置本机SM20,向主机返回地址,供主机核对。(5)核对无误后,主机向被寻址的从机发送命令,通知从机接收或发送数据。(6)通信只能在主、从

23、机之间进行,两个从机之间的通信需通过主机作中介。(7)本次通信结束后,主、从机重置SM21,主机可再对其他从机寻址。,例:主机向02号从机发送50H5FH中的数据;02号从机将接收到的数据放到内RAM30H 3FH单元中。,主机程序:ORG 0030HMAIN:MOV SCON,98HM1:MOV SBUF,02HL1:JNB TI,$CLR TI JNB RI,$MOV A,SUBF XRL A,#02H JZ RHT AJMP M1,RHT:CLR TB8 MOV R0,50HM1:MOV R7,10HL3:MOV A,R0 MOV SBUF,A JNB TI,$CLR TI INC R0

24、 DJNZ R7,L3 AJMP MAIN END,从机程序:ORG 0030HMAIN:MOV R0,30H MOV R6,10HSI:MOV SCON,0B0HSR1:JNB RI,$CLR RISR2:MOV A,SUBF XRL A,#02H JNZ SR1 CLR SM2 MOV SBUF,#02H JNB TI,$CLR TI,SR3:JNB RI,$CLR RI JNB TB8,RHT SETB SM2 SJMP SR1RHT:MOV A,SBUF MOV R0,A INC R0 DJNZ R6,SR3 AJMP SI END,7.4 RS-232C标准接口总线及串行通信硬件设计

25、,前面介绍了有关串行通信的基本知识及单片机的串行口结构。下面介绍PC机与单片机间串行通信的硬件和软件设计。在工业自动控制、智能仪器仪表中,单片机的应用越来越广泛。随着应用范围的扩大以及根据解决问题的需要,对某些数据要做较复杂的处理。由于单片机的运算功能较差,对数据进行较复杂的处理时,往往需要借助计算机系统。因此,单片机与PC机进行远程通信更具有实际意义。利用89C51单片机的串行口与PC机的串行口COM1或COM2进行串行通信,将单片机采集的数据传送到PC机中,由PC机的高级语言或数据库语言对数据进行整理及统计等复杂处理;或者实现PC机对远程前沿单片机进行控制。,返回,7.4 RS-232C标

26、准接口总线及串行通信硬件设计,在实现计算机与计算机、计算机与外设间的串行通信时,通常采用标准通信接口、这样就能很方便地把各种计算机、外部设备、测量仪器等有机地连接起来,进行串行通信。RS232C是由美国电子工业协会(EIA)正式公布的,在异步串行通信中应用最广的标准总线(C表示此标准修改了三次)。它包括了按位串行传输的电气和机械方面的规定,适用于短距离或带调制解调器的通信场合。为了提高数据传输率和通信距离,EIA又公布了RS422,RS423和RS-485串行总线接口作准。,返回,RS-422、RS-423及RS-485接口,7.4 RS-232C标准接口总线及串行通信硬件设计,7.4.1 R

27、S-232C标准接口总线信号电气特性与电平转换7.4.3单片机与PC机通信的接口电路,返回,7.4.1 RS-232C标准接口总线,近年的RS-232C接口都是采用9针的连接器,(25针中有很多引脚是无意义的),如图所示。,返回,图7-21,返回,(a),(b),图7-22 终端/计算机与终端/计算机简化连接形式,返回本节,7.4.1 RS-232C标准接口总线,ELA RS-232C是目前最常用的串行接口标准,用于实现计算机与计算机之间、计算机与外设之间的数据通信。该标准的目的是定义数据终端设备DTE(Date Terminal Equipment)之间接口的电气特性。一般的串行通信系统是指

28、微机和调制解调器(modem),如图。调制解调器叫数据电路终端设备简称DCE(Date Circuit Terminating Equipment 或 Date Communications Equipment)。RS-232C提供了单片机与单片机、单片机与PC机间串行数据通信的标准接口。通信距离可达到 15 m。,返回,7.4.1 RS-232C标准接口总线,基本的数据传送信号 基本的数据传送信号引脚有TXD,RXD,GND 3个。TXD为数据发送信号引脚。数据由该脚发出,送上通信线,在不传送数据时,异步串行通信接口维持该脚为逻辑1。RXD为数据接收信号引脚。来自通信线的数据从该引脚进入。在

29、无接收信号时,异步串行通信接口维持该脚为逻辑1。GDN为地信号引脚。GND是其他引脚信号的参考电位信号。“在零调制解调器”连接中,最简单的形式就是只使用上述3个引脚,如图7-21。其中,收发端的TXD与RXD交错相连,GND与GND相连。,返回,7.4.1 RS-232C标准接口总线,MODEM控制(握手)信号引脚 从计算机到MODEM的信号引脚包括DTR和RTS两个:DTR信号引脚用于通知MODEM,计算机已经准备好。RTS信号引脚用于通知MODEM,计算机请求发送数据。从MODEM到计算机的信号包括DSR,CTS,DCD,RI共4个。DSR信号引脚用于通知计算机,MODEM已经准备好。CT

30、S信号引脚用于通知计算机,MODEM可以接收传送数据。DCD信号引脚用于通知计算机,MODEM已与电话线路连接好。RI信号引脚为振铃指示,用于通知计算机有来自电话网的信号。,返回,7.4.1 RS-232C标准接口总线,RS232C接口的具体规定如下:(l)范围 RS-232C标准适用于DCE和 DTE间的串行二进制通信,最高的数据速率为 19.2 kbs。如果不增加其他设备的话,RS-232C标准的电缆长度最大为15 m。RS232C不适于接口两边设备间要求绝缘的情况。(2)RS-232C的信号特性 为了保证二进制数据能够正确传送,设备控制准确完成,有必要使所用的信号电平保持一致。为满足此要

31、求,RS-232C标准规定了数据和控制信号的电压范围。由于RS-232C是在TTL集成电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,规定+3V15V之间的任意电压表示逻辑0电平,-3V15V之间的任意电压表示逻辑1电平。,返回,7.4.1 RS-232C标准接口总线,(3)RS-232C接口信号及引脚说明 表7-3给出了RS-232C串行标准接口信号的定义以及信号分类。串行通信信号引脚分为两类:一类为基本的数据传送信号引脚,另一类是用于MODEM控制的信号引脚。,返回,信号电气特性与电平转换,1.电气特性为了增加信号在线路上的传输距离和提高抗干扰能力,RS-232C提高了信号的传

32、输电平。该接口采用双极性信号、公共地线和负逻辑。使用RS-232C,数据通信的波传率允许范围为0b/s20kb/s。在使用 19200b/s进行通信时,最大传送距离在 15 m之内。降低彼特率可以增加传输距离。,返回,信号电气特性与电平转换,2电平转换 RS-232C规定的逻辑电平与一般微处理器、单片机的逻辑电平是不一致的。因此,在实际应用的,必须把微处理器的信号电平(TTL电平)转换为RS-232C电平,或者对两者进行逆转换。这两种转换是通过专用电平转换芯片实现的。MAX232、MAX202和早期的MC1488,75188等芯片可实现TTLRS-232C的电平转换;MC1489,75189等

33、芯片可实现RS-232CTTL的电平转换。MC1488,MC1489的电路结构与引脚排列见图7-23。,返回,图7-23 MC1488,MC1489的电路结构与引脚排列,返回,信号电气特性与电平转换,MC1488由3个“与非”门和1个反相器构成。Vcc可接+15V或+12V,VEE可接-15V或-12V,输入为TTL电平,输出为RS-232C电平。MC1489由4个反相器组成。Vcc接+5V,每个反相器都有一个控制端,它可接到电源电压上,用以调整输入的门限特性,也可通过一滤波电容接地。单片机的串行口通过电平转换芯片所组成的RS-232C标准接口电路如图7-24所示。,返回,图7-24 RS-2

34、32C标准接口电路,返回,7.4.3单片机与PC机通信的接口电路,利用PC机配置的异步通信适配器,可以很方便地完成IBM-PC系列机与MCS-51单片机的数据通信。PC机与89C51单片机最简单的连接是零调制三线经济型,这是进行全双工通信所必须的最少数目的线路。由于89C51单片机输入、输出电平为TTL电平,而IBM-PC机配置的是RS-232C标准串行接口,二者的电气规范不一致,因此,要完成PC机与单片机的数据通信,必须进行电平转换。,返回,7.4.3单片机与PC机通信的接口电路,1.MAX232芯片简介 MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,适用于各种E

35、IA-232C和V.28V.24的通信接口。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的+10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有+12V电源的场合,其适应性更强。加之其价格适中,硬件接口简单,所以被广泛采用。,返回,1.MAX232芯片简介,MAX232芯片的引脚结构如图7-25所示。MAX232芯片的典型工作电路如图7-26所示。图7-26中上半部分电容C1,C2,C3,C4及V+,V-是电源变换电路部分。在实际应用中,器件对电源噪声很敏感。因此,VCC必须要对地加去耦电容C5,其值为0

36、.lF。电容C1,C2,C3,C4取同样数值的钽电解电容1.0F/16V,用以提高抗干扰能力,在连接时必须尽量靠近器件。,返回,图7-25 MAX232芯片引脚图,图7-26 MAX232典型工作电路图,返回,1.MAX232芯片简介,下半部分为发送和接收部分。实际应用中,T1IN,T2IN可直接接TTLCMOS电平的MCS-51单片机的串行发送端 TXD;R1OUT,R2OUT可直接接TTLCMOS电平的MCS-51单片机的串行接收端RXD;T1OUT,T2OUT可直接接PC机的 RS-232串口的接收端RXD;R1IN,R2IN可直接接PC机的RS-232串口的发送端TXD。,返回,2采用

37、 MAX232芯片接口的 PC机与 MCS-5l单片机串行通信接口电路,现从MAX232芯片中两路发送接收中任选一路作为接口。要注意其发送、接收的引脚要对应。如使T1IN接单片机 的发送端TXD,则PC机的RS-232的接收端RXD一定要对应接T1OUT引脚。同时,R1OUT接单片机的RXD引脚,PC机的 RS-232的发送端TXD对应接R1IN引脚。其接口电路如图7-27所示。,返回,图7-27采用 MAX232接口串行通信电路,返回,7.5 89C51与PC机间通信软件的设计,将一台IBM-PC机和若干台89C51单片机构成小型分散控制或测量系统,是目前微计算机应用的一大趋势。在这样的系统

38、中,以89C51芯片为核心的智能式测控仪表(作为从机)既能完成数据采集、处理和各种控制任务,又可将数据传送给PC机(作为主机),PC机将这些数据进行加工处理或显示、打印,同时将各种控制命令送给各个从机,以实现集中管理和最优控制。显然,要组成这样的系统,首先要解决PC机与各单片机之间的数据通信问题,这是一个多机通信问题。在解决该问题之前,先来讨论一下PC机与一台89C51之间点对点(亦即双机)通信的软件设计。,返回,7.5 89C51与PC机间通信软件的设计,7.5.1 PC机通信软件设计7.5.2 89C51通信软件设计,返回,7.5.1 PC机通信软件设计,1.通信协议波特率:1200b/s

39、;信息格式:8位数据位,1位停止位,无奇偶检验;传送方式:PC机采用查询方式收发数据;89C51采用中断方式接收,查询方式发送;校验方式:累加和校验;握手信号:采用 软件握手。发送方在发送之前先发一联络信号(用“?”号的ASCII码,接收方接到“?”号后回送一个“”号作为应答信号),随后依次发送数据块长度(字节数),发送数据,最后发送校验和。收方在收到发送方发过来的校验和后与自己所累加的校验和相比较,相同则回送一个“0”,表示正确传送并结束本次的通信过程;若不相同则回送一个“F”,并使发送方重新发送数据,直到接收正确为止。,返回,7.5.1 PC机通信软件设计,2.PC机发送文件子程序首先介绍

40、通过串口发送一个文件的函数sendf()。规定欲发送的这个文件存在当前盘上,并且为了便于说明问题,只传送总字节小于256个字符的文件。sendf()函数程序流程图如图7-30所示。PC机发送文件子函数sendf()程序清单如下:,返回,图7-30 PC机发送文件子函数sendf()流程图,返回,7.5.1 PC机通信软件设计,返回,7.5.1 PC机通信软件设计,3、PC机接收文件子程序接收函数receivef()采用查询方式从串口接收一个总字节数小于256个字符的文件,接收的文件也存于当前盘上。接收文件子函数receivef()的程序流程图如图7-31所示。,返回,图7-31 PC机接收文件

41、子函数receivef()流程图,返回,7.5.1 PC机通信软件设计,返回,返回,7.5.1 PC机通信软件设计,4、PC机主程序(函数)在有了上述发送和接收文件两个子函数之后,主函数的编写就非常简单了。主函数的工作只是在完成串口初始化后,根据键入的命令来决定是发送文件还是接收文件。主函数流程图如图7-32所示。PC机主函数如下:,返回,7.5.1 PC机通信软件设计,图7-32 PC机主函数流程图,返回,7.5.1 PC机通信软件设计,这里采用的是带参主函数main(int argc,char*argv)。其中,argc是一个整型变量,argv 是一个字符型指针数组。利用main函数的参数

42、可以使主程序从系统得到所需数据(也就是说带参函数可直接从DOS命令行中得到参数值,当然,这些值是字符串)。当程序运行时(在DOS下执行.EXE文件),可以根据输入的命令行参数进行相应的处理。例如,执行程序mypro时,若要从当前盘上将名为f1.c的文件从串口发送出去,需键入下述命令:mypro s f1.c其中,mypro是源文件mypro.c经编译连接后生成的可执行文件 mypro.exe。键入命令:mypro r f2.c可以从串口接收若干字符,并写入当前盘上名为f2.c的文件中去。,返回,7.5.2 89C51通信软件设计,1、单片机查询发送子程序本程序将片外RAM从1000H开始的小于

43、256B的数据从串行口发送出去,发送的数据字节数在R7中,用R6作累加和寄存器。程序流程图如图7-33所示。单片机查询发送子程序如下:,图7-33 单片机查询发送子程序流程图,返回,SEND:MOV A,#3FH MOV SBUF,A JNB TI,$CLR TI;发?号,即3FH JNB RI,$CLR RI MOV A,SBUF CJNE A,#2EH,SEND;应答信号是.,即;2EH,则发字节数 MOV A,R7 MOV R3,A;暂存总字节数 MOV SBUF,A JNB TI,$CLR TI MOV R6,#00H MOV DPTR,#1000H,SEND1:MOVX A,DPTR

44、 MOV SBUF,A;发送一个字符 JNB TI,$CLR TI ADD A,R6;计算校验和 MOV R6,A INC DPTR DJNZ R7,SEND1;计数器(R7)不为零则转SEND1 MOV A,R6 MOV SBUF,A JNB TI,$CLR TI;发送校验和 MOV A,SBUF CJNE A,#46H,SEND2;如收到应答是F,即;46H,则重发数据 RETSEND2:MOV DPTR,#1000H MOV R6,#00H MOV A,R3 MOV R7,A AJMP SEND1,返回,7.5.2 89C51通信软件设计,2、单片即接收中断服务子程序 在中断服务子程序中

45、,为了区别所接收的信号是联络信号还是字节数、是数据还是校验和,需要设立不同的标志位,为此在可位寻址的RAM中设定:位地址 00H 接收联络信号标志位 01H 接收字节数标志位 02H 接收数据标志位 03H 接收文件结束标志位 在初始化时,这些位均为0。程序流程图如图7-34所示。在中断服务子程序中,将接收到的字节数存入R7中,接收的数据存入片外RAM从1000H开始的单元中。单片机接收中断服务子程序如下:,返回,图7-34 单片机接收中断服务子程序流程图,返回,RECE:CLR ES CLR RI JB 00H,RECE1 MOV A,SBUF CJNE A,#3FH,RECE2;收的不是?

46、号则 退出 MOV A,#2EH MOV SBUF,A JNB TI,$CLR TI;发送应答信号.,即2EH SETB 00H SETB ES RETIRECE2:MOV A,#24H MOV SBUF,A JNB TI,$CLR TI;发送应答信号$,即24H SETB ES RETIRECE1:JB 01H,RECE4 MOV A,SBUF;接收字节数 MOV R7,A MOV R3,A;暂存总字节数 SETB 01H SETB ES RETIRECE4:JB 02H,RECE5 MOV A,SBUF;接收一字符 MOVX DPTR,A;存入外RAM中 ADD A,R6 MOV R6,A

47、,INC DPTR DJNZ R7,RECE7 SETB 02HRECE7:SETB ES RETIRECE5:MOV A,SBUF CJNE A,06H,RECE8;06H为R6的字节地址 MOV A,#4FH;校验和不正确,重发 数据 MOV SBUF,A JNB TI,$CLR TI;校验正确发0,即4FH SETB 03H SETB ES RETIRECE8:MOV DPTR,#1000H MOV R6,#00H MOV A,R3 MOV R7,A MOV A,#46H MOV SBUF,A JNB TI,$CLR TI;校验不正确,发F,即46H CLR 02H SETB ES RE

48、TI,返回,7.5.2 89C51通信软件设计,3、单片机主程序主程序流程图如图7-35所示。单片机主程序如下:,图7-35 单片机的主程序流程图,返回,ORG 0000H AJMP MAIN ORG 0023H AJMP RECE ORG 0040HMAIN:MOV SP,#60H MOV SCON,#50H;串口初始化 MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#00H;设置波特率 SETB TR1;启动定时器1 SETB EA;开放中断 SETB ES;开放串行中断L3:CLR 00H CLR 01H CLR 02H CLR 0

49、3H MOV R6,#00H MOV DPTR,#1000HL2:JB 03H,L1 SJMP L2L1:ACALL SEND AJMP L3,返回,7.6 PC机与多个单片机间通信,应用IBM-PC系列微机和多个单片机构成小型分布系统在一定范围内是最经济可行的方案,已被广泛采用。这种分布系统在许多实时工业控制和数据采集系统中,充分发挥了单片机功能强、抗干扰性能好、温限宽、面向控制等优点,同时又可以利用PC机弥补单片机在数据处理及交互性等方面的不足。在应用系统中,一般是以IBM-PC系列微机作为主机,定时扫描以单片机为核心的智能化控制器(即从机作为前沿机)以便采集数据或发送控制信息。在这样的系

50、统中,智能化控制器既能独立完成数据处理和控制任务,又可以将数据传送给PC机。PC机则将这些数据形象地显示在 CRT上或通过打印机打印成各种报表,并将控制命令传送给各个前沿单片机,以实现集中管理和最优控制。下面将讨论PC机与多个单片机之间的通信问题。,返回,7.6 PC机与多个单片机间通信,采用RS-232C标准总线通信采用RS-422A标准总线的通信系统,返回,采用RS-232C标准总线通信,1、采用MAX232芯片的RS-232C接口的通信电路 PC机与多个单片机通信接口电路如图7-36所示。整个通信系统的硬件结构设计为主从式串行总线型。PC机串口给出的已是标准的RS-232C电平,而单片机

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号