单片机中晶振的选用

控制/MCU

1883人已加入

描述

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

STC89C51

为什么这么说呢?

因为有的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)总结

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

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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分