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

📄 main.c

📁 本资料为基于单片机89C55+LCD12864的万年历
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "reg51.h"
#include "1302.h"
#include "key.h"
#include "12864.h"
#include "ds18b20.h"
#include "zifu.h"
#include "gton.h"









////////////////////显示函数////////////////////////

/*************
节日显示
monthg1,dayg1 为公历日期
monthn1,dayn1为农历日期
**************/
void jieri(uchar monthg1,uchar dayg1,uchar monthn1,dayn1)
{
	uchar i,j,temp11;
	i=0;
	temp11=30;
	for(i=0;i<6;i++)
	{
		if((monthn1==feastn_focus[i][0])&&(dayn1==feastn_focus[i][1]))
		{
			temp11=i;
			break;
		}
	}
	if(temp11!=30) //农历有节日,优先显示农历
	{
		for(i=0;i<6;i++)
			for(j=i*16;j<i*16+16;j++)
			{
				if(i%2==0)
					datatemp[j]=feastn[temp11][j]|0x01;
				else
					datatemp[j]=feastn[temp11][j];
			}
		datatemp[0]=0xff;
		datatemp[16]=0xff;  

	
		play1616(0,0,0,datatemp);
		play1616(0,2,0,datatemp+32);
		play1616(0,4,0,datatemp+64);
	}
	else  //无农历节日时方检查是否有公历节日
	{
		for(i=0;i<23;i++)
		{
			if((monthg1==feastg_focus[i][0])&&(dayg1==feastg_focus[i][1]))
			{
				temp11=i;
				break;
			}
		}
	
		if(temp11!=30)
		{
			for(i=0;i<6;i++)
				for(j=i*16;j<i*16+16;j++)
				{
					if(i%2==0)
						datatemp[j]=feastg[temp11][j]|0x01;
					else
						datatemp[j]=feastg[temp11][j];
				}
				datatemp[0]=0xff;
				datatemp[16]=0xff;

				play1616(0,0,0,datatemp);
				play1616(0,2,0,datatemp+32);
				play1616(0,4,0,datatemp+64);
		}
		else
		{
			if((10*datastring[6]+datastring[7])>=18)
			{
				for(i=0;i<6;i++)
					for(j=i*16;j<i*16+16;j++)
					{
						if(i%2==0)
							datatemp[j]=night[j]|0x01;
						else
							datatemp[j]=night[j];
					}
					datatemp[0]=0xff;
					datatemp[16]=0xff;
					
					play1616(0,0,0,datatemp);
					play1616(0,2,0,datatemp+32);
					play1616(0,4,0,datatemp+64);
			}
			else
			{
				for(i=0;i<6;i++)
					for(j=i*16;j<i*16+16;j++)
					{
						if(i%2==0)
							datatemp[j]=daytime[j]|0x01;
						else
							datatemp[j]=daytime[j];
					}
					datatemp[0]=0xff;
					datatemp[16]=0xff;
					
					play1616(0,0,0,datatemp);
					play1616(0,2,0,datatemp+32);
					play1616(0,4,0,datatemp+64);
			}
		}
	}
}

/*************
生肖显示
year取年份后两位,如2008,year=08
**************/
void dispshengxiao(uchar year) 
{
	uchar i;
	for(i=0;i<16;i++)	
		datatemp[i]=shengxiao[year%12][i]|0x01;
	for(i=16;i<32;i++)
		datatemp[i]=shengxiao[year%12][i];

	datatemp[0]=0xff;
	datatemp[16]=0xff;  	
	play1616(0,6,0,datatemp);		
}

////////////////////////////////////////////////////

/***************定时器0键盘扫描处理 *****************/

void keyset() interrupt 1
{
	uchar keycode;
	uchar move=0,weekvalue,mm;
	uint sum=0;
	bit fg;
//	gettemperature(); //取温度存在temp数组中
	keycode=keyscan();
	if(keycode==0x11&&ringflag==0)
	{
		clear12864();
		play816(0,2,0,shuzi1[2],0);
		play816(0,3,0,shuzi1[0],0);
		play816(0,4,0,shuzi1[datastring[0]],1);
		play816(0,5,0,shuzi1[datastring[1]],1);
		play1616(0,6,0,hang);
		play816(1,0,0,shuzi1[datastring[2]],0);
		play816(1,1,0,shuzi1[datastring[3]],0);
		play1616(1,2,0,hang);
		play816(1,4,0,shuzi1[datastring[4]],0);
		play816(1,5,0,shuzi1[datastring[5]],0);

		play816(0,4,1,shuzi1[datastring[6]],0);
		play816(0,5,1,shuzi1[datastring[7]],0);
		play816(0,6,1,dian1,0);
		play816(0,7,1,shuzi1[datastring[8]],0);
		play816(1,0,1,shuzi1[datastring[9]],0);
		play816(1,1,1,dian1,0);
		play816(1,2,1,shuzi1[0],0);
		play816(1,3,1,shuzi1[0],0);

		play1616(0,2,2,nao);
		play1616(0,4,2,zhong);
		play816(0,6,2,dian1,0);
		play816(0,7,2,shuzi1[ringtime[0]],0);
		play816(1,0,2,shuzi1[ringtime[1]],0);
		play816(1,1,2,dian1,0);
		play816(1,2,2,shuzi1[ringtime[2]],0);
		play816(1,3,2,shuzi1[ringtime[3]],0);
		if(ringtime[4]==0)
		{
			play816(1,4,2,no,0);
		}
		else
			play816(1,4,2,yes,0);

		for(;;)
		{
			keycode=keyscan();
			if(keycode==0x12)  //按下光标键
			{
				move++;
				if(move>7)
					move=0;
				switch(move)
				{
					case 0 :
					{	
						if(ringtime[4]==0)
						{
							play816(1,4,2,no,0);
						}
						else
							play816(1,4,2,yes,0);
						play816(0,4,0,shuzi1[datastring[0]],1);
						play816(0,5,0,shuzi1[datastring[1]],1);
						break;
					}
					case 1:
					{
						play816(0,4,0,shuzi1[datastring[0]],0);
						play816(0,5,0,shuzi1[datastring[1]],0);
						play816(1,0,0,shuzi1[datastring[2]],1);
						play816(1,1,0,shuzi1[datastring[3]],1);
						break;
					}
					case 2:
					{
						play816(1,0,0,shuzi1[datastring[2]],0);
						play816(1,1,0,shuzi1[datastring[3]],0);
						play816(1,4,0,shuzi1[datastring[4]],1);
						play816(1,5,0,shuzi1[datastring[5]],1);
						break;
					}
					case 3:
					{
						play816(1,4,0,shuzi1[datastring[4]],0);
						play816(1,5,0,shuzi1[datastring[5]],0);
						play816(0,4,1,shuzi1[datastring[6]],1);
						play816(0,5,1,shuzi1[datastring[7]],1);
						break;
					}
					case 4:
					{
						play816(0,4,1,shuzi1[datastring[6]],0);
						play816(0,5,1,shuzi1[datastring[7]],0);
						play816(0,7,1,shuzi1[datastring[8]],1);
						play816(1,0,1,shuzi1[datastring[9]],1);
						break;

					}
					case 5:
					{
						play816(0,7,1,shuzi1[datastring[8]],0);
						play816(1,0,1,shuzi1[datastring[9]],0);
						play816(0,7,2,shuzi1[ringtime[0]],1);
						play816(1,0,2,shuzi1[ringtime[1]],1);
						break;
					}
					case 6:
					{
					   	play816(0,7,2,shuzi1[ringtime[0]],0);
						play816(1,0,2,shuzi1[ringtime[1]],0);
						play816(1,2,2,shuzi1[ringtime[2]],1);
						play816(1,3,2,shuzi1[ringtime[3]],1);
						break;

					}
					case 7:
					{
						play816(1,2,2,shuzi1[ringtime[2]],0);
						play816(1,3,2,shuzi1[ringtime[3]],0);
						if(ringtime[4]==0)
						{
							play816(1,4,2,no,1);
						}
						else
							play816(1,4,2,yes,1);
						break;
					}
					default:;
				}

			}
			if(keycode==0x21)  //按下加键
			{
				switch(move)
				{
					case 0:
					{
						datastring[1]++;
						if(datastring[1]>9)
						{
							datastring[0]++;
							datastring[1]=0;
						}
						if(datastring[0]>9)
						{
							datastring[1]=0;
							datastring[0]=0;	
						}
						play816(0,4,0,shuzi1[datastring[0]],1);
						play816(0,5,0,shuzi1[datastring[1]],1);
						break;
					}
					case 1:
					{
						datastring[3]++;
						if(datastring[3]>9)
						{
							datastring[2]++;
							datastring[3]=0;
						}
						if((datastring[2]==1)&&(datastring[3]==3))
						{
							datastring[2]=0;
							datastring[3]=1;	
						}
						play816(1,0,0,shuzi1[datastring[2]],1);
						play816(1,1,0,shuzi1[datastring[3]],1);
						break;
					}
					case 2:
					{
						datastring[5]++;
						if(datastring[5]>9)
						{
							datastring[4]++;
							datastring[5]=0;
						}
						fg=yearstype(2000+10*datastring[0]+datastring[1]);
						
						if((10*datastring[4]+datastring[5])>days_in_a_mon[fg][(10*datastring[2]+datastring[3])-1])
						{
							datastring[4]=0;
							datastring[5]=1;	
						}
						play816(1,4,0,shuzi1[datastring[4]],1);
						play816(1,5,0,shuzi1[datastring[5]],1);
						break;
					}
					case 3:
					{
						datastring[7]++;
						if(datastring[7]>9)
						{
							datastring[6]++;
							datastring[7]=0;
						}
						if((datastring[6]==2)&&(datastring[7]==5))
						{
							datastring[6]=0;
							datastring[7]=1;	
						}
						play816(0,4,1,shuzi1[datastring[6]],1);
						play816(0,5,1,shuzi1[datastring[7]],1);
						break;
					}
					case 4:
					{
						datastring[9]++;
						if(datastring[9]>9)
						{
							datastring[8]++;
							datastring[9]=0;
						}
						if((datastring[8]==6)&&(datastring[9]==0))
						{
							datastring[8]=0;
							datastring[9]=0;	
						}
						play816(0,7,1,shuzi1[datastring[8]],1);
						play816(1,0,1,shuzi1[datastring[9]],1);
						break;
					}
					case 5:
					{
						ringtime[1]++;
						if(ringtime[1]>9)
						{
							ringtime[0]++;
							ringtime[1]=0;
						}
						if((ringtime[0]==2)&&(ringtime[1]==5))
						{
							ringtime[0]=0;
							ringtime[1]=1;	
						}
						play816(0,7,2,shuzi1[ringtime[0]],1);
						play816(1,0,2,shuzi1[ringtime[1]],1);
						break;
					}
					case 6:
					{
						ringtime[3]++;
						if(ringtime[3]>9)
						{
							ringtime[2]++;
							ringtime[3]=0;
						}
						if((ringtime[2]==6)&&(ringtime[3]==0))
						{
							ringtime[2]=0;
							ringtime[3]=0;	
						}
						play816(1,2,2,shuzi1[ringtime[2]],1);
						play816(1,3,2,shuzi1[ringtime[3]],1);
						break;

					}
					case 7:
					{
					   ringtime[4]=~(ringtime[4]);
					   if(ringtime[4]==0)
					   {
							play816(1,4,2,no,1);
						}
						else
							play816(1,4,2,yes,1);
						break;
					}
					default:;
				}
			}
			if(keycode==0x22)	//按下减键
			{							  	
				switch(move)
				{
					case 0:
					{
						if(datastring[1]==0)
						{
							if(datastring[0]==0)
							{
								datastring[0]=9;
								datastring[1]=9;
							}
							else
							{
								datastring[0]--;
								datastring[1]=9;
							}
						}
						else	
							datastring[1]--;
						
						play816(0,4,0,shuzi1[datastring[0]],1);
						play816(0,5,0,shuzi1[datastring[1]],1);
						break;
					}
					case 1:
					{
						if(datastring[3]==0)
						{
							datastring[2]--;
							datastring[3]=9;
						}
						else 
							datastring[3]--;
						if(datastring[3]==0 && datastring[2]==0)
						{
							datastring[2]=1;
							datastring[3]=2;	
						}
						play816(1,0,0,shuzi1[datastring[2]],1);
						play816(1,1,0,shuzi1[datastring[3]],1);
						break;
					}
					case 2:
					{
						fg=yearstype(2000+10*datastring[0]+datastring[1]);
						
					//	if((10*datastring[4]+datastring[5])>days_in_a_mon[fg][(10*datastring[2]+datastring[3])-1])
							if(datastring[5]==0)
						{
							datastring[4]--;
							datastring[5]=9;
						}
						else 
							datastring[5]--;
						if(datastring[5]==0 && datastring[4]==0)
						{
							datastring[4]=days_in_a_mon[fg][(10*datastring[2]+datastring[3])-1]/10;;
							datastring[5]=days_in_a_mon[fg][(10*datastring[2]+datastring[3])-1]%10;	
						}						
						play816(1,4,0,shuzi1[datastring[4]],1);
						play816(1,5,0,shuzi1[datastring[5]],1);
						break;
					}
					case 3:
					{
						if(datastring[7]==0)
						{
							datastring[6]--;
							datastring[7]=9;
						}
						else 
							datastring[7]--;
						if(datastring[7]==0 && datastring[6]==0)
						{
							datastring[6]=2;
							datastring[7]=4;	
						}
						play816(0,4,1,shuzi1[datastring[6]],1);
						play816(0,5,1,shuzi1[datastring[7]],1);
						break; 	  
					}
					case 4:
					{
						if(datastring[9]==0)
						{
							if(datastring[8]==0)
							{
								datastring[8]=5;
								datastring[9]=9;
							}
							else
							{
								datastring[8]--;
								datastring[9]=9;
							}
						}
						else	
							datastring[9]--;	
						play816(0,7,1,shuzi1[datastring[8]],1);
						play816(1,0,1,shuzi1[datastring[9]],1);
						break;
					}
					case 5:
					{
						if(ringtime[1]==0)
						{
								ringtime[0]--;
								ringtime[1]=9;
						}
						else 
							ringtime[1]--;
						if(ringtime[1]==0 && ringtime[0]==0)
						{
							ringtime[0]=2;
							ringtime[1]=4;	
						}	
						play816(0,7,2,shuzi1[ringtime[0]],1);
						play816(1,0,2,shuzi1[ringtime[1]],1);
						break;
					}
					case 6:
					{
						if(ringtime[3]==0)
						{

⌨️ 快捷键说明

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