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

📄 +

📁 单片机控制1602LCD实现万年历设计.
💻
字号:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={"0000-00-00"};
uchar code table1[]={"00:00:00"};
uchar code table2[]={"MONTUSWEDTHUFRISATSUN"};
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;
sbit key1=P2^3;
sbit key2=P2^4;
sbit key3=P2^5;
char shi,ge,num1;
char num,shi1=0,fen=0,miao=0,ri=0,yue=0;	uchar xingqi=1;
int nianqian=0,nianhou=0;
void delay(unsigned int z)
{
	uchar x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);
}
void write_com(uchar com)
{
	
	rs=0;
	rw=0;
	P0=com;
	delay(5);
	e=1;
	delay(5);
	e=0;	
}
void write_data(uchar date)
{
 rs=1;
 rw=0;
 P0=date;
 delay(5);
 e=1;
 delay(5);
 e=0;
}
void init()
{	 
	rs=0;
	write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_com(0x01);
	delay(5);
}
void write_wang(uchar add,uchar date)
{
	shi=date/10;
	ge=date%10;
	write_com(0x80+0X40+add);
	write_data(0x30+shi);
	write_data(0x30+ge);
	
}
void write_wang1(uchar add,uchar date)
{
	shi=date/10;
	ge=date%10;
	write_com(0x80+add);
	write_data(0x30+shi);
	write_data(0x30+ge);
	
}
void write_wang2(uchar add,int date)
{
	shi=date/10;
	ge=date%10;
	write_com(0x80+add);
	write_data(0x30+shi);
	write_data(0x30+ge);	
}
void keycan()
{
	uchar i;
	if(key1==0)
	{	
		delay(5);
		if(key1==0)
		{		
			num1++;
			while(!key1);
			if(num1==1)
			{
				TR0=0;
				write_com(0x80+0x40+7);
				write_com(0x0f);
			}
		}	 
			if(num1==2)
			{
			write_com(0x80+0x40+4);			
			}
			if(num1==3)
			{
				write_com(0x80+0x40+1);
			
			}
			if(num1==4)
			{	
				write_com(0x80+9);	
			}
			if(num1==5)
			write_com(0x80+6);
			if(num1==6)
			write_com(0x80+3);
			if(num1==7)
			write_com(0x80+1);
			if(num1==8)
		   	write_com(0x80+13);
			if(num1>=9)
			{
			num1=0;
			TR0=1;
			write_com(0x0c);		
			}			   		
	}	 
	if(num1!=0)
		{
		 if(key2==0)
			{
				delay(5);
				if(key2==0)
				{
					while(key2!=1);
					if(num1==1)
					{
					miao++;
					if(miao==60)
						{
						miao=0;
						}
					write_wang(6,miao);
					write_com(0x80+0x40+6);
					}	
					if(num1==2)
					{
					fen++;
						if(fen==60)
						{
						fen=0;
						}
					write_wang(3,fen);
					write_com(0x80+0x40+3);
					}
					if(num1==3)
					{
					shi1++;
						if(shi1==24)
						{
						shi1=0;
						}
						write_wang(0,shi1);
					write_com(0x80+0x40);
					}
					if(num1==4)
					{
					ri++;
						if(ri==32)
						{
						ri=0;
						}
						write_wang1(8,ri);
					write_com(0x80+8);
					}
					if(num1==5)
					{
					yue++;
						if(yue==13)
						{
						yue=0;
						}
						write_wang1(5,yue);
					write_com(0x80+5);
					}
					if(num1==6)
					{
					nianhou++;
						if(nianhou==99)
						{
						nianhou=0;
						nianqian++;
						}
						write_wang2(2,nianhou);
					write_com(0x80+2);
					}
					if(num1==7)
					{
					nianqian++;
						if(nianqian==99)
						{
						nianqian=0;
						}
						write_wang2(0,nianqian);
					write_com(0x80);
					}
					if(num1==8)
					{
						xingqi++;
						if(xingqi==8)
						xingqi=1;
							switch(xingqi)
						{
							case 1:
								write_com(0x80+13);
								for(i=0;i<3;i++)
								{
								write_data(table2[i]);		
								}
								break;
							case 2:
						   		write_com(0x80+13);
							 	for(i=3;i<6;i++)
								{
								write_data(table2[i]);		
								}
								break;
							case 3:
					 			write_com(0x80+13);
							 	for(i=6;i<9;i++)
								{
								write_data(table2[i]);		
								}
								break;
		  					case 4:
					 			write_com(0x80+13);
							 	for(i=9;i<12;i++)
								{
								write_data(table2[i]);		
								}
								break;
						    case 5:
					 			write_com(0x80+13);
							 	for(i=12;i<15;i++)
								{
								write_data(table2[i]);		
								}
								break;
							 case 6:
					 			write_com(0x80+13);
							 	for(i=15;i<18;i++)
								{
								write_data(table2[i]);		
								}
								break;
				  			 case 7:
					 			write_com(0x80+13);
							 	for(i=18;i<21;i++)
								{
								write_data(table2[i]);		
								}
								break;
						}

					}
				}
			}
	if(num1!=0)
		{
		 if(key3==0)
			{
				delay(5);
				if(key3==0)
				{
					while(key3!=1);
					if(num1==1)
					{
					miao--;
					if(miao==-1)
						{
						miao=59;
						}
					write_wang(6,miao);
					write_com(0x80+0x40+6);
					}	
					if(num1==2)
					{
					fen--;
						if(fen==-1)
						{
						fen=59;
						}
					write_wang(3,fen);
					write_com(0x80+0x40+3);
					}
					if(num1==3)
					{
					shi1--;
						if(shi1==-1)
						{
						shi1=23;
						}
						write_wang(0,shi1);
					write_com(0x80+0x40);
					}
					if(num1==4)
					{
					ri--;
						if(ri==-1)
						{
						ri=31;
						}
					write_wang1(8,ri);
					write_com(0x80+8);
					}
					if(num1==5)
					{
					yue--;
						if(yue==-1)
						{
						yue=12;
						}
						write_wang1(5,yue);
					write_com(0x80+5);
					}
					if(num1==6)
					{
					nianhou--;
						if(nianhou==-1)
						{
						nianhou=99;
						}
					write_wang2(2,nianhou);
					write_com(0x80+2);
					}
					if(num1==7)
					{
					nianqian--;
						if(nianqian==-1)
						{
						nianqian=99;
						}
				 	write_wang2(0,nianqian);
					write_com(0x80);
					}
				}
			}
		}
}	
}

void duxianshi()
{
//	uchar nianqian,nianbai,nianshi,niange,yueshi,yuege,rishi,rige,shi1shi,shi1ge,fenshi,fenge,miaoshi,miaoge;
	write_com(0x80);
		for(num=0;num<10;num++)
		{
		write_data(table[num]);
	/*
		switch(num)
		{
			case 0:
			nianqian=table[0];break;
			case 1:
			nianbai=table[1];break;
			case 2:
			nianshi=table[2];break;
			case 3:
			niange=table[3];break;
			case 5:
			yueshi=table[5];break;
			case 6:
			yuege=table[6];break;
			case 8:
			rishi=table[8];break;
			case 9:
			rige=table[9];break;		
		}
	*/
		delay(5);
		}
		write_com(0x80+13);
		for(num=0;num<3;num++)
		{
			write_data(table2[num]);
			delay(5);	
		}
		write_com(0x80+0x40);
		for(num=0;num<8;num++)
		{
			write_data(table1[num]);
/*		switch(num)
		{
			case 0:
			shi1shi=table1[0];break;
			case 1:
			shi1ge=table1[1];break;
			case 3:
			fenshi=table1[3];break;
			case 4:
			fenge=table1[4];break;
			case 6:
			miaoshi=table1[6];break;
			case 7:
			miaoge=table1[7];break;	
		} 
 */	
			delay(5);
		}
/*
	nian=(nianqian+0x30)*1000+(nianbai+0x30)*100+(nianshi+0x30)*10+niange+0x30;
	yue=yueshi*(10+48)+yuege;
	ri=rishi*(10+48)+rige;
	shi1=shi1shi*(10)+shi1ge;
	fen=fenshi*(10+48)+fenge;
	miao=miaoshi*(10)+miaoge;
*/

}
void shijian()
{
	uchar i;
			if(num==18)
				{
					num=0;
					miao++;
					if(miao==60)
				    {
								miao=0;
								fen++;
								if(fen==60)
								{
									fen=0;
									shi1++;
										if(shi1==24)
											{
												shi1=0;
												ri++;
												xingqi++;
												if(xingqi==8)
												xingqi=1;
												switch(xingqi)
												{
													case 1:
													write_com(0x80+13);
													for(i=0;i<3;i++)
													{
													write_data(table2[i]);		
													}
													break;
													case 2:
											   		write_com(0x80+13);
												 	for(i=3;i<6;i++)
													{
													write_data(table2[i]);		
													}
													break;
													case 3:
										 			write_com(0x80+13);
												 	for(i=6;i<9;i++)
													{
													write_data(table2[i]);		
													}
													break;
								  					case 4:
										 			write_com(0x80+13);
												 	for(i=9;i<12;i++)
													{
													write_data(table2[i]);		
													}
													break;
												    case 5:
										 			write_com(0x80+13);
												 	for(i=12;i<15;i++)
													{
													write_data(table2[i]);		
													}
													break;
													 case 6:
										 			write_com(0x80+13);
												 	for(i=15;i<18;i++)
													{
													write_data(table2[i]);		
													}
													break;
										  			 case 7:
										 			write_com(0x80+13);
												 	for(i=18;i<21;i++)
													{
													write_data(table2[i]);		
													}
													break;
												}
												if(ri==32)
												{
													ri=0;
													yue++;
													if(yue==13)
													{
														yue=0;
														nianhou++;
														if(nianhou==100)
														{
															nianhou=0;
															nianqian++;
															if(nianqian==100)
															{
															     nianqian=0;
																 nianhou=0;
																 yue=0;
																 ri=0;
																 shi1=0;
																 fen=0;
																 miao=0;
																write_com(0x80+13);
																for(i=0;i<3;i++)
																{
																write_data(table2[i]);		
																}
															}
												   	write_wang2(0,nianqian);	
														}
														write_wang2(2,nianhou);		
													}
													write_wang1(5,yue);
												}
													write_wang1(8,ri);
											}
									 write_wang(0,shi1);
				}					 
				write_wang(3,fen);
	}
	write_wang(6,miao);
}		
}
void main()
{	
    EA=1;
	ET0=1;
	TMOD=0X01;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;	
	init();
	duxianshi();
	num=0;
	TR0=1;	
		while(1)
		{	

		   	shijian();
			keycan();
}
}
void T0_time()interrupt 1
{
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	num++;
}

⌨️ 快捷键说明

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