51单片机 串口

一、串口基本认知概念

串口是一种用于在计算机或其他设备之间进行数据传输的通信接口。串口传输是通过发送和接收数据位来进行的,通常是一个字节一个字节地传输。串口通常有多种参数设置,比如波特率、数据位、校验位和停止位等,这些参数需要在通信的双方设备之间进行匹配才能确保正常的数据传输。串口常用于连接计算机与外围设备(比如打印机、调制解调器、传感器等),或者在嵌入式系统中进行设备之间的通信。串口通常分为RS-232、RS-485、RS-422等不同的标准,每种标准有不同的应用场景和特点。

RS-232
也称标准串口,最常用的一种[串行通讯接口,比如我们的电脑主机的9针串口 ,最高速率为20kb/s
RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其传送距离最大为约15米。所以RS-232适合本地设备之间的通信RS-422
由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Slave),从设备之间不能通信,所以RS-422支持点对多的双向通信。
RS-422的最大传输距离为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比
RS-485
是从RS-422基础上发展而来的,无论四线还是二线连接方式总线上可多接到32个设备
 

二、

三、程序

3.1 发送数据

#include "reg52.h"
#include "intrins.h"sbit ledOne = P3^7;
sfr AUXR =0X8E;void Delay1000ms()		//@11.0592MHz
{unsigned char i, j, k;i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
}void UartInit(void)		//9600bps@11.0592MHz
{PCON &= 0x7F;		//波特率不倍速SCON = 0x50;		//8位数据,可变波特率AUXR &= 0xBF;		//定时器1时钟为Fosc/12,即12TAUXR &= 0xFE;		//串口1选择定时器1为波特率发生器TMOD &= 0x0F;		//清除定时器1模式位TMOD |= 0x20;		//设定定时器1为8位自动重装方式TL1 = 0xFD;		//设定定时初值TH1 = 0xFD;		//设定定时器重装值ET1 = 0;		//禁止定时器1中断TR1 = 1;		//启动定时器1
}void main()
{char buf_msg = 'U';ledOne = 0;UartInit();while(1) {Delay1000ms();SBUF = buf_msg;}
}

3.2 发送字符串

#include "reg52.h"
#include "intrins.h"sbit ledOne = P3^7;
sfr AUXR =0X8E;void Delay1000ms()		//@11.0592MHz
{unsigned char i, j, k;i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
}//void UartInit(void)		//9600bps@11.0592MHz
//{
//	PCON &= 0x7F;		//波特率不倍速
//	SCON = 0x50;		//8位数据,可变波特率
//	AUXR &= 0xBF;		//定时器1时钟为Fosc/12,即12T
//	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
//	TMOD &= 0x0F;		//清除定时器1模式位
//	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
//	TL1 = 0xFD;		//设定定时初值
//	TH1 = 0xFD;		//设定定时器重装值
//	ET1 = 0;		//禁止定时器1中断
//	TR1 = 1;		//启动定时器1
//}void UartInit(void)		//9600bps@11.0592MHz
{SCON =  0x40;TMOD &= 0XF0;TMOD |=0X20;TH1 = 0XFD;TL1 = 0XFD;TR1 = 1;
}void sendbuf(char data_msg)
{SBUF = data_msg;while(!TI);TI = 0;
}void sendstr(char* str)
{while(*str != '\0'){sendbuf(*str);str++;}
}void main()
{char buf_msg = '8';ledOne = 0;UartInit();while(1) {Delay1000ms();
//    sendbuf(buf_msg);sendstr("shua\r\n");}
}

3.3 发送指令控制LED

#include "reg52.h"
#include "intrins.h"sbit ledOne = P3^7;
sfr AUXR =0X8E;
char cmd;void Delay1000ms()		//@11.0592MHz
{unsigned char i, j, k;i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
}//void UartInit(void)		//9600bps@11.0592MHz
//{
//	PCON &= 0x7F;		//波特率不倍速
//	SCON = 0x50;		//8位数据,可变波特率
//	AUXR &= 0xBF;		//定时器1时钟为Fosc/12,即12T
//	AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器
//	TMOD &= 0x0F;		//清除定时器1模式位
//	TMOD |= 0x20;		//设定定时器1为8位自动重装方式
//	TL1 = 0xFD;		//设定定时初值
//	TH1 = 0xFD;		//设定定时器重装值
//	ET1 = 0;		//禁止定时器1中断
//	TR1 = 1;		//启动定时器1
//}void UartInit(void)		//9600bps@11.0592MHz
{AUXR = 0x01;SCON =  0x50;TMOD &= 0XF0;TMOD |=0X20;TH1 = 0XFD;TL1 = 0XFD;TR1 = 1;EA =1;ES =1;
}void sendbuf(char data_msg)
{SBUF = data_msg;while(!TI);TI = 0;
}void sendstr(char* str)
{while(*str != '\0'){sendbuf(*str);str++;}
}void main()
{char buf_msg = '8';ledOne = 1;UartInit();while(1) {Delay1000ms();
//    sendbuf(buf_msg);sendstr("shua\r\n");}
}void Uart_Handler()  interrupt 4
{if(RI){RI = 0;cmd = SBUF;if(cmd == 'o') {ledOne= 0;}if(cmd == 'c') {ledOne= 1;}}if(TI);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器感染了.Elbie勒索病毒,如何确保数据文件完整恢复?

导言: 今天将和大家分享一个备受关注的话题:Elbie勒索病毒。它不仅是数字世界中的恶梦,更是我们数据安全的宿敌。但是,别担心,我将为你揭开它的面纱,并提供如何挽救被它锁定的数据以及预防的方法。如果您正…

【Docker】安装及相关的命令

目录 一 Docker简介 1.1 是什么 1.2 优缺点 1.3 应用场景 1.4 安装 二 命令 2.1 Docker基本命令 2.2 Docker镜像命令 2.3 Docker容器命令 一 Docker简介 1.1 是什么 Docker是一个开源的应用容器引擎,它基于Go语言实现,并利用操作系统本身已有的…

【QT+QGIS跨平台编译】之五十四:【QGIS_CORE跨平台编译】—【qgssqlstatementlexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…

电机控制----电机极对数的作用

电机控制----电机极对数的作用 1. 电机极对数的概念和含义 电机的极对数是指电机运动部件磁场南、北极之间相邻的个数。简单来说,电机极对数就是电机磁极的数量。一般情况下,电机极对数越多,电机的转速越慢,但是转矩越大&#xf…

状态机2——————

1.原理 2.代码 2.1 complex_fsm.v module complex_fsm(input wire sys_clk ,input wire sys_rst_n ,input wire pi_money_half ,input wire pi_money_one ,output reg po_cola ,output reg po_money );parameter IDLE 5b00001,HALF 5b00010,ONE 5b00100…

算法竞赛实用板子

一、声明 自用版参考acwing&#xff0c;致力于实用、好用&#xff0c;板子中有个人理解&#xff0c;持续更新。 二、开板 1.快排 void quick_sort(int q[],int l,int r) {if(l>r)return; //出口int il-1,jr1,xq[lr>>1]; //分治方法while(i<j){do i;w…

k8s(6)

目录 一.kubectl 命令行管理K8S 陈述式资源管理方式&#xff08;可理解成使用一条kubectl命令及其参数选项来实现资源对象的管理操作&#xff09; service的4的基本类型&#xff1a; service的端口 应用发布策略&#xff1a; 声明式资源管理方式&#xff08;可理解成使用…

spring boot 自定义注解封装(@RequestLimit注解)

描述&#xff1a; RequestLimit(time3)防重复点击&#xff0c;限制单个会话的请求频率。但是 RequestLimit注解中的参数不能传常量。 例如&#xff1a;不能通过获取application.yml文件中的配置信息&#xff0c;去动态配置限制时间&#xff0c;所以就对RequestLimit注解封装。 …

Go语言反射(reflect)

反射是应用程序检查其所拥有的结构&#xff0c;尤其是类型的一种能。每种语言的反射模型都不同&#xff0c;并且有些语言根本不支持反射。Go语言实现了反射&#xff0c;反射机制就是在运行时动态调用对象的方法和属性&#xff0c;即可从运行时态的示例对象反求其编码阶段的定义…

LeetCode_21_简单_合并两个有序链表

文章目录 1. 题目2. 思路及代码实现&#xff08;Python&#xff09;2.1 递归2.2 迭代 1. 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a; l 1 [ 1 , 2 , 4 ] , l 2 [ 1 , 3 …

MongoDB聚合运算符:$cmp

文章目录 语法用法举例 $cmp聚合运算符返回连个值的比较结果。 语法 { $cmp: [ <expression1>, <expression2> ] }表达式可以是任何类型&#xff0c;使用标准的BSON比较顺序对不同类型的值进行比较。 用法 $cmp对两个值进行比较&#xff0c;返回&#xff1a; …

SQL注入漏洞解析-less-8(布尔盲注)

我们来看一下第八关 当我们进行尝试时&#xff0c;他只有You are in...........或者没有显示。 他只有对和错显示&#xff0c;那我们只能用对或者错误来猜他这个数据库 ?id1%27%20and%20ascii(substr(database(),1,1))>114-- ?id1%27%20and%20ascii(substr(database(),1,…

[WebUI Forge]ForgeUI的安装与使用 | 相比较于Auto1111 webui 6G显存速度提升60-75%

ForgeUI的github主页地址:https://github.com/lllyasviel/stable-diffusion-webui-forge Stable Diffusion WebUI Forge 是一个基于Stable Diffusion WebUI(基于Gradio)的平台,可简化开发、优化资源管理并加快推理速度。 “Forge”这个名字的灵感来自于“Minecraft Forge”…

Spring MVC HandlerMapping原理解析

在Spring MVC框架中&#xff0c;HandlerMapping是一个核心组件&#xff0c;负责将客户端的请求映射到相应的处理器&#xff08;Handler&#xff09;。理解HandlerMapping的原理对于掌握Spring MVC的请求处理机制至关重要。本文将对HandlerMapping的原理进行详细分析&#xff0c…

【MySQL】MySQL复合查询--多表查询自连接子查询 - 副本 (2)

文章目录 1.基本查询回顾2.多表查询3.自连接4.子查询 4.1单行子查询4.2多行子查询4.3多列子查询4.4在from子句中使用子查询4.5合并查询 4.5.1 union4.5.2 union all 1.基本查询回顾 表的内容如下&#xff1a; mysql> select * from emp; ----------------------------…

vue项目导出excel ,文件过大导致请求超时的处理方法

一、因为文件过大&#xff0c;请求时间较长&#xff0c;就会产生请求超时的情况&#xff0c;处理方式是可以分为三个接口&#xff0c;接口1用来获取id值&#xff0c;接口2利用id值发起请求&#xff0c;询问是否准备好下载&#xff0c;如果没准备好&#xff0c;则没隔一秒再次发…

便携式森林消防灭火泵:森林安全的守护者

在自然环境中&#xff0c;森林是地球生态系统的重要组成部分&#xff0c;它们为我们提供氧气、净化空气、防止土壤侵蚀等重要功能。然而&#xff0c;当森林发生火灾时&#xff0c;它们也会成为我们的噩梦。火势蔓延迅速&#xff0c;难以控制&#xff0c;对森林和生态环境造成严…

HTML5 CSS3 提高

一&#xff0c;HTML5的新特性 这些新特性都有兼容性问题&#xff0c;基本是IE9以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。 1.1新增语义化标签 注意&#xff1a; 1这种语义化标签主要是针对搜索引擎的 2这些新标签在页面…

FL Studio 21 Mac汉化免费版 附安装教程

FL Studio 21 Mac是Mac系统中的一款水果音乐编辑软件&#xff0c;提供多种插件&#xff0c;包括采样器、合成器和效果器&#xff0c;可编辑不同风格的音乐作品&#xff0c;Pattern/Song双模式&#xff0c;可兼容第三方插件和音效包&#xff0c;为您的创意插上翅膀。FL Studio 2…

尚硅谷webpack5笔记base部分

base 基本使用 Webpack 是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 我们将 Webpack 输出的文件叫做 bundle。 功能介绍 Webpack …