80C51单片机的串行口计算机串行通信基础80C51单片机的串行口80C51单片机的串行口应用计算机串行通信基础并行通信串行通信并行通信T0T1T2T3T4T5T6时钟D0D1D5D6D7:::10110T7接收设备发送设备选通状态0110110101101101并行通信并行通信是在多根数据线上以数据字节或字为单位传输数据。并行通信适用于近距离数据传输。一次同时传送多位数据,传送速度快。并行通信的信息不要求固定的格式,这与串行通信的信息有固定格式的要求不同。串行通信T0T1T2T3T4T5T6时钟D71T71111000D6D5D4D3D2D1D0数据线发送设备接收设备D7D6D5D4D3D2D1D001D0D1D2(1)01101101TXDRXD串行通信数据一位一位地依次传输,每一位数据占据一个固定的时间长度。只要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外部设备之间的远距离通信,但串行通信的速度比较慢。串行通信的基本概念异步通信同步通信异步通信11100110110100100010100100101110011010以“0”作为起始以“1”作为停止各帧间隔时间任意发送设备接收设备TXDRXD收、发设备时钟独立,以字符(帧)为单位传输异步通信帧格式停止位数据位校验位起始位D0D7空闲下一字符起始位空闲一个字符帧起始位(1位);数据位(8位);奇偶校验位(1位,可无校验位);停止位(1位)。同步通信发、收时钟直接连接,效率高串行通信的传输方向全双工半双工单工全双工当数据的发送和接收分流,分别由两根不同的传输线传送,通信双方都能在同一时刻进行发送和接收操作,这样的传送方式就是全双工(FullDuplex)制。部中断0(INT0)发送接收发送接收半双工使用同一根传输线既作接收又作发送,虽然数据可以在两个方向上传送,但通信双方不能同时收发数据,这样的传送方式就是半双工(HalfDuplex)制。时间1时间2发送接收发送接收单工使用一根传输线作为接收或发送,数据只能在一个方向上传送。接收发送串行通信的错误校验奇偶校验发送字符时,数据位尾随1位奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。串行通信的错误校验代码和校验发送方将所发数据块求和(或各字节异或),产生的校验和字节附加到数据块的末尾。接收方在接收数据时要对数据块(除校验字节外)求和(或各字节异或),将所得的结果与收到的“校验和”进行比较,相符则无差错,否则就认为传送过程出现了差错。传输速率与传输距离并行通信中,传输速度以每秒传输的字节(B/s)表示;在串行通信中,传输速率用波特率来表示波特率指单位时间内传送二进制数据的位数,单位为位/秒(b/s)每秒钟所传输的字符数(字符速率)和波特率是两个概念传输距离随波特率的增加而减小串行通信接口标准-RS-232CRS-232C定义的是DTE与DCE间的接口标准96512514131阳头通常用于计算机侧,阴头用于连接线侧RS-232C电气特性RS-232C采用负逻辑电平,规定(-3~-25V)为逻辑“1”,(+3~+25V)为逻辑“0”。-3V~+3V是未定义的过渡区+25+3-3-25Vt010101+520.80Vt101010RS232电平TTL电平RS-232C远、近程通信计算机MODEMMODEMTXDRXDRTSTXDRTSDSR电话线DSRRXD计算机计算机乙计算机甲TXDTXDRXDRXD计算机乙计算机甲TXDTXDRXDRXD4562045620RS-232C存在的问题传输距离短、速率低,通常不超过15米,速率20Kbps有电平偏移,RS-232收发共地,地电流会使电平偏移出现逻辑错误。抗干扰能力差,RS-232常用单端输入,易混入干扰。RS485标准两线差分传输传输距离远抗干扰能力强,可用于工业场合80C51单片机的串行口80C51串行口的结构80C51串行口的寄存器80C51串行口的工作方式80C51串行口的结构全双工串口≥1SBUF发送控制器接收控制器移位寄存器控制门TIRITXDRXD去中断逻辑SMOD01TH1TL1÷2÷16SBUFT1溢出率写SBUF读SBUF99H99H80C51串行口的寄存器串行数据缓冲寄存器SBUF串行控制/状态寄存器SCON电源控制寄存器(PCON)串行数据缓冲寄存器SBUFSBUF是可直接寻址的特殊功能寄存器。在物理上,它对应着两个寄存器,即接收寄存器和发送寄存器,它们公用一个缓冲器名称和地址CPU写SBUF,就是将预发送的数据写入发送寄存器;读SBUF,就是读接收寄存器串行控制/状态寄存器SCONSM0、SM1:串行工作方式选择位,选择4种工作方式之一SM2:方式2、3中多机通信允许位;方式0、1时,设SM2=0REN:允许接收位TB8/RB8:发送/接收数据位8,方式2、3中发送出去/接收到的第9位数据,软件置/复位TI/RI:发送/接收中断标志,方式0时,发送/接收完第8位数据时,由硬件置位;其他方式时,在开始发送停止位/接收停止位的中间时由硬件置位,必须由软件复位串行控制/状态寄存器SCONSM0SM1模式功能波特率000同步移位寄存器模式Fosc/120111+8+1位异步通信UART可变1021+9+1位异步通信UARTFosc/64或/321131+9+1位异步通信UART可变电源控制寄存器(PCON)PCON不可位寻址,字节地址为87H。它主要是为CHMOS型单片机80C51的电源控制而设置的专用寄存器串行通信有关的只有D7位(SMOD),该位为波特率倍增位,当SMOD=1时,串行口波特率增加一倍,当SMOD=0时,串行口波特率为设定值。当系统复位时,SMOD=0串行端口工作方式方式0:串行数据从RXD输入或输出;TXD输出移位时钟脉冲,发送/接收8个数据位(低位在前),波特率固定为振荡器频率的1/12方式1:通过TXD发送或通过RXD接收10个数据位,波特率是可变方式2:通过TXD发送或通过RXD接收11个数据位,波特率可编程为振荡器频率的1/32或1/64方式3:除波特率是可变外,其余完全与方式2相同工作方式0方式0是一种移位寄存器工作方式,也称为同步工作方式。在这种工作方式中,RXD引脚作为串行数据发送/接受端,TXD引脚作为同步脉冲(8个移位脉冲串)输出端。波特率固定为振荡器频率的1/12/计数器操作时钟(脉冲)工作方式0-输出D0D1D2D3D4D5D6D7写入SBUFRXD(数据)TXD(移位脉冲)TI(中断标志)TCY74LS164RXDTXDP1.080C51CRCPABGND工作方式0-输入REN=1RXD(数据输入)TXD(移位脉冲)RI=0D0D1D2D3D4D5D6D774LS165RXDTXDP1.080C51S/LCPQGNDINH工作方式0中断发送完8位数据后,发送中断标志TI硬件置位,须由软件复位接收到8位数据,并将数据移位到接收寄存器后,接收中断标志RI硬件置位,须由软件复位工作方式1方式1是一种标准的异步通信方式,每帧包括10位数据信息:1位起始位(0),8位数据位(低位在先),1位停止位(1)。在这种方式中,TXD引脚为数据发送端,RXD引脚为数据接受端,波特率可变停止位数据位8位起始位LSBMSB空闲空闲D0D71帧共10位工作方式1D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始D0D1D2D3D4D5D6D7停止位RXDRI(中断标志)起始位采样脉冲工作方式1中断发送完10位数据后,发送中断标志TI硬件置位,须由软件复位接收到停止位后,接收中断标志TI硬件置位,须由软件复位工作方式2波特率可编程为振荡器频率的1/32或1/64。在数据发送时,串行口控制寄存器中的TB8作为第9位数据同时发送。停止位数据位9位起始位LSBMSB空闲空闲D0D71帧共11位RB8/TB8工作方式2SM2=1时,此时进行数据传送时不允许进行奇/偶校验,第9位数据可作为数据/地址标志位SM2=0时,第9位数据可作为奇/偶校验位工作方式2D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始TB8RI(中断标志)位采样脉冲D0D1D2D3D4D5D6D7停止位RXD起始RB8工作方式2中断发送完11位数据后,发送中断标志TI硬件置位,须由软件复位如果SM2=1;RB8=1,接收到停止位后,则接收中断标志TI硬件置位,须由软件复位如果SM2=0,接收到停止位后,则接收中断标志TI硬件置位,须由软件复位工作方式3方式3的数据传送方式与方式2相同,波特率可变,由定时器1的溢出速率决定多机通信原理主机发送的数据可以传送到各个从机,从机发送的数据只能为主机接收,从机之间不能直接通讯主机和从机的设置为模式2或3,主机的SM2=0;从机的SM2=1主机发送地址码来寻找从机(地址码特征是第9位数据为“1”),所有从机都接收主机发出的地址码(因为RB8=1),RI=1引发中断。在中断服务程序中,将接收到地址码与自己的地址进行比较,被选中的从机将自己的SM2=0,并维持在中断服务程序中保持与主机的联系。而未被选中的从机仍保持SM2=1,并退出中断服务程序多机通信原理当主机找到从机后,开始向从机发数据、命令(其特征为第9位=0)。由于选中的从机SM2=0,从机可引发接收中断(而未选中的从机因RB8=0不会引发它们的中断)。当主机与从机的通讯完成后,该从机再将其SM2=1并退出中断服务程序。主机重新发出另一个从机的地址,所有从机可以马上响应并接收地址信息80C51波特率确定与初始化步骤1/161/2T1溢出10SMOD1/2focs/210SMOD模式2串行口的波特率模式1、3时串行口的波特率1/16focs/12模式0串行口的波特率B=focs/12B=focs/32或=fosc/64B=1/32×T1溢出率或=1/16×T1溢出率发送、接收控制器发送、接收控制器发送、接收控制器方式0波特率方式0时的波特率是固定的,为振荡频率的1/12方式2波特率方式2时的波特率有两种,振荡器频率的1/64或振荡器频率的1/32。PCON(电源控制寄存器)中的第7位SMOD=0,波特率是振荡器频率的1/64,若SMOD=1,波特率是振荡器频率的1/32方式1/3波特率方式1和方式3时的波特率由定时器1的溢出速率和寄存器PCON中的SMOD位的值来决定来决定。方式1和方式3的波特率=2SMOD/32×(定时器/计数器1的溢出速率)定时器/计数器1的溢出速率取决于计数速率和定时器的预置值串行口初始化步骤确定T1的工作方式(TMOD)计算T1的初值,装载TH1、TL1启动T1(置位TR1)确定串行口工作方式(SCON)串口中断设置(IE、IP)80C51单片机的串行口应用利用单片机串口的并行I/O扩展80C51RXD74LS164&QAQBQCQDQEQFQGQHA+5VabcdefgdpabcdefgdpTXDBCP74LS164QAQBQCQDQEQFQGQHABCPABCP74LS164P1.2P1.1P1.001234567FEDCBA98300Ω×2QAQBQCQDQEQFQGQH80C51单片机的串行口应用TXDRXD80C51TXDRXD80C51GNDGND单片机与单片机间的通信R2INT2OUTTXDRXDMAX232AT1INGNDR2OUTT1OUT80C51TXDRXD80C51GNDR1INT2OUTMAX232AGNDR2INR1OUTA机B机T2IN近距离(直连)远距离(电平转换)80C51单片机的串行口应用电平转换器件与接线T1