找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

超简单的高精度频率测量例程(Proteus仿真80c52单片机)

查看数: 3176 | 评论数: 8 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-10-30 09:30

正文摘要:

    打算做个stc32g12k128的频率相关东西,有朋友建议用proteus仿真一下。结果发现proteus里没有stc32g,与其相近的只有一个stc15w4k32s4.用了一下,结果无法运行,用尽全身解术也没玩转这个芯片(相信prot ...

回复

ID:1039438 发表于 2022-11-3 08:56
fsj5098 发表于 2022-11-2 19:58
基准频率一定要稳和准,否则跳动厉害,频率计对于整数测量是比较容易的,非整数难点比较大,比如31.592Hz

     我对这点也有深刻的教训,在一个测量中发现测量结果没有误差,而从测量机制上,预期该有很大误差才对,具体实例在我的贴子《基于stc32g12k128单片机和jlx12864的简易脉冲测量器 附程序》中对11059200HZ的频率测量有图片显示,正是这种没误差测量结果使我意识到测量方法的合理性存在问题,并在后面做了提示说明。之后发的几种有关频率测量的例程都在从不同的侧面去规避这种漏洞的影响。我的观点是,整数测量的准确性本身体现的是一种测量方法的不合理性。但对非整数的测量,还会受限于单片机数字处理能力。特别是对宽频率范围进行测量的程序,小数部分的处理会受字节长度的影响而变得很麻烦。
ID:78901 发表于 2022-11-2 19:58
基准频率一定要稳和准,否则跳动厉害,频率计对于整数测量是比较容易的,非整数难点比较大,比如31.592Hz
ID:1039438 发表于 2022-11-2 18:50
yzwzfyz 发表于 2022-11-2 10:00
理论日差做到1秒内,需要的稳定度是 1S/24H/60M/60S = 1/86400 = 11.57*10^-6。
而随意一个晶振,其稳定度 ...

我认为程序方面现在存在的误差主要表现在正负一的计数误差,而解决这个问题并不难,在我发的其它帖子里的程序可以容易的解决,但主要是面向测量频率的任务,对时钟的需要还真没认真研究过。有空时会去分析一下对策。
ID:1049918 发表于 2022-11-2 13:21
yzwzfyz 发表于 2022-11-2 10:00
理论日差做到1秒内,需要的稳定度是 1S/24H/60M/60S = 1/86400 = 11.57*10^-6。
而随意一个晶振,其稳定度 ...

很专业的说明,希望有更多人能看到
ID:123289 发表于 2022-11-2 10:00
理论日差做到1秒内,需要的稳定度是 1S/24H/60M/60S = 1/86400 = 11.57*10^-6。
而随意一个晶振,其稳定度轻易就优于10^-6。
从这个道理说,使用普通晶振的单片机,做个日差1秒之内的时钟是应该能够达成的。
而实际上,由于程序设计不合理,做到这一点还是不易的。
实战比仿真更能说明问题。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:1039438 发表于 2022-11-1 20:39
yzwzfyz 发表于 2022-11-1 16:34
你实际做一下就会发现问题了。
做个电子钟,看看一个月误差几秒,就知道你的方法灵不灵了。(不用时钟专用 ...

有道理,我是想用这个程序测量脉冲频率,如果做电子钟的话要考虑系统时钟的精度和稳定性了。不是程序问题,当然程序本身也存在计数误差的限制。
ID:123289 发表于 2022-11-1 16:34
你实际做一下就会发现问题了。
做个电子钟,看看一个月误差几秒,就知道你的方法灵不灵了。(不用时钟专用芯片)
ID:1039438 发表于 2022-10-30 12:59
补充:该例程在proteus8.12和8.13版本运行通过,使用的库函数是8.13版的。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表