曾做过这个题目,将资料整理了一下,放到了我的公共邮箱
邮件名是"51单片机频率计"
包括电路图和源程序在发帖之前验证过,没有问题!
可以测量的频率范围是0~65KHz
邮箱地址:protel2006@163com
密码是protel
已将你要的文件发到该邮箱~ 请不要删除,谢谢!
实现这样的测量并不困难。不过,个人觉得,重要的是设计思路,直接求程序,你获取的不是知识,遇到问题也不能自己解决。
你的频率测量范围较宽,采用两个定时器的思路是对的。不过,没有必要限制在1S内对方波进行计数。一般思路是,对于较高频率的信号测量,采用固定时间T(不一定是1S)对脉冲数N进行计数,频率F=N/T。对于较低频率的信号测量,对固定周期数的脉冲(脉冲数为N,N常取1或更大的数)进行计时(时间为T),频率F=N/T。这样做的好处是,高频时,可以测量较快,低频时,测量较慢(这是必然的,最快就是N=1时),但是,都可以获取较高的测量精度。低频时,精度远远高于1Hz。
没按你的要求发程序,打搅勿怪,有疑问欢迎交流!
#include <AT89X51H>
#include <mathh>
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //八进制数组,显示的像素
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40}; //八进制数组,服务
unsigned char dispbuf[8]={0,0,0,0,0,0,0,0}; //定义八位数组
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned int timecount;
bit flag;
unsigned long x;
void main(void) //主函数,执行功能
{
unsigned char i;
unsigned int j;
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-2000)/256; //
TL1=(65536-2000)%256; //取模
TR1=1;
TR0=1;
ET0=1;
ET1=1;
//PT0=1;
EA=1;
while(1) //通过循环获得
{ P1=dispcode[dispbuf[dispcount]];
P2=dispbit[dispcount];
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
for(j=300;j>0;j--);
while(flag) //通过循环取得,flag用于判断合适停止循环
{
flag=0;
x=T0count65536+TH0256+TL0;
for(i=0;i<8;i++)
{
temp[i]=0;
}
i=0;
while(x/10)
{
temp[i]=x%10;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<8;i++)
{
dispbuf[i]=temp[i];
}
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
}
}
}
void t0(void) interrupt 1 using 0 //用于循环加的方法
{
T0count++;
}
void t1(void) interrupt 3 using 0
{
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
timecount++;
if(timecount==500)
{
TR0=0;
timecount=0;
flag=1;
}
目录1
摘要…………………………………………………………………………2
综述…………………………………………………………………………2
课程设计目的与任务………………………………………………………3
任务分析与方案选择……………………………………………………3
进度安排…………………………………………………………………4
设计要求…………………………………………………………………4
1数字频率计原理………………………………………………………5
11数字频率计的基本原理框图…………………………………………5
12数字频率计的基本原理………………………………………………5
2数字频率的设计电路……………………………………………………6
21放大整形电路…………………………………………………………6
22石英晶体振荡器和分频器……………………………………………7
23计数译码显示电路……………………………………………………8
24控制电路………………………………………………………………8
25数字频率计的电路图…………………………………………………9
3器件介绍…………………………………………………………………10
31 CD4060介绍…………………………………………………………10
32 CD4518介绍…………………………………………………………11
课程设计的总结与展望……………………………………………………12
参考文献……………………………………………………………………13
详见豆丁资源
以上就是关于设计一个51单片机的数字频率计,要求显示从1—1000HZ,并用7段显码显示全部的内容,包括:设计一个51单片机的数字频率计,要求显示从1—1000HZ,并用7段显码显示、数字频率计设计LCD显示:测量函数信号发生器产生的方波频率,测量频率范围为1-250khz精度为1hz。、请高手帮我翻译下以下程序 这个一个关于数字频率计设计的程序 我就30分了都奉送了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)