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

📄 简易频率计.txt

📁 用AVR编写的点阵显示屏
💻 TXT
字号:
//MCU:AT89S52
//晶振:12M
#include"AT89X52.H"
unsigned char code numcode[]={0x3f,0x06,0x5b,0x4f,0x66,
                              0x6d,0x7d,0x07,0x7f,0x6f,
							  0x48,0x71
							  };//数字0~9及"F="共阳数码管代码
				
unsigned char dispbuff[8]={0,0,0,0,0,0,10,11};
unsigned char code bitcode[]={0xfe,0xfd,0xfb,0xf7,
                              0xef,0xdf,0xbf,0x7f}; //数码管位选代码
unsigned char temp[8];    //频率值暂存
unsigned char disp_bit_count; 
unsigned char T0_ovf_times;  //记录计数器C/T0溢出次数
unsigned int T1_count;
bit flag;    //读频率标志位,flag=1时,读和计算频率值。
unsigned long f; //频率值
 
void main(void)
{
  unsigned char i;
 
  TMOD=0x15;//定时器T1工作在方式1(16位),T0工作在16位计数方式
  TH0=0;   //T0寄存器清零
  TL0=0;
  TH1=(65536-4000)/256; //T1装载4MS定时初值
  TL1=(65536-4000)%256;
  TR0=1;  //开计数器C0;
  TR1=1;  //开定时器T1;
  ET0=1;  //允许计数器C0溢出中断
  ET1=1;  //允许定时器T1溢出中断
  EA=1;  //开总中断
  
  while(1)
   {
     if(flag==1)
       {
         flag=0;
         for(i=0;i<8;i++)
           {
             temp[i]=0;
           }
         i=0;
         while(f/10)
           {
             temp[i]=f%10;
             f=f/10;
             i++;
           }
         temp[i]=f;
         for(i=0;i<6;i++)
           {
             dispbuff[i]=temp[i];
           }
         T1_count=0;
         T0_ovf_times=0;
         TH0=0;
         TL0=0;
         TR0=1;  //重开计数器C0
       }
   }
}
 
void t0(void) interrupt 1 
{
  T0_ovf_times++;
}

/*********T1定时2.5mS中断服务程序*********************/ 
void t1(void) interrupt 3 
{
  TH1=(65536-2500)/256;//重装定时器T1初值
  TL1=(65536-2500)%256;
  T1_count++;
  P1=0xff;
  if(T1_count==400) //定时1S到,置flag=1,允许读C/T0值和T0_ovf_time
    {
      TR0=0;  //关闭计数器C0
      T1_count=0;
      flag=1; 
  	  f=T0_ovf_times*65536+TH0*256+TL0;  //读出频率值
    }
  P0=numcode[dispbuff[disp_bit_count]];
  P1=bitcode[disp_bit_count];
  disp_bit_count++;
  if(disp_bit_count==8)
    {
      disp_bit_count=0;
    }
}

⌨️ 快捷键说明

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