资源简介

通过51单片机,采用等精度测量法,可以测量1~1M以内的信号的频率,测量精度在<1/1000,并通过LCD1602显示。 程序包内提供C51原程序代码(采用keil开发)和仿真电路图(采用proteus开发)。并可通过外部增加分频器来扩展测量量程。程序编写合理,方便阅读,容易扩展。

资源截图

代码片段和文件信息

#include “reg51.h“
#include “intrins.h“
#include “1602.h“
unsigned char t0_hht1_hh;
unsigned char dis_buf[11];
sbit  RS=P2^2;
sbit RW=P2^1;
sbit LCM1602_E=P2^0;
sbit LCM1602_Busy=P0^7;
sbit led = P2^6;
bit  firstexsecondex;
unsigned long count0count1;
unsigned long count;
unsigned char ipq;

//低频数据处理
void deal_data()
{
unsigned char i;
float adata;

count1=t1_hh*65536+TH1*256+TL1;
count0=t0_hh*65536+TH0*256+TL0;

adata=(float)count1*10000000/count0;
adata=(float)adata*10;
count=(unsigned long)(adata+0.5);

for(i=7;i>0;i--)
{
dis_buf[i]=count%10;
count=count/10;
}
dis_buf[0]=count;
dis_buf[8]=dis_buf[7];
dis_buf[7]=dis_buf[6];
dis_buf[6]=-2;
}

//低频液晶显示
void display()
{

//  LCM1602_WRITECMD(0x80);
//  LCM1602_DELAY(1);
//  for(p=0;p<10;p++)
//  {
//  LCM1602_WRITEDATA(frequence[p]);
//  LCM1602_DELAY(1);
//  }

//LCM1602_WRITECMD(0xc0);
//LCM1602_DELAY(1);

for(i=0;i<11;i++)
{
lcd_char_write(i1dis_buf[i]+0x30);
//LCM1602_WRITEDATA(dis_buf[i]+0x30);
//LCM1602_DELAY(1);
  lcd_delay(1);
    }

}

//外中断1
void init1() interrupt 2
{
if(firstex==0)
{
TH1=0;
TL1=0;
TH0=0;
TL0=0;
t0_hh=0;
t1_hh=0;
TR1=1;
TR0=1;
EX1=0;
firstex=1;
secondex=0;
}
else
{
TR1=0;
TR0=0;
secondex=1;
EX1=0;
q=q+1;
if (q>2)
{ led=1;
}
else
{ led=0;}
if (q==3) q=0;
}

}
//定时器1中断处理
void timer1() interrupt 3
{
t1_hh++;
}

void timer0() interrupt 1
{
t0_hh++;
if(t0_hh>=20)
{
IE1=0;
EX1=1;
}
}
void main()
{
lcd_system_reset();

TMOD=0x51;

ET1=1;
ET0=1;
IT1=1;
string_write(00“Frequence Test“);
EX1=1;
EA=1;
while(1)
{
if(secondex==1)
{
deal_data();//f存在count
secondex=0;
firstex=0;
EX1=1;
display();
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2595  2013-05-10 23:42  等精度频率计\1602.h

     文件       1894  2013-05-10 23:11  等精度频率计\newplj.c

     文件       4913  2013-05-10 23:42  等精度频率计\newplj.LST

     文件      13625  2013-05-10 23:42  等精度频率计\newplj.OBJ

     文件      12787  2013-05-10 23:42  等精度频率计\plj

     文件       2946  2013-05-10 22:49  等精度频率计\plj.c

     文件       5827  2013-05-10 23:42  等精度频率计\plj.hex

     文件         26  2013-05-10 23:42  等精度频率计\plj.lnp

     文件       7033  2013-05-10 22:49  等精度频率计\plj.LST

     文件      17318  2013-05-10 23:42  等精度频率计\plj.M51

     文件      11011  2013-05-10 22:49  等精度频率计\plj.OBJ

    .......      1406  2012-04-06 16:02  等精度频率计\plj.opt.bak

     文件        531  2013-05-10 23:51  等精度频率计\plj.plg

    .......      1990  2012-04-06 16:02  等精度频率计\plj.Uv2.bak

    .......     69366  2013-05-10 23:51  等精度频率计\plj.uvgui.wxf

    .......     69397  2013-05-10 23:21  等精度频率计\plj.uvgui_wxf.bak

    .......      6118  2013-05-10 23:51  等精度频率计\plj.uvopt

    .......     13334  2013-05-10 23:21  等精度频率计\plj.uvproj

     文件          0  2012-04-06 15:03  等精度频率计\plj_Uv2.Bak

    .......      6118  2013-05-10 23:21  等精度频率计\plj_uvopt.bak

     文件     120066  2013-05-10 23:51  等精度频率计\等精度测频.DSN

     文件       1274  2013-09-12 19:19  等精度频率计\等精度测频.PWI

     目录          0  2013-09-12 19:19  等精度频率计

    I.A.SH.     39936  2013-09-12 19:18  等精度频率计\Thumbs.db

----------- ---------  ---------- -----  ----

               409511                    24


评论

共有 条评论