51单片机串行通信的设计原理有哪些?
串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
更多
51单片机(特别是经典的Intel 8051内核或其兼容型号)的串行通信设计主要基于其内置的通用异步收发器(UART)模块。其设计原理涉及硬件结构、工作模式配置、波特率设置、数据格式以及软件流程等多个方面。以下是核心设计原理:
-
串行通信基础:
- 异步通信:数据不依赖于时钟信号同步,而是依靠约定的波特率和数据格式(起始位、数据位、校验位、停止位)进行同步。这是51单片机最常用的串行通信方式。
- 单工/半双工/全双工:51单片机的UART支持全双工通信,即可以同时进行发送和接收(分别使用TXD和RXD引脚)。
- 数据帧结构:每个字符(字节)的传输以一个低电平的起始位(0)开始,接着是5-9位数据位(通常为8位),一个可选的校验位(奇、偶或无),最后以1或2位高电平的停止位(1)结束。
-
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)。是波特率计算公式中的重要因子。
- 串行数据缓冲器(SBUF):这是两个物理上独立但共用同一地址(99H)的寄存器。
-
波特率(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)))
- 对于标准8051(12时钟周期/机器指令周期),定时器1的溢出率:
- 常用晶振:为了获得标准波特率(如9600, 19200等),常选用11.0592MHz的晶振,因为其可以被整除得到整数或小误差的
TH1值。 - 定时器配置:
TMOD寄存器需配置T1为工作模式2(自动重装8位定时器)。TH1和TL1均装入计算好的初值。启动定时器T1(TR1=1)。
-
工作流程(以模式1查询方式为例):
- 初始化:
- 设置
SCON:SM0/SM1选择模式1(如SCON = 0x50表示:SM0=0, SM1=1, REN=1允许接收)。 - 配置波特率:
- 根据所需波特率、晶振频率(
Fosc)和SMOD(通常设0或1),计算TH1值。 - 设置
TMOD使T1为模式2(TMOD |= 0x20,不影响T0的设置)。 - 将计算值装入
TH1和TL1。 - 置
TR1=1启动T1(TCON |= 0x40)。
- 根据所需波特率、晶振频率(
- 设置
- 发送一个字节:
- 检查
TI标志(while(TI == 0);)。若TI为1,表示上一次发送完成;若为0则等待。 - 软件清零
TI(TI = 0;)。 - 将要发送的数据写入
SBUF(SBUF = data;)。硬件会自动开始发送。
- 检查
- 接收一个字节:
- 检查
RI标志(while(RI == 0);)。若RI为1,表示收到一个完整字节;若为0则等待。 - 软件清零
RI(RI = 0;)。 - 从
SBUF读取接收到的数据(data = SBUF;)。
- 检查
- 初始化:
-
中断方式:
- 除了查询(轮询)
TI/RI,更高效的方式是使用串口中断(中断号4)。 - 启用中断:设置
ES=1(IE |= 0x10;)允许串口中断,并且开启总中断(EA=1)。 - 中断服务程序(ISR):
- 在ISR中,首先检查是
TI还是RI引起的中断(SCON寄存器)。 - 如果是
TI引起:- 清零
TI。 - 可以在此处加载下一个要发送的数据到
SBUF(如果需要连续发送)。
- 清零
- 如果是
RI引起:- 清零
RI。 - 从
SBUF读取数据并处理(如存入缓冲区)。
- 清零
- 在ISR中,首先检查是
- 中断方式避免了CPU在等待发送完成或数据到达时做空转循环,提高了效率。
- 除了查询(轮询)
-
电平转换与物理连接:
- 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口,方便可靠。
总结设计要点:
- 选择合适的模式(最常用8位异步模式1)。
- 精确计算并设置波特率(正确配置定时器1模式2及其初值,考虑
SMOD和晶振频率)。 - 正确配置寄存器:
SCON(工作模式、允许接收),PCON.SMOD(可选),TMOD(定时器1模式),IE(中断使能)。 - 初始化定时器T1(装入初值并启动)。
- 实现发送/接收逻辑:可采用查询
TI/RI标志的方式或中断服务程序的方式。 - 做好电平转换:根据通信目标设备选择合适的电平转换方案。
理解并掌握这些原理是设计51单片机串行通信应用(如与PC通信、与其他单片机通信、与串口模块通信等)的基础。
PIC单片机与PC机实现串行通信的设计
本实例完全建立在计算机软件的基础上,利用PROTEUS软件构建一个单片机系统,利用VB编写一个计算机控制软件和单片机系统串行
2019-08-15 17:51:28
7天热门专题
换一换
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 传感器常见类型有哪些?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机