应该乘以2才能得到一个周期,但是我乘以4后才能得到正确结果,为什么呢,程序如下: void main() { initlcd();//液晶显示初始化 CT_init();//定时计数器初始化 EA=1;//开总中断 EX0=1;//允许外部中断 IT0=1;//设置外部中断方式为下降沿触发 ... 应该乘以2才能得到一个周期,但是我乘以4后才能得到正确结果,为什么呢,程序如下:
void main()
{
initlcd();//液晶显示初始化
CT_init();//定时计数器初始化
EA=1;//开总中断
EX0=1;//允许外部中断
IT0=1;//设置外部中断方式为下降沿触发
P3=0xff;
while(1)
{
t0=u*65536+x;//计算脉冲时间宽度
f=1000000/(4*t0);//计算频率
c=f*100;//计算结果逐位保存
a[9]=c%10+48;
a[8]=(c/10)%10+48;
c=f;
a[6]=c%10+48;
a[5]=(c/10)%10+48;
a[4]=(c/100)%10+48;
a[3]=(c/1000)%10+48;
a[2]=(c/10000)%10+48;
write_com(0x80);
for(i=0;i<=11;i++)
{
write_data(a[i]);
delay(10);
}
}
}
void CT_init()//定时计数器初始化
{
TMOD=0x99;//GATE=1,T0工作在方式1,定时方式
TH0=0;//定时计数器初值清零
TL0=0;
TR0=1;//TR0置位,此时定时计数器的启动有INT0引脚电平决定
ET0=1;//开中断
}
void ITC0() interrupt 0//外部中断0服务程序
{
u=m;//读定时计数器0溢出次数
m=0;//溢出次数清零
x=TH0*256+TL0;//读定时计数器0当前值
TH0=0;//定时计数器0清零
TL0=0;
}
void TIME0() interrupt 1//定时计数器0溢出中断
{
m++;//溢出次数加1
}
一、基本原理 使用555产生矩形波信号,输入到单片机进行测量频率。 测频的方案有多种: 1、测
在下想做个频率计用来检测NE555的频率,那请问输入端电路怎么弄,以及程序的测量怎么写? 直接把555的
#include //********数码管位代码表(P0口)**********// unsigned ch
待测频率范围在6K~60K。现在只取100ms,测量出来以后频率值跳动太大,有没有什么改进的地方,使频率值
#include unsigned char code dispcode[10]={0xc0,0xf9,
有一个信号由200hz的NRZ码控制输出两个频率不同的方波(1600,800)。现在要还原,如果检测到160
频率测量精度为1HZ 误差小于10HZ通过LCD1602显示出来 我有一个通过数码管显示的,你可以把他改
急求: 要求: ⑴.设计一个简易数字频率计,用于测量数字信号的频率并显示,用一个开关控制频率计的起动和停
【求指点】下面的程序目的是实现从P3.4口输入一个频率信号,然后从数码管上显示500ms内累计的脉冲数。但我
马上就要要好急啊我不会哪位大侠能翻译一下谢谢谢谢谢谢近年来,单片微型计算机以其强大的生命力飞速发展,在工业