51单片机波特率的计算方法

news2024/11/13 11:18:46

通过51单片机的波特率,来计算定时器的初始值。

定时器的溢出率公式 :
1 / ov = 1/f * 12 *(256 - init)
(ov为溢出率,溢出频率; init 为初始值; f为时钟频率, 比如12M或者11.0592M等)

波特率的计算公式
baud = 2^smod * ov / 32 = 2^smod * f / (12 * 32 * (256 - init))
(baud为波特率 比如4800, 9600 等; smod为51单片机中频率加倍标志)

ov = 32 * baud / (2 ^ smod) = f / (12 * (256 - init))

init = 256 - f * (2^ smod) / (12 * 32 * baud)

算例1:
假如要设定
baud = 4800
smod = 1
f = 12M = 12_000_000

通过上面的式子
init = 256 - f * 2 / (12 * 32 * 4800) = 256 - f / 921600 = 242.97916666666666
四舍五入为 243 = 0xf3
实际 baud = 4807.692307692308
误差 0.16%

与stc的工具进行验证
在这里插入图片描述
算例2
假如要设定
baud = 4800
smod = 0
f = 12M = 12_000_000

通过计算
init = 249.48958333333334
init = 249 = ‘0xf9’
实际baud = 4464.285714285715
误差 6.99%

在这里插入图片描述
算例3:
假如要设定
baud = 4800
smod = 0
f = 11.0592M = 11_059_200

通过计算
init = 250.00 = 0xfa
误差为0

通过分析初始值计算公式
init = 256 - f * 2 ^smod/ (12 * 32 * baud) = 256 - f * 2^smod / (384 * baud)

关键是要让
f * 2^smod 能被 384 ** baud 整除就行 (先不考虑除数要小于 256的情况, 因为如果大于256 可以通过提高波特率来解决)
也可以先假定 smod = 0, 如果smod = 1, 把波特率提高1倍 与smod=0情况一样

假如f = 12M
12M / 384 = 31250.0 (整数)

很容易看出来下面的波特率都可以达到0误差的情况
baud = 3125 (smod = 0) init = 0xf6
baud = 6250 (smod = 0) init = 0xfb
baud = 12500 (smod = 1)init = 0xfb

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

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

相关文章

自己开发完整项目一、登录注册功能-01

一、创建spingboot项目框架 1.首先创建一个空的项目作为父项目,之后的所有都在此基础上创建模块进行开发。 2.创建负责登录注册功能模块 二、启动项目 1.出现如下错误,代表着端口号被占用,这个时候,我们可以进行端口号的修改。 …

如何从笔记本电脑或台式电脑恢复丢失的照片和视频

意外删除或丢失笔记本电脑或 PC 上的照片和视频是一个常见问题。不用担心,在此博客中,我们解释了从笔记本电脑或 PC 恢复丢失的照片和视频的各种方法。专业的数据恢复软件,例如奇客 数据恢复工具,可以帮助用户找回丢失的文件。 提…

微信小程序uni :class不支持xxx语法

问题代码&#xff1a; <view class"cellTop"><view>{{list.payTime}}</view><view :class"payStatusClass${list.payStatus}">{{payStatusDe[list.payStatus]}}</view></view> .payStatusClass1{color: rgb(246, 122,…

传输层协议-UDP数据报

UDP协议的特点 面向数据报&#xff0c;无连接&#xff0c;不可靠&#xff0c;全双工 面向数据报&#xff1a;是指该协议在传输数据的时候使用的是数据报&#xff1b; 无连接&#xff1a;指的是发送数据不需要两个进程连接在一起&#xff0c;类似生活中我们发送短信&#xff0…

代码随想录跟练第九天——LeetCode 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

拔了智齿后&#xff0c;好久没有总结了&#xff0c;先补一点 232.用栈实现队列 力扣题目链接(opens new window) 使用栈实现队列的下列操作&#xff1a; push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- …

解锁App推广新姿势,Xinstall带你玩转投放查看

在移动互联网时代&#xff0c;App推广和运营成为了各大企业和开发者关注的焦点。然而&#xff0c;在这个过程中&#xff0c;推广者常常面临一些痛点&#xff0c;比如无法实时查看投放效果、数据不透明、难以精准定位目标用户等。这些问题不仅影响了推广效果&#xff0c;还可能导…

这些网络设备知名厂商你都不知道?白干这行了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好啊&#xff0c;我的网工朋友。 信息技术的快速发展&#xff0c;网络行业已经成为推动全球经济和社会进步的重要力量之一。无论是企业还是个…

CI/CD实践(五)Jenkins Docker 自动化构建部署Node服务

微服务CI/CD实践系列&#xff1a; 微服务CI/CD实践&#xff08;一&#xff09;环境准备及虚拟机创建 微服务CI/CD实践&#xff08;二&#xff09;服务器先决准备 微服务CI/CD实践&#xff08;三&#xff09;gitlab部署及nexus3部署 微服务CI/CD实践&#xff08;四&#xff09…

Linux驱动学习之input子系统

简介 input 子系统就是管理输入的子系统&#xff0c;和pinctrl、gpio 子系统一样&#xff0c;都是 Linux 内核针对某一类设备而创建的框架。按键、鼠标、键盘、触摸屏等都属于输入设备&#xff0c;linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。输入设备本…

day44——面向对象特征

一、封装 1.1 面向对象的三大特质 封装、继承、多态&#xff0c;如果问有四大特征&#xff0c;可以外加一个抽象 封装&#xff1a;将实现同一事物的所有的属性&#xff08;成员变量&#xff09;和行为&#xff08;成员函数&#xff09;封装到一个整体&#xff0c;我们称之为…

【Datawhale AI夏令营】从零上手CV竞赛Task2

文章目录 前言一、YOLO是什么&#xff1f;二、YOLO的历史三、性能指标四、 性能指标计算公式五、性能优化总结 前言 本文的Task2是对Task1的baseline代码进行优化的过程。 一、YOLO是什么&#xff1f; 首先简单介绍一下YOLO模型&#xff1a; 物体检测算法主要分为两类&#…

MSTP多实例生成树的配置

SW1配置&#xff1a; vlan batch 1 to 100 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 2 to 4094 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 2 to 4094 stp mode mstp //修改生成树的模式为…

【多线程】创建线程到底是多少种方法?

&#x1f970;&#x1f970;&#x1f970;来都来了&#xff0c;不妨点个关注叭&#xff01; &#x1f449;博客主页&#xff1a;欢迎各位大佬!&#x1f448; 文章目录 1. 创建线程的两种方式总结(最官方)1.1 继承 Thread 类1.2 实现 Runnable 接口1.3 优先考虑使用第二种 —— …

三. Spring Boot 当中的“容器功能” 和 “配置绑定” 的详细剖析(附+源代码流程)

三. Spring Boot 当中的“容器功能” 和 “配置绑定” 的详细剖析(附源代码流程) 文章目录 三. Spring Boot 当中的“容器功能” 和 “配置绑定” 的详细剖析(附源代码流程)1. Spring Boot 是继续支持了 Spring 当中的注解的1.2 Spring 当中的 Component&#xff0c;Controller…

通过visual studio进行dump文件调试和分析

0、前言 很多时候程序crash之后需要分析原因。对于C/C程序&#xff0c;一般最常见的场景和方法就是根据dump文件进行分析。 1、分析的前提条件 进行dump文件分析&#xff0c;需要以下文件&#xff1a; 进程crash时产生的dump文件程序源码进程对应的程序exe文件编译exe文件时产…

QT Quick QML 添加海康威视SDK云台控制模块

文章目录 1. 配置海康威视 SDK 下载SDK文件移植工程文件添加 2. 函数调用流程接口参考代码 3. 代码后端核心代码前端核心代码 GitHub 源码: QmlLearningPro &#xff0c;选择子工程 HkwsDemo.pro &#xff08;暂未上传&#xff09; QML 其它文章请点击这里: QT QUICK …

Monibuca实战:如何用Go语言打造高效的直播后端

简介 Monibuca&#xff08;简称&#xff1a;m7s&#xff09; 是一个开源的实时流媒体服务器开发框架&#xff0c;使用 Go 语言编写。 它的设计目标是提供一个高性能、可扩展、易于定制的实时流媒体服务器解决方案。 Monibuca 的核心理念是模块化&#xff0c;允许开发者根据需…

文件禁止外发的方法有哪些?企业如何禁止文件外发:六个控制文件外发的小窍门!

想象一下&#xff0c;企业信息如同珍贵的宝藏&#xff0c;而文件外发就像不经意间打开的后门&#xff0c;让宝藏暴露在风雨之中&#xff01;今天&#xff0c;我们就来聊聊如何给这扇后门加上六道坚实的锁&#xff0c;确保企业信息的安全无虞。让我们一起探索六个控制文件外发的…

Mask R-CNN论文原理讲解

论文:arxiv.org/pdf/1703.06870 代码&#xff1a;maskrcnn-benchmark:Fast, modular reference implementation of Instance Segmentation and Object Detection algorithms in PyTorch. - GitCode Mask R-CNN简介 Mask R-CNN是何凯明大神的新作。Mask R-CNN是一种在有效检测…

武器弹药制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

武器弹药制造领域作为国防工业的重要组成部分&#xff0c;其数字化转型更是关乎国家安全与军事实力提升的关键。随着5G、物联网、大数据、云计算及人工智能等先进技术的融合应用&#xff0c;武器弹药制造5G智能工厂物联数字孪生平台应运而生&#xff0c;正逐步成为推进制造业数…