收藏 分享(赏)

第7章 单片机的串行口通信.ppt

上传人:HR专家 文档编号:8424765 上传时间:2019-06-25 格式:PPT 页数:90 大小:1.41MB
下载 相关 举报
第7章 单片机的串行口通信.ppt_第1页
第1页 / 共90页
第7章 单片机的串行口通信.ppt_第2页
第2页 / 共90页
第7章 单片机的串行口通信.ppt_第3页
第3页 / 共90页
第7章 单片机的串行口通信.ppt_第4页
第4页 / 共90页
第7章 单片机的串行口通信.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

1、第7章 80C51单片机的串行口通信,第7章 目录,7.1 串行通信基础知识7.1.1 并行通信与串行通信7.1.2 串行通信的通信方式7.1.3 串行通信的数据传送方向7.1.4 通信中的误码问题 7.2 80C51系列单片机的串行接口7.2.1 串行接口的结构7.2.2 串行接口的控制寄存器 7.2.3 串口通信的波特率设计 7.3 串行口工作模式7.3.1 模式07.3.2 模式1 7.3.3 模式27.3.4 模式3,第7章 目录,7.4 串行通信应用举例7.4.1 串行口模式0的应用7.4.2 串行口模式1的应用7.4.3 串行口模式2的应用7.4.4 串行口模式3的应用 7.5 串

2、行通信实用技术7.5.1 双机串行通信的硬件连接7.5.2 80C51单片机的多机通信7.5.3 双机串行通信软件编程7.5.4 PC机与单片机的点对点串行通信接口设计7.5.5 PC机与多个单片机的串行通信接口设计,7.1串行通信基础知识,7.1.1并行通信与串行通信 1、并行通信 并行通信是指将数据字节的各位用多条数据线同时进行传送。每一位数据都需要一条传输线,8位数据总线的通信系统,一次传送8位数据(1个字节),将需要8条数据线。 并行通信的特点:是传送速度快、 需要的数据传输线较多。因此当 距离较远、位数又多时导致了通 信线路复杂且成本高。一般适合 于短距离的数据传输。,(a)并行通信

3、,7.1串行通信基础知识,7.1.1并行通信与串行通信 2、串行通信 串行通信是指所传送的数据按顺序一位接一位地进行传送。因为一次只能传送一位,所以对于一个字节的数据,至少要分8位才能传送完毕。 串行通信的特点是需要的数据传输线较少,通信线路简单、成本低,适用于数据的远距离通信。 但传输速度慢。只要一对传输线: 即发送线和接收线就可以实现通信。 缺点是传送速度慢,假设并行传送 n位数据所需的时间为t,那么串行 传送的时间至少为nt,而实际上总 是大于nt。,(b)串行通信,7.1串行通信基础知识,7.1.2串行通信的通信方式根据通信协议的不同,串行通信可分为同步通信和异步通信两种基本方式。 1

4、、同步通信同步通信是一种连续串行传输数据的通信方式,传送的数据可以是多个字符组成的数据块,每次传送的一帧数据由同步字符、数据字符和校验字符三部分组成。传输一帧数据的开头采用同步字符使收发双方实现严格同步,期间不允许出现空隙,没有起始位和停止位,提高了传输速度。无数据传送时,发送同步字符。同步通信方式发送的数据量大、速度快,常用于传输速度要求高的场合,但较复杂。,7.1串行通信基础知识,7.1.2串行通信的通信方式 1、同步通信,同步通信方式帧格式如图7-2所示。,图7-2 字符帧的同步串行通信格式,7.1串行通信基础知识,7.1.2串行通信的通信方式 2、异步通信 异步通信不需要同步字符,也不

5、需要发送设备保持数据块的连续性。发送的每一字符,都必须先按照通信双方约定好的格式进行格式化,在其前、后分别加上起始位和停止位,用以指示每一字符的开始和结束。一帧信息传送完毕后,可传送不定长度的空闲位“1”,作为帧与相邻帧之间的间隔,也可以没有空闲位间隔。80C51单片机一般采用异步通信方式,一个字符帧的异步串行通信格式如图7-3所示。,7.1串行通信基础知识,7.1.2串行通信的通信方式 2、异步通信,图7-3 字符帧的异步串行通信格式,7.1串行通信基础知识,7.1.3串行通信的数据传送方向 数据通信系统一般由数据发送方、数据接收方及数据通路组成的。串行通信的数据是在两个站之间传送的,按照数

6、据的传送方向,串行通信有三种数据通路连接方式。 1、单工方式在单工方式下,通信线的一端 接发送器,另一端接接收器, 形成单向连接。若A为发送端, B为接收端,数据仅能从A端发 至B端,如广播、无线寻呼等, 如7-4中(a)图所示。,(a)单工方式,7.1串行通信基础知识,7.1.3串行通信的数据传送方向 2、半双工方式在半双工方式下,系统中的每个通信设备都由一个发送器和一个接收器组成,通过收、发开关接到通信线上。数据既可从A端发送到B端,也可以由B端发送到A端,不过在同一时间只能作一个方向的数据传送,如使用同一载波频率的对讲机,如7-4中(b)图所示。 3、全双工方式在全双工方式下,在同一时间

7、两端既可同时发送,也可同时接收,如普通电话、手机等,80C51单片机使用全双工方式,如7-4(c)图所示。,(b)半双工方式,(c)全双工方式,7.1串行通信基础知识,7.1.3串行通信的数据传送方向 数据通信系统一般由数据发送方、数据接收方及数据通路组成的。串行通信的数据是在两个站之间传送的,按照数据的传送方向,串行通信有三种数据通路连接方式。 1、单工方式在单工方式下,通信线的一端 接发送器,另一端接接收器, 形成单向连接。若A为发送端, B为接收端,数据仅能从A端发 至B端,如广播、无线寻呼等, 如7-4中(a)图所示。,(a)单工方式,7.1串行通信基础知识,7.1.4通信中的误码问题

8、数据在串行传输过程中,由于干扰可能使传输的数据发生错误,这种情况称为出现了“误码”,错误的数据位数与所有传输数据总位数的比率叫做“误码率”,发现传输中的错误叫做“检错”,发现错误后消除错误叫做“纠错”。为了使系统能够可靠、稳定地通信,在编程时应当设计通信协议,并应考虑数据的纠错,一般在通信时采取数据校验的办法,可有效保证数据传输的可靠性,目前较为流行的方法有奇偶校验、累加和校验、据环冗余码校验几种:,7.1串行通信基础知识,7.1.4通信中的误码问题1、奇偶校验最简单的检错方法是“奇偶校验”,在传送字符的各位之外,再传送1位奇/偶校验位。 奇校验:数据中1的个数与校验位1的个数之和应为奇数 偶

9、校验:数据中1的个数与校验位1的个数之和应为偶数在接收字符时,对1的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。奇偶校验无法实现自动纠错,发现错误后只能要求重发,但由于其实现简单,仍得到了广泛使用。,7.1串行通信基础知识,7.1.4通信中的误码问题 2、累加和校验累加和校验是指发送方将发送的数据块求和,并将“校验和”附加到数据块末尾,接收方接收数据时也是先对数据块求和,将所得结果与发送方的“校验和”进行比较,相符则无差错,否则即出现了差错。校验和能够检测到比奇偶校验更多的错误,但当字节顺序颠倒时,校验和不能发现,因为其不能发现次序错误。 3、据环冗余码校验据环冗余码校验是通过

10、某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。,7.2 80C51系列单片机的串行接口,80C51系列单片机有一个全双工的串行口,这个口除可以实现串行异步通信,还可以作为同步移位寄存器使用。7.2.1串行接口的结构80C51系列单片机串行口主要由发送数据缓冲器、发送控制器、接收数据缓冲器、接收控制器、输出控制门、输入移位寄存器等组成。由于串行口对外有两条独立的收、发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工通信。,7.2 80C51系列单片机的串行接口,7.2

11、.1串行接口的结构 串行口结构框图如图7-5所示:,图7-5 串行口结构框图,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器对串行口的访问和设置是通过访问相关的特殊功能寄存器完成的,与串行口相关的特殊功能寄存器共有3个,如表7-1所示。,表7-1 串口控制寄存器,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 1、串行数据缓冲器SBUF80C51单片机串行数据缓冲器SBUF是两个8位的特殊功能寄存器,其在功能和物理空间上均独立,但两者共用SBUF这个符号,并且字节地址均为99H。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两者均只能进

12、行字节寻址。SBUF具有接收缓冲功能,接收器是双缓冲结构,在第一个字节从寄存器读出之前,可以开始接收第二个字节,但是如果第二个字节接收完毕时,第一个字节仍未读出,其第一个字节将会丢失。发送器为单缓冲器,因为发送时CPU是主动的。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 1、串行数据缓冲器SBUF(1).串行口的数据发送单片机启动发送的方法是:在TI=0的条件下,CPU通过执行一条写SBUF指令。如:执行MOV SBUF,A指令向输出缓冲器SBUF。写入数据,从而启动数据串行发送。在波特率发生器产生的发送时钟控制下,按照预先设置的帧格式由低位到高位逐位由TXD端输

13、出发送数据,发送结束TI1。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 1、串行数据缓冲器SBUF (2).串行口的数据接收单片机启动接收的首要条件是REN=1。串行口通过对RXD引脚信号的采样来确认串行数据,若检测到发送数据的起始位(一般为低电平),则其后对RXD引脚每间隔一定时间进行采样,采样到的数据在接收时钟控制下以移位方式存入输入移位寄存器,当数据接收完成或检测到停止位时,CPU将自动把接收到输入移位寄存器的内容送入接收缓冲器SBUF,并置接收完成标志位RI=1,编程人员可通过中断方式或查询方式得知这一消息,随后编写读取指令如:MOV A,SBUF指令将接

14、收到的数据取出。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 1、串行数据缓冲器SBUF (2).串行口的数据接收,例如:甲机发送数据给乙机。,图7-6 串行通信甲机发送机接收,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 甲机作为发送机,执行MOV SBUF,A指令后CPU向SBUF写入数据,启动发送过程,A中的8位数据并行送入SBUF,在发送控制器的作用下,按照编程人员设定的发送速率(发送波特率),每传来一个时钟脉冲,数据移出一位,从TXD端由低位到高位一位一位地发送到通信线路上,移出的数据经过线路直达乙机。 乙机作为接收机,按照与发送

15、速率相同的接收速率(接收波特率),将数据按照移位脉冲的频率由低位到高位一位一位地移入到SBUF。很显然,只有双方的传送速度一致,才能完成数据的正确传送,不一致,势必会造成数据位的丢失。同样,如果数据传输率一致,帧格式不一致同样会导致数据传输混乱。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 2、串行口控制寄存器SCON串行口控制寄存器SCON的作用是控制串行通信的工作方式、在数据发送和接收的过程中设置中断标志。SCON的字节地址为98H,可进行位寻址,位地址从高位到低位分别为9FH98H,寄存器的位定义如下:D7 D6 D5 D4 D3 D2 D1 D0,7.2 8

16、0C51系列单片机的串行接口,7.2.2串行接口的控制寄存器,(1)SM0、SM1:定义串口工作方式选择位。SM0和SM1定义串行口4种工作方式,如表7-2所示。,表7-2 串行口工作方式(fosc为系统晶振频率),7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 (2)SM2:多机通信控制位。SM2主要用于方式2和方式3。当接收机的SM2=1时,可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务程序中将数据从SBUF读走)。当SM2=0时,不论收到的RB8是0还是1,均可以使收到

17、的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。 (3)REN,允许接收控制位。该位由软件置1或清0,REN1时,允许串行口接收数据;REN=0时,禁止串行口接收数据。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 (4)TB8:方式2或3中发送数据的第9位。该位按由软件置1或清0,在方式2或方式3时存放要发送数据的第9位。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧和数据帧的标志位。一般TB80时,表示发送的是

18、数据信息;TB81时,表示发送的是地址信息。方式0和方式1该位未用。 (5)RB8:方式2或3中接收数据的第9位。在方式2或方式3下存放接收数据的第9位。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧和数据帧的标志位。一般约定数据信息为0,地址信息为1。在方式1中,若SM2=0,则RB8是接收到的停止位。在方式0中,RB8未用。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 (6)TI:发送中断标志位。该位用来指示一帧数据是否发送完,在方式0中,发送完第8位数据,由硬件置1。其他方式中,在发送停止位时,由硬件置1。值得注意的是,在任何方式下,TI虽然都是由硬件自

19、动置位,但都必须由软件来清零。 (7)RI:接收中断标志位。该位用来指示一帧数据是否接收完,在方式0中,接收完第8位数据,由硬件置1。其他方式中,在接收停止位时,由硬件置1。RI必须由软件清零。注意:发送中断标志TI和接收中断标志RI共用一个中断入口地址(中断向量)。,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 3、电源管理寄存器PCON电源管理寄存器在特殊功能寄存器中,字节地址为87H,不能位寻址,其各位的定义如下:D7 D6 D5 D4 D3 D2 D1 D0(1)SMOD:该位与串口通信波特率有关。 SMOD=0:串口方式1,2,3时,波特率正常。 SMOD=

20、1:串口方式1,2,3时,波特率加倍。 (3)(SMOD0),(LVDF),(POF):这三位是STC单片机特有的功能,请查看相关手册,其他单片机保留未使用。 (4)GFl,GF0:两个通用工作标志位,用户可以自由使用,7.2 80C51系列单片机的串行接口,7.2.2串行接口的控制寄存器 3、电源管理寄存器PCON(5)PD:掉电模式设定位。 PD=0:单片机处于正常工作状态。 PD=1:单片机进入掉电(Power Down)模式,可由外部中断低电平触发或由下降沿触发或者硬件复位模式换醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。 (6)IDL:

21、空闲模式设定位。 IDL=0:单片机处于正常工作状态。 IDL=1:单片机进入空闲(Idle)模式,除CPU不工作外,其余仍继续工作,在空闲模式下可由任一个中断或硬件复位唤醒。,7.2 80C51系列单片机的串行接口,7.2.3串口通信的波特率设计 1、什么是波特率波特率是指每秒传送二进制数据的位数,单位是bps(位/秒),即1波特=1位/秒。单片机或计算机在串口通信时的速率用波特率表示。如果单片机与计算机之间每秒钟传送360个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的波特率为10位360个/秒=3600 bps。,7.2 80C51系列单片机的串行接口,7.

22、2.3串口通信的波特率设计 2、80C51单片机串行口的波特率设计串行通信的波特率随串行口工作方式的不同而不同,串行口的4种工作方式对应着3种波特率。影响波特率的因素主要有以下几个: 系统的振荡频率fosc。 电源控制寄存器PCON中的波特率倍增位SMOD。 定时器/计数器T1的溢出率设置。,7.2 80C51系列单片机的串行接口,7.2.3串口通信的波特率设计 接下来讨论在各种工作方式下的波特率设置方法。 (1).模式0的波特率 在模式0时,每个机器周期产生一个移位时钟,发送或接收一位数据。所以,波特率固定为振荡频率的112,且不受SMOD的影响。即: 模式0的波特率=,7.2 80C51系

23、列单片机的串行接口,7.2.3串口通信的波特率设计 2模式2的波特率 模式2波特率的产生与模式0不同,模式2的波特率由系统的振荡频率fosc和PCON的最高位SMOD确定,当SMOD=0时,波特率为fosc/64;若SMOD=l,波特率为fosc/32,即:模式2的波特率=,7.2 80C51系列单片机的串行接口,7.2.3串口通信的波特率设计 3模式1和模式3的波特率模式1和模式3的移位时钟脉冲由定时器T1的溢出率决定,故波特率由定时器T1的溢出率与SMOD值共同决定,即: 模式1和模式3的波特率= T1的溢出率当T1做波特率发生器使用时,最典型的用法是使T1工作在模式2(初值自动加载)定时

24、方式,若计数初值为X,则每过“256X”个机器周期。定时器T1就会产生一次溢出。为了避免因溢出而引起中断,此时应禁止中断。这时,溢出周期为,溢出率为溢出周期的倒数,所以:波特率=此时,定时器T1工作在模式2时的初值为:,7.2 80C51系列单片机的串行接口,7.2.3串口通信的波特率设计 3模式1和模式3的波特率,7.2 80C51系列单片机的串行接口,7.2.3串口通信的波特率设计 【例7-1】设晶振频率fosc=6MHz,SMOD=1,设定时器T1工作在方式2,fosc为6MHz时,波特率为2400 bit/s,计算定时初值X,并初始化T1和串行口。 解:X=256-6106(1+1)/

25、(24003212)=242.98243=0F3H 则定时器T1和串行口的初始化程序如下: MOV TMOD,#20H ;设T1为方式2定时 MOV TH1,#0F3H ;置时间常数 MOV TL1,#0F3H SETB TR1 ;启动T1 ORL PCON,#80H ;SMOD=1 MOV SCON,#50H ;串行口方式1,7.3 串行口工作模式,7.3.1模式0模式0时80C51单片机串行口工作在同步移位寄存器状态,有输入输出方式,一般应用于扩展IO口。8位串行数据的输入或输出都是通过RXD端,而TXD端用于送出同步移位脉冲,作为外接器件的同步移位信号。波特率固定为fsoc12。模式0以

26、8位为一帧数据,没有起始位和停止位,传送数据时,低位在前、高位在后,其帧格式为:,7.3 串行口工作模式,7.3.1模式0模式0的发送是在TI=0的情况下,由一条写发送缓冲器的指令开始。例如:MOV SBUF,A。CPU执行完该指令,串行口即将8位数据从RXD端送出(低位在前),同时在TXD端发出同步移位脉冲。8位数据发送完毕后,由硬件置位TI=1,可通过查询TI位来确定是否发送完一帧数据,TI=1表示发送缓冲器已空;TI=1也可作为中断请求信号,申请串行口发送中断。当要发送下一组数据时,需用软件使TI清零,然后才可发送下一组数据。,(a)串行口方式0发送时序,7.3 串行口工作模式,7.3.

27、1模式0,(b)串行口方式0接收时序,模式0的接收是在RI=0的条件下,执行指令使得REN=1,启动串行口接收。接收数据由RXD端输入(低位在前),TXD端仍发出同步移位脉冲。接收到8位数据以后,由硬件使RI=1。可通过查询RI位来确定是否接收到一组数据,RI=1表示接收数据已装入接收缓冲器,可以用指令读取其内容,常用的指令如:MOV A,SBUF;RI=1也可作为中断请求信号,申请串行口接收中断。无论是中断方式还是查询方式,当CPU读取数据后,需用软件使RI清零,以准备接收下一组数据。,在模式0中,SCON寄存器中的SM2、RB8、TB8都不起作用,一般设它们为零即可。,7.3 串行口工作模

28、式,7.3.1模式0串行口定义为模式1时,是串行异步通信方式。模式1一帧数据由10位组成,包括1位起始位、8位数据位、1位停止位,其帧格式为:,7.3 串行口工作模式,7.3.1模式0 模式1的发送也是在TI=0时由一条写发送缓冲器SBUF的指令开始。启动发送后,串行口自动插入一位起始位(逻辑0),接着是8位数据(低位在前),然后插入一位停止位(逻辑1),在发送移位脉冲作用下,依次由TXD端发出。一帧信息发完后,自动维持TXD端信号为1。在8位数据发完之后,也就是在插入停止位时,使TI置1,用以通知CPU可以发送下一帧数据。,(a)串行口方式1发送时序,7.3 串行口工作模式,7.3.3 模式

29、2模式2也是串行异步通信方式。一帧数据由11位组成,包括1位起始位、8位数据位、1位可编程位、1位停止位,其帧格式为:模式2的波特率是固定的,且有两种:一种是: 另一种是:,7.3 串行口工作模式,7.3.3 模式2模式2的发送包括9位有效数据,在启动发送之前,要把发送的第9位数值装入SCON寄存器中的TB8位,准备好TB8的值以后,在TI=0的条件下,就可以执行一条写发送缓冲器SBUF的指令来启动发送。串行口能自动把TB8取出,并装入到第9位数据的位置,逐一发送出去。发送完毕,使TI置1。,(a)串行接口方式2发送时序,7.3 串行口工作模式,7.3.3 模式2,(b)串行接口方式2接收时序

30、,模式2的接收与模式1基本相似。不同之处是要接收9位有效数据。在模式1时是把停止位当作第9位数据来处理,而在模式2(或模式3)中存在着真正的第9位数据。因此,接收数据真正有效的条件为: (1)RI=0; (2)SM2=0或收到的第9位数据为1。若上述两个条件成立,接收的前8位数据进入SBUF以准备让CPU读取,接收的第9位数据进入RB8,同时置位RI。若以上条件不成立,则这次接收无效,放弃接收数据,即8位数据不装入SBUF,也不置位RI。,7.3 串行口工作模式,7.3.4 模式3模式3同样是串行异步通信方式,其一帧数据格式,接收、发送过程与模式2完全相同,所不同的仅在于波特率。模式2的波特率

31、只有固定的两种,而模式3的波特率由定时器 T1的溢出率及SMOD决定,这一点与模式1相同。,7.4串行通信应用举例,7.4.1串行口模式0的应用 1、扩展并行输出口80C51单片机的串行口在方式0时外接一个串入并出的移位寄存器如CD4094(或是74LS164等),可以扩展一个8位并行输出口。如图7-10所示,移位寄存器CD4094的STB端为并行输出允许控制端,STB=0时,移位寄存器串行接收,STB=1时打开并行输出控制门,实现并行输出点亮发光二极管。,图7-10 串转并原理图,7.4串行通信应用举例,7.4.1串行口模式0的应用 1、扩展并行输出口【例7-2】用某51单片机串行口外接CD

32、4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,假设发光二极管为共阴极型,电路连接如图7-10所示,要求编程实现:发光二极管呈流水灯状态(从左向右以一定延迟依次点亮,并反复循环)。 解:本例数据的串行发送采用查询方式,显示的延迟由延时程序DELAY实现。程序如下:ORG 2000H START: MOV SCON,#00H ;置串行口工作方式0,且 TI=0 CLR ES ;禁止串行中断MOV A,#80H ;拟先点亮最左边一位 OUT0: CLR P1.0 ;关闭并行输出MOV SBUF,A ;启动串行输出,7.4串行通信应用举例,7.4.1串行口模式0的应用 OUT1: J

33、NB TI,OUT1 ;输出完否 CLR TI ;完了,清TI标志,以备下次发送 SETB P1.0 ;打开并行口输出 ACALL DELAY ;延时一段时间 RR A ;循环右移 CLR P1.0 ;关闭并行输出 JMP OUT0 ;循环 RET DELAY: ORG 2400H ;延时50ms DEL: MOV R7,#125 ;执行时需1个机器周期 DEL1: MOV R6,#200 ; DEL2: DJNZ R6,DEL2 ;2002=400s(内循环时间)DJNZ R7,DEL1 ;0.4ms125=50ms(外循环时间)RET,7.4串行通信应用举例,7.4.1串行口模式0的应用

34、2、扩展并行输入口80C51单片机的串行口在方式0时外接一个并入串出的移位寄存器如CD4014(或是74LS165等),如图7-11所示,可以扩展一个8位并行输入口。并入串出移位寄存器必须带有一个预置/移位的控制端,CD4014的预置/移位控制端是P/S,当P/S=1时,8位数据并行置入移位寄存器;P/S=0时,移位寄存器中的8位数据串行移位输出。,图7-11 扩展并行输入口,7.4串行通信应用举例,7.4.1串行口模式0的应用 2、扩展并行输入口 【例7-3】某51单片机串行口外接CD4014扩展8位并行输入口,输入数据由8个开关提供,另有一个开关S提供联络信号,电路连接如图7-12所示。当

35、S=0时,要求编程实现连续从RXD输入到单片机8位开关量。,图7-12 扩展并行输入口接口电路,7.4串行通信应用举例,7.4.1串行口模式0的应用 2、扩展并行输入口 解:本例用串行口模式0接收数据,初始化时应使REN为1启动接收,采用查询方式输入数据,程序如下:ORG 0300H BJS0:JB P1.0 ,LP2 ;开关K未闭合,转返回 CLR ES ;采用查询方式,因此禁止串行中断 MOV SCON,#10H ;设模式0,RI清0,REN=1启动接收 LP: SETB P1.1 ;P/S=1,并行置入开关数据 CLR P1.1 ;P/S=0,开始串行输出 LP1: JNB RI,LP1

36、 ;查询RI,RI=0未接收完等待CLR RI ;接收完,清RI,准备接收下一个MOV A,SBUF ;读取数据送入累加器 MOV 40H,A ;送内部RAM区 LP2: RET ;接收完,子程序返回,7.4串行通信应用举例,7.4.1串行口模式0的应用 2、扩展并行输入口 解:本例用串行口模式0接收数据,初始化时应使REN为1启动接收,采用查询方式输入数据,程序如下:ORG 0300H BJS0:JB P1.0 ,LP2 ;开关K未闭合,转返回 CLR ES ;采用查询方式,因此禁止串行中断 MOV SCON,#10H ;设模式0,RI清0,REN=1启动接收 LP: SETB P1.1 ;

37、P/S=1,并行置入开关数据 CLR P1.1 ;P/S=0,开始串行输出 LP1: JNB RI,LP1 ;查询RI,RI=0未接收完等待CLR RI ;接收完,清RI,准备接收下一个MOV A,SBUF ;读取数据送入累加器 MOV 40H,A ;送内部RAM区 LP2: RET ;接收完,子程序返回,7.4串行通信应用举例,7.4.2串行口模式1的应用 【例7-4】设计一个发送程序,发送片内RAM40H4FH中的数据。串行口设定为工作方式1,波特率为1200b/s,fosc=11.0592MHz。(设T1工作在方式2,SMOD=0。) 解:工作方式1的波特率取决于定时器T1的溢出率,波特

38、率为1200,则T1的计数初值X=256-(20/32)11059200/(121200)=232=0E8H,程序如下:MOV TMOD,#20H ;定时器T1为工作方式2 MOV TH1,#0E8H ;初始化计数器MOV TL1,#0E8H CLR ET1 ;禁止T1中断SETB TR1 ;启动T1MOV SCON,#40H ;设定串口工作在模式1,禁止接收数据,7.4串行通信应用举例,7.4.2串行口模式1的应用 MOV PCON,#00H ;SMOD=0CLR ES ;禁止串行中断MOV R0,#40H ;置发送数据首地址MOV R7,#16 ;置发送数据长度 LOOP: MOV A,R

39、0 ;读取第一个数据AMOV SBUF,A ;数据SBUF,启动发送JNB TI,$ ;等待一帧数据发送完毕CLR TI ;TI清0 INC R0 ;指向下一字节单元DJNZ R7,LOOP SJMP $END,7.4串行通信应用举例,7.4.3串行口模式2的应用 【例7-5】设计一个发送程序,发送片内RAM 50H5FH中的数据。串行口设定为方式2,TB8用作奇偶校验位。 解:在数据写入发送缓冲器之前,先将数据的奇偶性P写入TB8,这时TB8做奇偶校验用,程序如下:MOV SCON,#80H ;设定为工作方式2MOV PCON,#80H ;SMOD=1,波特率为fosc/32MOV R0,#

40、50H ;置发送数据首地址MOV R7,#16 ;置发送数据长度 LOOP: MOV A,R0 ;取第一个数据AMOV C,P ;P随A变,PCTB8MOV TB8,CMOV SBUF,A ;数据SBUF,启动发送JNB TI,$ ;等待一帧数据发送完毕CLR TI ;TI清0 INC R0 ;指向下一字节单元DJNZ R7,LOOP SJMP $END,7.4串行通信应用举例,7.4.4串行口模式3的应用 【例7-6】设计一个接收程序,将接收的16个字节数据送入片内RAM 50H5FH单元中。串行口设定为工作方式3,波特率为1200b/s,fosc=6MHz。 解:工作方式3的波特率是由T1

41、产生的,波特率为1200,T1的计数初值为0F3H(SMOD=0),程序如下: MOV TMOD,#20H ;定时器T1为工作方式2 MOV TH1,#0F3H ;初始化计数器 MOV TL1,#0F3H SETB TR1 ;启动T1 MOV SCON,#0D0H ;设定为工作方式3,可以接收数据 MOV R0,#50H ;置接收数据首地址 MOV R7,#16 ;置接收数据长度,7.4串行通信应用举例,7.4.4串行口模式3的应用 COUNT:JBC RI,PRI ;等待接收,RI=1则结束等待并将RI清0SJMP COUNT PRI: MOV A,SBUF ;从串行口中读取数据JNB P,

42、PNP ;P=0,转PNPJNB RB8,PER ;P=1,RB8=0,出错转PER RIGHT:MOV R0,A ;P=1,RB8=1,存接收数据INC R0DJNZ R7,COUNTCLR PSW.1 ;正确接收完16个字节数据,标志位F1清0SJMP $ PER: SETB PSW.1 ;奇偶错置位F1SJMP $ PNP: JB RB8,PER ;P=0,RB8=1,奇偶错转PERSJMP RIGHT ;P=0,RB8=0,转RIGHTEND,7.5串行通信实用技术,7.5.1双机串行通信的硬件连接 1、TTL电平通信接口如果两个80C51单片机相距在1.5m之内,它们的串行口可直接相

43、连,接口电路如图7-13所示。甲机的RXD与乙机的TXD端相连,乙机的RXD与甲机的TXD端相连,从而直接用TTL电平传输方法来实现双机通信。,图7-13 TTL电平传输的连接方式,7.5串行通信实用技术,7.5.1双机串行通信的硬件连接 2、RS-232C双机通信接口如果双机通信距离在1.515 m之间时,可利用RS-232C标准接口实现点对点的双机通信,接口电路如图7-14所示。,图7-14 RS-232C双机通信接口电路,图7-14中的芯片MAX232A是美国MAXIM(美信)公司生产的RS-232C双工发送器/接收器电路芯片。,7.5串行通信实用技术,7.5.1双机串行通信的硬件连接

44、3、RS-422A双机通信接口RS-422A与RS-232C的主要区别是:收发双方的信号地不再共地,RS-422A采用了平衡驱动和差分接收的方法。 RS-422A能在长距离、高速率下传输数据。它的最大传输率为10 Mbit/s,在此速率下,电缆允许长度为12m,如果采用较低传输速率时,最大传输距离可达1219m。,7.5串行通信实用技术,7.5.1双机串行通信的硬件连接 为了增加通信距离,可以在通信线路上采用光电隔离方法,利用RS-422A标准进行双机通信的接口电路如图7-15所示。,图7-15 RS-422A双机通信接口电路,7.5串行通信实用技术,7.5.1双机串行通信的硬件连接 4、RS

45、-485双机通信接口RS-485是RS-422A的变型,它与RS-422A的区别在于:RS-422A为全双工,采用两对平衡差分信号线;而RS-485为半双工,采用一对平衡差分信号线。RS-485对于多站互连是十分方便的,很容易实现多机通信。RS-485标准允许最多并联32台驱动器和32台接收器。,7.5串行通信实用技术,7.5.2 80C51单片机的多机通信 多个80C51单片机可利用串行口进行多机通信,经常采用主从式结构。所谓主从式是指在多个单片机组成的系统中,只有一个主机,其余全是从机。主机发送的信息可以被所有从机接收,任何一个从机发送的信息只能由主机接收。从机和从机之间不能进行相互的直接

46、通信,从机和从机之间的通信只能经主机才能实现主机的RXD与所有从机的TXD端相连,TXD与所有从机的RXD端相连。从机的地址分别为01H、02H和03H。,7.5串行通信实用技术,7.5.2 80C51单片机的多机通信,7.5串行通信实用技术,7.5.3双机串行通信软件编程 单片机的串行通信接口设计时,需要考虑如下问题: (1)首先确定通信双方的数据传输速率。 (2)根据数据传输速率确定采用的串行通信接口标准。 (3)在通信接口标准允许的范围内确定通信的波特率。为减小波特率的误差,通常选用11.0592MHz的晶振频率。 (4)根据任务需要,确定在通信过程中,收发双方所使用的通信协议。 (5)

47、通信线的选择是需要考虑的一个很重要的因素。通信线一般选用双绞线较好,并根据传输的距离选择纤芯的直径。如果空间的干扰较多,还要选择带有屏蔽层的双绞线。 (6)在通信协议确定后,再进行通信软件的编程,详见下面的介绍。,7.5串行通信实用技术,7.5.3双机串行通信软件编程 1、串行口方式1实现双机通信 【例7-7】本例采用方式1进行双机串行通信,收、发双方均采用6 MHz晶振,波特率为2100 bit/s,一帧信息为10位,第0位为起始位,第18位为数据位,最后1位为停止位。发送方要发送的数据块的首地址为1000H,传送数据的长度未知,但发送方以78H、77H单元的内容存放首地址,以76H、75H

48、单元内容减1为数据块末地址。 解:(1)甲机发送程序 中断方式的发送程序如下:ORG 0000H ;程序初始入口LJMP MAINORG 0023H ;串行中断入口LJMP COM_INT,7.5串行通信实用技术,7.5.3双机串行通信软件编程 ORG 1000H MAIN: MOV SP,#53H ;设置堆栈指针MOV 78H,#10H ;设置事发送的数据块的首末地址MOV 77H,#00HMOV 76H,#10HMOV 75H,#20HACALL TRANS ;调用发送子程序 HERE: SJMP HERE TRANS: MOV TMOD,#20H ;设置定时器/计数器工作方式MOV TH

49、1,#0F3H ;设置计数器初值MOV TL1,#0F3HMOV PCON,#80H ;波特率加倍SETB TR1 ;接通计数器计数MOV SCON,#40H ;设置串行口工作方式,7.5串行通信实用技术,7.5.3双机串行通信软件编程 MOV IE,#00H ;先关闭中断,利用查询方式发送地址帧CLR F0MOV SBUF,78H ;启动发送,发送首地址高8位 WAIT1:JNB TI,WAlT1CLR TIMOV SBUF,77H ;启动发送,发送首地址低8位 WAIT2:JNB TI,WAIT2CLR TIMOV SBUF,76H ;启动发送,发送末地址高8位 WAIT3:JNB TI,WAIT3CLR TIMOV SBUF,75H ;启动发送,发送末地址低8位,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报