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

📄 plvji.c

📁 基于AT89C2051的频率计
💻 C
字号:
 #include <reg51.H>
unsigned char code dispcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//字码段0~9 程序存储空间
unsigned char a=0,b=0,c=0,d=0,e=0,f=0,g=0;
unsigned long int pinlv=0,pin=0;
unsigned long int count=0;
void delay()   //延时子程序
{	
	int j;
	for(j=0;j<944;j++);
}

void display()
{	f=pinlv/100000;	  //十万位
    e=pinlv/10000%10;	  //万位  		
	a=pinlv/1000%10;	  //千位
	b=pinlv/100%10;	  //百位
	c=pinlv%100/10; //十位 	
	d=pinlv%10;  //个位  
if(pinlv<1000)
    { pin=pinlv*10;
	a=pin/1000%10;	  //千位
	b=pin/100%10;	  //百位
	c=pin%100/10; //十位 	
	d=pin%10;  //个位
	SCON=0;//串口控制器
	P1=0xfe&0x1f; //*后面是定义显示单位的
	SBUF=dispcode[a];
	while(TI==0);
	TI=0;	
	delay();
	P1=0xfd&0x1f;
	SBUF=dispcode[b];
	while(TI==0);
	TI=0; 		
	delay();	
	P1=0xfb&0x1f;
	SBUF=dispcode[c]&0x7f;//十位有点,精确到0.1
	while(TI==0);
	TI=0; 			
	delay();
	P1=0xf7&0x1f;
	SBUF=dispcode[d];
	while(TI==0);
	TI=0;  	 	
	delay();
	}
else
	{  SCON=0;
	P1=0xfe&0x2f;	//*后面的是定义单位的显示
	SBUF=dispcode[f];
	while(TI==0);
	TI=0;	
	delay();
	P1=0xfd&0x2f;
	SBUF=dispcode[e];
	while(TI==0);
	TI=0; 		
	delay();	
	P1=0xfb&0x2f;
	SBUF=dispcode[a]+0x7f;
	while(TI==0);
	TI=0;  			
	delay();
	P1=0xf7&0x2f;
	SBUF=dispcode[b];
	while(TI==0);
	TI=0;  	 	
	delay();
	}
} 

void main(void)
{   EA=0;//关主中断
	TMOD=0x51;//方式寄存器,TO定时,T1计数功能
  	TH0=0x3c;			  	//0x3c 定时50ms
 	TL0=0xb0;		   		//0xb0
	TH1=0;
	TL1=0;
	ET0=ET1=1;//T0允许中断	
	EA=1;//开主中断
	TR1=1;//T1计数
	TR0=1;//T0定时	 
	while(1) 
	{		
	display();
	}		
	
}
void time0(void) interrupt 1 using 1   //定时器0溢出中断模式2可重装载
{
	TR0=0;
	count++;
	TH0=0x3c;
	TL0=0xb0;
	if(count==20)
	{	count=0;
		TR1=0;
		pinlv=TH1*256+TL1;
		//pinlv=pinlv*8;
		TH1=0;
		TL1=0;
		TR1=0;
	
	 } 
	 TR0=1;
}

⌨️ 快捷键说明

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