单片机中晶振的选用

2023-06-20  

在我们步入单片机学习时,大部分人接触的第一款单片机,是国产的STC单片机STC89C51,而最最容易让人忽视的,是单片机的晶振电路部分选用的晶振。

截图20230301181746.png

为什么这么说呢?

因为有的STC开发板,有的选用的晶振为11.0592MHz,有的则是是选用12MH。 这两个晶振相差不到1MHz,也同样能够为我们的单片机提供所需的时钟频率。


那么,既然都能让我们单片机正常工作,那为啥不做成一样的呢? 我们又应该如何选择它们呢? 接下来为大家解答!

(1)11.0592MHz晶振

在STC89C51单片机中,该晶振主要用于精准的生成串口的波特率值9600,我们的波特率计算公式如下:

TH1 = TL1 = 256 - 晶振值/12/2/16/波特率

此时,代入波特率与晶振值,可得出TH1为一个整数。

而改用12MHz的晶振,则无法精确计算出串口所需波特率9600下,TH1值成为整数。

另外,11.0592Mhz晶振用于生成定时器时钟时,则会导致一定的定时误差。 如:

T = 1 / 11059200 Hz

其结果,即单片机的机器周期,为除不尽的非整数。

而STC单片机的时钟周期为机器周期的12倍。 即12T。

在如定时为1ms时,则需要单片机计算n*12T,让定时器溢出一次,这无法得出整数的1ms,存在误差。

(2)12MHz晶振

该晶振主要用精确生成定时器所需时钟频率,如,处理出我们想要的1ms定时器,则该时钟下的时钟周期为

12*T = 12 / 12000000 = 1/1000000

定时1ms时,则相当于让计算1000个时钟周期,定时器溢出一次,即

t = 1000 * (12*T) = 1/1000 = 1ms

类似的,11.0592MHz晶振则无法精确生成这个精确的1ms时钟。

(3)总结

晶振的选用,无非就是通过时钟频率,来计算单片机外设(定时器、串口等)所需的时钟频率。

查单片机数据手册,在单片机能够使用的晶振值范围内,选择合适的晶振值,来达到自己想要的时钟精度目的。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。