51系列单片机波特率的计算方法(最终版本)

上传人:简****9 文档编号:105300531 上传时间:2019-10-11 格式:PDF 页数:11 大小:976.07KB
返回 下载 相关 举报
51系列单片机波特率的计算方法(最终版本)_第1页
第1页 / 共11页
51系列单片机波特率的计算方法(最终版本)_第2页
第2页 / 共11页
51系列单片机波特率的计算方法(最终版本)_第3页
第3页 / 共11页
51系列单片机波特率的计算方法(最终版本)_第4页
第4页 / 共11页
51系列单片机波特率的计算方法(最终版本)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《51系列单片机波特率的计算方法(最终版本)》由会员分享,可在线阅读,更多相关《51系列单片机波特率的计算方法(最终版本)(11页珍藏版)》请在金锄头文库上搜索。

1、STCSTC 单片机串口单片机串口 1 1 用定时器用定时器 1 1 模式模式 2 2 做波特率发生器的计算方法做波特率发生器的计算方法 一、 基本原理说明 定时器定时器 1 1 工作在方式工作在方式 2 2 是一种既省事又精确的产生串行口波特率的方 法。原因是定时器 T1 工作方式 2 是一种 8 位自动重装方式,无需在中断服 务程序中送数,没有由于中断引起的误差。 波特率的计算公式:波特率的计算公式: 设定时器 T1 方式 2 的初值为 X,则有:定时器 T1 的溢出率=计数速率 /(256-X)=fosc/(256-X)*12;(注:注:12 分频的单片机分频的单片机) 则方式 2 的波

2、特率=2 SMOD *fosc /(256-X)*12*32. 故定时器定时器 T1T1 初值为初值为 X=X=256-(2256-(2 SMODSMOD * * foscfosc)/ / (12*32*(12*32*波特率波特率) ) foscfosc 表示单片机的晶振时钟的频率,单位是表示单片机的晶振时钟的频率,单位是 HZ;HZ; 波特率单位是波特率单位是 BPSBPS 或者或者 HZHZ;SMODSMOD 表示串口表示串口 波特率波特率倍速倍速选择位,选择位,SMOD=1SMOD=1,则通信方式,则通信方式 1 1、2 2、3 3 的波特率加倍,反之不加倍。的波特率加倍,反之不加倍。

3、二、计算题 1 1 波特率的计算公式:波特率的计算公式: 注意:注意:串口波特率一般设置为串口波特率一般设置为 9600Hz(9600bps),4800Hz(4800bps),其他波特率都有误差。,其他波特率都有误差。 图 1此图中波特率是 19200BPS、57600BPS 时候,存在存在误差误差 2 2溢出率:溢出率:溢出率应该是每秒溢出的次数。 T1 定时器定时器(8 位位自动重加载自动重加载)的溢出率的溢出率= fosc/(12*(256-TL1)fosc 表示单片机的表示单片机的 晶振时钟的频率晶振时钟的频率 综合式:综合式:波特率=(2SMOD/32)*( T1 的溢出率)= (2

4、SMOD/32)*( fosc/(12*(256-TL1) =(2SMOD* *fosc)/(394* *(256-TL1) 12/fosc=每个机器周期时间(fosc 单片机的晶振时钟的频率),8 位定时器 T1 溢出一次所 需的时间=(12/fosc)*(256-初值)=溢出一次所需的时间,最后用 1 除以该数就代表每秒溢出的次 数,也称作溢出率。 计数速率计数速率 = fosc / 12(12 分频的单片机分频的单片机) 溢出速率溢出速率 = 1 / 一次溢出时间 = 1 /(256 - TL1 初值)* (12 / fosc) = fosc / (12 *(256-TL1 初值初值)

5、3.3.计算例题计算例题 (1) 若 STC 单片机的晶振频率 fosc 为 11.0592MHz,串行口 1 工作在方式 1,定时器 T1 作为波特率发生器,T1 在工作模式 2 自动重装初值的 8 位定时方式,已知 SMOD=0,要求串 行口 1 的波特率为 9600Hz(9600bps),请计算定时器 T1 的初始值 TL1=?。 解解 答:答: (a) 因 SMOD=0,波特率=(2SMOD/32)*( T1 的溢出率)= ( T1 的溢出率)/32=9.6 Kbps 计算得, T1 的溢出率=9.6 KHz*32=307.2KHz=0.3072 MHz (b)T1 的溢出率=fosc

6、/(12*(256-TL1) =11.0592 MHz /(12*(256-TL1)= 0.3072 MHz 计算得, TL1=253=0xFDH (c)STC-ISP 软件计算结果如下图所示: (d) C 语言编写的串口 1 和定时器 1 初始化代码如下: void UartInit(void)/9600bps11.0592MHz PCON /波特率不倍速 SCON = 0x50;/8 位数据,可变波特率 AUXR /定时器 1 时钟为 Fosc/12,即 12T AUXR /串口 1 选择定时器 1 为波特率发生器 TMOD /清除定时器 1 模式位 TMOD |= 0x20;/设定定时器

7、 1 为 8 位自动重装方式 TL1 = 0xFD;/设定定时初值 TH1 = 0xFD;/设定定时器重装值 ET1 = 0;/禁止定时器 1 中断 TR1 = 1;/启动定时器 1 电源控制寄存器电源控制寄存器 PCON 初值初值: 0X7FH-0111 1111PCON 比特比特B7B6B5B4B3B2B1B0 名字名字 SMODSMOD0LVDFPOFGF1GF0PDIDL 值值01111111 SMOD =0;表示串口;表示串口 1 的波特率不加倍;的波特率不加倍; SMOD0、LVDF、POF、GF1、GF0、PD、IDL 维持原状态位不变;维持原状态位不变; 串口串口 1 控制寄存

8、器控制寄存器 SC0N 初值初值: 0X50H-0101 0000SC0N 比特比特B7B6B5B4B3B2B1B0 名字名字 SM0/FESM1SM2RENTB8RB8TIRI 值值01010000 SMOD0=0, SM1 =1;表示串口表示串口 1 工作在模式工作在模式 1 方式;方式; SM2=0;表示串口表示串口 1 在方式在方式 1 非多机通信方式;非多机通信方式; REN=1;表示维持原状态位不变;表示维持原状态位不变; TB8、RB8、TI、RI 各位分别置各位分别置 0; 辅助寄存器辅助寄存器 AUXR 初值:初值:0XBFH-1011 1111AUXR 比特比特B7B6B5

9、B4B3B2B1B0 名字名字T0X12T1X12UART_M0x6T2RT2_C/TT2x12EXTRAMS1ST2 值值10111111 T1X12=0;表示定时器表示定时器 1 是是 12 分频,其速度是传统分频,其速度是传统 8051 的速度;的速度; T0X12、UART_M0x6、T2R、T2_C/T、T2x12、EXTRAM、S1ST2 维持原状态位值不变;维持原状态位值不变; 辅助寄存器辅助寄存器 AUXR 初值:初值:0XFEH-1111 1110AUXR 比特比特B7B6B5B4B3B2B1B0 名字名字T0X12T1X12UART_M0x6T2RT2_C/TT2x12EX

10、TRAMS1ST2 值值11111110 S1ST2=0;表示定时器;表示定时器 1 作为串口作为串口 1 的波特率发生器;的波特率发生器; T0X12、T1X12、UART_M0x6、T2R、T2_C/T、T2x12、EXTRAM 维持原状态位值不变;维持原状态位值不变; 辅助寄存器辅助寄存器 AUXR 初值:初值:0XBEH-1011 1110AUXR 比特比特B7B6B5B4B3B2B1B0 名字名字T0X12T1X12UART_M0x6T2RT2_C/TT2x12EXTRAMS1ST2 值值10111110 T1X12=0;表示定时器表示定时器 1 是是 12 分频,其速度是传统分频,

11、其速度是传统 8051 的速度;的速度; S1ST2=0;表示定时器;表示定时器 1 作为串口作为串口 1 的波特率发生器;的波特率发生器; T0X12、UART_M0x6、T2R、T2_C/T、T2x12、EXTRAM 维持原状态维持原状态 位值不变;位值不变; 定时器工作模式寄存器定时器工作模式寄存器 TMOD 寄存器初值:寄存器初值:0X0FH-0000 1111 TMOD 表示不要求条件表示不要求条件 INT1 引脚为高引脚为高, 并且并且 TR1=1 的条件定的条件定 时,亦即定时不受任何条件限制;时,亦即定时不受任何条件限制; C/T=0;该位为该位为 0 时,表示定时器时,表示定

12、时器 1 工作在定时模式;工作在定时模式; M1=0,M0=0; 表示定时器表示定时器 1-16 位自动重新加载模式;位自动重新加载模式; B3、B2、B1、B0 维持原状态位值不变;维持原状态位值不变; 定时器工作模式寄存器定时器工作模式寄存器 TMOD 初值:初值:0X20H-0010 0000 TMOD|=0X20; 比特比特B7B6B5B4B3B2B1B0 名字名字GATE C/TM1M0GATE C/TM1M0 值值00100000 作用域作用域与定时器与定时器 1 有关有关与定时器与定时器 0 有关有关 M1=1,M0=0; 表示定时器表示定时器 1-8 位自动重新加载模式;位自动

13、重新加载模式; B7、B6、B4、B3、B2、B1、B0 维持原状态位值不变;维持原状态位值不变; (2) 若 STC 单片机的晶振频率 fosc 为 11.0592MHz,串行口 1 工作在方式 1,定时器 T1 作 为波特率发生器,T1 在工作模式 2 自动重装初值的 8 位定时方式,已知 SMOD=1,要求串行 口 1 的波特率为 9600Hz(9600bps),请计算定时器 T1 的初始值 TL1=?。 解解 答:答: (a) 因 SMOD=0,波特率=(2SMOD/32)*( T1 的溢出率)= ( T1 的溢出率)/32=9.6 Kbps 计算 得,T1 的溢出率=9.6 KHz*

14、16=153.6KHz=0.1536 MHz (b)T1 的溢出率=fosc/(12*(256-TL1) =11.0592 MHz /(12*(256-TL1)= 0.1536 MHz 计算得, TL1=250=0xFAH (c)STC-ISP 软件计算结果如下图所示: (d) C 语言编写的串口 1 和定时器 1 初始化代码如下: void UartInit(void)/9600bps11.0592MHz PCON |= 0x80;/使能波特率倍速位 SMOD SCON = 0x50;/8 位数据,可变波特率 AUXR /定时器 1 时钟为 Fosc/12,即 12T AUXR /串口 1

15、选择定时器 1 为波特率发生器 TMOD /清除定时器 1 模式位 TMOD |= 0x20;/设定定时器 1 为 8 位自动重装方式 TL1 = 0xFA;/设定定时初值 TH1 = 0xFA;/设定定时器重装值 ET1 = 0;/禁止定时器 1 中断 TR1 = 1;/启动定时器 1 电源控制寄存器电源控制寄存器 PCON 初值初值: 0X80H-1000 0000PCON 比特比特B7B6B5B4B3B2B1B0 名字名字 SMODSMOD0LVDFPOFGF1GF0PDIDL 值值10000000 SMOD =1;表示串口;表示串口 1 的在工作方式的在工作方式 1、2、3 时候波特率

16、加倍;时候波特率加倍; SMOD0、LVDF、POF、GF1、GF0、PD、IDL 全部置全部置 0; 定时器的初值是定时器的初值是 0XFAH、0XFDH 在波特率加倍、不加倍实现方法在波特率加倍、不加倍实现方法比较图比较图 定定时时器器的的初初值值是是0XFAH SMOD=0(波特率不加倍),波特率是4800bpsSMOD=1(波特率加倍),波特率是9600bps 定定时时器器的的初初值值是是0XFDH SMOD=0(波特率不加倍),波特率是9600bpsSMOD=1(波特率加倍),波特率是19200bps 思思考考题题 1. 若 STC 单片机的晶振频率 fosc 为 11.0592MHz,串行口 1 工作在方式 1,定时器 T1 作为波 特率发生器,T1 在工作模式 2 自动重装初值的 8 位

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号