51单片机之串口波特率计算

  • 方式0的波特率配置
  • 方式2的波特率配置
  • 方式1和3的波特率配置

232串口模式,共有4钟方式,其中方式0、方式2的波特率是固定的。方式1、方式3的是可变波特率,这两个是用T1定时器作为波特率发生器。

方式0的波特率配置

方式0的波特率计算公式如下:

B=fosc/12B = {\rm{fosc/12}}B=fosc/12

其中B是波特率,fosc是晶振的频率。

方式2的波特率配置

方式2的波特率计算公式如下:
B=(2SMOD/64)∗fosc{\rm{B = (}}{{\rm{2}}^{SMOD}}{\rm{/64)}} * {\rm{fosc}}B=(2SMOD/64)∗fosc

其中B是波特率,fosc是晶振的频率,SMOD是PCON寄存器最高位。

方式1和3的波特率配置

由于方式1和3是用T1定时器作为波特率发生器,计算时间常数就可以了。此时T1一般工作在方式2(8为位自动重装入工作方式)。
波特率的计算公式是:
B=(2SMOD/32)∗T1B = ({2^{SMOD}}/32) * T1B=(2SMOD/32)∗T1
因此我们只需要计算出T1溢出率,就可以得到波特率了,下面我们就去求解溢出率。

计数器初值X的公式中:t是溢出时间,T是机器周期
X=28−t/TX = 2^8 - t/TX=28−t/T

溢出时间t的公式中:T=1/f,但是定时器的是要晶振的12分频,所以这里出现个12。
t=(28−X)∗T=(28−X)∗12/fosct = ({2^8} - X) * T = ({2^8} - X) * 12/fosct=(28−X)∗T=(28−X)∗12/fosc

T1溢出率T1:是有上面的溢出时间直接求倒数。
T1=1/t=fosc/[12∗(28−X)]T1= 1/t = fosc/[12 * ({2^8} - X)]T1=1/t=fosc/[12∗(28−X)]

因此我们就可以把T1代入后得到:
B=(2SMOD/32)∗fosc/[12∗(28−X)]B = ({2^{SMOD}}/32) * fosc/[12 *( {2^8} - X)]B=(2SMOD/32)∗fosc/[12∗(28−X)]

但是我们一般做题都是已知波特率,求定时器初值X。因此我们经过变换可以得到:
X=28−(fosc/12)∗[2SMOD/(32∗B)]X{\rm{ = }}{2^8}{\rm{ - }}(fosc/12) * [{2^{SMOD}}/(32 * B)]X=28−(fosc/12)∗[2SMOD/(32∗B)]
因为我们用的是定时器的模式2,因此TH1和TL1都是等于X的值。

51单片机之串口波特率配置相关推荐

  1. 51单片机中串口波特率的计算方法详解

    首先,波特率并不是指每秒传送多少个字节,而是指每秒能够传送多少个二进制.举例:波特率为9600代表每秒能够传送9600个二进制,而一个字节=8个二进制. 那么,串口是按照什么时间标准来发送数据的? 其 ...

  2. 『51单片机』串口通信配置

  3. 51单片机(STC)串口无阻塞发送函数

    目录 一.简介 1.1.开发环境 1.2.功能描述 二.串口程序 2.1.串口配置 2.2.变量定义 2.3.中断函数 2.4.发送函数 一.简介 1.1.开发环境 KeilC51,单片机型号STC1 ...

  4. 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释

    这里写自定义目录标题 KEIL自己先调试通了然后再说下面的事 51单片机stc15w204s串口通信直接上文件 KEIL自己先调试通了然后再说下面的自己看看就可 KEIL自己先调试通了然后再说下面的事 ...

  5. 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信

    描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...

  6. Proteus仿真stm32和51单片机,串口通信调试过程记录

    前言 本文所用Proteus版本为8.10,主要内容为在Proteus中仿真stm32和51单片机进行串口通信,记录了仿真过程中遇到的问题和解决办法.        这里要注意的是,在Proteus中 ...

  7. MATLAB与51单片机进行串口通信详解

    目录 一.51单片机与电脑进行串口通信 二.MATLAB串口通信函数 三.串口属性 四.示例Demo 4.1 MATLAB接收单片机发来的数据 4.2 MATLAB向单片机发送数据控制LED 五.总结 ...

  8. 51单片机双机串口数码管显示排队叫号仿真设计( proteus仿真+程序+报告+讲解视频)

    51单片机双机串口数码管显示排队叫号仿真设计 1.主要功能: 2.仿真 3.程序 4.设计报告 1.1 设计背景与意义 1.2 设计目的 1.3 设计要求及内容 1.4 本文结构安排 2 总体设计方案 ...

  9. 51单片机C语言波特率十六进制,理解51单片机串口通信的波特率与USB转串口通信...

    RS232 在我们电脑上,一般都会有一个9针的串行接口,这个串行接口叫做RS232接口,它和UART通信有关联,但是由于现在笔记本电脑不带9针串口,所以和单片机通信越来越趋于使用USB虚拟串口. 九针 ...

最新文章

  1. php smtp 超时,SMTP错误:无法连接到服务器:连接超时(110)与PHPMailer和Outlook SMTP
  2. Android 每天定时提醒功能实现
  3. TensorFlow:实战Google深度学习框架(二)实现简单神经网络
  4. AT指令联网---以鸿蒙开发板为例
  5. 与资源库同步时,我的svn报错 Previous operation has not finished; run 'cleanup' if it was interrupted...
  6. python redis pipeline 堆积_Redis Pipeline python
  7. request的获取路径用法小结
  8. Mac 下如何安装odps eclipse插件
  9. d-s证据理论 matlab 完整代码
  10. java jdom格式,java使用jdom生成xml格式文件
  11. 女主学数学男主计算机,5本女主是高智商学霸大佬的现言,她十项全能,马甲无数,男主全程无条件宠妻...
  12. 01 牛顿迭代公式
  13. 银行技术岗笔试计算机基础知识点,想去银行技术岗,考试都考啥?
  14. kali linux安全牛教程,Kali Linux渗透测试(安全牛)最新完整版教程160G
  15. 云栖大会 mysql_【资料合集】2018云栖大会•深圳峰会回顾:PDF下载
  16. 2014年多益网络春季校园招聘机试题
  17. 小百对python的缺省参数的理解
  18. 2.1 Java范型
  19. 【浏览器】浏览器缓存
  20. (Fabric 学习六)Fabric2.0 私有数据 使用marbles官方示例

热门文章

  1. Keil 出现报错:undefined symbol
  2. 这 7 个牛逼项目,不来看看~~
  3. 定时开关机的八种方法
  4. URLRewrite地址重定向的实现
  5. 做软件测试工程师真的很容易吗?
  6. 做微商如何快速建立信任?
  7. PCI - PCI概述
  8. Linux系统学习了解计算机
  9. Android 输入法详解
  10. 解决SAP业务问题的思考——逆向思维