⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 duru4.c

📁 这是一个等精度的测频程序
💻 C
字号:
#include<reg52.h>
#include<absacc.h>
#define DUSHU1 XBYTE[0xf3ff]
#define DUSHU2 XBYTE[0xf5ff]
#define LCDCOM XBYTE[0x8fff]
#define LCDDATA XBYTE[0x9fff]
#define uchar unsigned char
#define uint unsigned int
sbit P1_1=P1^1;
sbit P2_3=P2^3;
bit flag;
double  t;
unsigned long low ;
bit flag1;
uchar a,b,c=0;
float fx;
//float ab,bc,ac,gd,wew,rtg,hhh,yyy,ddd;
double _m,_n ;
void yanshi(uint x)
{
     uchar i;
     while(x--)
     {
          for(i=0;i<121;i++)
          {};
     }
}

void chushihua()
{
     yanshi(8);
     LCDCOM=0x38;
     yanshi(8);
     LCDCOM=0x38;
     yanshi(10);
     LCDCOM=0x38;
     yanshi(8);

}
void lcdkongzhi()
{
     LCDCOM=0x01;
     yanshi(1);
     LCDCOM=0x38;
     yanshi(1);
     LCDCOM=0x0c;
     yanshi(1);
     LCDCOM=0x06;
     yanshi(1);
}


void d_char(uchar x)
{
     uchar i;
     i=x|0x30;
     i=x|0x30;
     i=x|0x30;
     yanshi(2);
     LCDDATA=i;
     yanshi(1);
}
volatile void xsmhz(float fx)
{
     uchar x11,x12,x13,x14,x15,x16;
     uchar x1,x2,x3,x4,x5,x6;
     x11=fx/10000000;
     x1=x11;
     x12=fx/1000000-x11*10;
     x2=x12;
     x13=fx/100000-x11*100-x12*10;
     x3=x13;
     x14=fx/10000-x11*1000-x12*100-x13*10;
     x4=x14;
     x15=fx/1000-x11*10000-x12*1000-x13*100-x14*10;
     x5=x15;
     x16=fx/100-x11*100000-x12*10000-x13*1000-x14*100-x15*10;
     x6=x16-1;
     //x17=fx/10-x11*10000-x12*1000-x13*100-x14*10;
     //x7=x17;
     //x16=fx-x11*100000-x12*10000-x13*1000-x14*100-x15*10;
     //x6=x16;
     //x6=x16;
     //x6=x16;
     //chushihua();
     LCDCOM=0x80;
     yanshi(8);
     if(x1!=0x00)
     {
        d_char(x1);
     }
     d_char(x2);
          yanshi(1);
     LCDDATA=0x2e;
     //LCDDATA=0x2e;
     yanshi(1);
     d_char(x3);
     d_char(x4);
     d_char(x5);
     d_char(x6);
     LCDDATA=0x20 ;
     yanshi(1);
     //d_char(x7);
     //d_char(x6);
     LCDDATA=0x20 ;
     yanshi(1);
     LCDCOM=0xc0 ;
      //LCDCOM=0xc0 ;
      //LCDCOM=0xc0 ;
     yanshi(1);
     LCDDATA=0x4d;
     yanshi(1);
     LCDDATA=0x48;
     yanshi(1);
     LCDDATA=0x7a;
     yanshi(1);
}
volatile void xskhz(float fx)
{
     uchar x11,x12,x13,x14,x15,x16,x17;
     uchar x1,x2,x3,x4,x5,x6,x7;
     float z;
     x11=fx/100000;
     x1=x11;
     x12=fx/10000-x11*10;
     x2=x12;
     x13=fx/1000-x11*100-x12*10;
     x3=x13;
     x14=fx/100-x11*1000-x12*100-x13*10;
     x4=x14;
     x15=fx/10-x11*10000-x12*1000-x13*100-x14*10;
     x5=x15;
     x16=fx-x11*100000-x12*10000-x13*1000-x14*100-x15*10;
     x6=x16;
     z=fx-x11*100000-x12*10000-x13*1000-x14*100-x15*10-x16;
     //y=z;
     x17=z*10;
     if(fx>=1000.0&&fx<10000.0){
     x7=x17-7;                  }
     else x7=x17;
     //x7=x17;
     //x7=x17;
     //chushihua();
     LCDCOM=0x80;
     if(x1!=0x00)
     {
       d_char(x1);
     }
     if(x1!=0x00||x2!=0x00)
     {
      yanshi(3);
        d_char(x2);
     }
     yanshi(3);
     d_char(x3);
     yanshi(3);
     LCDDATA=0x2e;
     yanshi(1);
     d_char(x4);
     d_char(x5);
     d_char(x6);
     d_char(x7);
     LCDDATA=0x20;yanshi(1);
     LCDDATA=0x20;yanshi(1);
     LCDDATA=0x20;yanshi(1);
     LCDDATA=0x20;yanshi(1);
     yanshi(1);
     LCDCOM=0xc0;
     //LCDCOM=0xc0;
     yanshi(1);
     LCDDATA=0x4b;
     yanshi(1);
     LCDDATA=0x48;
     yanshi(1);
     LCDDATA=0x7a;
     yanshi(1);
}
volatile void xshz(float fx)
{
     uchar x11,x12,x13,x14,x15,x16,x17;
     uchar x1,x2,x3,x4,x5,x6,x7;
     float y;
     x11=fx/100;
     x1=x11;
     x12=fx/10-x11*10;
     x2=x12;
     x13=fx-x11*100-x12*10;
     x3=x13;
     y=fx-x13-10*x12-100*x11;
     x14=y*10 ;
     x4=x14;
     x15=y*100-x14*10;
     x5=x15;
     x16=y*1000-x14*100-x15*10;
     x6=x16;
     x17=y*10000-x14*1000-x15*100-x16*10;
     x7=x17;
     yanshi(1);
     LCDCOM=0x80;
     if(x1!=0x00)
     {
        d_char(x1);
     }
     if(x1!=0x00||x2!=0x00)
     {
        d_char(x2);
     }
     d_char(x3);
     yanshi(2);
     LCDDATA=0x2e ;
     yanshi(2);
     d_char(x4);
     d_char(x5);
     d_char(x6);
     d_char(x7);
     //d_char(x7);
     LCDDATA=0x20 ;
     yanshi(2);
     LCDDATA=0x20 ;
     yanshi(2);
     LCDCOM=0xc0;
     yanshi(2);
     LCDDATA=0x48;
     yanshi(2);
     LCDDATA=0x7a;
     yanshi(2);
     LCDDATA=0x20 ;
     yanshi(2);
}
void zhongduan0() interrupt 0 using 2
{
     TR0=0;
     TR1=0;
     EA=0;
     flag=1;
}
void zhongduan1() interrupt 2 using 2
{
     if(TR1==0) {TR1=1;}
     else
       {TR1=0;
        flag1=0;
       }
}
volatile t0(void) interrupt 3 using 2
{
    low++;
}
volatile void dipin( )
{    low=0;t=0;
     P1_1=0;
     P2_3=1;
     EA=1;
     IT1=1;
     EX1=1;
     ET1=1;
     EX0=0;
     TMOD=0x91;
     TH1=0;
     TL1=0;
     TR1=0;
     while(flag1) {};
      t=low*65536+TH1*256+TL1;
      fx=1000000/t;
      //if(fx<30) fx+=1;
      xshz(fx);
}
volatile void mhz()
{
          flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       EA=1;
       EX0=0;
       yanshi(3);
       /*for(i=0;i<1000;i++)
          {}; */
       P1_1=0;
       yanshi(1);
       TR0=0;
       TR1=0;
      // if(flag)
       // {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;
         fx=_m*11993000/_n;//}
       xsmhz(fx);
}
volatile void bkhz()
{
       flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       EA=1;
       EX0=0;
       //yanshi(900);
       yanshi(1000);
       P1_1=0;
       yanshi(10);
       TR0=0;
       TR1=0;
       //if(flag)
       // {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;
         fx=_m*11994000/_n;// }
       xskhz(fx)  ;
}
volatile void skhz()
{
       flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       EA=1;
       EX0=0;
       //yanshi(900);
       yanshi(1410);
       P1_1=0;
       yanshi(10);
       TR0=0;
       TR1=0;
       //if(flag)
       // {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;
         fx=_m*11994000/_n;// }
       xskhz(fx)  ;
}
/*volatile void khz()
{
       flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       EA=1;
       EX0=0;
       //yanshi(900);
       yanshi(1410);
       P1_1=0;
       yanshi(10);
       TR0=0;
       TR1=0;
       //if(flag)
       // {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;
         fx=_m*11994000/_n;
       xskhz(fx)  ;
}  */
volatile void bhz()
{
       flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       yanshi(1000);
       //yanshi(1400);
       P1_1=0;
       yanshi(600);
       TR0=0;
       TR1=0;
       //if(flag)
       // {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;

       fx=_m*11993000/_n-1;
       xshz(fx) ;
}
/*volatile void shz()
{
       flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       EA=1;
       EX0=0;
       yanshi(1400);
       P1_1=0;
       yanshi(130);
       TR0=0;
       TR1=0;
      // if(flag)
      //  {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;
         fx=_m*11993000/_n; // }
       xshz(fx) ;
}    */
volatile void main()
{

     chushihua();
     lcdkongzhi();
     for(;;)
     {
       flag=0;
       flag1=1;
       P1_1=0;
       P2_3=1;
       IT0=1;
       IT1=1;
       TMOD=0x55;
       TH0=0;TL0=0;
       TH1=0;TL1=0;
       P2_3=0;
       TR0=1;
       TR1=1;
       EA=1;
       EX1=0;
       EX0=0;
       P1_1=1;
       EA=1;
       EX0=0;
       yanshi(1000);
       P1_1=0;
       yanshi(140);
        TR0=0;
       TR1=0;
       //if(flag)
       // {
         a=DUSHU1;
         b=DUSHU2;
         _m=65536*TH0+256*TL0+a;
         _n=65536*TH1+256*TL1+b;
         fx=_m*11993000/_n;
         if(fx>=999990.0)
               {   mhz( );  }
         if(fx>=10000.0&&fx<1000000.0)
               {   bkhz( );  }
          if(fx>=1000.0&&fx<10000.0)
               {   skhz( );  }
         if(fx>=100.0&&fx<1000.0)
               {   bhz( );  }
         /*if(fx>10.0&&fx<100.0)
               {   shz( );  }  */
         if(fx<100.0)
               {
                dipin();
                xshz(fx);
               }
              //else
              // {
              // if(fx<2000){fx=_m*11991000/_n;}
               // khz( );

         flag=0;
        //}
        //yanshi(10);
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -