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

📄 plj.c

📁 keil和Proteus设计的C51频率计代码
💻 C
字号:
#include <reg51.h> 
/*#include<absacc.h>*/
#define uchar unsigned char
#define uint unsigned int

code seven_seg[10] = {0xC0,0xF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
code scan[4]={0X10,0X20,0X40,0X80};
uint  seven_digital[4]={0xc0,0xc0,0xc0,0xc0};
uint counter[4];/*={0,0,0,0};*/
uint msn=5;
uint i,j,count;
uint tf=0;

void timer0(void) interrupt 1 using 1	/*定时器定100ms*/
{	
	TH0=0x3c; TL0=0xb0;	/* 0x3cb0十进制15536,即初值为50000*/
	msn--;
	if(msn==0)
	{ 
	    tf=1;
	    EA=0;
	    msn=5;	/*500ms定时到,设标志位*/
	}
	for(i=0;i<4;i++)
	{	
	    seven_digital[i]=seven_seg[counter[i]];
	} 			 			 
}

void timer1(void) interrupt 3  	/*计数器*/
{

}

void contral(void)
{	int f;
	TMOD=0x51;
	TH0=0x3c;	TL0=0xb0;	   /*定时器初值*/
	TH1=0x00;	TL1=0x00;	   /*计数器初值*/
	TR0=1;TR1=1;PT0=1;ET0=1;ET1=1;EA=1;

	while(tf!=1);      /*等待500ms定时到*/
	TR0=0;TR1=0;       /*停止计数*/
	count=TH1*256+TL1;
	f= 2 * count;	   /*1m周期多少次,即频率*/
	i=0;
	for(i=0;i<=3;i++) 
	{
	   counter[i]=f%10;
	   seven_digital[i]=seven_seg[counter[i]];	
	   f/=10;
	}
} 

void main()
{
 contral();
 i=0;
 while(1)	/*显示*/
 {
  P0=seven_digital[i];
  P1=scan[i];
  j=5000;
  while(j)
  {
    j--;
  }
  i++;
  if(i>3) i=0;
 }
}




⌨️ 快捷键说明

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