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

📄 main_function.h

📁 AT89C51开发例程 protues仿真 keil编程
💻 H
字号:
/*main()函数调用的子函数*/
//欢迎界面
//显示欢迎界面


void welcome_page(bit flagg)
{
	uchar i;
	clsram();

	if(!flagg)
	{
		dis_ch(1,3,fuhao);			   //'*'
		dis_hzstr(1,2,welcome,4);	  //欢迎使用
		dis_ch(1,12,fuhao);			  //'*'
		dis_chstr(2,4,biaoqing,8);
		for(i=0;i<8;i++)
		{
			dis_hz(0,i,wuxing);
			dis_hz(3,7-i,wuxing+32);
			delay(100);
		}
		for(i=0;i<8;i++)
		{
			dis_hz_fb(0,i,wuxing);
			dis_hz_fb(3,7-i,wuxing+32);
			delay(100);
		}
		for(i=0;i<8;i++)
		{
			dis_hz(0,i,wuxing);
			dis_hz(3,7-i,wuxing+32);
			delay(100);
		}
	}
	delay(600);	
	clsram();
}


//主菜单
void menu_page(uchar select)
{
	dis_hzstr(0,1,menu,5);		 //1.显示时间
	dis_hzstr(1,1,menu+32*5,5);	 //2.测量电压
	dis_hzstr(2,1,menu+32*10,5); //3.修改时间
	dis_hzstr(3,1,menu+32*15,5); //4.作者信息
	switch(select)
	{
		case 0: cls_line(0);dis_hzstr_fb(0,1,menu,5);	   break; //1.显示时间
		case 1:	cls_line(1);dis_hzstr_fb(1,1,menu+32*5,5); break; //2.测量电压
		case 2:	cls_line(2);dis_hzstr_fb(2,1,menu+32*10,5);break; //3.修改时间
		case 3:	cls_line(3);dis_hzstr_fb(3,1,menu+32*15,5);break; //4.作者信息
	}
}

//时间显示
void SHOW_TIME()
{
	lcd_init();

	clsram();
	while(1)
	{	dis_chstr(0,1,time,13);	//显示 *Time&Temp*
		dis_ch(1,0,number+2*16);//  2
		dis_ch(1,1,number);     //  0
		dis_1302(1,2,YEAR);
		dis_hz(1,2,nyr);        // 年
		dis_1302(1,6,MONTH);
		dis_hz(1,4,nyr+32);	    // 月
		dis_1302(1,10,DAY);
		dis_hz(1,6,nyr+64);		//日
	
		dis_1302(2,0,HOUR);		    //时
		dis_ch(2,2,fuhao+16);	   	//:
		dis_1302(2,3,MINUTE);		// 分  
		dis_ch(2,5,fuhao+16);		//:
		dis_1302(2,6,SECOND);	   	//秒
	
		dis_1302_xingqi(2,5);	//星期几
	
		//显示温度
		show_temperature(3,2);
		delay(50);
		if(!ok)break;
	}
}

//显示测量电压
void Test_voltage()
{
	uchar Temp1,Temp2;		
	clsram();
	while(1)
	{
		dis_chstr(0,1,volt,14);		//*Test voltage*
		dis_vol(2,0);				//显示电压值
		dis_hzstr(3,0,dianya+128,2); //类型
		dis_ch(3,4,fuhao+16);	    //:
		Temp1=AD_transform();
		delay(20);
		Temp2=AD_transform();
		if(Temp1==Temp2)
			dis_hzstr(3,3,dianya+256,2);
		else
			dis_hzstr(3,3,dianya+192,2);
		if(!ok)break;
	}

}


void Author_informations()
{
	clsram();
	while(1)
	{
		dis_chstr(0,1,author_information,14);	//*author infom*
		dis_hzstr(1,0,author_information+224,2);//班级
		dis_ch(1,4,fuhao+16);					//:
		dis_hzstr(1,3,author_information+288,2);//电信
		dis_ch(1,10,number);                     //0
		dis_ch(1,11,number+112);                 //7
		dis_ch(1,12,number+32);                  //2
		dis_hzstr(2,0,author_information+352,2);//姓名
		dis_ch(2,4,fuhao+16);					//:
		dis_hzstr(2,3,author_information+416,3);//吴英剑
		dis_hzstr(3,0,author_information+512,2);//学号
		dis_ch(3,4,fuhao+16);					//:
		dis_chstr(3,5,xuehao,9);//208070634
		if(!ok)break;
    }
}

void SET_TIME()
{
   char time[7]; 
   uchar i;
   uchar select=0;  //存放ok键值
   bit Flag=0;    //标志 Y/N   0:Y  1:N
   clsram();
   for(i=0;i<7;i++)
   {
   	temp=read_B(0x81+i*2); //读的是BCD码
   	time[i]=((temp&0x70)>>4)*10+(temp&0x0f);//转化为十进制
   }
   dis_chstr(0,2,set_tm,10); //*Set time*
	while(1)
   	{
		dis_ch(1,0,number+2*16);//  2
		dis_ch(1,1,number);     //  0
		dis_ch(1,2,number+16*(time[6]/10));
		dis_ch(1,3,number+16*(time[6]%10));
		dis_hz(1,2,nyr);        // 年
		dis_ch(1,6,number+16*(time[4]/10));
		dis_ch(1,7,number+16*(time[4]%10));
		dis_hz(1,4,nyr+32);	    // 月
		dis_ch(1,10,number+16*(time[3]/10));
		dis_ch(1,11,number+16*(time[3]%10));
		dis_hz(1,6,nyr+64);		//日
	
		dis_ch(2,0,number+16*(time[2]/10));
		dis_ch(2,1,number+16*(time[2]%10));	    //时
		dis_ch(2,2,fuhao+16);	   	//:
		dis_ch(2,3,number+16*(time[1]/10));
		dis_ch(2,4,number+16*(time[1]%10));		// 分  
		dis_ch(2,5,fuhao+16);		//:
		dis_ch(2,6,number+16*(time[0]/10));
		dis_ch(2,7,number+16*(time[0]%10));	   	//秒
		
		dis_hz(2,5,xingqi);			  //星
		dis_hz(2,6,xingqi+32);		  //期
		dis_hz(2,7,xingqi+(time[5]+1)*32);//汉字显示星期几
			
		dis_chstr(3,0,time_ch,10);	//Save?(Y/N)
		dis_ch(3,11,time_ch+96);	 //Y


	switch(select)
	{
	case 0: 
		dis_ch_fb(1,2,number+16*(time[6]/10)); // 年十位
		dis_ch_fb(1,3,number+16*(time[6]%10)); // 年个位
		break;
   	case 1: 
		dis_ch_fb(1,6,number+16*(time[4]/10)); // 月十位
		dis_ch_fb(1,7,number+16*(time[4]%10)); // 月个位
		break;
	case 2: 
		dis_ch_fb(1,10,number+16*(time[3]/10)); // 日十位
		dis_ch_fb(1,11,number+16*(time[3]%10)); // 日个位
		break;
	case 3: 
		dis_ch_fb(2,0,number+16*(time[2]/10)); // 时十位
		dis_ch_fb(2,1,number+16*(time[2]%10)); // 时个位
		break;
	case 4: 
		dis_ch_fb(2,3,number+16*(time[1]/10)); // 分十位
		dis_ch_fb(2,4,number+16*(time[1]%10)); // 分个位
		break;
	case 5: 
		dis_hz(1,1,kongge);                    // 空格
		dis_ch_fb(2,6,number+16*(time[0]/10)); // 秒十位
		dis_ch_fb(2,7,number+16*(time[0]%10)); // 秒个位
		break;	
	case 6: 								  
		dis_hz(2,7,kongge);                    // 空格
		dis_hz_fb(2,7,xingqi+32*(time[5]+1)); // 星期
		break;
	case 7: 
		if(!Flag) //如果Flag=0,显示 Y ,否则显示 N		
		dis_ch_fb(3,11,time_ch+96);	          // Y
		else
		dis_ch_fb(3,11,time_ch+128);	      // N
		break;
	}
	if(!ok)select++;
	while(!ok);	   //等待松手
	if(select>8)select=0;

	if(up==0)
	{	switch(select)
		{
		 	case 0:					    // 年
				time[6]++;
				if(time[6]>99)time[6]=0;
				break;
		 	case 1:						// 月
				time[4]++;
				if(time[4]>12)time[4]=1;
				break;
			case 2:						// 日
				time[3]++;
				if(time[3]>31)time[3]=1;
				break;
			case 3:						// 时
				time[2]++;
				if(time[2]>23)time[2]=0;
				break;
		 	case 4:						// 分
				time[1]++;
				if(time[1]>59)time[1]=0;
				break;
		 	case 5:						// 秒
				time[0]++;
				if(time[0]>59)time[0]=0;
				break;
			case 6:						// 星期
				time[5]++;
				if(time[5]>7)time[5]=1;
				break;
			case 7:
				Flag=~Flag;   //Flag 状态取反		}
		    
	 	}	
	 		while(!up); //等待松手
	}

	 if(down==0)
	{	switch(select)
		{
		 	case 0:					    // 年
				time[6]--;
				if(time[6]<0)time[6]=99;
				break;
		 	case 1:						// 月
				time[4]--;
				if(time[4]<=0)time[4]=12;
				break;
			case 2:						// 日
				time[3]--;
				if(time[3]<=0)time[3]=31;
				break;
			case 3:						// 时
				time[2]--;
				if(time[2]<0)time[2]=23;
				break;
		 	case 4:						// 分
				time[1]--;
				if(time[1]<0)time[1]=59;
				break;
		 	case 5:						// 秒
				time[0]--;
				if(time[0]<0)time[0]=59;
				break;
			case 6:						// 星期
				time[5]--;
				if(time[5]<1)time[5]=7;
				break;
			case 7:
				Flag=~Flag;   //Flag 状态取反
		}
		   while(!down);  //等待松手
	 }

	   	  if((select==8)&&(Flag==0)) 
		{			
			for(i=0;i<7;i++)	 //写新时间到1302
			{
				temp=((time[i]/10)<<4)+time[i]%10;
				write_B(0x80+i*2,temp);
			}
		 }

		if((select==8)&&(Flag==0)) 
		{
			clsram();
			dis_hzstr(1,1,time_hz,7);//时间保存成功!
			dis_chstr(2,3,biaoqing,8);
			delay(2000);
			break;
	    }
	  if((select==8)&&(Flag==1))  
	  {
	  	 clsram();
		 dis_hzstr(1,1,time_hz+224,6); //时间未保存!
		 dis_chstr(2,3,biaoqing+128,7);
		 delay(2000);
	 	break;
	  }
  }

}

⌨️ 快捷键说明

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