原创 1602 频率测量proteus程序

2009-5-14 10:59 2175 5 5 分类: MCU/ 嵌入式

https://static.assets-stash.eet-china.com/album/old-resources/2009/5/14/7bd8bbfd-1c06-4f42-8b0e-c4d3704a030e.rar
#include <reg51.h>
#include "LCD1602.h"
#include "stdio.h"
float fre;
unsigned int cnt,t1count;


sbit s0=P3^0;
sbit s1=P3^1;
sbit s2=P3^2;


void Delay1ms(unsigned int count)
{
 unsigned int i,j;
 for(i=0;i<count;i++)
 for(j=0;j<120;j++);
}


 void delay (int m)
{
 unsigned char i,j;
 for (i=0;i<m;i++)
 for (j=0;j<253;j++);
}


   void T1_ISP(void) interrupt 3
{
  t1count ++;
  TL1=0;
  TH1=0;
}


 void Timer_Init (void)
{
 TMOD=0x52;
    TH0=0x06;
    TL0=0x06;
    EA="1";
    ET0=1;
    ET1=1;


}


void T0_ISP(void) interrupt 1
{
 cnt++;
 if (cnt==4000)
 {
  cnt=0;
     EA="0";
       fre="65536"*t1count+256*TH1+TL1;   
   
 }
   
}


 



main()
{  
   unsigned int value = 0;
   unsigned char buffer[40];
   Timer_Init();
   while (1)
    {
      if (s0==0)
       {
       delay (2);
        if (s0==0)
       TR0=1;
      TR1=1;
         LCD_Initial();
       GotoXY(0,0);
      Print("    Frequency");
 
      while(1)
       {
     GotoXY(0,1);  
     sprintf(buffer,"%f",fre);
     Print(buffer);
     Delay1ms(200);
       }      
        }


  if (s1==0)
       {
       delay (2);
        if (s1==0)
       TR0=1;
      TR1=1;
         LCD_Initial();
       GotoXY(0,0);
      Print("    period(s)");
 
      while(1)
       {
     GotoXY(0,1);  
     sprintf(buffer,"%f",1/fre);
     Print(buffer);
     Delay1ms(200);
       }      
        }


  if (s2==0)
       {
       delay (2);
        if (s2==0)
       TR0=1;
      TR1=1;
         LCD_Initial();
       GotoXY(0,0);
      Print("    venation");
 
      while(1)
       {
     GotoXY(0,1);  
     sprintf(buffer,"%f",2/fre);
     Print(buffer);
     Delay1ms(200);
       }      
        }
     }
}

文章评论0条评论)

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