登录/注册

51单片机串行通信的设计原理有哪些?

串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

更多

51单片机(特别是经典的Intel 8051内核或其兼容型号)的串行通信设计主要基于其内置的通用异步收发器(UART)模块。其设计原理涉及硬件结构、工作模式配置、波特率设置、数据格式以及软件流程等多个方面。以下是核心设计原理:

  1. 串行通信基础

    • 异步通信:数据不依赖于时钟信号同步,而是依靠约定的波特率和数据格式(起始位、数据位、校验位、停止位)进行同步。这是51单片机最常用的串行通信方式。
    • 单工/半双工/全双工:51单片机的UART支持全双工通信,即可以同时进行发送和接收(分别使用TXD和RXD引脚)。
    • 数据帧结构:每个字符(字节)的传输以一个低电平的起始位(0)开始,接着是5-9位数据位(通常为8位),一个可选的校验位(奇、偶或无),最后以1或2位高电平的停止位(1)结束。
  2. UART硬件结构与关键寄存器

    • 串行数据缓冲器(SBUF):这是两个物理上独立但共用同一地址(99H)的寄存器。
      • 发送SBUF:写入要发送的数据到此地址,UART硬件会自动启动发送过程。
      • 接收SBUF:当UART完整接收到一个字节后,数据会自动载入此寄存器,读取此地址获取接收到的数据。
    • 串行控制寄存器(SCON - 98H):这是配置和控制UART的核心寄存器。
      • SM0, SM1:选择四种串口工作模式之一。模式1(8位UART, 波特率可变)最常用。
      • REN:接收允许位。置1允许串口接收数据。
      • TI:发送中断标志位。当一个字节发送完成时,由硬件置1。软件需要清零以指示可以发送下一字节。
      • RI:接收中断标志位。当一个字节接收完成且满足停止位条件时,由硬件置1。软件需要清零以指示可以接收下一字节。
      • 其他位(SM2, TB8, RB8)主要用于模式2/3的多机通信。
    • 特殊功能寄存器(PCON - 87H)
      • SMOD位:波特率倍率选择位。置1可使定时器1产生的波特率加倍(仅适用于模式1、2、3)。是波特率计算公式中的重要因子。
  3. 波特率(Baud Rate)生成

    • 波特率表示每秒传输的码元数(位/秒),通信双方必须严格一致。
    • 模式1(最常用)的波特率:由定时器1(T1)工作在模式2(8位自动重装)下的溢出率决定。
    • 计算公式
      波特率 = (2^SMOD / 32) * (T1的溢出率)
      • 对于标准8051(12时钟周期/机器指令周期),定时器1的溢出率:
        溢出率 = Fosc / (12 * (256 - TH1))
      • 最终,模式1波特率公式:
        波特率 = (2^SMOD / 32) * (Fosc / (12 * (256 - TH1)))
    • 常用晶振:为了获得标准波特率(如9600, 19200等),常选用11.0592MHz的晶振,因为其可以被整除得到整数或小误差的TH1值。
    • 定时器配置TMOD寄存器需配置T1为工作模式2(自动重装8位定时器)。TH1TL1均装入计算好的初值。启动定时器T1(TR1=1)。
  4. 工作流程(以模式1查询方式为例)

    • 初始化
      1. 设置SCONSM0/SM1选择模式1(如SCON = 0x50表示:SM0=0, SM1=1, REN=1允许接收)。
      2. 配置波特率:
        • 根据所需波特率、晶振频率(Fosc)和SMOD(通常设0或1),计算TH1值。
        • 设置TMOD使T1为模式2(TMOD |= 0x20,不影响T0的设置)。
        • 将计算值装入TH1TL1
        • TR1=1启动T1(TCON |= 0x40)。
    • 发送一个字节
      1. 检查TI标志(while(TI == 0);)。若TI为1,表示上一次发送完成;若为0则等待。
      2. 软件清零TITI = 0;)。
      3. 将要发送的数据写入SBUFSBUF = data;)。硬件会自动开始发送。
    • 接收一个字节
      1. 检查RI标志(while(RI == 0);)。若RI为1,表示收到一个完整字节;若为0则等待。
      2. 软件清零RIRI = 0;)。
      3. SBUF读取接收到的数据(data = SBUF;)。
  5. 中断方式

    • 除了查询(轮询)TI/RI,更高效的方式是使用串口中断(中断号4)。
    • 启用中断:设置ES=1IE |= 0x10;)允许串口中断,并且开启总中断(EA=1)。
    • 中断服务程序(ISR)
      • 在ISR中,首先检查是TI还是RI引起的中断(SCON寄存器)。
      • 如果是TI引起:
        • 清零TI
        • 可以在此处加载下一个要发送的数据到SBUF(如果需要连续发送)。
      • 如果是RI引起:
        • 清零RI
        • SBUF读取数据并处理(如存入缓冲区)。
    • 中断方式避免了CPU在等待发送完成或数据到达时做空转循环,提高了效率。
  6. 电平转换与物理连接

    • 51单片机UART的TXD和RXD引脚输出的信号是TTL电平(0-0.8V表示逻辑0,2.0V-Vcc表示逻辑1)。
    • 不能直接连接RS-232端口:PC的串口(DB9)使用RS-232电平(-3V到-15V表示逻辑1,+3V到+15V表示逻辑0)。
    • 电平转换器:必须使用专用的RS-232电平转换芯片(如经典的MAX232系列及其兼容型号)或模块在TTL电平和RS-232电平之间转换,方可与PC串口通信。
    • TTL到USB/RS-485/RS-422:同样需要通过相应的电平转换/接口芯片(如CP2102, FT232, MAX485等)与其他不同标准的串行设备通信。
    • USB转TTL串口模块:现代设计中常使用USB转TTL串口模块(如CH340, PL2303, CP2102芯片模块)直接连接51单片机的TXD/RXD/GND到电脑的USB口,方便可靠。

总结设计要点

  1. 选择合适的模式(最常用8位异步模式1)。
  2. 精确计算并设置波特率(正确配置定时器1模式2及其初值,考虑SMOD和晶振频率)。
  3. 正确配置寄存器SCON(工作模式、允许接收),PCON.SMOD(可选),TMOD(定时器1模式),IE(中断使能)。
  4. 初始化定时器T1(装入初值并启动)。
  5. 实现发送/接收逻辑:可采用查询TI/RI标志的方式或中断服务程序的方式。
  6. 做好电平转换:根据通信目标设备选择合适的电平转换方案。

理解并掌握这些原理是设计51单片机串行通信应用(如与PC通信、与其他单片机通信、与串口模块通信等)的基础。

如何实现51单片机与PC串行通信

51单片机与PC机的串行

2024-10-21 11:35:35

51单片机串口通信详细介绍-小白必看

51单片机串口通信是单片机与外部设备

2024-04-17 09:33:12

如何去实现51单片机串行通信

51单片机串行通信原理计算机

2021-11-17 07:58:43

51单片机——串行通信

本文首先介绍了并行通信和串行通信的概念,然后对串行

资料下载 xymbmcu 2021-11-22 13:51:06

51单片机串行通信原理

51单片机串行通信原理计算机

资料下载 韩刚龙 2021-11-10 18:05:59

80C51单片机串行通信讲解

80C51单片机串行通信讲解(

资料下载 吴湛 2021-09-30 11:44:40

51单片机端的串行通信代码资料免费下载

在不同设备上进行数据交换,最价廉物美的莫过于串行通信(RS232)了,有关串行通信

资料下载 世态薄凉 2019-09-02 17:28:00

51单片机与计算机进行异步串行通信的实例说明

本文档的主要内容详细介绍的是51单片机与计算机进行异步串行通信的实例说明

资料下载 佚名 2019-08-08 17:33:00

89C51单片机异步串行口的通信原理和编程

单片机双机通信一、实验目的二、实验内容三、实验步骤四、C代码如下五、实验结果六、实验体会一、实验目的掌握89C51

2021-11-09 07:32:14

请问两个51单片机之间如何进行串行通信

请问两个51单片机之间如何进行串行通信?

2021-11-03 06:16:49

单片机串行通信和IIC协议使用注意哪些?

15系列和51系列单片机定时器的区别是什么?单片机的串行

2021-09-27 07:25:22

51单片机串行口是什么

实验原理51 单片机的串行口是一个可编程的全双工的通信接口,具有 UAR

2021-07-16 07:06:02

什么方法可以实现PC单片机之间的串行通信吗?

如何实现PC机与单片机AT89C51的串行

2021-05-20 07:26:28

什么是51单片机?又该如何自学51单片机

51 单片机是目前使用最多的单片机之一,那么什么是 51

2020-11-03 21:14:34

PIC单片机与PC实现串行通信的设计

本实例完全建立在计算机软件的基础上,利用PROTEUS软件构建一个单片机系统,利用VB编写一个计算机控制软件和单片机系统串行

2019-08-15 17:51:28

7天热门专题 换一换
相关标签