单片机_第7章 单片机的串行口及应用

目录

7.1 串行通信概述

1、并行通信和串行通信(数据通信的两种常用形式)

2、波特率

3、异步通信和同步通信(串行通信基本通信方式)

7.2 MCS-51的串口控制器 

7.2.1串行口内部结构 

7.2.2串行口控制寄存器

(1) 串口控制寄存器SCON(98H)

(2) 电源控制寄存器PCON(87H)

7.3 串行工作方式0及其应用 

扫描二维码关注公众号,回复: 14683671 查看本文章

7.4 串行工作方式1及其应用

7.5 串行工作方式2及其应用 

7.6 串行工作方式3及其应用 

本章小结


7.1 串行通信概述

1、并行通信和串行通信(数据通信的两种常用形式)

    (1)并行方式——数据的各位同时发送或同时接收。

     并行传送特点:传送速度快,但因需要多根传输线,故一般只在近距离通信中使用。

   (2)串行方式——数据的各位依次逐位发送或接收。

      串行传送特点:传输速度慢,但因只需较少传输线,故适合于远距离通信。

      按照传输数据流向,串行通信具有3种传输形式:

     实际应用中,尽管多数串行通信接口电路具有全双工功能,但仍以半双工为主(简单实用)。 

2、波特率

        在串行通信的数据是按位进行传送的 ,数据传输速率用波特率指标衡量。

        波特率:每秒发送二进制数码的位数,即bps (位/秒)
        国际推荐波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等(此时的晶振频率为11.0592MHz)。
        串行通信的收发双方必须采用相同的波特率。 

3、异步通信和同步通信(串行通信基本通信方式)

        (1)异步通信——以字符为单位组成字符帧进行的数据传送。
            一帧数据由起始位数据位[可编程位]停止位构成

    起始位:位于数据帧开头,占1位,始终为低电平,用于向接收设备表示发送端开始发送1帧数据。
   数据位:要传输的数据信息,可以是字符或数据,一般为5~8位,由低位到高位依次传送。
   可编程位:位于数据位之后,占1位,用于发送数据的校验,或传送多机串行通信的联络信息。
   停止位:位于数据位末尾,占1位,始终为高电平,用于向接收端表示1帧数据已发送完毕。 

   异步通信特点
       对收发双方的时钟精度要求较低(收发双方不同步时,能依靠在每帧开始时的不断对齐,自行纠正偏差);
       传送速度较低(每个字节都要建立一次同步)。


        (2)同步通信——数据以为单位进行的数据传送

            在发一组数据时,只在开始用若干个同步字符作为双方的号令,然后连续发送整组数据。
            同步通信特点
                传输效率高(以数据块为单位连续传送,数据结构紧凑);
                对通信硬件要求高(要求双方有准确的时钟)。

            本章不涉及同步通信问题

7.2 MCS-51的串口控制器 

7.2.1串行口内部结构 

        51内部有1个可编程的全双工串行通信接口,可作为通用异步接收/发送器(UART),也可作为同步移位寄存器,还可作为串并转化器(现在生产的电脑上无接口)。
        它的数据帧格式为8位10位11位3种,可设置多种不同的波特率。
        结构组成:SBUF发 +SBUF收 +发送控制器 +接收控制器 +接收移位寄存器 +波特率发生器 +SCON +RXD(P3.0)+TXD(P3.1)
        数据缓冲器SBUF: 
            在物理上是相互独立的,一个用于发送数据(SBUF发)、一个用于接收数据(SBUF收)。
            共用一个地址(99H),通过读写指令区别是对哪个SUBF的操作。

        发送控制器
            在门电路和定时器T1的配合下,将SBUF发中的并行数据转为串行数据,并自动添加起始位、可编程位、停止位。
            这一过程结束后自动使发送中断请求标志位TI置1,表明已将SBUF发中的数据输出到TXD引脚,即SBUF发为空。 

        接收控制器
            在输入移位寄存器和定时器T1的配合下,使来自RXD引脚的串行数据转为并行数据,并自动过滤掉起始位、可编程位、停止位。
            这一过程结束后自动使接收中断请求标志位RI置1,表明接收的数据已存入SBUF收,即SBUF收为满 。

        定时器T1
            产生节拍控制用的通信时钟信号(波特率时钟);
            发送数据时,时钟的下降沿对应于数据移位输出;
            接收数据时,通信时钟的上升沿对应于数据位采样。

        RXD和TXD引脚
            用于串行信号或时钟信号的传入或传出。

7.2.2串行口控制寄存器

(1) 串口控制寄存器SCON(98H)

            强调:TI和RI硬件置1后,需用软件方式清零(查询或中断法皆如此)
            SM2、TB8、RB8主要用于多机通讯或数据校验
            复位后默认状态:串行方式0,禁止接收,SBUF发为满,SBUF收为空,… 

        (2) 电源控制寄存器PCON(87H)


            SMOD可使由T1产生的波特率时钟频率加倍
            复位后默认状态:波特率不加倍
            通信时钟波特率原理

                T1溢出脉冲有两种分频路径:16分频或32分频;

    SMOD是决定分频路径的逻辑开关;波特率取决于T1的定时参数(a,n,fosc)和SMOD参数。
    串口通信在不同工作方式时的波特率是不同的,上述波特率只适用于方式1和方式3。

7.3 串行工作方式0及其应用 

    串行通信的4种工作方式

    方式0——8位同步移位寄存器方式
    串行口

    方式0

        8位数据为一帧,不设起始位和停止位,先发送或接收最低位。 
        数据传输波特率固定为十二分频晶振fosc/12
        由RXD引脚(P3.0)输入或输出数据
        TXD引脚(P3.1)输出fosc/12时钟信号 

    方式0主要用于串并转换——I/O口数量不足时,可通过串口方式0进行扩展,但需要相应的扩展芯片配合。

实例1 利用74LS164扩展并行输出口,并实现LED由上向下循环。

(解析见“单片机_第7章 实例”或本专栏文章“单片机_介绍”中的网站中的PPT和实例) 

7.4 串行工作方式1及其应用

    方式1—— 10位数据异步通讯方式
    方式1
        

        一帧信息 = 1个起始位(0)+8位数据位+1个停止位(1)
        指定T1为波特率时钟发生器, 一般选择定时方式2(此处的n=8)

        发送数据由TXD(P3.1)输出,接收数据由RXD(P3.0)输入,初始化(RI、TI、REN、SM0、SM1) 

    方式1主要用于点对点(两机)通信
        近距离串行传输

            接线关系:主机TXD、RXD分别与外设RXD、TXD相接;两机共地

        远距离串行传输

            利用RS-232C进行电平转换——(1:-5~-15V,0:+5~+15V)

    异步通信编程初始化

7.5 串行工作方式2及其应用 

    方式2——11位数据异步通信方式
    方式2

        SCON

        发送时由硬件方式将TB8作为可编程位插入数据帧中;
        接收时由硬件方式将数据帧的可编程位存入RB8中。
        一帧信息 = 1个起始位(0)+8位数据位+ 1个可编程位(P) +1个停止位(1) 。
        可编程位的作用——用于奇偶校验或多机通信标识。
        方式2的波特率为固数值(即,通信时钟初始化仅需要设置PCON,与T1无关):

        SUBF发为空时TI自动置1;SUBF收为满时RI的状态要由SM2和RB8共同决定。
        若SM2=1,当RB8为1时,SUBF收为满可使RI置1;若RB8为0,则SUBF收为满也无法使RI置1。
        若SM2=0,则无论RB8为何值, SUBF收为满都能使RI置1。

    方式2用于固定波特率的奇偶校验(单机通讯)或多机通讯
        奇偶校验原理:
            例如,发送数据为0x45(0100 0101B),其奇偶校验值P=1(奇数个1),将P→TB8,发送时可连同数据0x45一起发出。接收端可自动将其可编程位放入RB8中。

            只要将待测数据送入Acc即可由硬件求出奇偶校验值(使P赋值),再与RB8进行比较便可判断收发过程是否有误。 

7.6 串行工作方式3及其应用 

    方式3——11位数据异步通信方式
    方式3

        方式3的波特率为可变的(其余方面皆与方式2相同)

    方式3用于可变波特率的奇偶校验(单机通讯)或主从式通讯

        主机与各从机之间能实现双向通信,而各从机之间不能直接通信,只能通过主机才能沟通。
        多机通信做法:
            主机向所有从机发送包含n#从机信息的地址帧;
            所有从机都核查该地址帧,只有n#从机修改本机SM2 ;
            主机发送数据帧,但只有n#从机能够接收到数据信息。    

        关键:
            主机第1次发出的信息要能被所有的从机响应,而第2次的信息只能被n#从机所响应——多机通信控制位SM2对串行中断请求的管理功能。

        多机通信原理:
            (a) 所有从机都先使自己的SM2=1,而主机在发送的地址帧信息时先使TB8=1。这样,所有从机都能产生中断请求,并能接收到主机发来的地址信息;
            (b) 各从机将主机发来的地址与本机地址编号相比较。若与本机相符(即命中) ,则该从机使自己的SM2=0,其余从机仍旧保持SM2=1;
            (c) 主机接着发送TB8=0的数据帧信息。此时只有命中机(SM2=0)有中断请求,其它从机均无反映。

本章小结

1. 串行通信的数据是按位进行传送的,每秒传送的二进制数码的位数称为波特率。串行通信只需要一对传输线就可以实现通信,其特点是通信成本低,但传送速度较慢。串行通信可分为单工、半双工和全双工3种制式。以字符或字节为单位组成数据帧进行的传送称为异步通信,以数据块为单位连续进行的传送称为同步通信。
2. MCS-51内置有可编程的全双工异步串行通信接口,包括两个在物理上是相互独立的数据缓冲器SBUF,两个串口控制寄存器,即SCON和PCON。定时器T1作为波特率信号发生器。
3. 方式0是同步移位寄存器方式,采用8位数据帧格式,没有起始位和停止位,先发送或接收最低位。方式О主要用于单片机IO接口的扩展。
4. 方式1采用10位数据帧格式,包括1个起始位,8个数据位和1个停止位。方式1主要用于点对点通信。
5. 方式2和方式3采用11位数据帧格式,包括1个起始位、8个数据位、1个可编程位、1个停止位。方式2和方式3的差异在于前者波特率为固定值,而后者为可变值,主要用于奇偶校验或多机主从式通信。

猜你喜欢

转载自blog.csdn.net/qq_59467552/article/details/124818688
今日推荐