打印

51单片机12M晶振设置波特率为62500乱码,求解释

[复制链接]
4184|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2012CMD|  楼主 | 2013-5-23 10:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
按照51手册波特率计算式为
baudrate=((2^SMOD)/32)*(Fosc/(12*(256-TH)))
同时芯片手册也给出几个典型值

可是为什么我设置成62500是乱码呢??

晶振12M,实际测试是只能用2400通信正常,串口芯片为PL2303(USB to Serial),误差为0.16%

按道理说62500应该比2400更准确啊,因为他误差率为0,可是为什么实际不正常呢???


相关帖子

沙发
ayb_ice| | 2013-5-23 10:06 | 只看该作者
你两个同样的51,62500肯定没有问题的,关键是双方不一致

使用特权

评论回复
板凳
2012CMD|  楼主 | 2013-5-23 10:10 | 只看该作者
ayb_ice 发表于 2013-5-23 10:06
你两个同样的51,62500肯定没有问题的,关键是双方不一致

是一致的,软件程序为62500(SMOD=1,TH1=TL1=0xFF),串口波特率也为62500

使用特权

评论回复
地板
2012CMD|  楼主 | 2013-5-23 10:12 | 只看该作者
ayb_ice 发表于 2013-5-23 10:06
你两个同样的51,62500肯定没有问题的,关键是双方不一致

这是我的程序
.....................................
void uart_init(void)
{
    TMOD=0x20;//即0010 0000,定时器/计数器1,工作方式2
    TH1=0xff;//设置波特率为62500
    TL1=0xff;
    TR1=1;//启动定时器/计数器1
   
    SCON=0x50; //0101 0000.串口工作方式1,允许串行控制
    PCON=0x80;//设置SMOD=1
    IE=0x90; //CPU允许中断,串行允许中断
}
.....................................

使用特权

评论回复
5
dirtwillfly| | 2013-5-23 11:14 | 只看该作者
数据位、校验位等等这些设置是一样的吗

使用特权

评论回复
6
ayb_ice| | 2013-5-23 11:24 | 只看该作者
设置应该没有问题,检查程序

使用特权

评论回复
7
2012CMD|  楼主 | 2013-5-23 11:45 | 只看该作者
ayb_ice 发表于 2013-5-23 11:24
设置应该没有问题,检查程序

应该不是程序的问题,因为proteus仿真是OK的

使用特权

评论回复
8
lcdi| | 2013-5-23 11:48 | 只看该作者
那也许是PL2303兼容性不好,用CP2102的或者FT232的试试看?

使用特权

评论回复
9
2012CMD|  楼主 | 2013-5-23 11:59 | 只看该作者
lcdi 发表于 2013-5-23 11:48
那也许是PL2303兼容性不好,用CP2102的或者FT232的试试看?

手上木有这两个芯片,只有MAX232,也试过,不过问题一样
不知道是不和波特率过高有关,传输二进制位速度太快了????

使用特权

评论回复
10
lcdi| | 2013-5-23 12:05 | 只看该作者
2012CMD 发表于 2013-5-23 11:59
手上木有这两个芯片,只有MAX232,也试过,不过问题一样
不知道是不和波特率过高有关,传输二进制位速度 ...

MAX232试过那就没办法了~如果你的试验环境干扰不是很厉害,串口线也不会长的话,这个速度算不上高,有没有示波器测一下单片机出来的波形,看看波特率对不?

使用特权

评论回复
11
dtlz| | 2013-5-28 22:45 | 只看该作者
TMOD=0x20;//即0010 0000,定时器/计数器1,工作方式2

手册那里说需要工作为方式1/3
你没有注意这个?

使用特权

评论回复
12
enj08| | 2013-12-30 20:51 | 只看该作者
我也想问一下,0.16%误差对通信的影响是什么?需要注意什么?

使用特权

评论回复
13
vkic007| | 2013-12-31 10:33 | 只看该作者
enj08 发表于 2013-12-30 20:51
我也想问一下,0.16%误差对通信的影响是什么?需要注意什么?

我觉得这样的误差一般没有什么影响,串口本上就有比较好的容错机制,而且通常误差在3%以内应该都可以正常通信。

使用特权

评论回复
14
ghl111| | 2013-12-31 16:16 | 只看该作者
自己拿个示波器观察一下串行数据的波形,测量一下波特率吧,多半时波特率的问题

使用特权

评论回复
15
jqbkl007| | 2013-12-31 17:10 | 只看该作者
用11.0592就可以了吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

80

帖子

0

粉丝