单片机的串口通信

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

文章目录

  • 前言
  • 一、串口是什么?
  • 二、单片机结构讲解
    • 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

单片机的串口通信_第1张图片
单片机的串口通信_第2张图片
单片机的串口通信_第3张图片
单片机的串口通信_第4张图片
单片机的串口通信_第5张图片
单片机的串口通信_第6张图片
单片机的串口通信_第7张图片

二、单片机结构讲解

2.1 串口发送

单片机的串口通信_第8张图片

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

2.2串口接收

单片机的串口通信_第9张图片

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

2.3 还差点什么?

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

2.3.1控制寄存器

单片机的串口通信_第10张图片

2.3.1.1 配置方式

单片机的串口通信_第11张图片

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

单片机的串口通信_第12张图片

单片机的串口通信_第13张图片
单片机的串口通信_第14张图片

单片机的串口通信_第15张图片

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

三、测试通信

目标:
开发板+电脑

3.1 开发板接线

单片机的串口通信_第16张图片

单片机的串口通信_第17张图片

3.2测试软件

单片机的串口通信_第18张图片
单片机的串口通信_第19张图片

单片机的串口通信_第20张图片
打开软件成功
单片机的串口通信_第21张图片

代码如下(示例):


3.3参考程序

代码如下(示例):

#include 

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 测试结果

单片机的串口通信_第22张图片
单片机的串口通信_第23张图片

3.5 发送字符串

void string(unsigned char *p)
{

	while(*p!=0)
	{
			SBUF=*p;
			while(TI!=1);//等待发送完成
			TI=0;
		    p++;
	
	}
	
}
#include 
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)
	{
		
	}
}

单片机的串口通信_第24张图片

总结

你可能感兴趣的:(单片机,单片机,嵌入式硬件)