51单片机的数字频率计

作者&投稿:亢学 (若有异议请与网页底部的电邮联系)
基于51单片机的数字频率计(0—10MHZ)~


再加两个数码管,用 T1 引脚检测频率,打开T1中断,每中断一次 加1计数,
满1秒中后停止T1计数,读出T1计数器的 TH1 TL1,
频率 = 65536 x 中断次数 + TH1 HL1 。
前提是 选择高速单片机,即只要 T1 引脚 能够响应 10M 的频率就没有问题
因为 要 计数 65536 次才 T1才会中断一次。

这里有一个四位数码管的频率计,供参考
#include #define uchar unsigned char#define uint unsigned intuchar duan[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码//uchar wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端(开发板)uchar wei[4]={0X80,0X40,0X20,0X10}; //位的控制端(仿真)uint z,x,c,v, date;//定义数据类型uint dispcount=0;uint lck=0;uint disp=0;/******************************************************************延时函数******************************************************************/void delay(uchar t){ uchar i,j; for(i=0;i0;j--); { ; } }}/********************************************************************** 数码管动态扫描*********************************************************************/void xianshi() { /*****************数据转换*****************************/ z=date/1000; //求千位 x=date%1000/100; //求百位 c=date%100/10; //求十位 v=date%10; //求个位 P2=wei[0]; P0=duan[z]; delay(50); P2=wei[1]; P0=duan[x]; delay(50); P2=wei[2]; P0=duan[c]; delay(50); P2=wei[3]; P0=duan[v]; delay(50); }/************************************************************************* 定时器初值1ms**************************************************************************/void initTimer(void){ TMOD=0x0; TH0=0xe3; TL0=0xc;}/************************************************************************* 定时器函数**************************************************************************/void timer0(void) interrupt 1{ TH0=0xe3; TL0=0xc; lck++; if(lck==1000) { disp=dispcount; lck=0;dispcount=0; }}/************************************************************************* 中断函数**************************************************************************/void int0(void) interrupt 0{dispcount++; //每一次中断,计数加一}/************************************************************************* 主函数**************************************************************************/void main(void){IT0=1; //INT0下降沿中断EX0=1; //允许INT1中断initTimer(); //装入初值TR0=1;ET0=1;EA=1;while(1){date=disp;xianshi();}}

该系统由定时器0中断子函数、定时器1中断子函数、延时子函数、按键消抖子函数、闸门控制子函数、主函数和数据定义这几部分组成。

      闸门时间由定时器1控制,初始为2s,可以通过按键加减,范围为2s到7秒。闸门时间就是采样时间,闸门时间越长,测量精度越准确。

      由P3.4输入信号,低电平有效,触发T0外部中断。当T0触发中断的时候执行的程序。这里只进行了一个操作,t0++。所以,t0的值表示触发了几次中断,也就表示接受到的脉冲几次从0到65536。所以会有t0*65536。 另外,由于计时的机制是THO++、TL0++,所以,THOTL0就表示当前的计数值。THOTLO- 初值就可以确定没有触发中断定时多少。TH0*256==TH0*2^8,实质就是左移8位,就是拼接TH0跟TL0的处理。

所以频率的核心算法为

 

daimao=(t0*65536+TH0*256+TL0)/n

程序框图



总源程序

#include "reg52.h"

#define uchar unsigned char

typedef unsigned int uint;

sbit w1=P2^0;

sbit w2=P2^1;

sbit w3=P2^2;

sbit w4=P2^3;

sbit w5=P2^4;

sbit w6=P2^5;

sbit jia=P1^6;

sbit jian=P1^7;

sbit s=P3^7;//启动

bit flag;//标签

uchar s1,s2,s3,s4,s5,s6, shu=1;//控制数组取值

uchar t0,t1,t2,a;

unsigned long m=5,n;//m为闸门时间

int y;

unsigned long daimao;//频率

unsigned char code table1[]={0xc0,0xf9,0xa4,0xb0, //闸门时间数组0-f

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

unsigned char code table2[]={0xc0,0xf9,0xa4,0xb0, //频率数组0-f

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

1.1数字频率计概述
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。用单片机实现自动测量功能。
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
点击重新加载
1.2频率测量仪的设计思路与频率的计算

图1 频率测量原理图

频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图1所示。

若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:T=m1Tx 。由图可知: T=NTo
(注:To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。)
由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。

1.3 基本设计原理

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
所谓“频率”,就是周期性信号在单位时间(1s)内

本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

网上有,自己去找

¥2051单片机的数字频率计


基于51单片机数字频率计论文
1.绪论 1.1 数字频率计的发展现状及研究概况 随着电子技术的飞速发展,各类分立电子元件及其所构成的相关功能单元,已逐步被功能更强大、性能更稳定、使用更方便的集成芯片所取代。由集成芯片和一些外围电路构成的各种自动控制、自动测量、自动显示电路遍及各种电子产品和设备。数字系统和数字设备已广泛应用于...

谁知道数字1和0的频率是多少赫兹?
频率的含义你还不知道吧?一赫兹是指电信号每秒钟变化1次(由低到高在到低),他的频率就是1HZ;如果1秒变化1000次他的频率就是1000HZ,所以你但说0和1的频率是没法知道的,柯南没看你说的这个所以也不知道具体是什么~但你知道了频率的含义应该也就了解了~...

...碰到了点问题,论文题目是基于51单片机的数字频率计设计
输入引脚是P3.4 如果用定时器1作为计数器,输入引脚是P3.5 如果测单个脉冲宽度(或周期),可以输入任意引脚,但最好用中断引脚P3.2或P3.3 3。.信号进入引脚之后怎么计算它的程序 用另外一个定时器定时50ms,测50ms内有多少个脉冲输入,然后乘以20(即1S)即是频率 ...

...如何采用8051单片机设计出具有以下功能的数字频率计\/波形发生器硬件...
(1)用8051的计数器的计数值除以计数的时间,就是频率 (2)8051控制函数发生器,发生器后面接可编程放大器,8051设置函数发生器的波形和频率,并显示出来,在设置放大倍数

大哥又得麻烦您给我解释一下数字频率计了
1.32768hz 2.cc4020 10输入 3角Q13出 实现2的13次方分频 输出为4hz 4013 2-5接在一起 实现二分频 也就是2hz 3.中间LE和R端是实现自动1s清零。就是计算1s的待测信号脉冲。

我用C51单片机做简易数字频率计,测量脉宽2K以内是差不多的,但是超过2K...
你用的是什么单片机?主频是多少?看你的寄存器应该是51。别忘了,51单片机的主频12MHz,为了抗干扰,还要12分频。也就是说,你只有1MHz的运算频率。然后你得到你的w,还要做那么复杂的运算,本身while(p3_5==0)的判断也要时间。还有,你的n1,n2是什么类型的呀。你用的是n1=w*65536我就觉得,它...

数字频率计
数字频率计 20 基于51单片机的数字频率计,要求测量范围0-250k误差正负1hz谢谢两位,这几天忙着做课设,没空看了,现在已经完成!... 基于51单片机的数字频率计,要求测量范围0-250k 误差正负1hz谢谢两位,这几天忙着做课设,没空看了,现在已经完成! 展开  我来答 1个回答 #热议# 该不该让孩子很早学习...

单片机的晶振频率为6MHz,执行下列程序需要 个机器周期和 时间...
第1条指令只在循环体外,只执行一次,要1个机器周期;第2到第4为一循环结构,循环次数由R3决定,28H表示40次,而这三条指令执行一次所需的机器周期为4个,总共160个机器周期;第5条指令在循环体外,只执行一次,要2个机器周期;所以总的机器周期数为1+160+2=163个机器周期 每个机器周期为2微秒,...

单片机编号的意义,比如一片AT89C51正面的编号是:AT89C51 24PU 0644...
AT:ATMEL公司,89:89系列的单片机,C:CMOS,互补金属氧化物半导体,说明这是一块可读写芯片,51:单片机型号,后面的1是指此单片机的内部存储空间为1×4=4KB,24:晶振支持的最高频率为24MHz,P:塑料双列直插DIP封装,温度-40至+85℃,U:无铅元件,0644:2006年第44周生产的,另外,反面的数字...

一个单片机系统,频率12M,有数字部分,又有模拟部分,为抑制干扰,请问是采 ...
如果把模拟地和数字地大面积直接相连,会导致互相干扰。不短接又不妥,理由如上有四种方法解决此问题∶1、用磁珠连接;2、用电容连接;3、用电感连接;4、用0欧姆电阻连接。磁珠的等效电路相当于带阻限波器,只对某个频点的噪声有显着抑制作用,使用时需要预先估计噪点频率,以便选用适当型号。对于频率...

兴山县18229793221: 用51单片机做频率计实物时那个测量脉冲怎么弄 -
尉待单瑞: INT0(INT1)口接脉冲信号,开通INT0(INT1)上升沿或下降沿中断,中断到来时利用T0或T1定时器计算I输入信号2个脉冲之间的脉宽时间,可以达到测量脉冲频率的目的.

兴山县18229793221: 做用51单片机做一个频率计,测量范围为0.1Hz~10kHz
尉待单瑞: 在不改变定时时间的前提下,也就是0.5秒定时,是不能实现0.1~2Hz频率的测量的. 你所谓2Hz~10KHz易实现也是基于这个道理.但这个也是理论情况. 当你0.5s内刚好检测到一个脉冲,你认为这个时候是2Hz而不是2.5hz或者3.9hz? 这中间存在一个测量精度的问题.实际上你所测到的信号是在2hz到4hz之间. 实际上我们在测量信号的时候,低频一般会采用测周期,高频用测频才能提高测量的准确性. 至于高低频的临界点,跟你的计数频率有关,感兴趣的话可以去看《电子测量原理》. 下面我来讲下测周实现的方法,可以使用边沿触发的D触发器输出作为单片机的外部定时控制,测量信号作为触发时钟,计数值作为该信号的周期.

兴山县18229793221: 请各位帮我分析一下用单片机设计一个数字频率计的思路,能详细一点就更好.思路,原理. -
尉待单瑞:[答案] 就是利用定时计算1秒内标准1HZ的频率,然后测量你要测的频率

兴山县18229793221: 基于51单片机上的频率计怎么设计频率量程转换 例如通过按键切换Hz~kHz,程序怎么编写? -
尉待单瑞: 通过不同的端口控制外接的分频器.或接外接与门和二进制计数器.

兴山县18229793221: 51单片机的简易频率计设计 -
尉待单瑞: 单片机直2113接用USB连电脑只能取电不能通讯,通讯的话 需要接5261口电路,例4102如USB转TTL的芯片,CH340,PL2303,这样的芯片才可以,如果直1653接测TTL电平的回话 确实不需要其答他外围电路了,因为51的信号就是TLL电平的.

兴山县18229793221: 求用51单片机做 频率计的电路设计图 要求待测频率在1HZ - 1MHZ ,最好能把元器件参数值标注一下 ,跪求!! -
尉待单瑞: 建议STC12C5608单片机28脚,LCD1602液晶屏,其余就是晶振12M,2个30p电容协助起振,一个0·1uF电容和一个100uF电容电源滤波,液晶屏需一个10k电位器调整对比度,一个100欧电阻限制LED电流,其余就是些插座插针开关之类,下载程序用USB转TTL数据线,由于你的测频范围太大,所以要会自动量程转换,保证测量精度和范围

兴山县18229793221: 我想利用89C52RC (51单片机)来制作数字频率计 知道电路图的给一下参考 -
尉待单瑞: 使用单片机的边沿计数功能,或者采用单片机捕捉功能,就可以了.电源电压需要使用稳压电路,可使用7805

兴山县18229793221: 我下个星期要求做一个基于AT89C51系列的单片机的数字频率计设计,希望大家帮帮忙 -
尉待单瑞: 数字频率计单片机部分其实是好做得,无非就是用测频法(两个定时器配合,一个定时,一个计数)对付高频信号,用测周法对付低频信号(一个外部中断+一个定时器),程序量虽然有点,不过用C语言的话,也就是500行里面的事.最难的地...

兴山县18229793221: 基于89C51单片机的数字频率计怎么仿真啊 -
尉待单瑞: 你使用PROTEUS软件调用AT89C51,等你的程序编辑好了后,使用这个软件调用软件示波器产看对应频率大小即可,其实,你需要做的就是程序,您这个程序可以使用定时器0来输出,定时器1来计算数字频率的脉冲计数,这样就可以知道具体数字频率的大小了.

兴山县18229793221: 51单片机制作简易数字频率计程序 -
尉待单瑞: 1MHz,这个频率要求的高了一些.先看看:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/b20572ca80ebe3f053664f7b.html/cmtid/7f5d2259d585a88f810a184e#7f5d2259d585a88f810a184e

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网