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

📄 1.3.c

📁 基于单片机的电子表与温度计
💻 C
字号:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a,b,c,c1,d,x,y,xi,n,n0,
ke,ke0,kex,ke1,k1,ke2,ke3,ke4,
ry,ry0,ry1,hf,hf0,hf1,hf2,hf3,
bian,ge,shi,bai,qian,q1,q2,
q3,q4,t,f,f1,f2,f3,ke12;
uchar code table[]={
//0x12,0x7e,0x43,0x4a,0x2e,
//0x8a,0x82,0x5e,0x02,0x0a};
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
		
void into()
{
	TMOD=0x22;
	EA=1;
	ET0=1;
	TR0=1;
	TH0=56;
	TL0=56;
	a=0;
	b=0;
	c=0;
	d=0;
	q1=0xef;
	q2=0xf7;
	q3=0xfb;
	q4=0xfd;
	f=0xff;
		f1=0xff;
	   	f2=0xff;
	   	f3=0xff;
	ke1=0;
	ke2=0;
	ke3=1;
	ke4=1;
	ry=187;
	hf=123;
	xi=0;
	n=2008;
//	P0=0x00;
}
void delay(uint b)
{
	for(x=b;x>0;x--)
		for(y=30;y>0;y--);
}
void display()
{
	ge=xi%10;
	P1=q1;
	P2=table[ge];
	 delay(10);
	shi=xi%100/10;
  	P1=q2;
	P2=table[shi];
	 delay(10);
	bai=xi/100%10;
	P1=q3;
	P2=table[bai];
	 delay(10);
	qian=xi/1000;
  	P1=q4;
	P2=table[qian];
	delay(10);
	P1=0xff;
}


void key()
{
	
	uchar i,j;
	ke=P3&0x3c;
	 
    if (a>3000)
		i=c; 
	if (a<1500)
		j=c; 
	if (ke==0x38||ke==0x34||ke==0x2c||ke==0x1c)
		{
			delay(10);
			if (ke==0x38||ke==0x34||ke==0x2c||ke==0x1c)
			{
				kex=ke;
				delay(500);
				ke0=P3&0x3c;
			
			}
		}
	switch(kex)
	{
		case 0x38:	if (ke!=ke0)ke1++;break;
		case 0x34: if (ke!=ke0)ke2++;break;
	//	case 0x2c: if (ke!=ke0)ke3++;break;
	//	case 0x1c: if (ke!=ke0)ke4++;break;
	}
	kex=0;
	if (ke1>4)
	   ke1=0;
	if (ke2>4)
	   ke2=0;
	    
    if (ke1==0)
    {
			k1=2;
   	   if (c%60>20&&c%60<=40)
	   		k1=3;
       if (c%60>40&&c%60<=60)
        	k1=4;
	   switch(k1)
		{
			case 2:xi=hf1;break;
			case 3:xi=ry1;break;	   
			case 4:xi=n;break;
        	default : ;
		}  
    }	
  else	  
	 	switch(ke1)
		{
			case 1:xi=c1;break;
			case 2:xi=hf1;break;
			case 3:xi=ry1;break;
			case 4:xi=n;break;
			default : ;
		}  
	if (ke2>0)
	{
		switch(ke2)
		{
			case 1:	if (i!=j)t=f,f=q1,q1=t;
					if (ke!=ke0&&ke==0x2c)ge++;
		        	if (ke!=ke0&&ke==0x1c)ge--;break;
			case 2: if(i!=j)t=f1,f1=q2,q2=t;
					if (ke!=ke0&&ke==0x2c)shi++;
					if (ke!=ke0&&ke==0x1c)shi--;break;
			case 3: if (i!=j)t=f2,f2=q3,q3=t;
					if (ke!=ke0&&ke==0x2c)bai++;
					if (ke!=ke0&&ke==0x1c)bai--;break;
			case 4: if (i!=j)t=f3,f3=q4,q4=t;
					if (ke!=ke0&&ke==0x2c)qian++;
					if (ke!=ke0&&ke==0x1c)qian--;break;
			default : ;
		}
		d=ge+shi*10+bai*100+qian*1000;
		xi=d;
		if (ke1!=0)
			ke12=ke1+5;
		switch(ke12)
		{
			case 7:hf0=d;break;
			case 8:ry0=d;break;
			case 9:n0=d;break;
		}
		if (ke1!=0)
		{
			switch(ke12)
			{
				case 6:c=d;break;
				case 7:hf=d;break;
				case 8:ry=d;break;
				case 9:n=d;break;
			}
			ke12=ke1-5;
		}				 
	//	ke1=0;	
	}
 
}
void year()
{			
	if(c==3600)
	{
		c=0;
		hf3++;
	}
	hf=hf3*60+c/60;
	if(hf==24*60)
	{
		ry++;
		hf=0;
	}
	if (ry==373)
		n++,ry=31;
    switch(ry/31)
	{
		//case 1:   if (ry%60==32)ry=ry+28;break;
		case 2:   if (ry%31==29)ry=ry+2;break;
	//	case 3:   if (ry%60==32)ry=ry+28;break;
		case 4:   if (ry%31==30)ry=ry+1;break;
	//	case 5:   if (ry%60==32)ry=ry+28;break;
		case 6:   if (ry%31==30)ry=ry+1;break;
	//	case 7:   if (ry%60==32)ry=ry+28;break;
	//	case 8:   if (ry%60==32)ry=ry+28;break;
		case 9:   if (ry%31==30)ry=ry+1;break;
	//	case 10:  if (ry%60==32)ry=ry+28;break;
		case 11:  if (ry%31==30)ry=ry+1;break;
	//	case 12:  if (ry%60==32)ry=ry+28;break;
		default : ;
	} 

} 
void time()
{
	if (n==n0&&ry1==ry0&&hf1==hf0)
	{
		P0=0x01;
	}
	if (hf1!=hf0)
		P0=0x00;

}
void transfrom ()
{
	hf1=hf%10+hf%60/10*10+hf/60%10*100+hf/60/10*1000;
	c1=c%10+c%60/10*10+c/60%10*100+c/60/10*1000;
	ry1=(ry/31+1)%10+(ry%31+1)/10*10+ry/31%10*100+ry/31/10*1000;
}
void main()
{
	into();

	while(1)
	{	
		year();
		key();
	    transfrom ();
		display();
		time();
			
	}
} 
void exter0() interrupt 1
{
	a++;
	if(a==4608)
			{
			c++;
			a=0;
			}			
}

⌨️ 快捷键说明

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