单片机的串口通信

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、串口是什么?
  • 二、单片机结构讲解
    • 2.1 串口发送
    • 2.2串口接收
    • 2.3 还差点什么?
      • 2.3.1控制寄存器
        • 2.3.1.1 配置方式
        • 2.3.1.1 波特率
  • 三、测试通信
    • 3.1 开发板接线
    • 3.2测试软件
    • 3.3参考程序
    • 3.4 测试结果
    • 3.5 发送字符串
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

    1. 单片机与单片机之间如何数据通信?
    1. 单片机与电脑之间如何数据通信?

提示:以下是本篇文章正文内容,下面案例可供参考

一、串口是什么?

3分钟理解通信协议之串口UART到底是个啥?

https://www.bilibili.com/video/BV1cQ4y1C7hj/?spm_id_from=333.337.search-card.all.click

2分钟!带你了解串口通信是个啥?

https://www.bilibili.com/video/BV1Xz4y14795/?spm_id_from=333.337.search-card.all.click

超简单的一种通信,2分钟搞懂,串口通讯的工作原理!

https://www.bilibili.com/video/BV1y34y147s5/?spm_id_from=333.337.search-card.all.click

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、单片机结构讲解

2.1 串口发送

在这里插入图片描述

SBUF='A';
while(TI!=1);//等待发送完成
SBUF='B';//发送新的数据
while(TI!=1);

2.2串口接收

在这里插入图片描述

REN=1;
while(RI!=1);//等待接收完成
temp=SBUF;//读取数据
RI=0;//清除标志位

2.3 还差点什么?

波特率?
串口发送模式?异步串口通信模式,1个起始位,8个数据位,1个停止位

2.3.1控制寄存器

在这里插入图片描述

2.3.1.1 配置方式

在这里插入图片描述

SM0=0;
SM1=1;
2.3.1.1 波特率

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

TMOD=0X20;
TL1=TH1=(256-3);

三、测试通信

目标:
开发板+电脑

3.1 开发板接线

在这里插入图片描述

在这里插入图片描述

3.2测试软件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
打开软件成功
在这里插入图片描述

代码如下(示例):


3.3参考程序

代码如下(示例):

#include <reg51.h>

void uart_init()
{
	SM0=0;
	SM1=1;	
	PCON=0; //SMOD=0
	
	TMOD=0X20;
	TH1=TL1=256-3;
	TR1=1;
	
	//REN=1;
	
	
	
	
}

void main()
{
	//出口初始化
	uart_init();
	
	SBUF='A';
	while(TI!=1);//等待发送完成
	SBUF='B';//发送新的数据
	while(TI!=1);


	
	while(1)
	{
		
	}
}

3.4 测试结果

在这里插入图片描述
在这里插入图片描述

3.5 发送字符串

void string(unsigned char *p)
{

	while(*p!=0)
	{
			SBUF=*p;
			while(TI!=1);//等待发送完成
			TI=0;
		    p++;
	
	}
	
}
#include <reg51.h>
unsigned char ta[]={"123你好?"};// 
void uart_init()
{
	SM0=0;
	SM1=1;	
	PCON=0; //SMOD=0
	
	TMOD=0X20;
	TH1=TL1=256-3;
	TR1=1;
	
	//REN=1;
			
}

void string(unsigned char *p)
{

	while(*p!=0)
	{
			SBUF=*p;
			while(TI!=1);//等待发送完成
			TI=0;
		    p++;
	
	}
	
}

void main()
{
	//出口初始化
	uart_init();
	
	SBUF='A';
	while(TI!=1);//等待发送完成
	TI=0;
	SBUF='B';//发送新的数据
	while(TI!=1);
	TI=0;
	
	string("单片机好玩吗?");
	string(ta);


	
	while(1)
	{
		
	}
}

在这里插入图片描述

总结

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

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

相关文章

Scanner常用知识点

在Java中&#xff0c;Scanner类是用于读取用户输入的工具类&#xff0c;可以从多种输入源读取数据&#xff0c;如标准输入流、文件或字符串。以下是一些Scanner类的常用知识点&#xff1a; Scanner的初始化&#xff1a;在使用Scanner类之前&#xff0c;需要先将其导入到你的Ja…

机器学习——多元线性回归升维

机器学习升维 升维使用sklearn库实现特征升维实现天猫年度销量预测实现中国人寿保险预测 升维 定义&#xff1a;将原始的数据表示从低维空间映射到高维空间。在线性回归中&#xff0c;升维通常是通过引入额外的特征来实现的&#xff0c;目的是为了更好地捕捉数据的复杂性&#…

二十九、微服务案例完善(数据聚合、自动补全、数据同步)

目录 一、定义 二、分类 1、桶(Bucket)聚合: 2、度量(Metric&#xff09;聚合: 3、管道聚合&#xff08;Pipeline Aggregation&#xff09;&#xff1a; 4、注意&#xff1a; 参与聚合的字段类型必须是: 三、使用DSL实现聚合 聚合所必须的三要素&#xff1a; 聚合可配…

【读懂AUTOSAR】DoIP模块(1)-- 使用场景和链接的建立规范

引子 --什么是?为什么使用DoIP? DoIP就是通过IP进行诊断的意思(Diagnostic Over IP)。我们熟悉的诊断都是通过CAN总线的啊,为什么要通过IP?IP是什么? IP就是Internet Protocol,就是”互联网协议“啦! 那DoIP就是通过互联网进行的诊断喽,也可以叫做“基于以太网的诊…

Sass基础知识详细讲解【附带表图】

文章目录 前言使用 SassRack / Rails / Merb插件缓存选项语法选择编码 Sass CSS扩展Sass 注释输出 Sass 脚本Sass -规则和指令Sass 控制指令和表达式 Sass 混入指令Sass 功能指令命名约定Sass 输出样式:nested:expanded:compact:compressedSass 扩展缓存存储自定义导入 后言 前…

电子学会C/C++编程等级考试2022年03月(三级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:和数 给定一个正整数序列,判断其中有多少个数,等于数列中其他两个数的和。 比如,对于数列1 2 3 4, 这个问题的答案就是2, 因为3 = 2 + 1, 4 = 1 + 3。 时间限制:10000 内存限制:65536输入 共两行,第一行是数列中数的个数…

Pytorch-gpu环境篇

最最最头疼的就是配环境了 包之间的版本匹配问题 INSTALLING PREVIOUS VERSIONS OF PYTORCH 要考虑到pytorch和torchvision之间的匹配关系 显卡版本匹配问题

小航助学题库蓝桥杯题库stem选拔赛(23年8月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

达索系统3DEXPERIENCE WORKS 2024电磁仿真功能

在设计工作中&#xff0c;将复杂的模型进行网格分割是必不可少的一步&#xff0c;这样可以化繁而简&#xff0c;也可以让后续的工作更容易开展。 电磁仿真可帮助您在复杂、嘈杂的电磁环境中提高效率&#xff0c;在确保兼容性的同时&#xff0c;保障出众性能。 一系列专用求解器…

【论文阅读】ActiveNeRF:通过不确定性估计候选新视图

【论文阅读】ActiveNeRF: Learning where to See with Uncertainty Estimation Abstract1 Introduction3 Background4 NeRF with Uncertainty Estimation5 ActiveNeRF5.1 Prior and Posterior Distribution5.2 Acquisition Function5.3 Optimization and Inference 6 Experimen…

nodejs+vue+elementui足球篮球联赛系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统&#xff0c;管理员可以对个人中心、用户管理、赛事信息管理、球队信息管理、球员信息管理、比赛分值板管理、系统管理等进行添加、查询、修改、删除&#xff0c;以保障足球联赛管理系统的正常运行。…

位图/布隆过滤器+海量数据处理总结

位图 题目&#xff1a; 第一种方法&#xff1a;二分查找。虽然二分的时间复杂度为o(log n),但是这个方法是不可行的&#xff0c;我们就算假设这40亿个数据是已经排序完成了的数据&#xff0c;但是40亿个整数在内存需要消耗的内存就是差不多16G&#xff0c;这个消耗是非常巨大的…

Ubuntu 22.03 LTS 安装deepin-terminal 分屏

安装 源里面自带了这个软件&#xff0c;可以直接装 sudo apt install deepin-terminal 启动 按下Win键&#xff0c;输入deep即可快速检索出图标&#xff0c;点击启动 效果 分屏 CtrlShiftH 水平分割 CtrlShiftJ 垂直分割 最多分割成四个小窗口&#xff0c;鼠标点击可以切换…

互联网金融智能风险防控技术要求

《互联网金融智能风险防控技术要求》 8月6日&#xff0c;国家市场监督管理总局和国家标准化管理委员会发布《互联网金融智能风险防控技术要求》&#xff08;GB/T 42929-2023&#xff09;&#xff08;以下简称“《要求》”&#xff09;&#xff0c;将于2023年12月1日实施。 《要…

priority_queue优先级队列基本使用

目录 介绍 头文件 基本使用 constructor empty size top push pop swap 使用 大根堆 小根堆 结果 介绍 类似于堆 头文件 #include <queue> 基本使用 constructor empty 判空 size 元素个数 top 堆顶元素 push 入元素 pop 弹出堆顶元素 swap …

快速搭建一个SpringCloud、SpringBoot项目 || 项目搭建要点

1. 基本结构 建立springcloud项目从表入手&#xff0c;分析好需求建立表结构后&#xff0c;使用mybatis-plux生成POJO类&#xff0c;在对应的model模块中。 2. 微服务部分架构 2.1 依赖 service 微服务模块的依赖仅包含如下&#xff0c;数据库等依赖包含在model中&#xff0c…

Linux 内核栈保护

栈保护可以检测栈被写坏的情况。如果怀疑有此类情况&#xff0c;可以将栈保护打开试试 详细可参考文章 栈保护杂记-CSDN博客 栈保护开启 下图是关于strong的解释&#xff0c;在什么情况下会加入栈保护 后面由于gcc版本的原因&#xff0c;好像不支持开启栈保护。后面再进行效果…

红黑树(万字图文详解)

红黑树 1. 红黑树的概念2. 红黑树的性质3. 红黑树节点的定义4. 红黑树结构5. 红黑树的插入操作5.1 按照二叉搜索的树规则插入新节点5.2 检测新节点插入后&#xff0c;红黑树的性质是否造到破坏5.2.1 情况一: cur为红&#xff0c;p为红&#xff0c;g为黑&#xff0c;u存在且为红…

C_6微机原理

一、单项选择题&#xff08;本大题共 15小题&#xff0c;每小题3分&#xff0c;共45分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案&#xff0c;请将选定的答案填涂在答题纸的相应位置上。 n1 位有符号数 的补码表示范围为&#xff08;&#xff09; A. -2n&l…

Mybatis 源码搭建

文章目录 源码下载测试模块搭建学习博客 源码下载 首先下载mybatis-parent的源码&#xff1a;gitee地址 > https://gitee.com/callback_lab/mybatis-parent.git 然后下载mybatis的源码&#xff1a;gitee地址 > https://gitee.com/callback_lab/mybatis-src.git 带中文…