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

📄 clock.txt

📁 最后一个了.代码是暑假的作业.只能用来测试单片机的.但愿有用
💻 TXT
字号:
//***********************************************************************************
//设计时间:2006年7月
//设计者:沈飞
//程序功能:电子时钟,有年月日,时分秒 分屏显示,具有调整时间的功能
//***********************************************************************************

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

uchar se,sec,min,hour,day,mon;
uint year,yea,round;

uchar code LEDValue[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//共阳0~9译码显示
uchar code LEDValue_p[10]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,0x00,0x08};//共阳0~9带点译码显示 
uchar i,j,k,l,m,n,r,q;

sbit cho=P1^0;		//分屏切换键
sbit cho1=P1^1;		//选择显示键cho1
sbit cho2=P1^2;		//选择显示键cho2
sbit count=P1^3;	//计数加一键
sbit sub=P1^4;		//计数减一键(只对年有效)
sbit t=P1^5;		//定点报时输出
bit co;
bit su;

//*****************************************
//延时:round=1,延时1毫秒
//*****************************************
delay(uint round)
{	
	while(round--)
	{	for(r=0;r<125;r++)
		{;}
	}
}

//*****************************************
//显示,P0口作为SEGB口,P2口作为COMB口
//*****************************************
void display(uchar mean,uchar q)
{	
	P0=0xff;
	P2=q;
	i=mean%10;
	P0=LEDValue_p[i];
	delay(4);
	P0=0xff;
	q=q<<1;
	P2=q;
	j=mean/10;
	P0=LEDValue[j];
	delay(4);
	q=0;
}

//*****************************************
//显示年,P0口作为SEGB口,P2口作为COMB口
//*****************************************
void display_year()
{	
	P0=0xff;
	P2=16;
	k=year%10;
	P0=LEDValue_p[k];
	delay(4);
	P0=0xff;
	P2=32;
	yea=year/10;
	l=yea%10;
	P0=LEDValue[l];
	delay(4);
	P0=0xff;
	P2=64;
	yea=yea/10;
	m=yea%10;
	P0=LEDValue[m];
	delay(4);
	P0=0xff;
	P2=128;
	n=yea/10;
	P0=LEDValue[l];
	delay(4);		
}

//*****************************************
//中断:年月日 时分秒计时
//*****************************************
time() interrupt 1{
	TH0=(65536-10000)/256;
	TL0=(65536-10000)%256;
	if(++se==100)				//计数到秒
	{	se=0;
		if(P1&0x07!=3)
		{
			if(++sec==60)			//秒计数
			{	sec=0;
				if(++min==60)		//分计数
				{	min=0;
				if(++hour==24)	//时计数
				{	hour=0;
					day++;				
					switch(mon)
					{	case 1: 
						case 3:
						case 5:
						case 7:
						case 8:
						case 10:
						case 12:{if(day==32){day=1;mon++;}} break;
						case 4:
						case 6:
						case 9:
						case 11:{if(day==31){day=1;mon++;}} break;
						case 2:{	if(mon%4==0&&day==30)
								{day=1;mon++;}
								else if(mon%4!=0&&day==29)
								{day=1;mon++;}
							} break;
					}									
					if(mon==13)
					{	mon=1;
						year++;
					}
				}
			}
		}
	}
}

main()
{
	TMOD=0x01;
	TH0=(65536-10000)/256;
	TL0=(65536-10000)%256;
	EA=1;
	ET0=1;
	TR0=1;
	se=0;
	sec=0;
	min=0;
	hour=0;
	day=1;
	mon=1;
	year=2000;
	co=count;
	su=sub;

	while(1)
	{	if(cho==1&&cho1==1&&cho2==1)		// 显示 时分秒
		{
			display(sec,1);		
			display(min,4);
			display(hour,16);
		}
		else if(cho==0&&cho1==1&&cho2==1)	// 显示 年月日
		{	
			display(day,1);
			display(mon,4);
			display_year();
		}

		else if(cho==1&&cho1==1&&cho2==0)	// 显示秒:cho1cho2:10
		display(sec,1);
	
		else if(cho==1&&cho1==0&&cho2==0)	// 显示分调整:cho1cho2:00
		{
			display(min,4);
			if(count!=co)
			{	delay(4);
				if(count!=co)
				{	if(++min==60)
					min=0;
					co=count;
				}
			}
		}
		
		else if(cho==1&&cho1==0&&cho2==1)	// 显示时调整:cho1cho2:01
		{
			display(hour,16);
			if(count!=co)
			{	delay(4);
				if(count!=co)
				{	if(++hour==24)
					hour=0;
					co=count;
				}
			}
		}
		else if(cho==0&&cho1==1&&cho2==0)	// 显示日调整:cho1cho2:10
		{
			display(day,1);
			if(count!=co)
			{	delay(4);
				if(count!=co)
				{	if(++day==32)
					day=1;
					co=count;
				}
			}
		}
		else if(cho==0&&cho1==0&&cho2==0)	// 显示月调整:cho1cho2:00
		{
			display(mon,4);
			if(count!=co)
			{	delay(4);
				if(count!=co)
				{	if(++mon==13)
					mon=1;
					co=count;
				}
			}
		}
		else if(cho==0&&cho1==0&&cho2==1)	// 显示年调整:cho1cho2:01
		{
			display_year();
			if(count!=co)
			{	delay(4);
				if(count!=co)
				{	if(++year==9999)
					year=2000;
					co=count;
				}
			}
			else if(sub!=su)
			{	delay(4);
				if(sub!=su)
				{	if(--year==1999)
					year=2000;
					su=sub;
				}
			}
		}
	}	
	do{}while(1);
	
}	

⌨️ 快捷键说明

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