51单片机串行口相关知识
51单片机串行口相关知识
串行通信概念
计算机与外部通信方式就两种:
- 并行通信
- 串行通信
两种通信方式的特点以及适用场景:
| 名称 | 特点 | 适用场景 |
|---|---|---|
| 并行通信 | 速度快,效率高,成本高 | 适合短距离高速通信,如计算机内部各硬件之间通信 |
| 串行通信 | 速度慢,效率低,成本低 | 适合远距离低速通信,如线缆,网线 |
串行通信的三种模式
有三种:
- 单工:数据只能从A到B
- 半双工:数据可以AB相互传递,但是不能同时进行
- 全双工:数据可以AB相互传递,而且可以同时进行

波特率
用来衡量串行通信的速度,具体含义是每秒传送的二进制数码的位数。
单位: bps (位/秒)
国际规定的标准波特率系列:
- 110bps
- 300bps
- 600bps
- 1200bps
- 1800bps
- 2400bps
- 4800bps
- 9600bps
- 19200bps
接收端和发送端的波特率分别设置时,必须保证两者相同
串行通信的两种方式
有两种:
- 异步通信
- 同步通信
异步通信

将字节为单位组成数据帧的格式进行传输,称作异步通信。
一帧数据的组成包括:
- 起始位:1位,一定为低电平
- 数据位:5~8位,从低到高依次传送
- 可编程校验位:1位,可以作为校验位,具体内容根据校验方式而定
- 停止位:1位,数据帧末尾,始终为高电平
传输线未开始通信时一直处在高电平状态,当接收端检测到传输线上出现低电平时就意味着发送端已经开始发送了,之后接收到终止位就知道数据发送完成。
同步通信
在同步通信种,数据是以块为单位发送的。
下面是同步通信的理解图,注意,51单片机种的传输方式与其略有差别:

以下是51单片机中的同步通信示意图:

可以看出区别:51单片机中的同步通信在数据传输的过程中不需要同步信号。
同步通信的要求较为严格,需要注意的细节如下:
- 发送端和接收端的设备需要同步(一般由硬件实现)
- 没有开始信号和终止信号
- 适合传输数据量大,效率要求高的场合
51单片机的串行口控制器
串行口内部结构
51单片机的内部有一个全双工的串行通信接口。

这个图可以从最右边看起:
有两个接口:TXD和RXD,一个用于发送,一个用于接收
接着是一个寄存器: SCON串行控制寄存器,这个寄存器通过其中的位的值去控制发送控制器和接收控制器。
然后是发送控制器:观察图片可以发现这个发送控制器的作用受到定时器T1和SCON的控制,其作用是将发送SBUF中的并行数据转换为串行数据然后发送出去的,在这个过程中,还会自动添加起始位,校验位,停止位,发送结束后将SCON中的中断标志位TI标记为1,表示发送完毕
然后是接收控制器:与发送控制器相反,是将接收到的串行数据转换为并行数据然后发送到接收SBUF中,在这个过程中会自动取消起始位,校验位,停止位,接收结束后将SCON中的中断标志位RI标记为1,表示接收完毕
最后是定时计数器T1:定时计数器T1的作用产生用以收发过程中节拍控制的通信时钟(方波脉冲),实际上就是作为一把尺,假如有三个1到来的话,那么T1一定会发出三个方波,这样一来就可以判断了。
可以看出发送端只有一个寄存器SBUF,但是接收端有两个寄存器,这样做的好处是:当接收数据时,接收数据进入SBUF后,接收端还可以通过接收移位寄存器接收下一帧数据。这种双缓冲的结构可以避免在第二帧数据到来时,未将第一帧数据读走而引起的两帧数据重叠覆盖的错误。
SCON串行口控制寄存器

需要知道的有以下内容:
- TI、RI:串行口中断请求信号,当接收完毕或者发送完毕时,对应位置就会置1,需要软件置0
- SM0 和 SM1:串行工作方式定义位,具体内容在后文。
- RB8 和 TB8:用于接收数据的第9位和发送数据的第9位,用于多机通信和奇偶校验
- SM2 :多级通信控制位
- REN :允许接收控制位,用于允许或禁止串行口接收数据
串行口工作方式
| SM0 | SM1 | 方式 | 功能说明 |
|---|---|---|---|
| 0 | 0 | 0 | 8位同步移位寄存器方式 |
| 0 | 1 | 1 | 10位数据异步通讯方式 |
| 1 | 0 | 2 | 11位数据异步通信方式 |
| 1 | 1 | 3 | 11位数据异步通讯方式 |
上述4种工作方式种,只有后三种才属于严格意义上的异步通信,方式0属于同步移位寄存器方式,主要用于串并转换。
PCON电源控制寄存器
根据芯片手册,PCON内容如下:

我们只需要关注SMOD位即可:当SMOD = 1时(软件置位),使得串行通信方式1、2、3的波特率加倍。当SMOD = 0,各工作方式的波特率正常。复位时SMOD = 0。
SMOD0是帧错误检测有效控制位,详细内容不做介绍(因为用不上)。
通信时钟波特率的计算方式:
通信时钟波特率 = f O S C 12 ∗ ( 2 n − a ) ⋅ 2 S M O D 32 通信时钟波特率 = \frac {f_{OSC}} {12 * (2^{n} - a)} \cdot \frac {2^{SMOD}} {32} 通信时钟波特率=12∗(2n−a)fOSC⋅322SMOD
这说明,晶振频率f_{OSC}一定后,波特率的大小取决于T1的工作方式n和计数初值a还有SMOD
相关文章:
51单片机串行口相关知识
51单片机串行口相关知识 串行通信概念 计算机与外部通信方式就两种: 并行通信串行通信 两种通信方式的特点以及适用场景: 名称特点适用场景并行通信速度快,效率高,成本高适合短距离高速通信,如计算机内部各硬件之…...
IDEA 每次新建工程都要重新配置 Maven的解决方案
文章目录 IDEA 每次新建工程都要重新配置 Maven 解决方案一、选择 File -> New Projects Setup -> Settingsfor New Projects…二、选择 Build,Execution,Deployment -> Build Tools -> Maven IDEA 每次新建工程都要重新配置 Maven 解决方案 DEA 每次新建工程都要…...
SecOC中新鲜度值和MAC都按照完整的值来生成,但是在发送和认证的时候只会截取一部分。这边截取的部分一般取多长?由什么参数设定?
新鲜度值(Freshness Value, FV)和消息验证码(Message Authentication Code, MAC)是SecOC协议中用于保证数据的真实性和新鲜度的重要信息。它们的长度取决于不同的因素,如加密算法、安全级别、通信带宽等。 一般来说,FV和MAC的长度越长,安全性越高,但也会占用更多的通信…...
信源编码与信道转移矩阵
目录 一. 信息论模型 二. 点对点通信模型 三. 信源编码 四. 信道转移矩阵 4.1 二进制对称信道 4.2 二进制擦除信道 五. 小结 (1)信道直射与反射 (2)信道散射 (3) 信道时变性 一. 信息论模型 194…...
React 实现拖放功能
介绍 本篇文章将会使用react实现简单拖放功能。 样例 布局侧边栏拖放 LayoutResize.js import React, {useState} from "react"; import { Button } from "antd"; import "./LayoutResize.css";export const LayoutResize () > {const […...
马克思主义基本原理笔记
马克思主义哲学、政治经济学、科学社会主义理论 哲学 马克思主义中国化的理论成果:毛泽东思想、邓小平理论、三个代表重要思想、科学发展观 物质和意识哪个是本原,是哲学的基本问题 辩证法认为世界上的事物都是相互联系的、运动发展的,形…...
Vue+JavaSpingBoot笔记(1)
一、前后端通信参数问题 1.集合【字典】类型 Vue前端传递参数: export default {methods: { test(){// 将 filteredData 中的每一行值放入 newData 对象数组中 const newData filteredData.map(item > ({key1: item.Value1,key2: item.Value2,key3: "测试"}));r…...
10-单例模式(Singleton)
意图 保证一个类只有一个实例,并提供一个访问它的全局访问点 实现 1 懒汉式,线程不安全 public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance null) {…...
C++ 求一个数是否是丑数。
#include<string.h> #include <iostream> using namespace std; int isChou(int num) { if (num < 0) { return 0; } while (num % 2 0) { // 不断除以2,直到不能整除为止 num / 2; } while (num % 3 0) { // 不断除…...
SpringCloud系列篇:核心组件之注册中心组件
🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.注册中心组件是什么 二.注册中心…...
通过IP地址防范钓鱼网站诈骗的有效措施
随着互联网的普及,钓鱼网站诈骗成为一种广泛存在的网络犯罪行为。通过冒充合法网站,攻击者试图窃取用户的敏感信息。本文将探讨如何通过IP地址防范钓鱼网站诈骗,提供一系列有效的措施,以加强网络安全,保护用户免受诈骗…...
服务器GPU温度过高挂掉排查记录
服务器GPU挂掉 跑深度学习的代码的时候发现中断了。通过命令查看: nvidia-smi显示 Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error。感觉很莫名其妙。通过重启大法之后,又能用一段时间。 shutdown -r now但是过了一个小…...
服务器终端快速下载coco数据集
######解压到当前文件夹 sudo apt-get install aria2 aria2c -c <url> #<url>即为官网下载地址# url # download images http://images.cocodataset.org/zips/train2017.zip http://images.cocodataset.org/zips/val2017.zip# download annotations http://i…...
el-select下拉框 change事件返回该项所有数据
主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…...
MySQL基础篇(一)SQL
视频地址: 黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括 SQL,全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一 标准。 一、SQL通用语…...
多类指针式仪表自动读数系统的LabVIEW开发应用案例
多类指针式仪表自动读数系统的LabVIEW开发应用案例 工业环境中,多类指针式仪表的自动读数一直是一个具有挑战性的问题。本案例旨在展示如何使用LabVIEW开发一个高度智能化的多类指针式仪表自动读数系统,以应对复杂的工业环境。通过结合图像处理技术和深…...
攀登者2 - 华为OD统一考试
OD统一考试 分值: 200分 题解: Java / Python / C++ 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下…...
归并排序例题——逆序对的数量
做道简单一点的题巩固一下 归并排序实现步骤 将整个区间 [l, r] 划分为 [l, mid] 和 [mid1, r]。 递归排序 [l, mid] 和 [mid1, r]。 将左右两个有序序列合并为一个有序序列。 题目描述 给定一个长度为 n 的整数数列,请计算数列中的逆序对的数量。 逆序对的定义…...
数据库连接使用问题 - 1
原理 open-in-view 是 Spring Boot ⾃动加载 Spring Data JPA 提供的⼀个配置,全称为 spring.jpa.open-in-viewtrue,它只有 true 和 false 两个值,默认是 true。 这个配置为true时,会导致Web MVC请求处理的一开始&…...
【已解决】You have an error in your SQL syntax
报错讯息 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘desc,target_url,sort,status,create_by,modify_by,created,last_update_time FROM…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
