版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章:80C51系列单片机的串行通信,7.1串行通信基础知识7.1.1并行通信与串行通信7.1.2串行通信的通信方式7.1.3串行通信的数据传送方向7.1.4通信中的误码问题7.280C51系列单片机的串行接口7.2.1串行接口的结构7.2.2串行接口的控制寄存器7.2.3串口通信的波特率设计7.3串行口工作模式7.3.1模式07.3.2模式17.3.3模式27.3.4模式3,目录,80C51系列单片机的串行通信,7.4串行通信应用举例7.4.1串行口模式0的应用7.4.2串行口模式1的应用7.4.3串行口模式2的应用7.4.4串行口模式3的应用7.5串行通信实用技术7.5.1双机串行通信的
2、硬件连接7.5.280C51单片机的多机通信7.5.3双机串行通信软件编程7.5.4PC机与单片机的点对点串行通信接口设计7.5.5PC机与多个单片机的串行通信接口设计,目录,80C51系列单片机的串行通信,本节内容,7.1.1并行通信与串行通信7.1.2串行通信的通信方式7.1.3串行通信的数据传送方向7.1.4通信中的误码问题,7.1串行通信基础知识,5,7.1串行通信基础知识,计算机与外部设备或计算机与计算机之间的信息交换称为通信。通信的基本方式:并行通信和串行通信。在现代单片机测控系统中信息交换多采用串行通信方式。,7.1串行通信基础知识,6,7.1.1并行通信与串行通信一、并行通信并
3、行通信:将数据字节的各位用多条数据线同时进行传送。,(a)并行通信,7.1串行通信基础知识,7,通信控制线,并行通信的缺点:每一位数据都需要一条传输线,距离较远、位数又多时导致了通信线路复杂且成本高。并行通信的优点:控制简单、传送速度快。并行通信一般适合于短距离的数据传输。,8,二、串行通信串行通信:所传送的数据按顺序一位接一位地进行传送。因为一次只能传送一位,所以对于一个字节的数据,至少要分8位才能传送完毕。,7.1串行通信基础知识,(b)串行通信,9,7.1串行通信基础知识,串行通信的优点:需要的数据传输线少,通信线路简单、成本低,适用于远距离通信,且可以利用电话网等现成的设备。串行通信的
4、缺点:是传送速度较慢,数据的传送控制比并行通信复杂。假设并行传送n位数据所需的时间为t,那么串行传送的时间至少为nt,而实际上总是大于nt。,本节内容,7.1.1并行通信与串行通信7.1.2串行通信的通信方式7.1.3串行通信的数据传送方向7.1.4通信中的误码问题,7.1串行通信基础知识,11,7.1.2串行通信的通信方式根据通信协议的不同,串行通信可分为同步通信和异步通信两种基本方式。,7.1串行通信基础知识,一、同步通信同步通信:是一种连续串行传输数据的通信方式,传送的数据可以是多个字符组成的数据块,每次传送的一帧数据由同步字符、数据字符和校验字符三部分组成。,12,同步通信传输一帧数据
5、的开头采用附加12个同步字符使收发双方实现严格同步,期间不允许出现空隙,没有起始位和停止位,提高了传输速度。无数据传送时,发送同步字符填充。同步通信方式发送的数据量大、速度快,常用于传输速度要求高的场合,但较复杂。,7.1串行通信基础知识,同步通信方式帧格式:,图7-2字符帧的同步串行通信格式,13,同步通信方式帧格式:,图7-2字符帧的同步串行通信格式,7.1串行通信基础知识,要求:发送和接收双方要保持完全的同步,所以,要求发送和接收设备必须使用同一时钟。解决办法:1)对于近距离通信:采用在传输线中增加一根时钟信号线来解决。2)对于远距离通信:通过解调器从数据流中提取同步信号,用锁相技术实现
6、收、发频率完全相同的时钟信号。,14,二、异步通信(80C51单片机一般采用的通信方式)异步通信以字符(构成的帧)为单位进行传输。发送的每一字符,都必须先按照通信双方约定好的格式进行格式化,在其前、后分别加上起始位和停止位,用以指示每一字符的开始和结束。,7.1串行通信基础知识,图7-3字符帧的异步串行通信格式,一个字符帧的异步串行通信格式:,15,图7-3字符帧的异步串行通信格式,7.1串行通信基础知识,异步通信用一帧表示一个字符,一个字符包括4个部分:起始位:1位(0有效)数据位:5-8位(低位在先,高位在后)奇偶校验位:1位停止位:1位、1位半、2位(1有效),16,7.1串行通信基础知
7、识,异步通信不需要同步字符,也不需要发送端保持数据块的连续性。数据在线路上的传送不连续,字符间隔(时间间隔)不定,字符与字符之间的间隙是任意的。各个字符可以连续传送也可以间断传送(停止位后,线路上自动保持为1),完全取决于通信协议或约定。,17,7.1串行通信基础知识,同步通信传输速率高,适用于高速率、大容量的数据通信,但硬件复杂。异步通信技术对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收,应用范围广。异步通信但因每个字节都要建立一次同步,在每个数据前后附加起始位、停止位,即每个字符都要额外附加20%的附加数据,占用了传输时间,降低了传送效率。异步通信不要求收发双方时钟的严
8、格一致,实现容易,设备开销较小。,如上所述:,本节内容,7.1.1并行通信与串行通信7.1.2串行通信的通信方式7.1.3串行通信的数据传送方向7.1.4通信中的误码问题,7.1串行通信基础知识,19,7.1.3串行通信的数据传送方向数据通信系统一般由数据发送方、数据接收方及数据通路组成的。串行通信的数据是在两个站之间传送的,按照数据的传送方向,串行通信有三种数据通路连接方式:单工方式、半双工方式、全双工方式。,7.1串行通信基础知识,20,7.1串行通信基础知识,一、单工方式在单工方式下,通信线的一端接发送器,另一端接接收器,形成单向连接。若A为发送端,B为接收端,数据仅能从A端发至B端,如
9、广播、无线寻呼等。,(a)单工方式,21,二、半双工方式在半双工方式下,系统中的每个通信设备都由一个发送器和一个接收器组成,通过收、发开关接到通信线上。数据既可从A端发送到B端,也可以由B端发送到A端,不过在同一时间只能作一个方向的数据传送,如使用同一载波频率的对讲机。,7.1串行通信基础知识,(b)半双工方式,22,三、全双工方式在全双工方式下,在同一时间两端既可同时发送,也可同时接收,如普通电话、手机等。80C51单片机使用全双工方式。,7.1串行通信基础知识,(c)全双工方式,本节内容,7.1.1并行通信与串行通信7.1.2串行通信的通信方式7.1.3串行通信的数据传送方向7.1.4通信
10、中的误码问题,7.1串行通信基础知识,7.1.4通信中的误码问题数据在串行传输过程中,由于干扰可能使传输的数据发生错误,这种情况称为出现了“误码”,错误的数据位数与所有传输数据总位数的比率叫做“误码率”,发现传输中的错误叫做“检错”,发现错误后消除错误叫做“纠错”。目前较为流行的方法有奇偶校验、累加和校验、循环冗余码校验几种。,7.1串行通信基础知识,一、奇偶校验最简单的检错方法是“奇偶校验”,在传送字符的各位之外,再传送1位奇/偶校验位。奇校验:数据中1的个数与校验位1的个数之和应为奇数。偶校验:数据中1的个数与校验位1的个数之和应为偶数。在接收字符时,对1的个数进行校验,若发现不一致,则说
11、明传输数据过程中出现了差错。奇偶校验无法实现自动纠错,发现错误后只能要求重发,但由于其实现简单,仍得到了广泛使用。,7.1串行通信基础知识,7.1串行通信基础知识,奇/偶校验采用奇校验,在传送每一个字节的时候另外附加一位作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这个校验位就是“0”,在接收方收到数据时,将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传送错误。采用偶校验,当实际数据中“1”的个数为偶数的时候,这个校验位就是“0”,否则这个校验位就是“1”,这样就可以保证传送数据满足偶校验的要求。在接收方收到数据时,将按照偶校验的要求
12、检测数据中“1”的个数,如果是偶数个“1”,表示传送正确,否则表示传送错误。,27,二、累加和校验“累加和校验”是指发送方将发送的数据块求和,并将“校验和”附加到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方的“校验和”进行比较,相符则无差错,否则即出现了差错。“校验和”的加运算可用逻辑加,也可用算术加。校验和能够检测到比奇偶校验更多的错误。累加和校验的缺点是当字节顺序颠倒时,无法检验出字节位序(或1、0位序不同)的错误。,7.1串行通信基础知识,28,三、循环冗余码校验(CyclicRedundancyCheck,简称CRC)循环冗余码校验是通过某种数学运算实现有效信息与
13、校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。循环冗余码校验的基本原理是将一个数据块看成一个位数很长的二进制数,然后用一个特定的数去除它,将余数作校验码附在数据块后一起发送。接收端收到该数据块和校验码后,进行同样的运算来校验传送是否出错。目前CRC已广泛用于数据存储和数据通信中,并在国际上形成规范,已有不少现成的CRC软件算法。循环冗余码校验纠错能力强,广泛应用于同步通信中。,7.1串行通信基础知识,本节内容,7.2.1串行接口的结构7.2.2串行接口的控制寄存器7.2.3串口通信的波特率设计,7.280C51系列单片机的串行接口,30,7.280C51系列单片机的串行接
14、口,80C51系列单片机有一个全双工的串行口,这个口除可以实现串行异步通信,还可以作为同步移位寄存器使用。7.2.1串行接口的结构80C51系列单片机串行口主要由发送数据缓冲器、发送控制器、接收数据缓冲器、接收控制器、输出控制门、输入移位寄存器等组成。,31,图7-5串行口结构框图,7.280C51系列单片机的串行接口,串行口结构框图如图7-5所示:,由于串行口对外有两条独立的收、发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工通信。,7.280C51系列单片机的串行接口,7.280C51系列单片机的串行接口,33,MCS-51系列单片机串行通信的基本工作
15、:发送数据时,将CPU发送来的数据转换成一定格式的串行数据,由引脚TXD上按规定的波特率逐位输出;接收数据时,监视引脚RXD,一旦出现起始位0,就将外围设备送来的一定格式的串行数据转换成并行数据,等待CPU读入。,本节内容,7.2.1串行接口的结构7.2.2串行接口的控制寄存器7.2.3串口通信的波特率设计,7.280C51系列单片机的串行接口,35,7.2.2串行接口的控制寄存器对串行口的访问和设置是通过访问相关的特殊功能寄存器完成的,与串行口相关的特殊功能寄存器共有3个,如表7-1所示。,表7-1串口控制寄存器,7.280C51系列单片机的串行接口,36,一、串行数据缓冲器SBUF串行数据
16、缓冲器SBUF,单元地址99H,既表示发送寄存器,又表示接收寄存器,用指令判断区分。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两者均只能进行字节寻址。,7.280C51系列单片机的串行接口,37,7.280C51系列单片机的串行接口,数据传输过程中:1)MOVSBUF,A-将数据写入发送缓冲器,启动一次数据发送数据发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送。发送器为单缓冲器,因为发送时CPU是主动的。,38,7.280C51系列单片机的串行接口,数据传输过程中:2)MOVA,SBUF-从接收缓冲器读取数据,完成一次数据接收接收时,CPU自动把接收到的
17、数据存入SBUF,用户只需从SBUF中读出接收数据。SBUF具有接收缓冲功能,接收器是双缓冲结构,在第一个字节从寄存器读出之前,可以开始接收第二个字节,但是如果第二个字节接收完毕时,第一个字节仍未读出,其第一个字节将会丢失。,39,1.串行口的数据发送单片机启动发送的方法是:在TI=0的条件下,CPU通过执行一条写SBUF指令(MOVSBUF,A),向输出缓冲器SBUF写入数据,从而启动数据串行发送。在波特率发生器产生的发送时钟控制下,按照预先设置的帧格式由低到高逐位由TXD端输出发送数据,发送结束TI1。,7.280C51系列单片机的串行接口,40,2.串行口的数据接收单片机启动接收的首要条
18、件是REN=1。串行口通过对RXD引脚信号的采样来确认串行数据,若检测到发送数据的起始位(一般为低电平),则其后采样到的数据在接收时钟控制下以移位方式存入输入移位寄存器,当数据接收完成或检测到停止位时,CPU将自动把接收到输入移位寄存器的内容送入接收缓冲器SBUF,并置接收完成标志位RI=1。编程人员可通过中断方式或查询方式得知这一消息,随后编写读取指令如:MOVA,SBUF指令将接收到的数据取出。,7.280C51系列单片机的串行接口,41,例如:甲机发送数据给乙机。,图7-6串行通信甲机发送乙机接收,7.280C51系列单片机的串行接口,42,二、串行口控制寄存器SCON串行口控制寄存器S
19、CON的作用:控制串行通信的工作方式、在数据发送和接收的过程中设置中断标志。SCON的字节地址为98H,可进行位寻址,定义如下:,7.280C51系列单片机的串行接口,43,(1)SM0、SM1:定义串口工作方式选择位。SM0和SM1定义串行口4种工作方式,如表7-2所示。,7.280C51系列单片机的串行接口,表7-2串行口工作方式(fosc为系统晶振频率),(2)SM2:多机通信控制位(主要用于模式2和模式3)在模式2和模式3:SM2=1,允许多机通信。在主从式多机通信中,SM2用于从机的接收控制。设SM2=1:从机(接收机)只接收地址帧;(利用收到的RB8来控制是否激活RI)若接收到的第
20、9位数据(RB8)为0时(数据帧),不激活接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;只有当第9位数据(RB8)为1时(地址帧),才将接收到的前8位数据送入SBUF中,并激活RI,以产生中断申请。设SM2=0:从机(接收机)可接收所有信息;不论收到的RB8是0还是1,均可以使收到的数据进入SBUF,并激活RI。(即此时RB8不具有控制RI激活的功能)在模式1:若SM2=1,则只有接收到有效停止位时,RI才置1。通常设为0。在模式0:SM2必须是0。,7.280C51系列单片机的串行接口,(3)REN:允许接收控制位(串行接收的开关)该位由软件置1或清0。REN=1时,允许接收
21、数据;REN=0时,则禁止接收;,7.280C51系列单片机的串行接口,(4)TB8:发送数据第9位。该位根据发送数据的需要由软件置位或复位。在模式2和模式3中:TB8是要发送数据的第9位。在多机通信时:作为发送地址帧或数据帧的标志位。一般约定:发送地址帧时,设置TB8=1;发送数据帧时,设置TB8=0。在单机通信时:它也可作奇偶校验位。在模式0或模式1中:该位未用。,7.280C51系列单片机的串行接口,(5)RB8:接收数据第9位。在模式2和模式3中:RB8是接收数据的第9位。在多机通信时:也可以是约定的地址/数据标志位,可根据RB8被置位的情况对接收数据进行某种判断,若RB8=1,说明收
22、到的数据为地址帧;RB8=0,收到的数据为数据帧。在单机通信时:它可以是约定的奇偶校验位。在模式1时:若SM2=0(即不是多机通信情况),则RB8是已接收到的停止位。在模式0中:该位未用。,7.280C51系列单片机的串行接口,(6)TI:发送中断标志。(在一帧数据发送结束时由硬件置位)在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。TI=1表示“发送缓冲器已空”,通知CPU可以发送下一帧数据。TI位可作为查询;也可作为中断申请标志位。TI不会自动复位,必须在中断服务程序中,由软件清0。,7.280C51系列单片机的串行接
23、口,(7)RI:接收中断标志。(在接收到一帧有效数据后由硬件置位)在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。RI=1表示一帧数据接收完毕,并已装入接收缓冲器中,即表示“接收缓冲器已满”,通知CPU可取走该数据。该位可作为查询,也可作为中断申请标志位。同样RI不会自动复位,必须在中断服务程序中,由软件清0。注意:发送中断标志TI和接收中断标志RI共用一个中断入口地址(中断向量)。,7.280C51系列单片机的串行接口,50,三、电源管理寄存器PCON电源管理寄存器在特殊功能寄存器中,字节地址为87H,不能位寻址,其各位
24、的定义如下:D7D6D5D4D3D2D1D0(1)SMOD:该位与串口通信波特率有关。SMOD=0:串口方式1,2,3时,波特率正常。SMOD=1:串口方式1,2,3时,波特率加倍。(2)(SMOD0),(LVDF),(POF):这三位是STC单片机特有的功能,请查看相关手册,其他单片机保留未使用。(3)GFl,GF0:两个通用工作标志位,用户可以自由使用。,7.280C51系列单片机的串行接口,51,(4)PD:掉电模式设定位。PD=0:单片机处于正常工作状态。PD=1:单片机进入掉电(PowerDown)模式。可由外部中断低电平触发或由下降沿触发或者硬件复位模式换醒,进入掉电模式后,外部晶
25、振停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。(5)IDL:空闲模式设定位。IDL=0:单片机处于正常工作状态。IDL=1:单片机进入空闲(Idle)模式。除CPU不工作外,其余仍继续工作,在空闲模式下可由任一个中断或硬件复位唤醒。,7.280C51系列单片机的串行接口,本节内容,7.2.1串行接口的结构7.2.2串行接口的控制寄存器7.2.3串口通信的波特率设计,7.280C51系列单片机的串行接口,53,7.2.3串口通信的波特率设计一、什么是波特率波特率是指每秒传送二进制数据的位数,单位是bps(位/秒),即1波特=1位/秒。单片机或计算机在串口通信时的速率用波特率表
26、示。如果单片机与计算机之间每秒钟传送360个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的波特率为10位360个/秒=3600bps。,7.280C51系列单片机的串行接口,54,二、80C51单片机串行口的波特率设计串行通信的波特率随串行口工作方式的不同而不同,串行口的4种工作方式对应着3种波特率。影响波特率的因素主要有以下几个:系统的振荡频率fosc。电源控制寄存器PCON中的波特率倍增位SMOD。定时器/计数器T1的溢出率设置。,7.280C51系列单片机的串行接口,55,接下来讨论在各种工作方式下的波特率设置方法。1.模式0的波特率在模式0时,每个机器周期
27、产生一个移位时钟,发送或接收一位数据。所以,波特率固定为振荡频率的1/12,且不受SMOD的影响。即:模式0的波特率=例如:若fosc=12MHz,波特率为fosc/12即为1Mb/s。,7.280C51系列单片机的串行接口,56,2模式2的波特率模式2波特率的产生与模式0不同,模式2的波特率由系统的振荡频率fosc和PCON的最高位SMOD确定。当SMOD=0时,波特率为fosc/64;若SMOD=l时,波特率为fosc/32,即:模式2的波特率=若fosc=12MHz:SMOD=0波特率为187.5kb/sSMOD=1波特率为375kb/s,7.280C51系列单片机的串行接口,SMOD+
28、1,57,3模式1和模式3的波特率模式1和模式3的移位时钟脉冲由定时器T1的溢出率决定,故波特率由定时器T1的溢出率与SMOD值共同决定,即:模式1和模式3的波特率=T1的溢出率,7.280C51系列单片机的串行接口,58,溢出率为溢出周期的倒数,所以:波特率=此时,定时器T1工作在模式2时的初值为:,7.280C51系列单片机的串行接口,当T1做波特率发生器使用时,最典型的用法是使T1工作在模式2(初值自动加载)定时方式。若计数初值为X,则每过“256X”个机器周期,定时器T1就会产生一次溢出。为了避免因溢出而引起中断,此时应禁止中断。这时,溢出周期为,59,【例7-1】设晶振频率fosc=
29、6MHz,SMOD=1,设定时器T1工作在方式2,fosc为6MHz时,波特率为2400bit/s,计算定时初值X,并初始化T1和串行口。解:X=256-6106(1+1)/(24003212)=242.98243=0F3H则定时器T1和串行口的初始化程序如下:MOVTMOD,#20H;设T1为方式2定时MOVTH1,#0F3H;置时间常数MOVTL1,#0F3HSETBTR1;启动T1ORLPCON,#80H;SMOD=1MOVSCON,#50H;串行口方式1,7.280C51系列单片机的串行接口,本节内容,7.3.1模式07.3.2模式17.3.3模式27.3.4模式3,7.3串行口工作模
30、式,61,7.3串行口工作模式,7.3.1模式0模式0时80C51单片机串行口工作在同步移位寄存器状态,有输入/输出方式,一般应用于扩展I/O口。8位串行数据的输入或输出都是通过RXD端,而TXD端用于送出同步移位脉冲,作为外接器件的同步移位信号。波特率固定为fosc/12。模式0以8位为一帧数据,没有起始位和停止位,传送数据时,低位在前、高位在后,其帧格式为:,62,模式0的发送:在TI=0的情况下,由一条写发送缓冲器的指令(MOVSBUF,A)开始。CPU执行完该指令,串行口即将8位数据从RXD端送出(低位在前),同时在TXD端发出同步移位脉冲。8位数据发送完毕后,由硬件置位TI=1。可通
31、过查询TI位来确定是否发送完一帧数据,TI=1表示发送缓冲器已空;TI=1也可作为中断请求信号,申请串行口发送中断。当要发送下一组数据时,需用软件使TI清零,然后才可发送下一组数据。,7.3串行口工作模式,63,模式0的接收:在RI=0的条件下,执行指令使得REN=1,启动串行口接收。接收数据由RXD端输入(低位在前),TXD端仍发出同步移位脉冲。接收到8位数据以后,由硬件使RI=1。可通过查询RI位来确定是否接收到一组数据,RI=1表示接收数据已装入接收缓冲器,可以用指令(MOVA,SBUF)读取其内容。RI=1也可作为中断请求信号,申请串行口接收中断。无论是中断方式还是查询方式,当CPU读
32、取数据后,需用软件使RI清零,以准备接收下一组数据。在模式0中,SCON寄存器中的SM2、RB8、TB8都不起作用,一般设它们为零即可。,7.3串行口工作模式,64,7.3串行口工作模式,(a)串行口方式0发送时序,(b)串行口方式0接收时序,本节内容,7.3.1模式07.3.2模式17.3.3模式27.3.4模式3,7.3串行口工作模式,66,7.3.2模式1串行口定义为模式1时,是串行异步通信方式。模式1一帧数据由10位组成,包括1位起始位、8位数据位、1位停止位,其帧格式为:,7.3串行口工作模式,67,模式1的发送:也是在TI=0时由一条写发送缓冲器SBUF的指令开始。启动发送后,串行
33、口自动插入一位起始位(逻辑0),接着是8位数据(低位在前),然后插入一位停止位(逻辑1),在发送移位脉冲作用下,依次由TXD端发出。一帧信息发完后,自动维持TXD端信号为1。在8位数据发完之后,也就是在插入停止位时,使TI置1,用以通知CPU可以发送下一帧数据。,7.3串行口工作模式,68,模式1的接收:也是在RI=0的条件下,执行指令使得REN=1,启动串行口接收。串行口采样引脚RXD(P3.0),在无信号时,RXD端的状态为1,当采样到1至0的跳变时,确认是起始位“0”,就开始接收一帧数据。在接收移位脉冲的控制下,把收到的数据一位一位地送入输入移位寄存器,直到9位数据全部收齐(包括一位停止
34、位)。当RI=0且停止位为1时,8位数据送入接收缓冲器SBUF,停止位进入RB8,同时使RI置1;否则,8位数据不装入SBUF,放弃接收的数据。所以,模式1接收时,应先用软件清除RI或SM2标志。,7.3串行口工作模式,69,7.3串行口工作模式,(a)串行口方式1发送时序,(b)串行口方式1接收时序,本节内容,7.3.1模式07.3.2模式17.3.3模式27.3.4模式3,7.3串行口工作模式,71,7.3.3模式2模式2也是串行异步通信方式。一帧数据由11位组成,包括1位起始位、8位数据位、1位可编程位、1位停止位,其帧格式为:模式2的波特率是固定的,且有两种:一种是:,另一种是:,7.
35、3串行口工作模式,72,模式2的发送:包括9位有效数据,在启动发送之前,要把发送的第9位数值装入SCON寄存器中的TB8位,准备好TB8的值以后,在TI=0的条件下,就可以执行一条写发送缓冲器SBUF的指令来启动发送。串行口能自动把TB8取出,并装入到第9位数据的位置,逐一发送出去。发送完毕,使TI置1。,7.3串行口工作模式,73,模式2的接收:与模式1基本相似,不同之处是要接收9位有效数据。在模式1时是把停止位当作第9位数据来处理,而在模式2(或模式3)中存在着真正的第9位数据。因此,接收数据真正有效的条件为:(1)RI=0;(2)SM2=0或收到的第9位数据为1。若上述两个条件成立,接收
36、的前8位数据进入SBUF以准备让CPU读取,接收的第9位数据进入RB8,同时置位RI。若以上条件不成立,则这次接收无效,放弃接收数据,即8位数据不装入SBUF,也不置位RI。,7.3串行口工作模式,74,(b)串行接口方式2接收时序,7.3串行口工作模式,(a)串行接口方式2发送时序,本节内容,7.3.1模式07.3.2模式17.3.3模式27.3.4模式3,7.3串行口工作模式,76,7.3.4模式3模式3同样是串行异步通信方式,其一帧数据格式,接收、发送过程与模式2完全相同,所不同的仅在于波特率。模式2的波特率只有固定的两种,而模式3的波特率由定时器T1的溢出率及SMOD决定,这一点与模式
37、1相同。,7.3串行口工作模式,本节内容,7.4.1串行口模式0的应用7.4.2串行口模式1的应用7.4.3串行口模式2的应用7.4.4串行口模式3的应用,7.4串行通信应用举例,78,7.4串行通信应用举例,图7-10串转并原理图,7.4.1串行口模式0的应用一、扩展并行输出口80C51单片机的串行口在方式0时外接一个串入并出的移位寄存器如CD4094(或是74LS164等),可以扩展一个8位并行输出口。移位寄存器CD4094的STB端为并行输出允许控制端:STB=0时,移位寄存器串行接收;STB=1时打开并行输出控制门,实现并行输出点亮发光二极管。,79,【例7-2】用某51单片机串行口外
38、接CD4094扩展8位并行输出口,8位并行口的各位都接一个发光二极管,假设发光二极管为共阴极型,电路连接如图7-10所示,要求编程实现:发光二极管呈流水灯状态(从左向右以一定延迟依次点亮,并反复循环)。解:本例数据的串行发送采用查询方式,显示的延迟由延时程序DELAY实现。程序如下:ORG2000HSTART:MOVSCON,#00H;置串行口工作方式0,且TI=0CLRES;禁止串行中断MOVA,#80H;拟先点亮最左边一位OUT0:CLRP1.0;关闭并行输出MOVSBUF,A;启动串行输出,7.4串行通信应用举例,80,OUT1:JNBTI,OUT1;输出完否CLRTI;完了,清TI标志
39、,以备下次发送SETBP1.0;打开并行口输出ACALLDELAY;延时一段时间RRA;循环右移CLRP1.0;关闭并行输出JMPOUT0;循环RETDELAY:ORG2400H;延时50msDEL:MOVR7,#125;执行时需1个机器周期DEL1:MOVR6,#200DEL2:DJNZR6,DEL2;2002=400s(内循环时间)DJNZR7,DEL1;0.4ms125=50ms(外循环时间)RET,7.4串行通信应用举例,81,二、扩展并行输入口80C51单片机的串行口在方式0时外接一个并入串出的移位寄存器如CD4014(或是74LS165等),如图7-11所示,可以扩展一个8位并行输
40、入口。并入串出移位寄存器必须带有一个预置/移位的控制端。CD4014的预置/移位控制端是P/S:当P/S=1时,8位数据并行置入移位寄存器;当P/S=0时,移位寄存器中的8位数据串行移位输出。,7.4串行通信应用举例,图7-11扩展并行输入口,82,【例7-3】某51单片机串行口外接CD4014扩展8位并行输入口,输入数据由8个开关提供,另有一个开关S提供联络信号,电路连接如图7-12所示。当S=0时,要求编程实现连续从RXD输入到单片机8位开关量。,7.4串行通信应用举例,图7-12扩展并行输入口接口电路,83,解:本例用串行口模式0接收数据,初始化时应使REN为1启动接收,采用查询方式输入
41、数据,程序如下:ORG0300HBJS0:JBP1.0,LP2;开关K未闭合,转返回CLRES;采用查询方式,因此禁止串行中断MOVSCON,#10H;设模式0,RI清0,REN=1启动接收LP:SETBP1.1;P/S=1,并行置入开关数据CLRP1.1;P/S=0,开始串行输出LP1:JNBRI,LP1;查询RI,RI=0未接收完等待CLRRI;接收完,清RI,准备接收下一个MOVA,SBUF;读取数据送入累加器MOV40H,A;送内部RAM区LP2:RET;接收完,子程序返回,7.4串行通信应用举例,本节内容,7.4.1串行口模式0的应用7.4.2串行口模式1的应用7.4.3串行口模式2
42、的应用7.4.4串行口模式3的应用,7.4串行通信应用举例,85,7.4.2串行口模式1的应用【例7-4】设计一个发送程序,发送片内RAM40H4FH中的数据。串行口设定为工作方式1,波特率为1200b/s,fosc=11.0592MHz。(设T1工作在方式2,SMOD=0。)解:工作方式1的波特率取决于定时器T1的溢出率,波特率为1200,则T1的计数初值X=256-(20/32)11059200/(121200)=232=0E8H,程序如下:MOVTMOD,#20H;定时器T1为工作方式2MOVTH1,#0E8H;初始化计数器MOVTL1,#0E8HCLRET1;禁止T1中断SETBTR1
43、;启动T1MOVSCON,#40H;设定串口工作在模式1,禁止接收数据,7.4串行通信应用举例,86,MOVPCON,#00H;SMOD=0CLRES;禁止串行中断MOVR0,#40H;置发送数据首地址MOVR7,#16;置发送数据长度LOOP:MOVA,R0;读取第一个数据AMOVSBUF,A;数据SBUF,启动发送JNBTI,$;等待一帧数据发送完毕CLRTI;TI清0INCR0;指向下一字节单元DJNZR7,LOOPSJMP$END,7.4串行通信应用举例,本节内容,7.4.1串行口模式0的应用7.4.2串行口模式1的应用7.4.3串行口模式2的应用7.4.4串行口模式3的应用,7.4串
44、行通信应用举例,88,7.4.3串行口模式2的应用【例7-5】设计一个发送程序,发送片内RAM50H5FH中的数据。串行口设定为方式2,TB8用作奇偶校验位。解:在数据写入发送缓冲器之前,先将数据的奇偶性P写入TB8,这时TB8做奇偶校验用,程序如下:MOVSCON,#80H;设定为工作方式2MOVPCON,#80H;SMOD=1,波特率为fosc/32MOVR0,#50H;置发送数据首地址MOVR7,#16;置发送数据长度LOOP:MOVA,R0;取第一个数据AMOVC,P;P随A变,PCTB8MOVTB8,CMOVSBUF,A;数据SBUF,启动发送JNBTI,$;等待一帧数据发送完毕CL
45、RTI;TI清0INCR0;指向下一字节单元DJNZR7,LOOPSJMP$END,7.4串行通信应用举例,本节内容,7.4.1串行口模式0的应用7.4.2串行口模式1的应用7.4.3串行口模式2的应用7.4.4串行口模式3的应用,7.4串行通信应用举例,90,7.4.4串行口模式3的应用【例7-6】设计一个接收程序,将接收的16个字节数据送入片内RAM50H5FH单元中。串行口设定为工作方式3,波特率为1200b/s,fosc=6MHz。解:工作方式3的波特率是由T1产生的,波特率为1200,T1的计数初值为0F3H(SMOD=0),程序如下:MOVTMOD,#20H;定时器T1为工作方式2
46、MOVTH1,#0F3H;初始化计数器MOVTL1,#0F3HSETBTR1;启动T1MOVSCON,#0D0H;设定为工作方式3,可以接收数据MOVR0,#50H;置接收数据首地址MOVR7,#16;置接收数据长度,7.4串行通信应用举例,91,COUNT:JBCRI,PRI;等待接收,RI=1则结束等待并将RI清0SJMPCOUNTPRI:MOVA,SBUF;从串行口中读取数据JNBP,PNP;P=0,转PNPJNBRB8,PER;P=1,RB8=0,出错转PERRIGHT:MOVR0,A;P=1,RB8=1,存接收数据INCR0DJNZR7,COUNTCLRPSW.1;正确接收完16个字
47、节数据,标志位F1清0SJMP$PER:SETBPSW.1;奇偶错置位F1SJMP$PNP:JBRB8,PER;P=0,RB8=1,奇偶错转PERSJMPRIGHT;P=0,RB8=0,转RIGHTEND,7.4串行通信应用举例,本节内容,7.5.1双机串行通信的硬件连接7.5.280C51单片机的多机通信7.5.3双机串行通信软件编程7.5.4PC机与单片机的点对点串行通信接口设计7.5.5PC机与多个单片机的串行通信接口设计,7.5串行通信实用技术,93,7.5串行通信实用技术,图7-13TTL电平传输的连接方式,7.5.1双机串行通信的硬件连接一、TTL电平通信接口如果两个80C51单片
48、机相距在1.5m之内,它们的串行口可直接相连,接口电路如图7-13所示。甲机的RXD与乙机的TXD端相连,乙机的RXD与甲机的TXD端相连,从而直接用TTL电平传输方法来实现双机通信。,94,二、RS-232C双机通信接口如果双机通信距离在1.515m之间时,可利用RS-232C标准接口实现点对点的双机通信,接口电路如图7-14所示。,7.5串行通信实用技术,图7-14RS-232C双机通信接口电路,图7-14中的芯片MAX232A是美国MAXIM(美信)公司生产的RS-232C双工发送器/接收器电路芯片。,95,三、RS-422A双机通信接口RS-422A与RS-232C的主要区别是:收发双
49、方的信号地不再共地,RS-422A采用了平衡驱动和差分接收的方法。RS-422A能在长距离、高速率下传输数据。它的最大传输率为10Mbit/s,在此速率下,电缆允许长度为12m,如果采用较低传输速率时,最大传输距离可达1219m。,7.5串行通信实用技术,96,7.5串行通信实用技术,图7-15RS-422A双机通信接口电路,为了增加通信距离,可以在通信线路上采用光电隔离方法,利用RS-422A标准进行双机通信的接口电路如图7-15所示。,97,四、RS-485双机通信接口RS-485是RS-422A的变型,它与RS-422A的区别在于:RS-422A为全双工,采用两对平衡差分信号线;而RS-
50、485为半双工,采用一对平衡差分信号线。RS-485对于多站互连是十分方便的,很容易实现多机通信。RS-485标准允许最多并联32台驱动器和32台接收器。,7.5串行通信实用技术,本节内容,7.5.1双机串行通信的硬件连接7.5.280C51单片机的多机通信7.5.3双机串行通信软件编程7.5.4PC机与单片机的点对点串行通信接口设计7.5.5PC机与多个单片机的串行通信接口设计,7.5串行通信实用技术,99,7.5.280C51单片机的多机通信多个80C51单片机可利用串行口进行多机通信,经常采用主从式结构。所谓主从式是指在多个单片机组成的系统中,只有一个主机,其余全是从机。主机发送的信息可
51、以被所有从机接收,任何一个从机发送的信息只能由主机接收。从机和从机之间不能进行相互的直接通信,从机和从机之间的通信只能经主机才能实现主机的RXD与所有从机的TXD端相连,TXD与所有从机的RXD端相连。从机的地址分别为01H、02H和03H。,7.5串行通信实用技术,本节内容,7.5.1双机串行通信的硬件连接7.5.280C51单片机的多机通信7.5.3双机串行通信软件编程7.5.4PC机与单片机的点对点串行通信接口设计7.5.5PC机与多个单片机的串行通信接口设计,7.5串行通信实用技术,101,7.5.3双机串行通信软件编程单片机的串行通信接口设计时,需要考虑如下问题:(1)首先确定通信双
52、方的数据传输速率。(2)根据数据传输速率确定采用的串行通信接口标准。(3)在通信接口标准允许的范围内确定通信的波特率。为减小波特率的误差,通常选用11.0592MHz的晶振频率。(4)根据任务需要,确定在通信过程中,收发双方所使用的通信协议。(5)通信线的选择是需要考虑的一个很重要的因素。通信线一般选用双绞线较好,并根据传输的距离选择纤芯的直径。如果空间的干扰较多,还要选择带有屏蔽层的双绞线。(6)在通信协议确定后,再进行通信软件的编程,详见下面的介绍。,7.5串行通信实用技术,102,一、串行口方式1实现双机通信【例7-7】本例采用方式1进行双机串行通信,收、发双方均采用6MHz晶振,波特率
53、为2100bit/s,一帧信息为10位,第0位为起始位,第18位为数据位,最后1位为停止位。发送方要发送的数据块的首地址为1000H,传送数据的长度未知,但发送方以78H、77H单元的内容存放首地址,以76H、75H单元内容减1为数据块末地址。解:(1)甲机发送程序中断方式的发送程序如下:ORG0000H;程序初始入口LJMPMAINORG0023H;串行中断入口LJMPCOM_INT,7.5串行通信实用技术,103,ORG1000HMAIN:MOVSP,#53H;设置堆栈指针MOV78H,#10H;设置事发送的数据块的首末地址MOV77H,#00HMOV76H,#10HMOV75H,#20H
54、ACALLTRANS;调用发送子程序HERE:SJMPHERETRANS:MOVTMOD,#20H;设置定时器/计数器工作方式MOVTH1,#0F3H;设置计数器初值MOVTL1,#0F3HMOVPCON,#80H;波特率加倍SETBTR1;接通计数器计数MOVSCON,#40H;设置串行口工作方式,7.5串行通信实用技术,104,MOVIE,#00H;先关闭中断,利用查询方式发送地址帧CLRF0MOVSBUF,78H;启动发送,发送首地址高8位WAIT1:JNBTI,WAlT1CLRTIMOVSBUF,77H;启动发送,发送首地址低8位WAIT2:JNBTI,WAIT2CLRTIMOVSBU
55、F,76H;启动发送,发送末地址高8位WAIT3:JNBTI,WAIT3CLRTIMOVSBUF,75H;启动发送,发送末地址低8位,7.5串行通信实用技术,105,WAIT4:JNBTI,WAIT4CLRTIMOVIE,#90H;打开中断允许寄存器,采用中断方式发送数据MOVDPH,78HMOVDPL,77HMOVXA,DPTRMOVSBUF,A;启动发送首个数据WAIT:JNBF0,WAIT;发送等待RETCOM_INT:CLRTI;关发送中断标志位TIINCDPTR;数据指针加1,准备发送下个数据MOVA,DPH;判断当前被发进数据的地址是不是末地址,7.5串行通信实用技术,106,CJ
56、NEA,76H,END1;不是末地址则跳转MOVA,DPL;同上CJNEA,75H,END1SETBF0;数据发送完毕,置1标志位CLRES;关串行口中断CLREA;关中断RET;中断返回END1:MOVXA,DPTR;将要发送的数据送累加器,准备发送MOVSBUF,A;发送数据RETI;中断返回END,7.5串行通信实用技术,107,(2)乙机接收程序中断方式的接收程序如下:ORG0000HLJMPMAINORG0023HLJMPCOM_INTORG1000HMAIN:MOVSP,#53H;设置堆栈指针ACALLRECEI;调用接收子程序HERE:SJMPHERERECEI:MOVR0,#7
57、8H;设置地址接收区,7.5串行通信实用技术,108,MOVTMOD,#20H;设置定时器/计数器工作方式MOVTH1,#0F3H;设置波特率MOVTL1,#0F3HMOVPCON,#80H;波特率加倍SETBTR1;开计数器MOVSCON,#50H;设置串行口工作方式MOVIE,#90H;开中断CLRF0;标志位清0CLR7FHWAIT:JNB7FH,WAIT;查询标志位等待接收RET,7.5串行通信实用技术,109,COM_INT:PUSHDPL;压栈,保护现场PUSHDPHPUSHAccCLRRI;接收中断标志位清0JBF0,R_DATA;判断接收的是数据还是地址,F0=0为地址MOVA
58、,SBUF;接收数据MOVR0,A;将地址帧送指定的寄存器DECR0CJNER0,#74H,RETNSETBF0;置位标志位,地址接收完毕ETN:POPAcc;出栈,恢复现场,7.5串行通信实用技术,110,POPDPHPOPDPLRETI;中断返回R_DATA:MOVDPH,78H;数据接收程序区MOVDPL,77HMOVA,SBUP;接收数据MOVXDPTR,A;送指定的数据存储单元中INC77H;地址加1MOVA,77H;判断当前接收的数据的地址是否应向高8位进位JNZEND2,7.5串行通信实用技术,111,INC78HEND2:MOVA,76HCJNEA,78H,RETN;判断是否为
59、最后一帧数据不是则继续MOVA,75HCJNEA,77H,RETN;是最后一帧数据则各种标志位清0CLRESCLREASETB7FHSJMPRETN;跳入返回子程序区END,7.5串行通信实用技术,112,二、串行口方式2实现双机通信方式2和方式1有两点不同之处。方式2接收/发送11位信息,第0位为起始位,第18位为数据位,第9位是校验位,该位可由用户置TB8决定,第10位是停止位1,这是方式1和方式2的一个不同点。另一个不同点是方式2的波特率变化范围比方式1小,方式2的波特率=振荡器频率/n。当SMOD=0时,n=64。当SMOD=1时,n=32。鉴于方式2的使用和方式3基本一样(只是波特率不同,方式3的波特率要由定时器T1的溢出率决定),所以方式2的具体编程应用,可参照下面介绍的方式3应用编程。,7.5串行通信实用技术,113,三、串行口方式3实现双机通信【例7-8】本例为80C51单片机用串行通信方式3进行发送和接收的应用实例。发送方首先将存放在78H和77H单元中的地址发送给接收方,然后发送数据00HFFH,共256个数据。发送方采用查询方式发送地址帧,采用中断或查询方式发送数据,接收方采用中断或查询方式接收数据。发送和接收双方均采用6MHz的晶振,波特率为4800bit/s。(1)甲机发送程序。中断方式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年江苏省宿迁市宿豫区三年级数学第二学期期末调研模拟试题含答案解析
- 高空作业安全防护规范培训
- 动火作业安全流程
- 跨境智算中心电算协同中跨国算力绿电调度跨境执法协作-基于国际环境执法合作框架与算力绿电调度跨境违法联合查处规则规范分析
- 家庭自制发酵美食安全食用周期课
- 校园零食安全隐患排查整治宣讲
- 夏季饮料代理合作协议便利店饮品季度分销合同样本三篇
- 社区护理学第4版课件
- 女儿升学宴家长发言稿
- 高血压性心脏病护理
- 分级护理课件教学课件
- RPA财务机器人开发与应用(课程标准)8.10
- 农网工程资料样表
- 外卖行业交通安全培训
- IP-Guard(威盾)-3.50.0918-安装、破解、配置教程
- 毕业论文写作指导-第5章毕业论文的写作
- 广西机电职业技术学院工作人员招聘考试真题2022
- 汽车音响的组成及工作原理
- 石大体育学院专题讲座:教练员职业素养及管理
- 中国人民解放军政治工作条例
- YY/T 1778.1-2021医疗应用中呼吸气体通路生物相容性评价第1部分:风险管理过程中的评价与试验
评论
0/150
提交评论