数字频率计设计
天真的童年
前段时间忙于一些琐事,没有更新内容,总之还是懒,接下来会继续和大家分享,一起学习,谢谢您的支持。
1、为什么想用51做数字频率计
看到别人用STM32做数字频率计,思路为:用一个定时器输出PWM波,接到外部中断引脚,触发定时器计时,根据两个脉冲之间的定时器计数值得到信号频率。这让我想起本科参加电子设计竞赛时选的题目也是数字频率计,但当时比较水,只写了参赛论文。感觉只实现数字频率计这个简单的功能,能用低端单片机不用高端的原则,文中使用了STC89C51单片机做数字频率计,测试发现可以检测40Hz~5KHz的矩形波。
2、程序流程
首先需要设置定时器和外部中断的参数,因晶振为12MHz,每个机器周期是12个时钟,故计数器加1的时间t0为1us,使用定时器0工作模式1的16位定时,计数范围reg为0~65535,最多能计时T=reg*t0=65536us,频率f = 1/T即可得到。计数时只需要检测两个下降沿之间的时间,故外部中断采用下降沿触发。
测试时用信号发生器输出矩形波到单片机的外部中断0引脚,即P3.2引脚,若检测到下降沿则进入外部中断函数,启动定时器0开始计数,若定时器溢出,统计溢出次数的变量递增。根据下次下降沿到来时定时器的寄存器值和溢出次数,即可得到信号频率。
程序流程图如下所示:
3、测试效果
以下视频中信号发生器为AFG3102,示波器为TDS2024B,单片机为STC89C51RC,串口助手为STC下载软件自带的如下图所示:
测试视频:
播放
KeilC51工程文件链接:
https://pan.baidu.com/s/15OJldgT6dPGNE0V03B3dFg
提取码:1111
复制这段内容后打开百度网盘手机App,操作更方便哦
END
更多内容请关注公众号:嵌入式的路上