#include<reg52.h>
#include<absacc.h>
#include<math.h>
#define A8255 XBYTE[0x7cff]
#define B8255 XBYTE[0x7dff]
#define C8255 XBYTE[0x7eff]
#define D8255 XBYTE[0x7fff]
#define lcd0 XBYTE[0x8fff]
#define lcd1 XBYTE[0x9fff]
#define lcd2 XBYTE[0xafff]
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit bf=ACC^7;
sbit pre=P1^0; //预置门控制位
sbit clear=P1^1; //清零计数器位
sbit r=P1^2; //双D触发器的清零端R
sbit s=P1^3; //双D触发器S端
double fx; //FX的频率值
double th00,tl00,th11,tl11;
unsigned char pa,pb;
double m,n;
int wei;
uchar num[16]; //定义显示的数字
void set_up(void);
void delay(void);
double count();
void getnum(void);
void display(void);
void f_busy(void);
void main()
{
D8255=0x92;
P1=0;
lcd0=0x01; //初始化LCD
f_busy();
lcd0=0x01;
f_busy();
lcd0=0x3f;
f_busy();
lcd0=0x0e;
f_busy();
lcd0=0x06;
f_busy(); //AB口都做输入口
while(1)
{
r=1;
s=1; //计数器393、双D触发器清零
clear=1; //开启双D触发器
clear=0; //开启计数器
set_up();
pre=1;
delay(); //延时1秒后将P1.0取反
pre=0;
delay();
TR0=0;
TR1=0;
fx=count(); //计算频率
getnum();
display();
}
}
void set_up(void)
{
TMOD=0x55; //两个计数器同时计数
TH0=0;
TL0=0;
TH1=0;
TL1=0; //初始化8051计数器
IE=0x8a;
TR0=1;
TR1=1; //开始计数
}
void delay(void) //延时1秒
{
uint i,j;
for(i=0;i<9800;i++)
{
for(j=0;j<12;j++);
}
}
double count() //计算频率的值
{
double temp;
pa=A8255;
pa=pa-1;
pb=B8255;
th00=TH0;
tl00=TL0;
th00*=65536.0;
tl00*=256.0;
m=th00+tl00+pa;
th11=TH1;
tl11=TL1;
th11*=65536.0;
tl11*=256.0;
n=th11+tl11+pb;
temp=(m*(2.0e6+160.0))/n;
return temp;
}
void getnum(void)
{
ulong number,k;
int i;
k=number=(ulong)fx; //将浮点型换成长整形
for(i=7;i>=0;i--)
{
num[i]=number%10+48;
number/=10;
}
i=0;
do
wei=i;
while(!(num[i++]-48)&&(i<8));
fx-=k;
for(i=8;i<16;i++)
{
fx*=10; //计算小数,乘以10之后再取余
number=(ulong)fx;
num[i]=number%10+48;
}
}
void display(void) //将值显示在LCD上
{
int i;
lcd0=0x01;
f_busy();
lcd0=0x80;
f_busy();
if(wei<2) //输入兆赫兹
{
for(i=wei;i<=1;i++)
{
lcd2=num[i];
f_busy();
}
lcd2='.';
f_busy();
for(;i<=wei+6;i++)
{
lcd2=num[i];
f_busy();
}
lcd0=0xc0;
f_busy();
lcd2='M';
f_busy();
}
else if(wei<5) //输入K赫兹
{
for(i=wei;i<=4;i++)
{
lcd2=num[i];
f_busy();
}
lcd2='.';
f_busy();
for(;i<=wei+6;i++)
{
lcd2=num[i];
f_busy();
}
lcd0=0xc0;
f_busy();
lcd2='K';
f_busy();
}
else if(wei<8) //输入赫兹
{
for(i=wei;i<=7;i++)
{
lcd2=num[i];
f_busy();
}
lcd2='.';
f_busy();
for(;i<=wei+6;i++)
{
lcd2=num[i];
f_busy();
}
lcd0=0xc0;
f_busy();
}
else if(wei==8)
{
lcd2=48;
f_busy();
lcd2='.';
f_busy();
for(i=8;i<=13;i++)
{
lcd2=num[i];
f_busy();
}
lcd0=0xc0;
f_busy();
}
lcd2='H';
f_busy();
lcd2='Z';
f_busy();
}
void f_busy (void)
{
uint i;
for(i=0;i<100;i++);
}
没有合适的资源?快使用搜索试试~ 我知道了~
pinlv.rar_频率精度0.1
共77个文件
cdb:15个
hdb:12个
v:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 23 浏览量
2022-09-23
09:54:12
上传
评论
收藏 436KB RAR 举报
温馨提示
利用51单片机和FPGA测试频率 精度可测量0.1到10M Hz的频率 包含了详尽的源代码
资源推荐
资源详情
资源评论
收起资源包目录
pinlv.rar (77个子文件)
pinlv_test
data_lcd.bsf 2KB
count2.bsf 2KB
choose.v 1KB
pinlv.flow.rpt 3KB
pinlv.done 26B
pinlv.qpf 902B
count2.v 288B
fenpin10.bsf 2KB
pinlv.map.smsg 417B
D_flip_flop.v 178B
db
pinlv.(6).cnf.hdb 382B
pinlv.(0).cnf.hdb 2KB
pinlv.db_info 136B
pinlv.cmp.cdb 55KB
pinlv.rtlv_sg_swap.cdb 2KB
pinlv.map.qmsg 32KB
pinlv.(3).cnf.hdb 2KB
pinlv.(2).cnf.cdb 6KB
pinlv.map.hdb 12KB
pinlv.(4).cnf.hdb 365B
pinlv.(4).cnf.cdb 565B
pinlv.hier_info 13KB
pinlv.(3).cnf.cdb 3KB
pinlv.pre_map.cdb 11KB
pinlv.cmp0.ddb 57KB
pinlv.(2).cnf.hdb 2KB
pinlv.hif 2KB
pinlv.cmp.hdb 13KB
pinlv.rtlv.hdb 13KB
pinlv.cmp.rdb 31KB
pinlv.fit.qmsg 32KB
pinlv.(1).cnf.hdb 431B
pinlv.eco.cdb 141B
pinlv.cmp.tdb 50KB
pinlv.dbp 0B
pinlv.(0).cnf.cdb 4KB
pinlv.rtlv_sg.cdb 13KB
pinlv.tan.qmsg 178KB
pinlv.cmp.qrpt 0B
pinlv.(5).cnf.cdb 3KB
pinlv.sgdiff.cdb 12KB
pinlv.sld_design_entry.sci 134B
pinlv.sgdiff.hdb 14KB
pinlv.psp 0B
pinlv.syn_hier_info 0B
pinlv.cbx.xml 87B
pinlv.(1).cnf.cdb 803B
pinlv.map.cdb 14KB
pinlv.sld_design_entry_dsc.sci 134B
pinlv.signalprobe.cdb 441B
pinlv.(6).cnf.cdb 511B
pinlv.asm.qmsg 1KB
pinlv.(5).cnf.hdb 681B
pinlv.pre_map.hdb 13KB
pinlv.tan.summary 2KB
pinlv.sof 137KB
pinlv.qsf 4KB
choose.bsf 3KB
pinlv.map.summary 312B
count1.bsf 2KB
count1.v 395B
pinlv.asm.rpt 8KB
D_fip_flop.bsf 2KB
pinlv.fit.summary 403B
data_lcd.v 117B
pinlv.tan.rpt 190KB
pinlv.bdf 28KB
pinlv.fit.rpt 116KB
fenpin10.v 239B
pinlv.dpf 121B
pinlv.map.rpt 30KB
pinlv.map.eqn 54KB
pinlv.qws 2KB
pinlv.pof 512KB
pinlv.pin 30KB
pinlv.fit.eqn 79KB
频率计.txt 4KB
共 77 条
- 1
资源评论
寒泊
- 粉丝: 76
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功