片机的串行接口.ppt

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

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

1、1,9.1 串行通信基础知识,9.1.0 通信方式9.1.1 串行通信的分类9.1.2 串行通信的制式 9.1.3 串行通信的标准接口,第9章 单片机的串行接口,2,9.1.0 通信方式,1并行通信2串行通信,3,1并行通信,并行通信是将传输数据的各比特(位)同时进行传送。以单字节(8比特)数据为例,单片机通过并行接口与外设进行并行通信的示意图如图9-1所示。,优点:速度快、效率高缺点:传输线太多适合近距离通信。,4,2串行通信,串行通信是将传输数据的各比特(位)按先后顺序逐位进行传送。单片机通过串行接口与外设进行串行通信的示意图如图9-2所示。,TXD是串行数据发送脚RXD是串行数据接收脚,

2、优点:通信线路简单、降低线路成本缺点:传输速度较低适合远距离通信。,5,1异步通信2同步通信,9.1.1 串行通信的分类,6,异步通信是指发送端和接收端使用各自的时钟来控制数据的发送和接收的一种通信方式。这两个时钟源彼此独立,无需严格同步。异步通信的特点是以字符帧为单位进行传输。为了使接收方能正确接收与识别发方送来的数据,收发双方必须在进行异步通信前,事先约定好异步通信的字符帧格式和传输速率。,1异步通信,7,(1)异步通信的字符帧格式,图9-3 异步通信的字符帧格式,8,异步通信字符帧 各部分的结构和功能:,起始位:位于字符帧开头,只占一位,将逻辑电平0作为联络信号,用于向接收方表示发送端开

3、始发出一帧字符。数据位:紧跟起始位之后,长度由通信双方事先约定,通常可取58位或9位,低位在前,高位在后。,9,奇偶校验位:位于数据位之后,仅占一位,用于实现奇校验或偶校验。停止位:位于字符帧末尾,逻辑电平为1,长度通常为1位,也可取为1.5位或2位,用于向接收方表示发送端已发送完一帧字符。空闲位:可有可无,若有,则位于停止位之后,逻辑电平为1,位长度任意。用于表示发送端没有发送数据,异步通信字符帧 各部分的结构和功能:,10,(2)异步通信的传输速率,异步通信的传输速率通常用比特率或波特率来表示。,11,比特率:,为每秒钟传输的比特数,单位是比特/秒,或记为bit/s。每个二进制码元(0或1

4、)所含的信息量规定为1bit。对于前述的异步串行通信而言,若字符帧的长度为10,即1个起始位、1个停止位、8个数据位(没有空闲位),如果每秒钟传送240个字符,则这时的比特率为:10bit/个240个/s=2400 bit/s,12,波特率:,为每秒钟传送的码元数,单位为“波特”,常用符号B(Baud)表示。例如,若某通信系统每秒钟传送2400个码元,则该系统的波特率为2400波特或写作2400B。但要注意,波特率仅仅是表征单位时间内传送码元的数目,而没有限定码元由何种进制构成。,13,波特率和比特率的区别:,对于二制码元(0或1),由于每个码元的信息量为1比特,因此,这时,比特率和波特率在数

5、值上相同;对于四制码元(00、01、10或11),由于每个码元的信息量为2比特,因此,四制码元的比特率在数值上是波特率的2倍。在二进制下,波特率和比特率在数值上相同,所以也经常用波特率表示数据的传输速率。,14,2同步通信,同步通信是指通信时要建立发送方时钟对接收方时钟的直接控制,使收发双方达到完全同步的一种通信方式。这里所说的同步既包含位同步,也包含字符同步。接收方只要与发送方建立起同步关系,就可以对发方送来的数据进行准确识别。因此,在同步通信中,可以连续串行传送数据,字符间不留间隙。同步通信的字符帧格式如图9-4所示。,15,同步通信的字符帧格式,图9-4 同步通信的字符帧格式,16,同步

6、字符:位于帧结构开头,用于确认数据字符的开始。接收方进入接收状态后,不断对传输线采样,并把采样到的字符和双方约定的同步字符比较,只有比较成功后才会接收传送过来的字符。同步字符可以采用统一标准格式,也可由用户约定。在单同步字符帧中,同步字符常采用ASCII码中规定的SYN代码(即16H);在双同步字符帧中,同步字符一般采用国际通用标准代码EB90H。数据字符:在同步字符之后,个数不受限制,由所需传输的数据块长度和协议决定。校验字符:一般为12个,位于帧结构末尾,用于接收端对接收到的数据字符进行正确性校验。,同步通信字符帧各部分的结构和功能:,17,异步通信的优点是不需要传送同步脉冲,字符帧长度也

7、不受限制,故所需设备简单。缺点是字符帧中因包含有起始位、停止位或空闲位,从而降低了有效数据的传输速率。同步通信的优点是无需在字符帧中插入附加信息,所以传输效率较高。缺点是必须保持发送时钟与接收时钟的严格同步,因此要求发送方能给接收方提供同步信号,或者要求接收方具备能从发方送来的包含有同步信息的信号中分离出同步信号的能力,所以同步通信的设备较为复杂、成本高,一般只用在高速数据通信系统中。,18,1单工通信,单工通信是指数据仅能沿一个方向传输,不能反向传输。,图9-5 串行通信的3种制式,9.1.2 串行通信的制式,19,2半双工通信,半双工是指数据传输可以沿两个方向,但需要分时进行。可以通过收/

8、发转换开关进行接收状态和发送状态的切换,也可以通过软件控制来实现收/发状态切换。,图9-5 串行通信的3种制式,20,3全双工通信,全双工是指数据可以同时进行双向传输。,图9-5 串行通信的3种制式,21,9.1.3 串行通信的标准接口,标准接口:是指为了使计算机、各种数据终端、通信设备相互之间能进行合理化、规范化、通用化的连接而制定的具有特定参数、指标与性能并符合某种协议的接口。常用的串行通信标准接口有RS-232C、RS-422A、RS-423A、RS-485等,下面重点介绍RS-232C接口。,22,RS-232C接口,RS-232C标准接口是EIA(美国电子工业协会)于1969年颁布的

9、串行通信接口标准。RS是“Recommended Standard”(推荐标准)的缩写,232为标准的编号,C为版本号。在RS-232C之前为RS-232A与RS-232B,1987年修订为EIA-232D,1991年修订为EIA-232E,1997年又修订为EIA-232F。其中,RS-232C最为常用。,23,RS-232C接口在远程数据通信系统中的应用,当两台计算机(DTE)借助公用电话网进行远程数据通信时。RS-232C用于将DTE和DCE进行连接,使两者能进行串行通信。,图9-6 RS-232C接口在远程数据通信系统中的应用,24,1RS-232C的机械特性,RS-232C接口规定使

10、用25针连接器(DB-25),连接器的尺寸及每个插针的排列位置都有明确的定义。由于一般的应用中很少用到RS-232C标准的全部信号线,所以在实际应用中常常使用9针连接器(DB-9)替代25针连接器。两者的外形与引脚排列如图9-7所示。通常一端做成插针,另一端做成插孔。,25,DB-25和DB-9连接器,图9-7 DB-25和DB-9连接器,26,2RS-232C的引脚功能(表9-1),注:引脚序号栏中带括号的序号为DB-9连接器的引脚序号。,27,注:引脚序号栏中带括号的序号为DB-9连接器的引脚序号,28,3RS-232C的电气特性,RS-232C的信号电平:RS-232C标准规定采用负逻辑

11、电平。信号源点的逻辑0(空号)电平范围为+5V+15V,逻辑1(传号)电平范围为5V15V;信号目的点的逻辑0(空号)电平范围为+3V+15V,逻辑1(传号)电平范围为3V15V,噪声容限为2V。RS-232C的信号电平如图9-8所示。,29,RS-232C的信号电平,图9-8 RS-232C的信号电平,通常,RS-232C的逻辑电平采用12V表示逻辑0,12V表示逻辑1。,30,RS-232C的传输距离与传输速率:,RS-232C的传输距离:DTE和DCE之间采用RS-232C传输的最大距离不大于15m。RS-232C的传输速率:小于20kbit/s。注意:传输距离与传输速率是成反比的。,3

12、1,RS-232C在远程通信中的连接,远程通信(传输距离在15m以上)通常需要采用调制解调器(MODEM),这时,RS-232C与DTE和DCE之间的连接方式如图9-9:,4RS-232C与DTE和DCE的连接,32,近程通信是通信距离小于15m的通信,这时,无需使用调制解调器,两台具有RS-232C接口的计算机可采用图9-10所示的两种连接方式中的任意一种进行直接连接。,RS-232C在近程通信中的连接,(a)图的连接方式具有较好的硬件握手功能(b)图的连接方式最简单,但需要利用软件实现握手功能,33,5RS-232C与MCS-51系列单片机的连接,由于MCS-51系列单片机的串行口不是标准

13、RS-232C接口,采用的是正逻辑TTL电平:即逻辑1为2.4V;逻辑0为0.4V。所以使用RS-232C接口将MCS-51系列单片机与计算机或其他具有RS-232C接口的设备进行连接时,必须考虑电平转换问题。通常使用专用的电平转换芯片来进行电平转换。,34,MC1488、MC1489电平转换芯片:,图9-11 MC1488、MC1489的内部结构和引脚排列,MC1488用于将输入的TTL电平转换为RS-232C电平,MC1489用于将输入的RS-232C电平转换为TTL电平输出。,35,由MC1488、MC1489构成的电平转换电路,9,36,为了减少使用双电源的麻烦,现在市场上出现了使用单

14、电源供电的电平转换芯片,这种芯片体积更小,连接更简便,而且抗干扰能力更强,常见的有MAXIM公司生产MAX232。它仅需要+5V电源,由内置的电子泵电压转换器将+5V转换成10V+10V。该芯片与TTL/CMOS电平兼容,片内有2个发送器和2个接收器,使用比较方便。由它构成的电平转换电路如图9-13所示。,MAX232电平转换芯片,37,由MAX232构成的电平 转换电路,R,C5:去耦电容,取值为0.1uF;C1、C2、C3、C4选用数值相同的钽电解电容,取值为1uF;连接时应注意极性,尽量放置在引脚旁边。,38,6RS-232C的缺点,接口的信号电平值较高,易损坏接口电路的芯片。与TTL电

15、平不兼容,与TTL电平接口连接需进行电平转换。传输距离短,使用时传输距离一般不超过15m,线路条件好时也不超过几十米。传输速率较低,最高传送速率为20kbit/s。由于收发信号采用共地传输,容易产生共模干扰,所以抗干扰能力较差。,39,9.2 串行接口的结构与控制,9.2.1 串行接口的结构9.2.2 串行接口的控制寄存器,40,图9-14 MCS-51单片机串行口的结构,9.2.1 串行接口的结构,41,图9-14 说明,串行口由发送电路和接收电路两部分组成。图中有两个物理上独立的串行口接收、发送缓冲器SBUF。SBUF(发送)用于存放将要发送的字符数据;SBUF(接收)用于存放串行口接收到

16、的字符数据,数据的发送、接收可同时进行。SBUF(发送)和SBUF(接收)同属于特殊功能寄存器SBUF,占用同一个地址99H。但发送缓冲器只能写入,不能读出;接收缓冲器只能读出,不能写入。因此,对SBUF进行写操作时,是把数据送入SBUF(发送)中;对SBUF进行读操作时,读出的是SBUF(接收)中的数据。,42,1串口发送过程,当单片机执行“写”SBUF命令(如MOV SBUF,A)时,将累加器A中欲发送的字符送入SBUF(发送)后,发送控制器在发送时钟的作用下,自动在发送字符前后添加起始位、停止位和其他控制位,然后在发送时钟的控制下,逐位从TXD线上串行发送字符帧。发送完一帧数据后使发送中

17、断标志TI=1,发出串口发送中断请求。,43,2串口接收过程,串行口在接收时,接收控制器会自动对RXD线进行监视。当确认RXD线上出现起始位后,接收控制器就从起始位后的数据位开始,将一帧字符中的有用位逐位移入接收缓冲寄存器SBUF(接收)中,自动去掉起始位、停止位或空闲位,并使接收中断标志RI=1,发出串口接收中断请求。这时,只要执行“读”SBUF命令(如MOV A,SBUF),便可以得到接收的数据。,注意:要及时读出数据,否则会出现数据丢失。,44,9.2.2 串行接口的控制寄存器,1串行口控制寄存器SCON2电源控制寄存器PCON,45,1串行口控制寄存器SCON,SCON用于设定串行口的

18、工作方式、接收/发送控制以及设置状态标志等。它的字节地址为98H,可进行位寻址,其各位的定义如图9-15所示。,图9-15 串行口控制寄存器,46,SCON各位名称和功能,SM0和SM1(SCON.7和SCON.6):串行口工作方式选择位。可选择4种工作方式,如表9-2所示。,表9-2串行口的工作方式,47,RI(SCON.0):接收中断标志位。用于指示一帧信息是否接收完毕。它的工作过程是:在方式0中,当串行接收完第8位数据时;在其他方式下,当串行口接收到停止位时;由内部硬件电路使RI=1。一旦RI被硬件置1,便产生串口中断请求(假设串口中断是开放的,下同)。,SCON各位名称和功能,注意:R

19、I必须由软件清0(CLR RI)。,48,TI(SCON.1):发送中断标志位。用于指示一帧信息是否发送完毕。它的工作过程是:在方式0中,当串行发送第8位数据结束时;在其他方式下,开始串行发送停止位时,由内部硬件电路使TI=1,并向CPU发出串口中断请求。,SCON各位名称和功能,注意:TI也必须通过软件才能将其清0(CLR TI)。,49,RB8(SCON.2):接收数据第9位。在方式2或方式3中,用于存放接收数据的第9位,此时,该位可能是奇偶校验位,也可能是多机通信中的地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8为接收到的停止位。方式0时,不使用RB8。,SCON各位名称和功

20、能,50,TB8(SCON.3):发送数据第9位。在方式2或方式3中,用于存放发送数据的第9位,此时,该位可以用作奇偶校验位,在多机通信中,可以作为地址帧/数据帧的标志位。REN(SCON.4):允许接收控制位。若使REN=1,则启动串行口接收数据;若使REN=0,则禁止串口接收。,SCON各位名称和功能,51,SM2(SCON.5):多机通信控制位。主要用于方式2和方式3中。若接收方单片机的SM2=1,则由收到的RB8来控制是否使RI置1:当收到的RB8=0时,RI不被置1,收到的信息被丢弃;当收到的RB8=1时,收到的数据进入SBUF(接收),并将RI置1,向CPU发出串口中断请求,接收方

21、可在串口中断服务中将数据从SBUF(接收)中读走。也可以通过查询RI的办法,在发现RI为1后,将SBUF(接收)中的数据读走。,SCON各位名称和功能,52,若接收方单片机的SM2=0,则RB8不再具有控制RI激活的功能,不论收到的RB8为0还是1,收到的数据都会进入SBUF,并使RI=1。运用SM2的控制功能,便可以实现多机通信(将在下一节中详细介绍)。在方式0时,不使用SM2控制位,应将SM2设定为0。在方式1时,通常也将SM2设为0,若使SM2=1,则只有接收到有效的停止位时,RI才被置1。,SCON各位名称和功能,53,2电源控制寄存器PCON,PCON的字节地址为87H,不能按位寻址

22、,只能按字节寻址。各位的定义如图9-16所示。其中,只有一位SMOD与串行口工作有关。编程时只能使用字节操作指令对它赋值。,图9-16 电源控制寄存器,54,PCON控制位的名称和功能,SMOD(PCON.7):波特率倍增位。在串行口方式1、方式2、方式3中,用于控制是否倍增波特率。当SMOD=0时,波特率不倍增;当SMOD=1时,波特率提高一倍。PCON其余的位,只定义了4位,GF1、GF0为通用标志位,PD、IDL用于节电方式控制:前者为掉电控制位,后者为空闲控制位。,55,9.3 串行接口的工作方式与波特率,9.3.1 串行接口的工作方式9.3.2 串行接口的波特率,56,9.3.1 串

23、行接口的工作方式,1方式02方式13方式2和方式3,57,1方式0,图9-17 串口工作在方式0时的内部结构,方式0时,串行口被设定为同步移位寄存器。这时,串行口的内部结构可简化为图9-17所示。,58,图9-17说明,由图9-17可见,当串行口工作于方式0时,RXD(P3.0)引脚用于输入或输出数据,TXD(P3.1)引脚用于输出同步移位脉冲。波特率固定为fosc/12。发送和接收均为8位数据,低位在前,高位在后。串口工作于方式0时,SM2、RB8和TB8皆不起作用,通常将它们均设置为0状态。,59,(1)方式0发送,方式0发送时,SBUF(发送)相当于一个并入串出的移位寄存器。当TI=0时

24、,通过指令向发送数据缓冲器SBUF写入一个数据,就会启动串行口的发送过程。从RXD引脚逐位移出SBUF中的数据,同时从TXD引脚输出同步移位脉冲。这个移位脉冲可供与串口通信的外设作为输入移位脉冲移入数据。当SBUF中的8位数据完全移出后,硬件电路自动将中断标志TI置1,产生串口中断请求。如要再发送下一字节数据,必须用指令先将TI清0,再重复上述过程。,60,图9-18 串口方式0的发送时序,方式0发送时的时序,61,(2)方式0接收,在方式0接收时,SBUF(接收)相当于一个串入并出的移位寄存器。当SCON中的接收允许位REN=1,并用指令使RI为0时,就会启动串行口接收过程。外设送来的串行数

25、据从RXD引脚输入,同步移位脉冲从TXD引脚输出,供给外设作为输出移位脉冲用于移出数据。当一帧数据完全移入单片机的SBUF后,由硬件电路将中断标志RI置1,产生串口中断请求。接收方可在查询到RI=l后或在串口中断服务程序中将SBUF(接收)中的数据读走。如要再接收数据,必须用指令将RI清0,再重复上述过程。,62,串口方式0的接收时序,图9-19 串口方式0的接收时序,63,2方式1,工作方式1时,串口被设定为10位异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,所传送的字符帧格式如图9-20所示。,图9-20 串口方式1的字符帧格式,64,(1)方式1发送,在TI=0时,当执行一条写

26、SBUF的指令后,即可启动串行口发送过程:发送电路自动在写入SBUF中的8位数据前后分别添加1位起始位和1位停止位。在发送移位脉冲作用下,从TXD引脚逐位送出起始位、数据位和停止位。发送完一个字符帧后,自动维持TXD线为高电平。并使发送中断标志TI置1,产生串口中断请求。通过软件将TI清0,便可继续发送。,65,串口方式1的发送时序,图9-21 串口方式1的发送时序,66,(2)方式1接收,当使用命令使RI=0,REN=1时,串口开始接收过程:接收控制器先以速率为所选波特率的16倍的采样脉冲对RXD引脚电平进行采样,当连续8次采样到RXD线为低电平时,便可确认RXD线上有起始位。此后,接收控制

27、器就改为对第7、8、9三个脉冲采样到的值进行位检测,并以三中取二原则来确定所采样数据的值,如图9-22所示。,67,串口接收时对RXD引脚电平的采样,图9-22 串口接收时对RXD引脚电平的采样,68,方式1接收过程,RXD上的数据被逐位移入接收移位寄存器,当接收到停止位时,将去除起始位和停止位后的8位数据装入接收缓冲器SBUF,并使RI=1,向CPU发出串口中断请求。但此时,若SM2=1,则只有接收到有效的停止位时,RI才被置1。方式1的接收时序如图9-23所示。,图9-23 串口方式1的接收时序,69,3方式2和方式3,将串行口定义为工作方式2或方式3时,串口被设定为11位异步通信口。TX

28、D为数据发送引脚,RXD为数据接收引脚,所传送的字符帧格式如图9-24所示。,图9-24 串口方式2和方式3的字符帧格式,70,(1)方式2和方式3发送,方式2和方式3的发送过程类似于方式1的发送过程,所不同的是,方式2和方式3有9位有效数据位。因此,发送时,除了通过写SBUF指令将8位数据装入SBUF(发送)外,还要把第9位数据预先装入SCON的TB8中。第9位数据可以是奇偶校验位,也可以是其他控制位。通常先使用指令SETBTB8(第9位为1时)或CLRTB8(第9位为0时)装入第9位数据。然后再执行一条写SBUF指令,将低8位发送数据送入SBUF中,便可以启动发送过程。一帧字符发送完后,T

29、I=1。通过软件将其清0后,可用同样方法发送下一字符帧。,71,方式2和方式3的发送时序,图9-25 串口方式2和方式3的发送时序,72,(2)方式2和方式3 接收,方式2和方式3的接收过程也和方式l的接收过程类似。但不同的是:方式1时,RB8中存放的是停止位,方式2和方式3时,RB8中存放的是第9位数据。方式2和方式3正常接收时的接收时序如图9-26所示。其中,TB8被接收后放在RB8中。,图9-26 串口方式2和方式3的正常接收时序,73,9.3.2 串行接口的波特率,在串行通信中,为了保证接收方能正确识别数据,收发双方必须事先约定串行通信的波特率。MCS-51单片机在不同的串口工作方式下

30、,其串行通信的波特率是不同的。其中,方式0和方式2的波特率是固定的;方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。计算公式如下。,74,波特率计算公式:,方式0的波特率=fosc/12 方式1的波特率=(2SMOD/32)(T1溢出率)方式2的波特率=(2SMOD/64)fosc方式3的波特率=(2SMOD/32)(T1溢出率),其中,T1溢出率是指定时器T1每秒钟溢出的次数。,75,T1溢出率计算公式:,由于T1每溢出一次所需的时间即为T1的定时时间,所以T1溢出率等于T1定时时间的倒数。计算公式如下(详见第6章)。,T1的定时时间=(2n计数初值)12/fosc,T1溢出率=1

31、/(T1的定时时间)=fosc/(2n计数初值)12,公式中,n是定时器T1的位数,取值与T1的工作方式有关:若定时器T1为方式0,则n=13 若定时器T1为方式1,则n=16 若定时器T1为方式2或方式3,则n=8,76,在实际应用中,通常将定时器T1选定为方式2。因为定时器T1在方式2时,为自动重装初值的8位定时器/计数器(当TL1从全1变为全0时,TH1重装TL1)。这种方式,可避免因重装计数初值而带来的定时误差。此时,T1溢出率取决于T1的计数初值(TH1),即:,T1溢出率=fosc/256(TH1)12,综合以上分析,可得到定时器T1工作于方式2时,计数初值(TH1)的计算公式如下

32、:,77,常用波特率参数表,在单片机应用中,常用的晶振频率为6MHz或12MHz(或11.0592MHz)。为避免繁杂的计算,表9-3列出了波特率和有关参数的关系,以方便查用。(见P.176表9-3常用波特率参数表),78,表9-3 常用波特率参数表,79,9.4 串行接口的应用举例,9.4.1 串行口方式0的应用9.4.2 串行口方式1的应用9.4.3 串行口方式2和方式3的应用,80,9.4.1 串行口方式0的应用,1将串行口作为并行输入口使用2将串行口作为并行输出口使用,81,1将串行口作为并行输入口使用,串行口在方式0下,通过外接一个“并入串出”的8位移位寄存器(74LS165或CD4

33、014),可以作为并行输入口使用。例如,通过外接CD4014将8路开关状态从串口读入单片机的电路:,82,图9-27说明:,CD4014是一个8位串入/并入-串出移位寄存器,CP为同步移位脉冲输入端,P1P8为并行输入端,Q8为串行输出端。P/为控制端:若P/=0,则CD4014为串行输入(该输入端图中未画出);若P/=1,则CD4014为并行输入。开关KC用于提供控制信号,当KC闭合时,表示要求单片机读入开关量。只要在程序中对P1.1引脚进行查询,发现P1.1=0(即开关KC闭合),便通过P1.0使CD4014的P/=1,然后再启动单片机串口方式0接收过程,即可将CD4014并行输入的开关状

34、态通过串口输入到单片机中。,83,图9-27相应的程序:,ORG0500H CLRES;关串口中断,使用查询 方式控制START:JBP1.1,$;若KC未闭合,则等待 SETBP1.0;若KC未闭合,令 CD4014并行输入开关量 NOP;适当延时 NOPCLR P1.0;令CD4014停止并行输入,准备串行输出 MOV SCON,#10H;置串口为方式0、RI=0、REN=1、启动接收 JNB RI,$;若未接收完,则等待 CLR RI;接收完,清RIMOV A,SBUF;将开关量读入单片机的A中;进行开关量处理 SJMP START;准备下一次读入开关量END,84,2将串行口作为并行输

35、出口使用,串行口在方式0下,通过外接一个“串入并出”的8位移位寄存器74LS164(或CD4094),可以作为并行输出口使用。例如,可以将应用项目中的LED显示电路改为使用串行口来驱动。,85,【项目应用】将应用项目中单片机通过8155与LED数码管连接的接口电路,改为使用串行口与LED数码管连接。,(1)硬件电路:串行口与LED的连接电路如图9-28所示。,图9-28 串行口与LED的连接电路,86,图9-28工作原理,在图9-28中,8031单片机串行口工作于方式0,作为移位寄存器,RXD用于输出字形码(段码),TXD用于输出移位脉冲。74LS164为8位并行输出串行移位寄存器,TXD每输

36、入一个移位脉冲,74LS164便按QAQH的次序移位一次,8个移位脉冲过后,RXD输出的8位二进制数便全部移入一片74LS164中,并从QAQH引脚并行输出至LED的dpa引脚。由于后级74LS164的输入端与前级74LS164的QH相连,6片74LS164首尾相串,因此,当6组(每组8个)移位脉冲过后,从RXD输出的6个字形码(对应时、分、秒的数值)便会从左到右送入6片74LS164,再并行输出到LED5LDE0,从而显示出实时时间。,87,(2)应用程序,程序所用到的内部RAM数据存储单元如下:,27H:秒计数单元 28H:分计数单元29H:时计数单元 4AH4FH:显示缓冲区,源程序:,

37、DISP:CLRES;关串口中断,使用查询方式控制 MOVSCON,#00H;置串口为方式0 MOVR0,#4FH;准备向缓冲区放数 MOVA,27H;取秒值 ACALLPUTT;放秒值 MOVA,28H;取分值 ACALLPUTT;放分值 MOVA,29H;取小时值 ACALLPUTT;放小时值 MOVR0,#4FH;指向显示缓冲区低字节(秒单元)MOVR2,#06H;共显示6位字符 MOVDPTR,#SEGTAB;指向字形码表首DISP1:MOVA,R0;取出要显示的数,88,DISP1:MOVA,R0;取出要显示的数 MOVCA,A+DPTR;查表,获得字形码 MOVSBUF,A;字形码

38、送串口输出WAIT:JNBTI,$;等待发送完一帧 CLRTI;发送完,清TI DECR0;准备取下一个要显示的数 DJNZR2,DISP1;6位数未显示完,继续 RET;显示完6位,返回PUTT:MOVRl,A;暂存 ACALLPUTTl;低4位先放入缓冲区 MOVA,R1;取出原数 SWAPA;高4位放入低4位中PUTT0:ANLA,#0FH;屏蔽高4位 MOVR0,A;放进显示缓冲区 DECR0;缓冲区地址指针减1 RET;字形码表:(共阳)SEGTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H DB0F8H,80H,90H,89,9.4.2 串行口方式1的应用

39、,串行口工作在方式1时为10位异步通信口。除去1位起始位和1位停止位,有效的数据为8位。这种方式通常应用于点对点的双机通信中,实现单片机和单片机或单片机与通用微机之间的信息交换。下面以单片机的双机通信为例,介绍串行口在方式1中的应用。,90,1硬件连接,当进行通信的两台单片机距离很近时,它们的串行口之间可直接连接,如图9-29 所示。,91,1硬件连接,当进行通信的两台单片机距离较远(5m15m)时,两台单片机之间则不宜直接连接。此时,通常采用RS-232C接口进行点对点的通信连接,如图9-30所示。,92,2通信协议,1号机是发送方,2号机是接收方。1号机发送时,先发送一个“E1”联络信号,

40、2号机收到后回答一个“E2”应答信号,表示同意接收。1号机收到应答信号“E2”后,开始发送数据,每发送一个数据字节都要计算“校验和”。假定数据块长度为16个字节,起始地址为40H,一个数据块发送完毕后立即发送“校验和”。2号机接收数据并转存到数据缓冲区,起始地址也为40H,每接收到一个数据字节便计算一次“校验和”。当接收完一个数据块后,再接收1号机发来的“校验和”,并将它与本机求出的校验和进行比较。,93,2通信协议,若校验和进行比较时,两者相等,说明接收正确,2号机回答00H;若两者不相等,说明接收不正确,2号机回答FFH,请求重发。1号机接到00H后结束发送。若收到的答复不是00H,则重新

41、发送数据一次。双方约定采用串行口方式1进行通信,波特率为2400波特。T1工作在定时器方式2,晶体振荡器频率选用11.0592MHz,PCON寄存器的SMOD位为0,通过计算或查表9-3,可得定时器T1的初值为(TH1)=(TL1)=0F4H。,94,3程序流程图(1号机),图9-31 单片机双机通信的程序流程图(a),95,3程序流程图(2号机),图9-31 单片机双机通信的程序流程图(b),96,4应用程序(1号机源程序),ASTART:CLRES;关串口中断,使用查询方式控制收发 MOVTMOD,#20H;置定时器T1为方式2 MOVTH1,#0F4H;装载定时初值,波特率为2400 M

42、OVTL1,#0F4H MOVPCON,#00H;置SMOD=0 SETBTR1;启动定时器T1 MOVSCON,#50H;置串口为方式1,允许接收,清TI、RIALOOP1:MOV SBUF,#0E1H;发联络信号 JNBTI,$;等待一帧发完 CLRTI;发完清TI,允许再发 JNBRI,$;等待2号机的应答信号 CLRRI;收到应答,清RI,允许再接收 MOVA,SBUF;读2号机应答信号至A XRLA,#0E2H;判断2号机是否准备完毕 JNZALOOP1;2号机未准备好,继续联络,97,4应用程序(1号机源程序),ALOOP2:MOV R0,#40H;2号机准备好,设定数据块指针初值

43、 MOVR7,#10H;设定数据块长度 MOVR6,#00H;校验和单元清0ALOOP3:MOV SBUF,R0;发送一个字节数据 MOVA,R6;取出校验和 ADDA,R0;求校验和 MOVR6,A;保存校验和 INCR0;数据块指针加1 JNBTI,$;等待一帧发完 CLRTI;一帧发完,清TI,允许再发 DJNZR7,ALOOP3;整个数据块是否发送完毕 MOVSBUF,R6;发送校验和 JNBTI,$CLRTI;发完,清TI JNBRI,$;等待2号机的应答信号 CLRRI;收到应答,清TI MOVA,SBUF;读2号机应答信号至A JNZALOOP2;2号机应答“错误”-FFH,转重

44、新发送 RET;2号机应答“正确”-00H,返回主程序,98,4应用程序(2号机源程序),BSTART:CLRES;关串口中断,使用查询方式控制收发 MOVTMOD,#20H;置定时器T1为方式2 MOVTH1,#0F4H;装载定时初值,波特率为2400 MOVTL1,#0F4H MOVPCON,#00H;置SMOD=0 SETBTR1;启动定时器T1 MOVSCON,#50H;置串口为方式1,允许接收,清T1、RIBLOOP1:JNBRI,$;等待1号机的联络信号 CLRRI;收到1号机联络信号,清RI MOVA,SBUF;读1号机联络信号到A XRLA,#0E1H;判断是否为1号机联络信号

45、 JNZBLOOP1;不是1号机联络信号,再等待 MOVSBUF,#0E2H;是1号机联络信号,发应答信号 BLOOP2:JNB TI,$CLRTI;发完,清TI MOVR0,#40H;准备接收数据,设定数据块指针初值 MOVR7,#10H;设定数据块长度 MOVR6,#00H;清校验和单元,99,4应用程序(2号机源程序),BLOOP3:JNB RI,$;等待接收数据 CLRRI;收到清RI MOVA,SBUF;读入接收数据至A MOVR0,A;保存接收数据 INCR0;数据指针加1 ADDA,R6;求校验和 MOVR6,A;保存校验和 DJNZ R7,BLOOP3;判数据块是否接收完毕 J

46、NBRI,$;完毕,接收1号机发来的校验和 CLRRI;收到,清R2 MOVA,SBUF;读入校验和至A XRLA,R6;比较校验和 JZDONE;校验和相等,发“正确”标志 MOVSBUF,#0FFH;校验和不相等,发“错误”标志 SJMPBLOOP2;重新接收DONE:MOVSBUF,#00H;发“正确”标志 RET;返回主程序,100,9.4.3 串行口方式2和方式3的应用,串行接口工作于方式2和方式3时,可进行11位异步通信,除去1位起始位和1位停止位,有效的数据为9位。借助第9位数据和SM2的控制功能,可实现单片机的多机通信。下面以单片机的主从式多机通信系统为例介绍串行口在方式2和方

47、式3中的应用。,101,1硬件连接,主从式多机通信系统是指系统中有一台为主机,其余为从机,从机服从于主机的调度和支配。主机发送的信息可以传送到各个从机或指定从机,从机发送的信息只能为主机所接收,各从机之间不能直接通信。主机和从机之间的硬件连接如图9-32所示。,102,2通信协议,(1)用8位数据对从机进行编址,地址范围为00HFEH,系统最多允许255台从机。其中,FFH留作主机控制从机复位(使从机的SM2=1)的命令。(2)主机以发送数据第9位TB8作为发送地址或数据/命令的区分标志,TB8=1时表示该帧为地址帧;TB8=0时表示该帧为数据/命令帧。(3)所有从机的SM2起始时均设为1,都

48、处于接收地址帧状态,等待主机寻址。,103,2通信协议,(4)所有从机收到地址帧后,都将接收的地址与本机的地址比较。地址相符的从机,将其SM2位置0,使之能接收主机随后发来的第9位为0的数据帧或命令,并把本站地址发回主机作为应答;地址不符的从机,则仍保持SM2=1,使之不能接收主机随后发来的信息(因为主机这时发送数据的第9位为0)。继续处于等待主机寻址的状态。(5)主机核对从机地址无误后,开始进行主机和被寻址从机之间的数据通信,被寻址从机在通信完成后,重新将其SM2置为1,回到等待主机寻址状态,等候下次通信。,104,2通信协议,(6)主机使用如下两条命令指示数据传输方向:00H:主机发送从机

49、接收命令;01H:从机发送主机接收命令。这两条命令主机均以数据形式(即第9位TB8为0)发送,所以只能被已寻址的从机接收,对未被寻址的从机无效。,105,2通信协议,(7)为了便于主机了解被寻址从机的状态,约定了一个从机状态字,其格式如图9-33所示。,图9-33 从机状态字格式,106,2通信协议,(8)主、从机双方采用串行口方式3进行通信,选定通信波特率为1 200。T1工作在定时器方式2,晶体振荡器频率选用11.0592MHz,PCON寄存器的SMOD位为0,通过计算或查表9-3,可得定时器T1的初值为(TH1)=(TL1)=0E8H。,107,3主机程序,主机程序采用查询方式编程,由主

50、机主程序和主机通信子程序组成。程序中所用寄存器分配如下:,R0:存放主机发送数据块起始地址。40HR1:存放主机接收数据块起始地址。20HR2:存放被寻址从机地址。00HFEH(SLAVE)R3:存放主机发出的命令。00H/01HR4:存放发送数据块长度。20R5:存放接收数据块长度。20,108,(1)主机程序流程图(主程序流程图),图9-34 主机主程序流程图,109,图9-35 主机通信子程序流程图,(1)主机程序流程图(通信子程序流程图),110,(2)主机主程序,程序中用SLAVE表示被寻址从机的地址,由实际地址代真。,ORG2000HSTART:MOVTMOD,#20H;设置定时器

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号