这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 关于C51单片机与晶振频率

共16条 1/2 1 2 跳转至

关于C51单片机与晶振频率

助工
2015-12-18 17:56:50     打赏
最近实训在做基于51单片机的开发,在做基于单片机的电子钟时着实被11.0592M的晶振难了一把。后经网上查资料和反复认证终于搞明白了。
        为了在进行串口通信时方便计算波特率,所以一般涉及串口通信的单片机系统大多使用11.0592M的晶振。我们实训时使用的晶振频率也是11.0592M的,这在做电子钟时给计算定时器初值带来了一定困难。

        晶振周期=1s/11.0592MHz=1Mus/11.0592MHz=1/11.0592us
        单片机机器周期=12*(1/11.0592)us≈1.08506944us
        需要实现计时1秒,需要1000000/1.08506944=921600.003775≈921600个机器周期

        如果使用定时器的8位自动重装模式,那么如果设置定时器初值为0xA4H(即164D),则每256-164=92个机器周期触发一次定时中断,如此中断10000次,共为920000个机器周期,才约是1秒!
        实际上电子钟每跳动1秒都少1600个机器周期,因为921600/1600=576,故应当电子钟每跳动576秒(即9.6分钟)就减去1秒,以减少误差!如果不加此修正,一天24小时,电子钟将快2.5分钟!


        之所以需要对电子钟的时间进行修正,主要是因为晶振频率无法被整除造成的。所以如果单片机系统不需要串口通讯,使用12MHz的晶振,那么计算定时器中断的初值将方便许多,也不需要进行时间修正了!

        晶振周期=1s/12MHz=1Mus/12MHz=1/12us
        单片机机器周期=12*1/12us=1us
        需要实现计时1秒,需要1000000/1=1000000个机器周期

        那么如果设置定时器初值为0x9CH(即156D),则每256-156=100个机器周期触发一次定时中断,如此中断10000次,正好为1000000个机器周期。这样就不会存在误差(忽略指令的执行时间)!


菜鸟
2022-05-06 21:42:00     打赏
2楼

晶振频率

晶振是石英晶体谐振器,也称有源晶振,它能够产生中央处理器(CPU)执行指令所必须的时钟频率信号,CPU一切指令的执行都是建立在这个基础上的,时钟信号频率越高,通常CPU的运行速度也就越快。

1、英文全称:frequency oscillate;2、定义:晶体振荡器的固有频率, 不能改变;

3、如果外接12Mhz晶振,则晶振频率12Mhz。4、时钟周期 = 晶振周期 = 振荡周期 = 晶振频率(振荡频率fosc)的倒数。5、机器人周期 = 12 / 晶振频率。



院士
2022-05-07 08:46:37     打赏
3楼

谢谢楼主分享的文章~


院士
2022-05-07 08:52:14     打赏
4楼

谢谢分享


专家
2022-05-07 09:14:40     打赏
5楼

谢谢分享。


专家
2022-05-07 09:27:22     打赏
6楼

不能忽视温度造成的振荡频率的偏移


专家
2022-05-07 10:47:50     打赏
7楼

51在这一点上不如其它单片机


高工
2022-05-07 11:30:15     打赏
8楼

过来看看,谢谢分享


专家
2022-05-07 11:37:26     打赏
9楼

学习学习


院士
2022-05-07 19:48:00     打赏
10楼

谢谢分享。


共16条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]