51单片机如何测信号发生器的频率

2019-07-15 17:15发布

用中断 定时器什么的 为什么我测的跟我仪器发出的信号频率不一样 附上原代码
long count=0;
int i=0,x=0;
uint shu[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
uchar num;

void time1_int(void) interrupt 3
{
TH1=TL1=0;
TR1=1;
x++;
}

void time0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
i++;
if(i==20)
{
  i=0;
  TR1=0;
  count=65536*x+TH1*256+TL1;
  x=0;
  TH1=TL1=0;
  TR1=1;
}
}

void show()
{
// LcdWriteCom(0x83); LcdWriteData(0x66);        Lcd1602_Delay1ms(5);                  //f
// LcdWriteCom(0x84); LcdWriteData(0x3d);        Lcd1602_Delay1ms(5);                  //=
LcdWriteCom(0x85); LcdWriteData(shu[count/100000]);            Lcd1602_Delay1ms(5);
LcdWriteCom(0x86); LcdWriteData(shu[(count/10000)%10]);        Lcd1602_Delay1ms(5);   
LcdWriteCom(0x87); LcdWriteData(shu[(count/1000)%10]);            Lcd1602_Delay1ms(5);
LcdWriteCom(0x88); LcdWriteData(shu[(count/100)%10]);            Lcd1602_Delay1ms(5);
LcdWriteCom(0x89); LcdWriteData(shu[(count/10)%10]);            Lcd1602_Delay1ms(5);  
LcdWriteCom(0x8a); LcdWriteData(shu[ count%10] );                Lcd1602_Delay1ms(5);         
// LcdWriteCom(0x83); LcdWriteData(0x48);        Lcd1602_Delay1ms(5);                  //H
// LcdWriteCom(0x83); LcdWriteData(0x7a);        Lcd1602_Delay1ms(5);                  //Z
}

void main()
{
TMOD=0x51;
TH1=0X00;
TL1=0X00;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
LcdInit();
while(1)
{
          show();
        Lcd1602_Delay1ms(5);
}
}


1602显示没问题 大神们自动忽略 为什么显示的不对
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。