单片机串行口及应用

2019-04-15 17:51发布

       单片机之间、单片机与计算机之间交换信息有串行通信和并行通信两种方式。并行通信的特点是传送控制简单、速度快、但随着通信距离的增加,并行通信的线路成本远远高于串行通信,串行通信已成为集散控制、多机系统和现代测控系统中常用的通信方式,串行接口在进行通信时,需要解决的一个重要的问题就是同步的问题。        串行通信有异步通信和同步通信两种方式。异步通信是按字符传输的,每传送一个字符,就用起始位来进行收发双方的同步,各帧之间还有间隔,因此传输效率不高;同步串行通信进行数据传送时,发送和接收双方要保持完全的同步,因此要求接收和发送设备必须使用同一时钟。同步通信传送速度较快,但硬件结构比较复杂;异步通信的特点是硬件结构较简单,但传送速度较慢。        异步通信是以字符帧为单位进行传输,每帧数据由4部分组成:起始位(占1位)、数据位(占5~8位)、奇偶校验位(占1位,也可以没有校验位)、停止位(占1或2位)。其中奇偶校验位的数据位为D8,此位也可用于确定该帧字符所代表的信息类型,“1”表明传送的是地址帧,“0”表明传送的是数据帧。        MCS-51有一个可编程的全双工串行通信接口,可作为通用异步接收/发送器UART,也可作为同步移位寄存器。80C51单片机串行口有4种工作方式:同步移位寄存器输入/输出方式、8位异步通信方式及波特率不同的两种9位的异步通信方式。        串行接口内部有两个缓冲器SBUF,一个是发送缓冲器,一个是接收缓冲器。它们在物理上相互独立,在逻辑上却占用同一个字节地址99H。对于发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。而接收缓冲器是双缓冲结构,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,就会丢失前一个字节的内容。        单片机串行接口工作方式是通过初始化设置,将两个相应控制字分别写入串行控制寄存器SCON(98H)和电源控制寄存器PCON(97H)即可。        SCON工作方式中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。        当串行口接收数据时,外界的串行信号通过单片机的引脚RXD(P3.0串行数据接收端),进入串行口的接收数据缓冲器。当串行口发送数据时,CPU将数据写入发送数据缓冲器,由发送数据缓冲器将通过引脚TXD(P3.1串行数据发送端),发送至外部的通信设备。特殊功能寄存器PCON控制串行口的波特率,电源控制寄存器PCON中只有一位SMOD与串行口工作有关,SMOD:波特率倍增位。串行口工作在方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍;复位时,SMOD=0。        接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对串行中断标志RI/TI清0,以备下一次接收/发送数据。        串行口工作在方式0时,为同步移位寄存器的输入或输出方式,主要用于扩散并行输入或输出口。        串行接口工作在方式0时为同步移位寄存器的输入/输出方式,用于扩展并行I/O接口。74LS164为一个1位串行输入8位并行输出的移位寄存器,TXD引脚输出的移位脉冲将RXD引脚输出的数据(低位在先)逐位移入74LS164,扩展8个LED指示灯。74LS165为一个8位并行输入1位串行输出的移位寄存器,TXD引脚输出的移位脉冲将74LS165的8位并行输入的数据(低位在先)逐位移入RXD引脚,扩展8个按键,S/L=1时,允许串行移位,S/L=0时,允许并行读入按键。通过级连多片移位寄存器,可扩展更多的并行I/O接口,而不必增加与单片机之间的连线,但扩展越多,接口的操作速度也就越慢。        74LS164的CR引脚用于使其数据清0,不使用清0功能时,可以将该引脚上拉成高电平。74LS164的A引脚和B引脚互为选通控制,A为选通控制时,B为输入;B为选通控制时,A为输入,此处将A和B短接作为74LS164的串行数据输入端。        74LS165的S/L引脚的负脉冲用于将并行数据装入,该引脚为高电平时就可以启动单片机进行数据输入。INH是时钟输入禁止控制引脚,通常将其接地。        TTL电平通信接口:两个通信系统之间的距离在1m范围之内;        RS-232C通信接口:两个通信系统之间的距离在30m范围之内;        RS-485通信接口:两个通信系统之间的距离在1200m范围之内。        设定时器初值为X,则每过“256-X”个机器周期,定时器T1产生一次溢出。用公式表示为               T1的溢出速率=(fosc/12)/(256-X)        当给出波特率后,可用下式计算出定时器T1工作在方式2的初始值为               X = 256-(foscX(SMOD+1))/(384X波特率)
            80C51串行口的方式1在其串行通信中应用的最多,也是双击通信的主要方式。在通信中有主从式和对等式,主从式在多机通信中比较常用,双机通信一般采用对等式。        80C51串行口的方式2和方式3有一个专门的应用领域,即多机通信。这一功能通常采用主从式多机通信方式,在这种方式中,用一台主机和多台从机。主机发送的信息可以传送到各个从机或指定的从机,各从机发送的信息只能被主机接收,从机与从机之间不能进行通信。        在单片机串行口以方式2或方式3接收时,一方面,若SM2=1,表示置多机通信功能位,这时有两种情况:①接收到第9位数据为1,此时数据装入SBUF,并置RI=1,向CPU发中断请求;②接收到第9位数据为0,此时不产生中断,信息将被丢失,不能接收。        另一方面,若SM2=0,则接收到的第9位信息无论是1还是0,都产生RI=1的中断标志,接收的数据装入SBUF。根据这个功能,就可以实现多机通信。        在编程前,首先要给各从机定义地址编号。在主机想发送一个数据块给某个从机时,它必须先送出一个地址字节,以辨认从机。
       在系统中,单片机一般称为下位机,通常用来完成数据的采集和上传,因为51子系列单片机价格低、功能强、抗干扰能力强、适应温度范围宽和丰富的控制端口等优点。由PC、网络设备、数据库服务器组成的后台应用部分则统称为上位机,对下位机的上传数据进行分析并处理。分布式控制系统能充分发挥了单片机在实时数据采集和PC对图形数据、显示以及数据库管理上的优势。使得单片机的应用不局限于自动检测或控制。形成了向以PC网络为核心的分布式多点工控系统发展。