单片机串口通信的波特率什么意思,为何不同环境下一定要设置某一个值?

如题所述

波特率就好比一首歌曲的节奏,有了这个节奏,串行通讯的各个数据位就会有条不紊地依次排队一个一个地传到对方,要正确收发,两个通讯的主体的节奏必须一致,至于你说的不同环境我觉得,可以理解为:传输距离的远近,周围电磁干扰的强弱等等,当然距离越远、干扰越大波特率相应的要小,降低速度以提高传输的准确性。追问

像51单片机,我们一般选9600bit/s,为何呢

追答

这是一个比较中规中矩的值,一个原因是以前由于硬件条件所限,RS232串行通讯速度太高往往误码率较高,9600bps经验上是比较合适的一个推荐值,速度不是太低,通讯又十分稳定。但现在由于硬件环境不断提高,采用高速度的波特率越来越多,比如我现在常常采用57600bps和115200bps。另一个原因是:我们常用的晶振是12M或11.0592M,你可以算一下,9600bps的时候后者误差为0,前者的误差率也较其他bps要小。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-07-30
单片机串行通信波特率就是每发送两个数据的之间的间隔,或者是每秒钟发送的字节数,你在进行串行通信时,是两个单片机进行通信,那肯定是要进行同步的(波特率要相同),要不然通信没法建立。波特率的设定注意点一般就是 如果晶振是12M的话,波特率最高只能为2400(因为再高的话,会出现很大的时间误差,接收的数据出现乱码) 如果是11.0592M 的话,波特率可以达到9600.希望能帮到你。追问

波特率靠什么来决定?

追答

串行通信的波特率 是有一个公式的,但最终还是靠定时器1来决定。当定时器1的初值设定好以后,理论上波特率也就设定好了,实际上还要看你的单片机能不能承受这么高的波特率。

追问

为何不能是定时器0?

追答

因为在进行串行通信时,定时器1作为波特率发生器。所以必须用定时器1的溢出率你来决定串行波特率。单片机内部构造。只能用定时器1.。

本回答被网友采纳
第2个回答  2017-07-29
波特率是指每秒传送多少个二进制数,也就是串行时钟信号的频率,但是我们常用异步通信方式,时钟信号并没有被传输,因此发送方和接受方的设定波特率必须一致,并且不能有太大的误差
相似回答