234彩票代理

  • <tt class='tlJykMlA'></tt>
  • <thead class='94K7Lauipx'><option class='9cNvbSu7LJ'></option></thead>

    <em class='jepytdnyfeW3'><b class='oR1Ys12nk'><td class='6rzzLTN'></td></b></em>

  • <dl class='Td0EmkF'><b class='qoWhaibfJ9'></b></dl>

  • <span class='lS1G'></span>

    (玩电子) 电子技术学习与研究
    当前位置:单片机教程网 >> 基础教程 >> 浏览文章

    21课:单片机串行口介绍

    作者:佚名   来源:本站原创   点击数:x  更新时间:2007年08月14日   【字体:

    介绍:串行口是单片机与外界进行信息交换的一工具 。

    8051单片机的一通信方式有两种:

    并行通信:数据的一各位同时发送或接收 。  串行通信:数据一位一位次序发送或接收 。参看下图:

    串行通信的一方式:

    异步通信:它用一个起始位表示字符的一开始,用停止位表示字符的一结束 。其每帧的一格式如下:

    在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验ζ位(能省略),最后是停止位1 。用这种格式表示字符,则字符能一个接一个地传送 。

    在异步通信中,CPU与外设之间必须有两项规定,即字符格式№和波特率 。字符格式的一规定是双方能够在对同一种0№和1的一串理解成同一种意义 。原则上    字符格式能由通信的一双方自由制定,但从通用、方便的一角度出发,一般还是使用一些标准为好,如采用ASCII标准 。

    波特率即数据传送的一速率,其定义是每秒钟传送的一二进制数的一位数 。例如,数据传送的一速率是120字符/s,而每个字符如上    述规定包含10数位,则传送波特率为1200波特 。

    同步通信:在同步通信中,每个字符要用起始位№和停止位作为字符开始№和结束的一标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送 。由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的一同步,故硬件较复杂 。

    通信方向:在串行通信中,把通信接口只能发送或接收的一单向传送办法叫单工传送;而把数据在甲乙两机之间的一双向传递,称之为双工传送 。在双工传送方式中又●分为半双工传送№和全双工传送 。半双工传送是两机之间不 能同时进行发送№和接收,任一时该,只能发或者只能收信息 。

    2.8051单片机的一串行接口结构

    8051单片机串行接口是一个可编程的一全双工串行通信接口 。它可用作异步通信方式(UART),与串行传送信息的一外部设备相连接,或用于通过标准异步通信协议进行全双工的一8051多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口 。

    8051单片机通过管脚RXD(P3.0,串行数据接收端)№和管脚TXD(P3.1,串行数据发送端)与外界通信 。SBUF是串行口缓冲寄存器,包括发送寄存器№和接收寄存器 。它们有相同名字№和地址空间,但不 会出现冲突,因 为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据 。

    串行口的一控制与状态寄存器

    串行口控制寄存器SCON

    它用于定义串行口的一工作方式及实施接收№和发送控制 。字节地址为98H,其各位定义如下表:

    D7
    D6
    D5
    D4
    D3
    D2
    D1
    D0
    SM0
    SM1
    SM2
    REN
    TB8
    RB8
    TI
    RI

    SM0、SM1:串行口工作方式选择位,其定义如下:

    SM0、SM1
    工作方式
    功能描述
    波特率
    0 0
    方式0
    8位移位寄存器
    Fosc/12
    0 1
    方式1
    10位UART
    可变
    1 0
    方式2
    11位UART
    Fosc/64或fosc/32
    1 1
    方式3
    11位UART
    可变

    其中fosc为晶体震荡器频率

    SM2:多机通信控制位 。在方式0时,SM2一定要等于0 。在方式1中,当(SM2)=1则只有接收到有效停止位时,RI才置1 。在方式2或方式3当(SM2)=1且接收到的一第九位数据RB8=0时,RI才置1 。

    REN:接收允许控制位 。由软件置位以允许接收,又●由软件清0来禁止接收 。

    TB8: 是要发送数据的一第9位 。在方式2或方式3中,要发送的一第9位数据,根据需要由软件置1或清0 。例如,可约定作为奇偶校验ζ位,或在多机通信中作为区别地址帧或数据帧的一标志位 。

    RB8:接收到的一数据的一第9位 。在方式0中不 使用RB8 。在方式1中,若(SM2)=0,RB8为接收到的一停止位 。在方式2或方式3中,RB8为接收到的一第9位数据 。

    TI:发送中断标志 。在方式0中,第8位发送结束时,由硬件置位 。在其它方式的一发送停止位前,由硬件置位 。TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的一办法获得数据已发送完毕的一信息,或用中断的一方式来发送下一个数据 。TI必须用软件清0 。

    RI:接收中断标志位 。在方式0,当接收完第8位数据后,由硬件置位 。在其它方式中,在接收到停止位的一中间时刻由硬件置位(例外情况见于SM2的一说明) 。RI置位表示一帧数据接收完毕,可用查询的一办法获知或者用中断的一办法获知 。RI也必须用软件清0 。

    特殊功能寄存器PCON

    PCON是为了在CHMOS的一80C51单片机上    实现电源控制而附加的一 。其中最高位是SMOD 。

    串行口的一工作方式

    8051单片机的一全双工串行口可编程为4种工作方式,现分述如下:

    方式0为移位寄存器输入/输出方式 。可外接移位寄存器以扩展I/O口,也能外接同步输入/输出设备 。8位串行数据者是从RXD输入或输出,TXD用来输出同步脉冲 。

    输出 串行数据从RXD管脚输出,TXD管脚输出移位脉冲 。CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的一固定波特率从RXD输出,低位在前,高位在后 。发送完一帧数据后,发送中断标志TI由硬件置位 。

    输入 当串行口以方式0接收时,先置位允许接收控制位REN 。此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端 。当(RI)=0№和(REN)=1同时满足时,开始接收 。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI 。

    下面两图分别是方式0扩展输出№和输入的一接线图 。


    <单片机串行口接线图>

    方式1为波特率可变的一10位异步通信接口方式 。发送或接收一帧信息,包括1个起始位0,8个数据位№和1个停止位1 。

    输出 当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送 。串行数据从TXD管脚输出,发送完一帧数据后,就由硬件置位TI 。

    输入 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的一跳变时,确认是开始位0,就开始接收一帧数据 。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不 然信息丢失 。所以在方式1接收时,应先用软件清零RI№和SM2标志 。

    方式2

    方式月为固定波特率的一11位UART方式 。它比方式1增加了一位可程控为1或0的一第9位数据 。

    输出: 发送的一串行数据由TXD端输出一帧信息为11位,附加的一第9位来自SCON寄存器的一TB8位,用软件置位或复位 。它可作为多机通信中地址/数据信息的一标志位,也能作为数据的一奇偶校验ζ位 。当CPU执行一条数据写入SUBF的一指令时,就启动发送器发送 。发送一帧信息后,置位中断标志TI 。

    输入: 在(REN)=1时,串行口采样RXD管脚,当采样到1至0的一跳变时,确认是开始位0,就开始接收一帧数据 。在接收到附加的一第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;不 然信息丢失 。且不 置位RI 。再过一位时间后,不 管上    述条件时否满足,接收电路即行复位,并重新检测RXD上    从1到0的一跳变 。

    工作方式3

    方式3为波特率可变的一11位UART方式 。除波特率外,其余与方式2相同 。

    波特率选择

    如前所述,在串行通信中,收发双方的一数据传送率(波特率)要有一定的一约定 。在8051串行口的一四种工作方式中,方式0№和2的一波特率是固定的一,而方式1№和3的一波特率是可变的一,由定时器T1的一溢出率控制 。

    方式0

    方式0的一波特率固定为主振频率的一1/12 。

    方式2

    方式2的一波特率由PCON中的一选择位SMOD来决定,可由下式表示:

    波特率=2的一SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc

    3.方式1№和方式3

    定时器T1作为波特率发生器,其公式如下:

    波特率=定时器T1溢出率

    T1溢出率= T1计数率/产生溢出所需的一周期数

    式中T1计数率取▓决于它工作在定时器状态还是计数器状态 。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24 。产生溢出所需周期与定时器T1的一工作方式、T1的一预置值有关 。

    定时器T1工作于方式0:溢出所需周期数=8192-x

    定时器T1工作于方式1:溢出所需周期数=65536-x

    定时器T1工作于方式2:溢出所需周期数=256-x

    因 为方式2为自动重装入初值的一8位定时器/计数器模式,所以用它来做波特率发生器最恰当 。

    当时钟频率选用11.0592MHZ时,取▓易获得标准的一波特率,所以很多单片机系统选用这个看起来“怪”的一晶体震荡器就是这个道理 。

    下表列出了定时器T1工作于方式2常用波特率及初值 。

    常用波特率
    Fosc(MHZ)
    SMOD
    TH1初值
    19200
    11.0592
    1
    FDH
    9600
    11.0592
    0
    FDH
    4800
    11.0592
    0
    FAH
    2400
    11.0592
    0
    F4h
    1200
    11.0592
    0
    E8h
     

    发表评论】【告诉好友】【收藏此文】【关闭窗口

    文章评论