【51单片机】想学会串口通信,你需要知道这些(串口通信实验前置知识)(13)

前言

大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁
主要内容含:
在这里插入图片描述

欢迎订阅 YY滴C++专栏!更多干货持续更新!以下是传送门!

  • YY的《C++》专栏
  • YY的《C++11》专栏
  • YY的《Linux》专栏
  • YY的《数据结构》专栏
  • YY的《C语言基础》专栏
  • YY的《初学者易错点》专栏
  • YY的《小小知识点》专栏
  • YY的《单片机期末速过》专栏
  • YY的《C++期末速过》专栏
  • YY的《单片机》专栏
  • YY的《STM32》专栏
  • YY的《数据库》专栏
  • YY的《数据库原理》专栏

目录

  • 一.串口介绍基本概念
    • 1.串口基本概念
    • 2.串口接口及其引脚+区分串口与VGA(视频传输)
    • 3.单片机中的【USB和串口相互转换模块】
    • 4.电脑端利用【串口助手】帮助我们收发数据&显示
  • 二.串口的连接
    • 1.串口连接的硬件电路注意事项:发送端对输出端(交叉)
    • 2.VCC是独立供电的,如果两个设备都有独立电源,则二者可以不接
  • 三.电平标准
    • 1.电平标准简述
    • 2.单片机和串口不能直接相连的原因:二者电平协议不同
  • 四.串口的【数据流控制】
  • 五.专业术语:通信方式&同步异步&总线&通信接口&串口参数相关
    • 1.全双工,半双工,单工
    • 2.同步,异步
    • 3.总线的通俗理解
    • 4.常见通信接口比较一览
    • 5.串口参数相关:比特率&波特率&校验位&停止位&奇偶校验
      • ※【奇偶校验原理与规则】
    • 6.通信方式:串行通信&并行通信
  • 六.51单片机的UART
    • 1.UART基本介绍(常用模式一)
    • 2.UART的接口问题
  • 七.串口模式图&串行口相关寄存器
  • 八.串口和中断系统配合

一.串口介绍基本概念

1.串口基本概念

  • 串口主要是用于 传输数据
  • 下图中红色是USB转串口,接上后可以把计算机当作一个串口设备
  • 下图中橙色是陀螺仪,它测得的数据可以通过串口发送给我们
  • 下图中绿色是蓝牙接收器,可以实现蓝牙功能:手机和单片机通信在这里插入图片描述

2.串口接口及其引脚+区分串口与VGA(视频传输)

  • 串口使用的电压最大可达15v, 不可直接接到电脑/单片机上
    在这里插入图片描述
  • 区分串口与VGA(视频传输)
  • VGA接口有三排十五针,接口很像
    在这里插入图片描述

3.单片机中的【USB和串口相互转换模块】

  • 经过该模块转换以后,USB会连着电脑,在电脑上也能对串口进行操作
    在这里插入图片描述

4.电脑端利用【串口助手】帮助我们收发数据&显示

  • 电脑接收数据: 串口助手
  • 注意事项: 串口和串口号要保持一致
    在这里插入图片描述

二.串口的连接

1.串口连接的硬件电路注意事项:发送端对输出端(交叉)

  • TXD:发送端(transmit exchange data)
  • RXD:输出端(receive exchange data)

在这里插入图片描述

2.VCC是独立供电的,如果两个设备都有独立电源,则二者可以不接

  • 我们观察串口的硬件电路: 三个线是必须的 ,两个通信的TXDRXD,一个接地GND;
  • VCC要视情况而定:VCC是独立供电的,如果两个设备都有独立电源,则二者可以不接
    在这里插入图片描述

三.电平标准

1.电平标准简述

  • 人为定义的关于1,0表示方式的协议
  • TTL 和 RS232都是对地电平(0),RS485是两线压差在这里插入图片描述

2.单片机和串口不能直接相连的原因:二者电平协议不同

  • 单片机:ttl电平标准
  • 串口:re232电平标准
  • 串口使用的电压最大可达15v, 不可直接接到电脑/单片机上 ,可能会造成损坏

四.串口的【数据流控制】

  • 简单的串口通信一般用到四根线,但是我们发现串口不止四根线,是因为剩余的接口一般用于流控制
  • 数据流控制:调整发送和接收速率的问题
  • 数据流控制原因:有时候发送速度太快数据量太大,接收端受不了。
  • 51单片机不支持流控制 ,因此我们了解即可在这里插入图片描述

五.专业术语:通信方式&同步异步&总线&通信接口&串口参数相关

1.全双工,半双工,单工

  • 全双工:通信双方可以在同一时刻互相传输数据
  • 半双工:通信双方可以互相传输数据,但必须分时复用一根数据线
  • 单工:通信只能有一方发送到另一方,不能反向传输在这里插入图片描述

2.同步,异步

  • 异步:通信双方各自约定通信速率(多个任务可以相互独立地执行,其中一个任务不需要等待另一个任务的完成才能开始执行自己的操作)
  • 同步:通信双方 靠一根时钟线 来约定通信速率(同步意味着多个任务或操作必须按照一定的顺序执行)
  • 因此同步的通信接口 都有时钟线SCL,异步的不带
    在这里插入图片描述

3.总线的通俗理解

  • 总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流
  • 总线连接多个设备;
  • 有需要交互的设备挂在中线上,之间就可以相互通信
    在这里插入图片描述

4.常见通信接口比较一览

在这里插入图片描述

5.串口参数相关:比特率&波特率&校验位&停止位&奇偶校验

  • 串口通信是异步通信,没有时钟线
  • 区分比特率和波特率: 比特率对象是传多少,波特率对象是 数据帧 在这里插入图片描述
  • 校验位
    在这里插入图片描述
  • 如下图串口助手所示: 校验分为奇校验和偶校验 (常见)和 0,1校验
    在这里插入图片描述
  • 停止位:数据发送完,有个后摇
    在这里插入图片描述

※【奇偶校验原理与规则】

在这里插入图片描述

  • 规则总结:
  1. 利用奇/偶校验,保证数据中1的个数为奇/偶;
  2. 8位数据+1位校验位校验位
  • 偶校验:保证数据个数为偶数,检验位补0/1
  • 奇校验:保证数据个数为奇数,检验位补0/1
  • 例如:奇校验,数据中有2个1,2是偶数,校验位补1,保证它是奇数个1
  1. 计算接收到的数据中,1的奇/偶和我们采用的奇/偶校验方式是否一致,来保证数据接受正确与否
  • 举例演示
  1. 我们需要的数据排列是:0000 0011,我们如何来检验它正确?
  • 利用奇校验
  1. 我们给他补上一个校验位(8->9位),我们原来的数据中有2(偶数)个1,所以补上1,保证数据为奇数;最终数据为0000 0011 1,现在我们数据中有奇数个1
  2. 串口接收到数据后,数据为0000 0011 1,其中1的个数为奇数,1的奇偶和我们采用的奇校验方式一致,则表示它正确(一定程度)
  • 偶检验同理

6.通信方式:串行通信&并行通信

  • 串行通信: 一位一位 地发送数据,先发送低位再发送高位
    例如:数据0000 0011,先发送低位1
  • 并行通信:是指 多比特数据 同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,数据也就容易出错

六.51单片机的UART

1.UART基本介绍(常用模式一)

  • 分为四个模式,我们常用模式一
    在这里插入图片描述

2.UART的接口问题

  • 如图所示,我们发现P3.0和P3.1与RxD,TxD是复用
  • 如何区分这个口什么时候是IO口,什么时候是串口?
  • 不用管,它会通过操作 自动识别 在这里插入图片描述
  • 串口是集成在单片机内部的,只要有单片机我们就可以通信

七.串口模式图&串行口相关寄存器

  • 串口通信无论接收还是发送,完成以后都会进入经过 缓存SUBF
  • 串口靠 定时器 来约定 速率
    在这里插入图片描述
  • 进行简单的串口操作,我们主要关注以下寄存器的某些位即可
  • SCON:串口控制寄存器,属于特殊功能寄存器, 控制电路如何运转(开关如何拨动) 在这里插入图片描述
  • PCON:特殊->电源控制寄存器的 前两位 与串口相关
    在这里插入图片描述
  • 剩余控制器就是和中断相关的了,下方是传送门
  • 【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)

八.串口和中断系统配合

  • 串口通信无论接收还是发送,完成以后都会进入中断
  • 也就是让RI 和TI 来控制是什么中断(接收/发送中断)以及是否进入中断程序
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/408817.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt Android sdk配置报错解决

使用的jdk8总是失败,报错command tools run以及platform sdk等问题。后来主要是设置jdk版本为17,就配置生效了。Android sdk路径可以选用Android Studio自带的,但是也要在Qt中点击“设置SDK”按钮做必要的下载更新等。 编译器这里会自动检测到…

【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址:【黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 2、TypeScript初体验 2.1 安装编译TS的工…

探究全链路压力测试的含义与重要性

全链路压力测试是指对整个应用系统的各个环节或组件进行压力测试,以模拟实际生产环境中的用户负载和流量,评估系统在高负载条件下的性能表现。 1. 全链路压力测试的含义 全链路压力测试涉及系统的所有组件和环节,包括前端用户界面、应用服务器…

算法沉淀——动态规划之路径问题(leetcode真题剖析)

算法沉淀——动态规划之路径问题 01.不同路径02.不同路径 II03.珠宝的最高价值04.下降路径最小和05.最小路径和06.地下城游戏 01.不同路径 题目链接:https://leetcode.cn/problems/unique-paths/ 一个机器人位于一个 m x n 网格的左上角 (起始点在下图…

c++: 用c++语言对车辆进行建模

一 原理 1.1 阿克曼转向模型 转向半径:后轴中心点到原点O的距离 已知道转向半径,可以反求转向角。或者知道转向角,可以求出转向半径。 四个顶点的转向半径。 还要定义这两个参数 1.2 车辆运动的建模 运动写在大的while循环里。 绘制车辆的思路;(1)清

020 基于Spring Boot + Thymeleaf 实现的任务发布网站(源码+数据库)

部分代码地址: https://github.com/XinChennn/xc020-springboot-recruit 基于Spring Boot Thymeleaf 实现的任务发布网站(源码数据库) 一、系统介绍 雇主:登录、注册、发布任务、选择中标雇员、评价雇员雇员:登录、…

如何解决Nginx启动出现闪退问题?

哈喽,大家好,我是小浪。那么大家首次在启动nginx的时候,绝大部分同学会出现以下情况,就是我们双击nginx.exe文件之后,屏幕闪退一下就没了,然后我们访问localhost:8080提示404. 那么出现这种情况其实是我们…

【深度学习笔记】 3_13 丢弃法

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 3.13 丢弃法 除了前一节介绍的权重衰减以外,深度学习模型常常使用丢弃法(dropout)[1] 来应对过拟合…

“点击查看显示全文”遇到的超链接默认访问的问题

今天在做一个例子,就是很常见的点击展开全文。 我觉得这是一个很简单的效果,也就几行代码的事,结果点击了以后立刻隐藏不见,控制台代码也不报错,耽误了我很长时间,最后才发现问题出在超链接身上。 “展开全…

k8s-kubeapps部署 20

部署kubeapps应用,为Helm提供web UI界面管理: 下载最新版本的kubeapps并修改其values.yaml文件 下载并拉取所需镜像: 部署应用 添加解析 修改svc暴露方式为LoadBalancer 得到分配地址 访问http://192.168.182.102 授权并获取token 1.24前的…

osmnx笔记:从OpenStreetMap中提取点和边的shp文件(FMM文件准备内容)

1 导入库 import osmnx as ox import time from shapely.geometry import Polygon import os import numpy as np 2 提取Openstreetmap 的graph Gox.graph_from_place(Huangpu,Shanghai,China,network_typedrive,simplifyTrue) ox.plot_graph(G) 3 提取graph中的点和边 gdf…

pytest如何在类的方法之间共享变量?

在pytest中,setup_class是一个特殊的方法,它用于在类级别的测试开始之前设置一些初始化的状态。这个方法会在类中的任何测试方法执行之前只运行一次。 当你在setup_class中使用self来修改类属性时,你实际上是在修改类的一个实例属性。在Pyth…

《模仿游戏》:天才团队如何破解密码学之谜

引言 计算机科学相关的电影不少,有探索人工智能的《黑客帝国》、还有逻辑和结构学的《盗梦空间》、还有互联网创业的《社交网络》和《硅谷海盗》、还有探索虚拟世界的《源代码》,更甚有国产计算机科学科幻启蒙儿童电视剧《快乐星球》。上述电影充满科技和…

函数——递归6(c++)

角谷猜想 题目描述 日本一位中学生发现一个奇妙的 定理,请角谷教授证明,而教授 无能为力,于是产生了角谷猜想。 猜想的内容:任给一个自然数, 若为偶数则除以2,若为奇数则乘 3加1,得到一个新的…

JDK8新特性全解析:Java8变革之旅

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

云原生之容器编排实践-ruoyi-cloud项目部署到K8S:MySQL8

背景 前面搭建好了 Kubernetes 集群与私有镜像仓库,终于要进入服务编排的实践环节了。本系列拿 ruoyi-cloud 项目进行练手,按照 MySQL , Nacos , Redis , Nginx , Gateway , Auth ,…

测试圈的网红工具:Jmeter到底难在哪里?!

小欧的公司最近推出了一款在线购物应用,吸引了大量用户。然而随着用户数量的增加,应用的性能开始出现问题。用户抱怨说购物过程中页面加载缓慢,甚至有时候无法完成订单,小欧作为负责人员迫切需要找到解决方案。 在学习JMeter之前…

[VNCTF2024]-Web:CheckIn解析

查看网页 一款很经典的游戏,而且是用js写的 在调试器里面我们可以看见,如果游戏通关的话,它会进行一系列操作,包括使用console.log(_0x3d9d[0]);输出_0x3d9d[0]到控制台,那我们就直接在点击在控制台求出它的值

基于SpringBoot实现的医院药品管理系统

一、系统架构 前端:html | layui | js | css 后端:springboot | mybatis-plus 环境:jdk1.6 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 药品库存管理-登记出入口信息 03. 药品库存管理-问题药品信息 …

软考45-上午题-【数据库】-数据操纵语言DML

一、INSERT插入语句 向SQL的基本表中插入数据有两种方式: ①直接插入元组值 ②插入一个查询的结果值 1-1、直接插入元组值 【注意】: 列名序列是可选的,若是所有列都要插入数值,则可以不写列名序列。 示例: 1-2、插…