ideal_orz 2015-05-09 15:34 采纳率: 0%
浏览 2289

基于51单片机频率计的代码问题,求大神解答啦~

基于51单片机的频率计设计
软件设计原理:利用单片机内部资源,定时器0定时一秒,计数器1在1s内计数,从而计算得频率。
这样能测得1hz~450khz。
我想设定当频率小于10hz时,定时器0定时10s,计数器1在10s内计数,结果测得的数据除以10就得到频率,从而获得0.1hz~10hz更精确的频率。
现在代码测试的情况是:被测频率大于10hz没有问题,如果被测频率小于10hz,结果显示为10倍的频率,意思就是程序中没有除以10,怎么改都有问题,应该是跳过那几条备注的语句了,不知道问题出在哪,求大神解答。(问题部分用*标注)

void main()
{
CT_init();
LCD_init();
while(1)
{
/gbo();
if(num==numm)//如果1s到了,就计算出区间的脉冲数目,算出频率b
{
num=0;
b=((TH1*256+TL1)*1.0043);
if(b<10)//如果频率小于10hz,闸门时间变为10s,以便测量低频更准确********************************************************************
{
numm=200;
// LCD_Write_String(0,1,table2);
b=((TH1*256+TL1)*1.0043)/10;//为什么这条语句不执行??/**********************************************************************/
display();//为什么这条语句也不执行???/**********************************************************************************/
TH1=0;
TL1=0;
TR1=1;
TR0=1;
}
else//如果频率大于10hz,则正常1s定时计数
{
display();
TH1=0;
TL1=0;
TR1=1;
TR0=1;
}

    }
}

}

  • 写回答

3条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏