//writer : gjp
//date : 2010-04-14
//function : 测试T1管教的输入脉冲频率
#include<reg52.h>
#include<LCD1602.H>
#include<test_f.h>
unsigned char code digtal[]="0123456789";
unsigned int cnt=0;
unsigned long int regs;
unsigned long int f;
void display_lcd(unsigned long int f)//将频率数据分离显示
{
unsigned char reg[7],i;
reg[0]=f/1000000;
reg[1]=f%1000000/100000;
reg[2]=f%100000/10000;
reg[3]=f%10000/1000;
reg[4]=f%1000/100;
reg[5]=f%100/10;
reg[6]=f%10;
for(i=0;i<7;i++)
{
write_com(0x80+0x45+i);
write_date(digtal[reg[i]]);
}
}
void main()
{
lcd1602_init();
TIME_init();
// write_com(0x80);
// write_date('1');//测试LCD正常显示
while(1)
{
if(TL1==10)TR0=1;//在T1管教输入信号第50个周期开定时器T0开始计数
if(TF0)//T0计数器溢出
{
TF0=0;
TH0=0;TL0=0;
cnt++;//溢出计数器自加
}
if(TL1==110)
{
TR0=0;//关定时器T0
TR1=0;//测试完成关计数器T1
regs=100000000/(65536*cnt+TH0*256+TL0);//计算待测频率值(浮点型数据)
f=regs;//(长整型数据)
cnt=0;
TL1=0;TH1=0;//
TL0=0;TH0=0; //定时计数器复位
display_lcd(f);//数据显示
delay_ms(100);//测试周期
TR1=1;//开计数器T1测试频率
}
}
}