单片机波特率不加倍c语言,51单片机硬件系统设计时,为什么用11.0592MHz的晶振而不用12MHz晶振的原因及串口波特率误...
时间: 2024-05-17 22:16:55 浏览: 153
在51单片机的硬件系统设计中,使用11.0592MHz的晶振而不是12MHz的原因是因为11.0592MHz是标准的晶振频率,而且可以被整除,可以方便地实现各种波特率的串口通信。而12MHz则不能被整除,会导致串口波特率误差较大,需要进行波特率加倍才能得到准确的波特率。
如果不进行波特率加倍,使用12MHz的晶振会导致波特率误差较大,通信质量较差,甚至无法正常通信。因此,为了保证串口通信的准确性和稳定性,建议在51单片机的硬件系统设计中使用11.0592MHz的晶振。
相关问题
从原理上详细解释为什么在51单片机的串口通信中一般使用11.0592MHz的晶振频率?
51单片机串口通信中使用11.0592MHz的晶振频率是因为它可以被波特率的整数倍所除尽,即可以实现精确的波特率分频。具体来说,串口通信中需要设置波特率,而波特率可看成发送和接收数据符号的频率,其计算方法为波特率=晶振频率/(分频系数 x 16)。在此公式中,分频系数可以任意设置,但必须为整数,因此为了达到准确的分频,11.0592MHz的晶振频率非常适合,因为它可以被常用的波特率的整数倍所除尽,如9600、19200、38400等。这样就能够实现精确的波特率控制,从而保证数据传输的正确性、可靠性和稳定性。
如果51单片机的串行接口工作在工作方式1,波特率为9600Bd,系统的晶振频率为11.0592MHz,那么定时器T1应装入的初值为多少
在工作方式1下,每个位的传输时间为 1/9600 = 104.166us。由于串口通信使用的是异步传输,因此需要使用定时器T1来产生波特率时序。定时器T1的时钟源为晶振频率,即11.0592MHz,所以定时器T1的计数器值每增加1所需的时间为:
计数周期 = 1 / 11.0592MHz = 90.52ns
为了产生1个位的传输时间,需要定时器T1计数的次数为:
计数次数 = 104.166us / 90.52ns = 1150.08 ≈ 1150
所以,定时器T1应该装入的初值为:
初值 = 65536 - 1150 = 64386(10进制)= FCFA(16进制)
因此,当51单片机的串行接口工作在工作方式1,波特率为9600Bd,系统的晶振频率为11.0592MHz时,定时器T1应装入的初值为FCFAH(16进制)。
阅读全文