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…...
Java Stream 中间操作全解析:惰性求值、无状态与有状态操作详解
一、前言 Stream API是Java 8的灵魂特性之一,它彻底改变了集合操作的写法——告别嵌套循环、简化逻辑判断,让代码更简洁、更易读、更高效。 但很多开发者刚接触Stream时,都会陷入一个误区:写了一串中间操作,却发现程序没有任何执行效果。其实核心原因很简单:Stream的中…...
springboot-vue+nodejs的旅游个性化定制平台的设计与实现
目录技术栈选型系统架构设计数据库设计核心功能实现推荐算法实现前端界面设计测试部署方案项目进度安排项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选型 后端采用Spring Boot框架,提供RESTful API接口。数…...
深度解析:PaperZZ AI 如何把 “文献综述难产” 变成 “10 分钟定稿”?
Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿/期刊论文paperzz - 文献综述https://www.paperzz.cc/journalsReviewed 提到本科毕业论文,比起提笔写正文,绝大多数同学的噩梦都是文献综述。这不仅是论文的开篇,更是评判…...
嵌入式开发中PlantUML图表的工程化应用
嵌入式开发中PlantUML图表的工程化应用指南1. 嵌入式文档工具概述在嵌入式系统开发过程中,系统架构图和设计文档是工程师沟通需求、梳理逻辑的核心工具。传统拖拽式绘图工具存在效率低下、维护困难等问题,而基于代码生成图表的PlantUML技术为嵌入式开发文…...
华为交换机Eth-Trunk配置实战:手工与LACP模式全解析(附排错指南)
华为交换机Eth-Trunk深度配置指南:从手工模式到LACP模式的技术实践 在企业网络架构中,带宽瓶颈和单点故障一直是困扰网络工程师的两大难题。记得去年参与某金融数据中心改造时,核心交换机之间的千兆链路在业务高峰时段频繁出现拥塞告警&#…...
Qwen-Image-2512在Windows11环境下的快速部署教程
Qwen-Image-2512在Windows11环境下的快速部署教程 1. 前言 你是不是也对AI生成图片感兴趣,但总觉得部署过程太复杂?今天我来分享一个超级简单的教程,让你在Windows11系统上快速部署Qwen-Image-2512模型。这个模型是阿里最新开源的图像生成模…...
5分钟部署Llama Factory:开箱即用的大模型训练平台
5分钟部署Llama Factory:开箱即用的大模型训练平台 1. 为什么选择Llama Factory 在人工智能领域,大型语言模型(LLM)的微调和训练一直是技术门槛较高的工作。传统方法需要编写大量代码、处理复杂的环境配置,并且对硬件资源要求极高。Llama F…...
什么是SSE 流式推送
SSE 流式推送(Server-Sent Events,服务器发送事件),是一种基于 HTTP 协议、服务器主动向客户端单向推送实时数据流的 Web 技术(HTML5 标准)。 一、一句话理解 客户端(浏览器)用 Even…...
【附源码】FPGA三段式状态机在智能售货系统中的实战解析
1. 智能售货系统与FPGA的完美结合 自动售货机已经渗透到我们生活的各个角落,从地铁站到写字楼,随处可见它们的身影。但你是否想过,这些看似简单的机器背后隐藏着怎样的技术奥秘?作为一名在FPGA领域摸爬滚打多年的工程师ÿ…...
新手必看:用Proteus仿真51单片机数字电压表,附完整代码和电路图
从零开始构建51单片机数字电压表:Proteus仿真全流程指南 引言:为什么选择仿真学习51单片机? 对于刚接触嵌入式开发的初学者来说,直接购买硬件设备可能存在成本高、调试困难等问题。Proteus仿真软件为我们提供了完美的解决方案——…...
