设计一个以单片机为核心的频率测量装置。求大神给写一下程序。
1) 被测频率fx<110Hz,采用测周法,显示频率×××. ×××;
fx>110Hz,采用测频法,显示频率××××××。
(2)利用键盘分段测量和自动分段测量.
(3)完成单脉冲测量,输入脉冲宽度范围是100s~0.1s。
(4)显示脉冲宽度要求如下。
Tx<1000s,显示脉冲宽度×××。
Tx>1000s,显示脉冲宽度××××。
这是设计要求,谢谢大神!!! 展开
单片机频率计仿真。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit p0=P1^0;
bit tb0,tb1;
uchar tt0,tt1,tt2,tt3;
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void main()
{
TMOD=0x11;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1; //开定时器0中断
ET1=1; //开定时器1中断
TR0=1; //启动定时器0
TR1=1; //启动定时器1
while(1)
{
if(TR1==0)
{
// tt3=65536*tt2+266*TH1+TL1
TH1=0x00;TL1=0x00;
tt1=0x00;tt2=0x00;
tb1=1;
led[0]=tt3/1000000;
led[1]=tt3/100000%10;
led[2]=tt3/100000%10;
led[3]=tt3/10000%10;
led[4]=tt3/1000%10;
led[5]=tt3/100%10;
led[6]=tt3/10%10;
led[7]=tt3%10;
}
if(tt0==1 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[0];P0=0xfe
}
if(tt0==2 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[1];P0=0xfd
}
if(tt0==3 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[2];P0=0xfb
}
if(tt0==4 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[3];P0=0xf7
}
if(tt0==5 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[4];P0=0xef
}
if(tt0==6 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[5];P0=0xdf
}
if(tt0==7 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[6];P0=0xbf
}
if(tt0==8 && tb0=1)
{
tb0=1;P0==0xff;
P2=led[7];P0=0x7f
tt0=0;
}
}
}
void timer0() interrupt 1
{
TH0=(65535-2000)/256;
TL0=(65535-2000)%256;
tt1++;
if(tt1==500)
{
TR1=0; //启动定时器1
tb1=0
}
tt0++;tb0=1;
if(tb1==1 && TR1==0)TR1=1;
}
void timer1() interrupt 3
{
tt2++;
}
你好,我们这个出现错误了,请您看一下怎么错了啊,
拷贝编译试试,比较一下。