找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5250|回复: 16
打印 上一主题 下一主题
收起左侧

求助51单片机频率计怎么做

  [复制链接]
跳转到指定楼层
楼主
30黑币
本帖最后由 韦俊杰 于 2018-11-20 09:03 编辑

要求是实现
(1)共阴数码显示
(2)频率超过2K报警。
(3)蜂鸣器报警。
(4)可测频范围: 1HZ~5KHZ。


要求用下列的元件完成
最小系统: stc89c52rc, 12M晶振, 2*30P电容,10K电阻,10U电容;
外围芯片:轻触按键*5, 4位共阴数码管*2,三极管8550*1,蜂鸣器*1,排阻

4K7*3,插针接口若干,LED*1, 74LS573*1。


还有程序怎么写啊
大佬们帮帮忙啊



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:94031 发表于 2018-11-20 10:02 | 只看该作者
连自己搜一下都不愿意,直接想要答案,自己动手吧。
回复

使用道具 举报

板凳
ID:378182 发表于 2018-11-20 10:07 | 只看该作者
中断对脉冲计数,定时器定时读出计数值,计算频率,同时计数清零,准备下次采样。
回复

使用道具 举报

地板
ID:427678 发表于 2018-11-20 10:21 | 只看该作者
xuyaqi 发表于 2018-11-20 10:02
连自己搜一下都不愿意,直接想要答案,自己动手吧。

搜啦找不到!
回复

使用道具 举报

5#
ID:379730 发表于 2018-11-20 10:30 | 只看该作者
核心思想就是用T0计数器做脉冲集采,计数器根据脉冲递加由硬件实现,精度搞,然后再开启一个T1做时间定时,每次定时器T1中断后进入读取T0计数器的值进行计算,进入T1中断期间关闭计时器T0同时清零计数器,中断函数处理结尾开启,以提高测量精度
回复

使用道具 举报

6#
ID:111634 发表于 2018-11-20 11:57 | 只看该作者
本帖最后由 zl2168 于 2018-11-20 15:55 编辑

实例73  测量脉冲频率
Proteus仿真一下,确认有效
实例73 测量脉冲频率.rar (52.74 KB, 下载次数: 48)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,程序语句条条有注解。
回复

使用道具 举报

7#
ID:97554 发表于 2018-11-20 14:13 | 只看该作者
http://www.51hei.com/bbs/dpj-142333-1.html
这个应该是用的12C5A60S2AD做的,管脚自己对一下。

http://www.51hei.com/bbs/dpj-85932-1.html
这个是4位数码管的,带仿真的。

http://www.51hei.com/bbs/dpj-140781-1.html
自己在本坛搜一下
回复

使用道具 举报

8#
ID:202748 发表于 2018-11-20 14:17 | 只看该作者
这个频率计应该是最简单的了,只到5KHz,连分频都不需要了。
回复

使用道具 举报

9#
ID:158812 发表于 2018-11-20 15:00 | 只看该作者
用定时器捕获功能。
回复

使用道具 举报

10#
ID:432388 发表于 2018-11-24 15:25 | 只看该作者
#include <reg51.h>
#include <intrins.h>
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int
uchar code dis_duan[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
uint a=0,b=0;
uint counter=0;
unsigned long number=0;

void init();
void main()
{       
        uchar num[6]={0,0,0,0,0,0};
        uchar i;
        init();
        while(1)
        {       
                num[0]=number/100000;
                num[1]=number%100000/10000;
                 num[2]=number%10000/1000;
                num[3]=number%1000/100;
                num[4]=number%100/10;
                num[5]=number%10;
               
                for(i=0;i<6;i++)
                {
                        P1=_crol_(0xfe,i);
                        P0=dis_duan[num[i]];
//                        delay_ms(1);
                       
                }
               
        }
}
void init()
{
  IE=0X8A;//1000 1010
  TMOD=0X25;//0010 0101
  TH0=TL0=0;
  TH1=256-250;
  TL1=256-250;
  TR1=TR0=1;
}
void t0() interrupt 1
{
  b++;
}
void t1()  interrupt 3
{
  a++;
  if(a==4000)
  {
         
        TR1=TR0=0;
        a=0;
        number=b*65536+TH0*256+TL0;
        TH0=TL0=0;
          b=0;
        TR1=TR0=1;
  }
}
回复

使用道具 举报

11#
ID:432359 发表于 2018-11-24 16:03 来自手机 | 只看该作者
用计时器,对脉冲计数
回复

使用道具 举报

12#
ID:432482 发表于 2018-11-24 17:42 | 只看该作者
stc89c52rc, 12M晶振, 2*30P电容,10K电阻,10U电容; 外围芯片:轻触按键*5, 4位共阴数码管*2,三极管8550*1,蜂鸣器*1,排阻  4K7*3,插针接口若干,LED*1, 74LS573*1。
回复

使用道具 举报

13#
ID:437146 发表于 2018-12-1 15:45 | 只看该作者
cra... 发表于 2018-11-24 17:42
stc89c52rc, 12M晶振, 2*30P电容,10K电阻,10U电容; 外围芯片:轻触按键*5, 4位共阴数码管*2,三极管8550*1, ...

我也做这个。有原理图吗
回复

使用道具 举报

14#
ID:437274 发表于 2018-12-1 18:18 | 只看该作者
zl2168 发表于 2018-11-20 11:57
实例73  测量脉冲频率
先Proteus仿真一下,确认有效
以上摘自张志良编著《80C51单片机仿真设计实例教程— ...

这个好厉害
回复

使用道具 举报

15#
ID:437272 发表于 2018-12-1 19:03 | 只看该作者
中断对脉冲计数,定时器定时读出计数值,计算频率,同时计数清零,准备下次采样
回复

使用道具 举报

16#
ID:636724 发表于 2019-11-6 14:49 | 只看该作者
我也做这个,现在有原理图和程序吗?我找了很久都找不到。
回复

使用道具 举报

17#
ID:851445 发表于 2020-11-30 00:42 来自手机 | 只看该作者
米读者 发表于 2019-11-6 14:49
我也做这个,现在有原理图和程序吗?我找了很久都找不到。

找到了吗兄弟我想要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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