求助:可以给单片机外接晶体振荡器求出该晶振频率吗?

2020-02-08 09:05发布

已知一个石英晶体的谐振频率为5MHz左右(大概偏差几十Hz),想要较为准确测试出其谐振频率,可以把它作为一个晶振,接到单片机的两个晶振输入端,然后算出这个石英晶体的谐振频率么?如果可以的话,具体怎么接怎么求算?精度如何?对应的程序怎么写?如果不行的话,有高手能够提供有用建议么?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
40条回答
chengzepeng
1楼-- · 2020-02-12 13:07
  1. #include <pic.h>

  2. // 内部振荡GP4/GP5为IO,关看门狗,上电复位延时,开外部复位脚,关数据保护,关代码保护,开掉电复位
  3. __CONFIG(FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF);   // 12F675&12F629
  4. //                更换这个振荡类型

  5. void mcu_init()
  6. {
  7.         CMCON  = 0b00000111;                 // 关闭内部比较器
  8.         ANSEL  = 0;                                        // 全部为数字IO,用629时可以不用这一句
  9.         TRISIO = 0b00111000;                 //
  10.         GPIO   = 0;                                        //       

  11. }

  12. void main(void)
  13. {
  14.         mcu_init();
  15.     while(1)                        // 循环一次5个指令时间,4M时钟时输出200KHz,5M时钟时GP0输出250KHz
  16.         {
  17.                 GP0 = 1;
  18.                 GP0 = 1;
  19.                 GP0 = 0;       
  20.     }
  21. }
复制代码
zzfu2010
2楼-- · 2020-02-12 18:49
chengzepeng 发表于 2012-8-11 16:12

请问这个程序能够用于AT89C52(或S52)么?由于我对pic不怎么理解,感觉还是用于pic的程序啊……
chengzepeng
3楼-- · 2020-02-12 19:04
 精彩回答 2  元偷偷看……
zzfu2010
4楼-- · 2020-02-12 20:35
chengzepeng 发表于 2012-8-11 17:01
由于51是12分频的,所以5M的晶体分频后得到 5/12 M 的指令速度,指令时间为1/(5/12)= 2.4uS,
一个循环4 ...

啊,不好意思啊,因为发帖时候是第一次来阿莫,所以可能不小心点错了,不好意思啊
多谢指点了!
zzfu2010
5楼-- · 2020-02-12 23:21
chengzepeng 发表于 2012-8-11 17:01
由于51是12分频的,所以5M的晶体分频后得到 5/12 M 的指令速度,指令时间为1/(5/12)= 2.4uS,
一个循环4 ...

其实对51也是接触没有多久。。。我们项目本来以为模电能够解决,后来发现太恶心了,讨论下寻思换个方案,刚刚接触没有多久,所以很不好意思了。。。
chengzepeng
6楼-- · 2020-02-13 01:34
如果要求不高的话用个单片机做个简单的频率计就可以了,
并且计算频率误差什么的!
前提是你的单片机速度够快,
简单的看下频率的话买个频率计也就是一百来块!

一周热门 更多>