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

📄 menu.c

📁 基于AT89S52单片机的时钟温度显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
/*********************************************************************************************************                  
*                                     		menu service program
*                                       	QZhao,2007
*                                       	All Rights Reserved  
* File : menu.c
* By   : QZhao
* Contact : zq1987731@163.com
*********************************************************************************************************/

/*★★★可调用函数:FUN_MENU(keynum)->菜单(对应按键)功能服务函数*/

/*********************************************************************************************************  
*
*		    									菜单列表
*
*********************************************************************************************************/

	void start_menu(void)						
	{
		W_LCD(0x01,1);		//清屏
		delayms(10);
		DIS_LCD(2,1,"初始化......完成",16);
		DIS_LCD(3,1,"请按任意键继续..",16);
	}


	//主菜单
	void main_menu(void)						
	{
		W_LCD(0x01,1);		//清屏
		delayms(10);
		DIS_LCD(1,1,"1)时间设定",10);
		DIS_LCD(2,1,"2)屏幕背光",10);
		DIS_LCD(4,1,"4)设定完成",10);
	}

			//1)扩展菜单
			void sub1(void)
			{
				W_LCD(0x01,1);		//清屏
				delayms(10);
				DIS_LCD(1,1,"1)时间设定",10);
				DIS_LCD(2,1,"2)日期设定",10);
				DIS_LCD(3,1,"3)保存设置并返回",16);
				DIS_LCD(4,1,"4)返回上级菜单",14);
			}

					//1)扩展菜单_子1
					void sub1_1(void)
					{
						W_LCD(0x01,1);		//清屏
						delayms(10);
						DIS_LCD(1,1,"时间设置:",10);
						DIS_LCD(2,1,"时--分--秒",10);
						DIS_LCD(3,2,"--  --",6);
						DIS_LCD(4,1,"4)返回",6);
					}
				
					//1)扩展菜单_子2
					void sub1_2(void)
					{
						W_LCD(0x01,1);		//清屏
						delayms(10);
						DIS_LCD(1,1,"日期设置:",10);
						DIS_LCD(2,1,"年--月--日--周",14);
						DIS_LCD(3,2,"--  --  --",10);
						DIS_LCD(4,1,"4)返回",6);
					}

			//2)扩展菜单
			void sub2(void)
			{
				W_LCD(0x01,1);		//清屏
				delayms(10);
				DIS_LCD(1,1,"背光是否开启?",14);
				DIS_LCD(2,1,"2)开启",6);
				DIS_LCD(3,1,"3)关闭",6);
				DIS_LCD(4,1,"4)返回上级菜单",14);
			}

	
			
			void sub4(void)						
			{
				W_LCD(0x01,1);		//清屏
				delayms(10);
				DIS_LCD(1,1,"初值设定完成?",14);
				DIS_LCD(2,1,"2)指针式时钟显示",16);
				DIS_LCD(3,1,"3)完成,开始显示",16);
				DIS_LCD(4,1,"4)返回上级菜单",14);
			}

					void sub4_1(void)						
					{
						W_LCD(0x01,1);		//清屏
						delayms(10);
						DIS_LCD(1,1,"当前时间:20  年",16);
						DIS_LCD(2,2,"月  日  星期",12);
						DIS_LCD(3,3,"点  分  秒",10);
						DIS_LCD(4,1,"T:            ℃",16);
					}
					

/*************************************************************************************************************************************  
*
*		    												菜单服务函数
*     		入口参数:扫描到的键值    
*			返回值:TRUE or FALSE
*			功能:根据菜单选择对扫描到的键值进行处理
*
*************************************************************************************************************************************/



	/************************************************主菜单服务函数******************************************************************/
	/**/		bool FUN_MENU(void)
	/**/		{	
	/**/			main_menu();	//调出主菜单	
	/**/
	/**/			do				//扫描并等待按键
	/**/			{
	/**/				keynum=KEY_SCAN();
	/**/			}while(!keynum);
	/**/
	/**/			switch(keynum)
	/**/			{
	/**/				case 1:
	/**/					fun1();
	/**/					break;
	/**/				case 2:
	/**/					fun2();
	/**/					break;
	/**/				case 4:
	/**/					fun4();
	/**/					break;
	/**/			}
	/**/			return TRUE;	
	/**/		}
	/********************************************************************************************************************************/





				/****************************************1)扩展菜单功能服务函数******************************************************/
				/**/			bool fun1(void)
				/**/			{
				/**/				sub1();			//1)扩展菜单调用
				/**/				while(1)
				/**/				{
				/**/					do			//扫描并等待按键
				/**/					{
				/**/						keynum=KEY_SCAN();
				/**/					}while(!keynum);
				/**/					
				/**/					switch(keynum)
				/**/					{
				/**/						case 1:			
				/**/							fun1_1();
				/**/								break;
				/**/						case 2:				
				/**/							fun1_2();
				/**/								break;
				/**/						case 3:
				/**/							fun1_3();
				/**/					    case 4:
				/**/							return TRUE;
				/**/					}	//switch
				/**/				}	//while
				/**/			}	//fun1
				/********************************************************************************************************************/

			
							/*********************************1)扩展菜单_子1功能服务函数(时分秒输入)*********************************/
							/**/			bool fun1_1(void)
							/**/			{
							/**/				uchar x[3][2],temp_T[3],i,jump;
							/**/
							/**/				temp_T[0]=TIME.HR;
							/**/				temp_T[1]=TIME.MIN;
							/**/				temp_T[2]=TIME.SEC;
							/**/					
							/**/				sub1_1();
							/**/					
							/**/				for(i=0;i<3;i++)
							/**/				{
							/**/					x[i][0]=(temp_T[i]-(temp_T[i]%10))/10+0x30;
							/**/					x[i][1]=temp_T[i]%10+0x30;
							/**/					DIS_LCD(3,2*i+1,x[i],2);
							/**/				}															
							/************************************************时分秒输入**********************************************/
							/**/				for(i=0;i<3;i++)
							/**/				{
							/**/					jump=1;
							/**/					while(jump)
							/**/					{
							/**/						do
							/**/						{
							/**/							keynum=KEY_SCAN();
							/**/						}while(!keynum);
							/**/	
							/**/						switch(keynum)
							/**/						{
							/**/							case 1: if(temp_T[0] == 23) {temp_T[0] =   0; break;}
							/**/									if(temp_T[1] == 59) {temp_T[1] =   0; break;}
							/**/									if(temp_T[2] == 59) {temp_T[2] =   0; break;}		
							/**/									temp_T[i]++;	break;
							/**/							case 2: if(temp_T[0] ==  0) {temp_T[0] =  23; break;}
							/**/									if(temp_T[1] ==  0) {temp_T[1] =  59; break;}
							/**/									if(temp_T[2] ==  0) {temp_T[2] =  59; break;}
							/**/									temp_T[i]--;	break;
							/**/							case 3: if(temp_T[0] >= 19) {temp_T[0] -= 19; break;}
							/**/									if(temp_T[1] >= 55) {temp_T[1] -= 55; break;}
							/**/									if(temp_T[2] >= 55) {temp_T[2] -= 55; break;}		
							/**/									temp_T[i]+=5;	break;
							/**/							case 4: if(temp_T[0] <=  4) {temp_T[0] += 19; break;}
							/**/									if(temp_T[1] <=  4) {temp_T[1] += 55; break;}
							/**/									if(temp_T[2] <=  4) {temp_T[2] += 55; break;}
							/**/									temp_T[i]-=5;	break;
							/**/							case 5: jump=0;		
							/**/						}
							/**/
							/**/						x[i][0]=(temp_T[i]-(temp_T[i]%10))/10+0x30;
							/**/						x[i][1]=temp_T[i]%10+0x30;
							/**/						DIS_LCD(3,2*i+1,x[i],2);		//display
							/**/					}	//while
							/**/				}	//for
							/**/		
							/**/				TIME.HR  = temp_T[0];
							/**/				TIME.MIN = temp_T[1];
							/**/				TIME.SEC = temp_T[2];
							/**/
							/**/				return TRUE;
							/**/			}	//fun1_1
							/********************************************************************************************************/
			
			
							/********************************1)扩展菜单_子2功能服务函数(年月日周输入)********************************/
							/**/			bool fun1_2(void)
							/**/			{
							/**/				uchar x[4][2],i,jump,temp_D[4];

⌨️ 快捷键说明

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