用51单片机+11.0592的晶振,如何产生115200的波特率
来源:互联网 发布:淘宝卖家信息采集软件 编辑:程序博客网 时间:2024/04/30 11:08
原文地址http://homezzy.blog.hexun.com/29601793_d.html
以前自己也遇到过这种情况,模块115200波特率而且不能更改,如何用51产生115200波特率,最近朋友也可能遇到这个问题,,特转载一下原文博客大神的文章
今天解决了一个小问题(查书后才得到确切结论。。。)用51单片机+11.0592的晶振,如何产生115200的波特率?
本来感觉这个小意思,直接初始化定时器1,程序如下:
void init_com( void ) { SCON = 0x50 ; //串口工作方式1,8位UART,波特率可变 TMOD |= 0x20 ; //定时器1,工作方式2,自动再装入8位定时器 PCON |= 0x80 ; //SMOD=1; 波特率加倍 TH1 = 0xfa ; //波特率:9600 晶振=11.0592MHz IE |= 0x90 ; //使能串口中断 TR1 = 1 ; // 定时器1开始 }
结果发现这样只能得到9600的波特率。。。
当SMOD=1时,K=2,波特率加倍,公式为:
波特率=K×11059200/32×12×(256-TH1)
所以,TH1=0xfa=256-(2×11059200/384×波特率) 其中波特率为9600
这时,及时令TH1=0xff,所得波特率最大只能为57600,也就是说,这样无法得到115200的波特率。。。
这样就只有采用其他方法了:
1、换晶振,用22.1184M晶振,在TH1=0xff时,刚好可以产生115200波特率。
2、采用6个时钟周期的单片机(换单片机啊。。。)
3、增强型51单片机有定时器2!(幸好偶用的是增强型。。。)
就用第三种方法啦!这时的公式如下:
波特率=11059200/32×[65535-(RCAP2H,RCAP2L)]
其中的RCAP2H,RCAP2L为自动重装值,由上式得:
RCAP2H,RCAP2L=65536-11059200/32×波特率
这样得波特率为115200时,RCAP2H,RCAP2L=0xff,0xfd,初始化程序如下:
void init_com( void ) { SCON=0x50; //串口工作方式1,8位UART,波特率可变 TH2=0xFF; TL2=0xFD; //波特率:115200 晶振=11.0592MHz RCAP2H=0xFF; RCAP2L=0xFD; //16位自动再装入值 /*****************/ TCLK=1; RCLK=1; C_T2=0; EXEN2=0; //波特率发生器工作方式/*****************/ TR2=1 ; //定时器2开始}
OK!这样就实现用51单片机+11.0592的晶振,产生115200的波特率了,当然老鸟看来很基本,但好长时间不用了,再复习一下~~
- 用51单片机+11.0592的晶振,如何产生115200的波特率
- 用51单片机+11.0592的晶振,如何产生115200的波特率
- 用51单片机+11.0592的晶振,如何产生115200的波特率
- 用51单片机+11.0592的晶振,如何产生115200的波特率
- 关于89C52单片机11.0592M晶振产生115200波特率的方法
- 51单片机 11.0592MHz 产生115200 波特率
- 51单片机 11.0592MHz 产生115200 波特率
- 51单片机的波特率
- 单片机晶振和波特率的关系
- 51单片机波特率和晶振的计算
- 51单片机晶振与波特率的关系
- STC单片机11.0592晶振实现115200波特率串口通信
- 51系列单片机的系统时钟如何产生
- msp430单片机波特率的计算和设置
- msp430单片机波特率的计算和设置
- 51单片机,波特率和定时器方式一12M和11.0592M晶振初值问题
- 【51单片机】波特率
- 单片机SPWM的产生
- 深入分析js中的constructor 和prototype
- 【NOI2012】随机数生成器
- CJOJ P2317 JesseLiu的预算方案
- 为什么1000 == 1000返回为False,而100 == 100会返回为True?
- 【JZOJ 3693】 慎二的随机数列
- 用51单片机+11.0592的晶振,如何产生115200的波特率
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.2 来一份LOMO滤镜
- 初出茅庐
- 折纸问题
- 程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。
- String类的intern()方法详解
- Redis源码解析——字典遍历
- 为什么要做A.prototype.constructor=A这样的修正?
- [Leetcode] #104 Maximum Depth of Binary Tree