原创 频率计(初学者)

2012-3-7 20:31 1086 7 7 分类: MCU/ 嵌入式

51单片机频率计的实践  也是在网上找的  自己做了硬件 测试通过  精度误差70hz--10hz

  #include
  #define uchar unsigned char
  #define uint unsigned int 
    uint n,num, temp,i,j;
  uchar code zk[]={0x28, 0xeb, 0x12,0x82,0xe1,0x84,0x04,0xca,0x20,0x80,0x8f };

 
 void delay(uint temp)    
{        
uint i,j;       
for(i=0;i for(j=0;j<30;j++)     
{;}}       
}
void display (uchar m,uchar w,uchar q,uchar b)
{
  P3=0XFE;
    P1=zk[m];
  delay(100);
    P3=0XFD;
     P1=zk[w];
  delay(100);
 P3=0XFB;
     P1=zk[q];
  delay(100);
 P3=0XF7;
    P1=zk;
  delay(100);
 

   }
  void main(void)
 
   { uchar kk;
 uchar m,w,q,b;
   TMOD=0x25;          //   0010 0101 =>T1,定时,方式2;T0,计数,方式1      
    TH0=0;                                        
    TL0=0;                
    TH1=6;    
    TL1=6;
    TR1=1;                  
    TR0=1;                  
    ET0=1;                   
    ET1=1;                   
    EA=1;                    
  while(1)
  {     m=num/1000;
        w=num/100%10;
        q=num/10%10;
        b=num%10;
for (kk=80;kk>0;kk--)
      { display(m,w,q,b);
  }  }
   }
 
void t1(void) interrupt 3     
{    n++;
    if(n==1843) //一秒时间到
    {  n=0; //清零
       EA=0; //关中断
       num=((long)TH0*256+TL0)*2;//取计数值
   TL0=0;     //计数清零
       TH0=0;   //计数清零
       EA=1;    //重开
    }   
}
 

      
 

 

 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条