精华内容
下载资源
问答
  • STC89C52单片机波特率初值计算器和定时器初值计算器。
  • 51单片机之串口波特率计算方式0的波特率配置方式2的波特率配置方式1和3的波特率配置 232串口模式,共有4钟方式,其中方式0、方式2的波特率是固定的。方式1、方式3的是可变波特率,这两个是用T1定时器作为波特率发生...
  • 51单片机波特率计算公式方式0方式0的波特率固定为主振频率的1/12。方式2方式2的波特率由PCON的选择位SMOD来决定,可由下式表示:波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0...

    51单片机波特率怎么算?51单片机波特率计算公式

    方式0

    方式0的波特率固定为主振频率的1/12。

    方式2

    方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:

    波特率=2的SMOD次方除以64再乘一个fosc,也就是当SMOD=1时,波特率为1/32fosc,当SMOD=0时,波特率为1/64fosc

    方式1和方式3

    定时器T1作为波特率发生器,其公式如下:

    T1溢出率= T1计数率/产生溢出所需的周期数

    式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。

    定时器T1工作于方式0:溢出所需周期数=8192-x

    定时器T1工作于方式1:溢出所需周期数=65536-x

    定时器T1工作于方式2:溢出所需周期数=256-x

    因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。   当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。

    下表列出了定时器T1工作于方式2常用波特率及初值。

    常用波特率  Fosc(MHZ)  SMOD   TH1初值

    19200         11.0592     1      FDH

    9600           11.0592     0      FDH

    4800           11.0592     0      FAH

    2400           11.0592     0      F4H

    1200           11.0592     0      E8H

    例如

    9600 11.0592 0 FDH

    T1溢出率= T1计数率/产生溢出所需的周期数

    产生溢出所需的周期数=256-FD(253)=3

    SMOD=(11059200/12)*3 *1/32=9600

    展开全文
  • 51单片机波特率计算

    2020-07-14 11:12:00
    本文介绍了51单片机波特率计算的公式和方法。
  • #include "Reg52.H"/*******************************************************************请提前计算一下所选晶振能达到的最高速度,波特率不能超过最高速度(1) 波特率加倍(SMOD=1): Max_Baud = FOSC/12/16(2) ...

    #include "Reg52.H"

    /*******************************************************************

    请提前计算一下所选晶振能达到的最高速度,波特率不能超过最高速度

    (1) 波特率加倍(SMOD=1): Max_Baud = FOSC/12/16

    (2) 波特率不加倍(SMOD=0):Max_Baud = FOSC/12/32

    例如:22.1184MHz晶振,波特率加倍时,最大波特率=22118400/12/16=115200

    *******************************************************************/

    #define FOSC 22118400 //振荡频率

    #define BAUD 9600 //波特率

    #define SMOD 1 //是否波特率加倍

    #if SMOD

    #define TC_VAL (256-FOSC/16/12/BAUD)

    #else

    #define TC_VAL (256-FOSC/32/12/BAUD)

    #endif

    typedef unsigned char uint8;

    typedef unsigned int uint16;

    code const char str1[] = "Ther string is transmitted from 80C51!\r\n";

    code const char str2[] = "Author: xqlu(at)ysu.edu.cn\r\n";

    /***************函数声明*******************/

    void InitUART(void);

    void SendOneByte(uint8);

    void SendrStr(const uint8 *ptr);

    /****************主函数********************/

    void main(void)

    {

    uint8 i=0;

    InitUART();

    while(str2[i]!='\0')

    {

    SendOneByte(str2[i++]);

    }

    SendrStr(str1);

    while(1);

    }

    /****************中断服务函数***************/

    void UART_ISR(void) interrupt 4

    {

    uint8 RX_Data;

    //只响应“接收”中断,“发送”中断来了就直接抹掉

    if(RI)

    {

    RI = 0; //串口中断标志不能自己清除,需要手动清除

    RX_Data=SBUF;

    SendOneByte(RX_Data);

    }

    else

    TI = 0; //串口发中断是发送完缓冲区数据之后产生

    }

    /****************串口初始化函数*************/

    void InitUART(void)

    {

    TMOD = 0x20;

    SCON = 0x50;

    TH1 = TC_VAL;

    TL1 = TH1;

    PCON = 0x80; //发送速率加倍

    ES = 1;

    EA = 1;

    TR1 = 1;

    }

    /**************串口发送字符函数*************/

    void SendOneByte(uint8 c)

    {

    ES = 0; //禁止发送中断

    SBUF = c;

    while(!TI);

    TI = 0;

    ES = 1;

    }

    /**************串口发送字符串函数*************/

    void SendrStr(const uint8 *ptr)

    {

    do

    {

    SendOneByte(*ptr);

    }while(*ptr++!='\0');

    }

    展开全文
  • 8051单片机波特率计算公式(配套C语言例程) 水寒 8051 182 views 0 Comments 发表评论8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod /32)×(定时器T1溢出率),其中smod是PCON<...

    8051单片机波特率计算公式(配套C语言例程) 水寒 8051 182 views 0 Comments 发表评论

    8051单片机使用定时器1工作在方式2的情况下作为串口波特率发生器,其波特率=(2smod /32)×(定时器T1溢出率),其中smod是PCON<7>,表示是否波特率加倍,Fsoc是系统的晶振大小。

    波特率公式中:T1溢出率=溢出周期的倒数;溢出周期=(256-TH1)×12/Fosc; 最终公式:

    1-138-jpg_6_0_______-540-0-0-540.jpg

    1-68-jpg_6_0_______-511-0-138-511.jpg

    我们一般不太关注波特率的计算,而是关心选用的传输速度(波特率)去反算定时器1(自动重装模式)的初值(TH1),所以将上面的公式导一下,得到TH1的公式:

    下面针对串口发送程序,水寒写下例程,供大家参考。(我使用的是STC12C5A40S2调试,原则上在STC89C5x、AT89C5x等8051核心的单片机上都能够成功,由于程序比较简单,我没有试,但应该没有问题的)

    #include "Reg52.H"

    /******************************************************************* 请提前计算一下所选晶振能达到的最高速度,波特率不能超过最高速度

    (1) 波特率加倍(SMOD=1): Max_Baud = FOSC/12/16

    (2) 波特率不加倍(SMOD=0):Max_Baud = FOSC/12/32

    例如:22.1184MHz晶振,波特率加倍时,最大波特率=22118400/12/16=115200 *******************************************************************/ #define FOSC 22118400 //振荡频率

    #define BAUD 9600 //波特率

    展开全文
  • 单片机串口波特率计算工具,支持1T,6T,12T模式,里面有VC6.0版本原代码
  • NXP LPC系列单片机波特率计算工具,NXP LPC系列单片机波特率计算工具
  • 利用此计算器,很容易计算出51单片机波特率的定时器的初值,方便编程使用
  • MSP430系列单片机串口通讯波特率计算工具,可以方便计算串口
  • 51单片机串行口波特率计算

    万次阅读 多人点赞 2019-06-19 21:48:58
    在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 常用于串行口外接移位寄存器,以...

     

    1.工作方式介绍:

     

    方式 0 这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。 

    常用于串行口外接移位寄存器,以扩展并行I/O口,这种方式不适用与两个MCS-51之间的串行通信。
     

    方式1真正用于数据的串行发送和接收。TXD引脚和RXD引脚分别用于发送和接收数据。

    方式1收发1帧数据为10位,1个起始位(0),8个数据位,1个停止位(1),先发送或接收最低位。


    方式 2 串行口工作于方式2和方式3时,被定义为9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控为10的第九位数据和1位停止位1。采用这种方式可接收或发送 11 位数据,以 11 位为一帧,比方式 1 增加了一个数据位,其余相同。第 9 个数据即 D8 位具有特别的用途,可以通过软件控制它,再加特殊功能寄存器 SCON 中的 SM2 位的配合,可使 MCS-51 单片机串行口适用于多机通信。方式 2 的波特率固定,只有两种选择,为振荡率的 1/64 1/32 ,可由 PCON 的最高位选择。 

    方式 3 方式 3 与方式 2 完全类似,唯一的区别是方式 3 的波特率是可变的。而帧格式与方式 2- 样为 11 位一帧。所以方式 3 也适合于多机通信。

     

    SM0  SM1   方式   

     0      0        0   同步移位寄存器方式(用于扩展I/O口)

     0      1        1   8位异步收发,波特率可变(由定时器控制)

     1      0        2   9位异步收发,波特率为fosc/64fosc/32

     1      1        3   9位异步收发,波特率可变(由定时器控制)

     

    2.计算公式总结:

     

    方式0波特率固定为:fosc / 12

     

    方式1波特率的计算公式为:(串行口为波特率可变的8位异步通信接口,SMOD为PCON寄存器的最高位值(0或1))

             方式1波特率 =(2^SMOD / 32) * 定时器T1的溢出率

    注:当SMOD=1时,要比SMOD=0时的波特率加倍,所以也称SMOD位为波特率倍增位

     

    方式2的波特率由下式确定:

             方式2波特率=( 2^SMOD / 64) * fosc

    方式3的波特率由下式确定:

             方式3波特率 = (2^SMOD / 32) * 定时器T1的溢出率

     

    溢出速率 = 1 / 溢出时间

    溢出时间(相当于定时时间)= (2^8 – TH1初值)* Tcy

    机器周期Tcy = 12时钟周期 = 12*(1/fosc)

    故:溢出速率 = 1 / 溢出时间 = 1 / [(256 - TH1初值)* (12 / fosc)] = fosc / [12 *(256-TH1初值)]

    计数速率 = 1 / 计数时间 = 1 / (12 / fosc) = fosc / 12

    故也可写成:溢出速率 = 计数速率 / (256-TH1初值) = fosc / [12 *(256-TH1初值)]   

    注:一般来说,定时器方式2用来确定波特率是比较理想的,它不需要中断服务程序设置初值,且算出的波特率比较准确。在用户使用的波特率不是很低的情况下,建议使用定时器T1的方式2来确定波特率。定时器方式1或方式3定时,常用T1作为波特率发生器。

    而对于定时器方式0和方式1的最大特点是计数溢出后,计数器为全0。因而在循环定时或循环计数应用时就存在反复装入计数初值的问题。这不仅影响定时精度,而且也给程序设计带来麻烦。方式2就是针对此问题而设置的。定时器/计数器的方式2位自动恢复初值的(初值自动装入)8位定时器/计数器,TLX作为常数缓冲器,当TLX计数器溢出时,在置1溢出标志位TFX的同时,还自动的将THX中的初值送入至TLX,使TLX从处置开始重新计数。这种方式可以省去用户软件中重装处置的程序,简化定时器初值的计算方法,可以相当精确的确定定时时间。

    而定时器方式3是为了增加1个附加的8位定时器/计数器而提供的,从而使MCS-51具有3个定时器/计数器。方式3只适用于定时器/计数器T0,定时器/计数器T1不能工作在方式3。T1处于方式3时相当于TR0=0,停止计数(此时T1可以用来做串口波特率发生器。)

    展开全文
  • 单片机串口波特率计算助手
  • PIC单片机串口波特率计算器 波特率计算软件 PIC单片机串口波特率计算器 波特率计算软件
  • 本篇文章介绍了51单片机当中晶振和波特率的关系,并用数值进行了计算。希望大家在阅读过本篇文章之后能对两者的联系有进一步的了解。
  • 本文介绍的是用预编译的方法实现430单片机计算波特率的程序设计。
  • 采用的一种波特率自适应方法,该方法充分利用STC单片机运行速度快、拥有片内振荡器、片内资源丰富的特点,在串行通信程序,利用单片机I/O口和定时器,对主机发送的固定字符进行测量、计算,得到合适的波特率常数,...
  • 单片机开发波特率计算小程序,很好用!单片机开发波特率计算小程序,很好用
  • 用于C8051F580单片机CAN 波特率计算 。根据选择的时钟,需要设置的CAN波特率,生产配置CAN寄存器的参数。
  • 溢出率=1/溢出一次的时间; 溢出一次的时间=(0x100-初始值)*(12/fosc) //fsoc为晶振频率 溢出率=(0x100-初始值)*(fosc/12) 【这里选取定时器1,...所以:波特率=( (2^SMOD)/32 )*T1溢出率 //串口工作模式1 ...
  • 华帮8位单片机波特率计算工具
  • 51单片机串口波特率计算

    千次阅读 2017-04-04 14:08:58
    bot=256-(11059200/9600/32) 此处波特率为9600 11.0592M晶振可以支持基本波特率 对于12M晶振有所不同 bot=256-(1200000/4800/32) 此处波特率为4800 12M这里波特率设置不能超过4800,因为超过后,时钟...
  • 本文介绍了stm32单片机串口通信时波特率计算方法以及原理。
  • 采用的一种波特率自适应方法,该方法充分利用STC单片机运行速度快、拥有片内振荡器、片内资源丰富的特点,在串行通信程序,利用单片机I/O口和定时器,对主机发送的固定字符进行测量、计算,得到合适的波特率常数,...
  • MSP430单片机波特率计算工具,方便好用
  • 很多同学在学习单片机过程遇到了很多的问题,比如串口,串口是单片机的一块重要知识,学不好学不会都将对单片机而言是一种缺憾,最近我遇到了问题,怎样设置波特率,SMOD是波特率加倍的一个困惑之地,见后续 ...
  • STC12C5A60S2单片机兼容80C51单片机,其串口波特率可以由定时器产生,也可以由独立波特率发生器产生。其波特率模式可以是固定的,也可以是可变的。  固定波特率:当 模式0的通信速度设置 位UART_M0x6/AUXR.5 = 0时...
  • 计算51单片机波特率需要的定时器初始值,减小计算麻烦,方便准确,能够显示误差范围.
  • STC单片机波特率计算

    千次阅读 2010-08-17 22:42:00
    正在做STC系列单片机的串口实验, 可是上网没找到适合的波特率计算软件,总不能每次都用脑袋算吧, 干脆花了点时间写了个小程序,粗糙了些,但将就着用呗,呵呵 <br />  程序: #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,578
精华内容 2,631
关键字:

单片机中波特率的计算