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

📄 menu.c.bak

📁 sed1335液晶驱动,包括菜单,已经在DSPIC30F6014A上调试通过.
💻 BAK
字号:
//menu.c
#ifdef	__C51__
	#include	"..\uv2_prj\config.h"
#else
    #include	"..\ads_prj\config"
#endif 

#include	"..\c1335_public\c1335_driver.h"

#define		MAIN_MENU_ROW_WIDTH		(unsigned char)18
extern	unsigned char KeyScan(void);
unsigned char* code	MainMenuString[8]=
{
	"1.LEAK CHECK",		
	"2.HANG-UP TEST",		
	"3.VEHICLE MESSAGE",	
	"4.MESSURE",			
	"5.FUNCTION",			
	"6.HELP",				
	"7.DIAGNOSE",			
	"8.SETTING"				
};
unsigned char* code		LanguageMenuString[2]=
{
	"1.CHINESE",		
	"2.ENGLISH"			
};
unsigned char* code		MeasureMenuString[3]=
{
	"1.COMMON MEAS.",		
	"2.IDLE MEAS.",			
	"3.DUAL MEAS.",			
};


unsigned char	g_ucKeyData;
BOOL	SleepAndQueryMsg(unsigned char nDelayTime)
{
//	unsigned char	uc;
	while(nDelayTime--)
	{
		g_ucKeyData = KeyScan();
		if(g_ucKeyData)
			return FALSE;
		DelayMS(1);
	}
	return TRUE;
}

////	Action of 5Gas  ///////////
BOOL	LeakCheck()
{
/*********************************
	//1.开泵,
	//2.延时 15 s。
	//3.读取气路压力 Pressure0,并记录
	//4.延时 5 s
	//5.读取气路压力 Pressure1,判断|Pressure0-Pressure1|
	//6.给出结果
*********************************/
	SleepAndQueryMsg(2000);
	return	TRUE;
}

////	End of action	///////////

void	KeyNote()
{
	unsigned char i;
	for (i=0;i<6;i++)
	{
		DrawRect(7*i,	216,1);
	}
	for (i=0;i<6;i++)
	{
		DispBmp16x24(&KEY_NOTE[48*i],	1+7*i,	220,0);
	}
/*	DrawRect(7*0,	216,1);	DrawRect(7*1,	216,1);	DrawRect(7*2,	216,1);
	DrawRect(7*3,	216,1);	DrawRect(7*4,	216,1);	DrawRect(7*5,	216,1);
	DispBmp16x24(&KEY_NOTE[48*0],	1+7*0,	220,0);	DispBmp16x24(&KEY_NOTE[48*1],	1+7*1,	220,0);
	DispBmp16x24(&KEY_NOTE[48*2],	1+7*2,	220,0);	DispBmp16x24(&KEY_NOTE[48*3],	1+7*3,	220,0);
	DispBmp16x24(&KEY_NOTE[48*4],	1+7*4,	220,0);	DispBmp16x24(&KEY_NOTE[48*5],	1+7*5,	220,0);
*/
}
void	DispSubMenuNum(unsigned char Number,
						unsigned char MaxNum,
						unsigned char X,
						unsigned char Y,
						unsigned char RowWidth)
{
	unsigned char	i,color;
	Y -= RowWidth;
	for(i=1;i<=MaxNum;i++)
	{
		if(i == Number)		color = 1;
		else				color = 0;
		DispCHAR_16x8(&ASCII_16[(16+i)*16],		X,Y+RowWidth*i,color);
	}
}
void	DispSubMenuContent(	unsigned char* str[],
							unsigned char MaxNum,
							unsigned char X,
							unsigned char Y,
							unsigned char RowWidth)
{
	unsigned char i;
	for(i=0;i<MaxNum;i++)
		DispASCIIStr(str[i],X,	Y+RowWidth*i,	0);
}
void	MainMenu(unsigned char *pSubMenu)
{
	ClearLCD(0x28,2,	10,36,200);
	DispASCIIStr("MENU",14,10,0);
/*	for(g_ucKeyData=0;g_ucKeyData<10;g_ucKeyData++)
		DispASCIIStr(MainMenuString[g_ucKeyData],
					6,	28+MAIN_MENU_ROW_WIDTH*g_ucKeyData,	0);*/
	DispSubMenuContent(MainMenuString,8,6,28,18);
	
	DispSubMenuNum(*pSubMenu,8,6,28,18);
	KeyNote();
	while(1)
	{
		g_ucKeyData = 0;
		//KeyScan();
		if(!SleepAndQueryMsg(1000))
		{
			switch(g_ucKeyData)
			{
			case KEY_UP:
				if(*pSubMenu == 1)
					*pSubMenu = 8;
				else
					(*pSubMenu)--;
				DispSubMenuNum(*pSubMenu,10,6,28,18);
				break;
			case KEY_DOWN:
				if(*pSubMenu == 8)
					*pSubMenu = 1;
				else
					(*pSubMenu)++;
				DispSubMenuNum(*pSubMenu,10,6,28,18);
				break;
		   	case KEY_OK:
				return;
		    }
	    }
	}
}
void	LeakCheckMenu(void)
{
	ClearLCD(0x28,6,	10,20,200);
	DispASCIIStr("LEAK CHECK",14,10,0);

	VerLine(0x80,	11,		72,	32);
	VerLine(0x80,	20,		80,	16);
	VerLine(0x80,	22,		72,	32);

	HorLine(0xff,	11,		72,		4);
	HorLine(0xff,	11,		104,	4);
	HorLine(0xff,	20,		80,		2);
	HorLine(0xff,	20,		96,		2);
	HorLine(0xff,	22,		72,		5);
	HorLine(0xff,	22,		104,	5);

	DispASCIIStr("START LEAK CHECK?",12,160,0);
	//while(KeyScan() == 0);
	while(1)
	{
		g_ucKeyData = 0;
		//KeyScan();
		if(!SleepAndQueryMsg(1000))
		{
			switch(g_ucKeyData)
			{
			case KEY_OK://Start Leak Check
				//DispASCIIStr("START LEAK CHECK?",12,128,0);
				DispASCIIStr(  "  CHECKING...    ",	12,160,0);
				if(LeakCheck())
					DispASCIIStr("  PASS     ",		14,160,0);
				else
					DispASCIIStr(  "FAIL",			16,160,0);
					
				break;
		   	case KEY_ESCAPE:
				return;
		    }
	    }
	}
}
//void	HangUpMenu(void);
		
//void	InputVehicleMsgMenu(void);
		
void	MeasureMenu(void)
{
}

//void	CalibrationMenu(void);
				
//void	HelpMenu(void);
				
//void	DiagnoseMenu(void);
			
//void	ComSettingMenu(void);
				
//void	TimeSettingMenu(void);

void	LanguageMenu(void)
{
	unsigned char	ucSubMenu = 0;
	ClearLCD(0x28,6,	10,20,200);
	DispASCIIStr("LANGUAGE",14,10,0);
//	DispASCIIStr("0.CHINESE",14,64,0);
//	DispASCIIStr("1.ENGLISH",14,96,0);	
	DispSubMenuContent(LanguageMenuString,2,	14,64,		32);

	DispSubMenuNum(ucSubMenu,2,14,64,32);
	while(1)
	{
		g_ucKeyData = 0;
		//KeyScan();
		if(!SleepAndQueryMsg(1000))
		{
			switch(g_ucKeyData)
			{
			case KEY_ESCAPE:
				return;
			case KEY_UP:
				if(ucSubMenu == 1)
					ucSubMenu = 2;
				else
					ucSubMenu = 1;
				DispSubMenuNum(ucSubMenu,2,14,64,32);
				break;
			case KEY_DOWN:
				if(ucSubMenu == 2)
					ucSubMenu = 1;
				else
					ucSubMenu = 2;
				DispSubMenuNum(ucSubMenu,2,14,64,32);
				break;
		   	case KEY_OK:
				if(ucSubMenu == 1)
					DispASCIIStr("1.CHINESE",14,64,1);
				else
					DispASCIIStr("2.ENGLISH",14,96,1);
				//保存设置,例如写到EEPROM
				break;
		    }
	    }
	}

}
/*
void	Menu(void)
{
	DispASCIIStr("I LOVE YOU",10,4,0);

	while(KeyScan() == 0);
	DispCHAR_16x8(&ASCII_16[32*1],	20*1,	20,0);
	
	while(KeyScan() == 0);
	
	while(KeyScan() == 0);	
	
}
void	MainMenu(unsigned char *pSubMenu)
{
	ClearLCD(0x28,2,	10,36,200);
	DispASCIIStr("MENU",14,10,0);

	DispASCIIStr("0.LEAK CHECK",		6,	10+MAIN_MENU_ROW_WIDTH*1,	0);
	DispASCIIStr("1.HANG-UP TEST",		6,	10+MAIN_MENU_ROW_WIDTH*2,	0);
	DispASCIIStr("2.VEHICLE MESSAGE",	6,	10+MAIN_MENU_ROW_WIDTH*3,	0);
	DispASCIIStr("3.MESSURE",			6,	10+MAIN_MENU_ROW_WIDTH*4,	0);
	DispASCIIStr("4.CALIBRATE",			6,	10+MAIN_MENU_ROW_WIDTH*5,	0);
	DispASCIIStr("5.HELP",				6,	10+MAIN_MENU_ROW_WIDTH*6,	0);
	DispASCIIStr("6.DIAGNOSE",			6,	10+MAIN_MENU_ROW_WIDTH*7,	0);
	DispASCIIStr("7.COM SETTING",		6,	10+MAIN_MENU_ROW_WIDTH*8,	0);
	DispASCIIStr("8.TIME SETTING",		6,	10+MAIN_MENU_ROW_WIDTH*9,	0);
	DispASCIIStr("9.LANGUAGE",			6,	10+MAIN_MENU_ROW_WIDTH*10,	0);
}

void	DispSubMenuNum(unsigned char Number){
	unsigned char	i,color;
	for(i=0;i<10;i++)
	{
		if(i == Number)		color = 1;
		else				color = 0;
		DispCHAR_16x8(&ASCII_16[(16+i)*16],		6,28+MAIN_MENU_ROW_WIDTH*i,color);
	}
	DispCHAR_16x8(&ASCII_16[(16+1)*16],		6,10+20*1,0);
	DispCHAR_16x8(&ASCII_16[(16+2)*16],		6,10+20*2,0);
	DispCHAR_16x8(&ASCII_16[(16+3)*16],		6,10+20*3,0);
	DispCHAR_16x8(&ASCII_16[(16+4)*16],		6,10+20*4,0);
	DispCHAR_16x8(&ASCII_16[(16+5)*16],		6,10+20*5,0);
	DispCHAR_16x8(&ASCII_16[(16+6)*16],		6,10+20*6,0);
	DispCHAR_16x8(&ASCII_16[(16+7)*16],		6,10+20*7,0);
	DispCHAR_16x8(&ASCII_16[(16+8)*16],		6,10+20*8,0);
	DispCHAR_16x8(&ASCII_16[(16+9)*16],		6,10+20*9,0);

//	DispCHAR_16x8(&ASCII_16[(16+Number)*16],6,(unsigned char)(26+MAIN_MENU_ROW_WIDTH*Number),1);
void	KeyNote()
{
	DrawRect(7*0,	216,1);	DrawRect(7*1,	216,1);	DrawRect(7*2,	216,1);
	DrawRect(7*3,	216,1);	DrawRect(7*4,	216,1);	DrawRect(7*5,	216,1);
	DispBmp16x24(&KEY_NOTE[48*0],	1+7*0,	220,0);
	DispBmp16x24(&KEY_NOTE[48*1],	1+7*1,	220,0);
	DispBmp16x24(&KEY_NOTE[48*2],	1+7*2,	220,0);	
	DispBmp16x24(&KEY_NOTE[48*3],	1+7*3,	220,0);
	DispBmp16x24(&KEY_NOTE[48*4],	1+7*4,	220,0);	
	DispBmp16x24(&KEY_NOTE[48*5],	1+7*5,	220,0);

}	
}*/

⌨️ 快捷键说明

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