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

📄 menushow.c

📁 关于SPLC501C的液晶编程
💻 C
字号:
//***************************************************************************//
//文件描述:SPLC501菜单应用范例程序--UI显示刷新控制函数
//
//声明:	小丑	20050810	Sunnorth	Mz Design
//			xinqiang@sunnorth.com.cn
//
//***************************************************************************//
#define Clear_Watchdog()	*(unsigned *)0x7012=1;		// 清看门狗
#include "SPLC501User.h"
#include "chinese.h"

//=====================================================================//
//函数:unsigned int GetBitMapX(unsigned int *Map)
//描述:获取位图(包括汉字字模)的X轴数据(宽度)
//参数:unsigned int *Map  数据表的首地址指针
//返回:宽度
//注意:无        
//=====================================================================//
unsigned int GetBitMapX(unsigned int *Map)
{
	unsigned int uiTemp;
	uiTemp = *Map;
	uiTemp = (uiTemp&0xff00)>>8;
	return uiTemp;
}
//=====================================================================//
//函数:unsigned int GetBitMapY(unsigned int *Map)
//描述:获取位图(包括汉字字模)的Y轴数据(高度)
//参数:unsigned int *Map  数据表的首地址指针
//返回:高度
//注意:无        
//=====================================================================//
unsigned int GetBitMapY(unsigned int *Map)
{
	unsigned int uiTemp;
	uiTemp = *Map;
	uiTemp = uiTemp&0x00ff;
	return uiTemp;
}
//=====================================================================//
//函数:unsigned int GetASIIX(void)
//描述:获取当前ASCII码显示的宽度信息
//参数:无
//返回:ASCII码宽度
//注意:无        
//=====================================================================//
unsigned int GetASIIX(void)
{
	unsigned int uiTemp;
	uiTemp = LCD501_FontGet();
	if(uiTemp) uiTemp = 8;
	else uiTemp = 6;
	return uiTemp;
}
//=====================================================================//
//函数:unsigned int ShowMenu_Item(unsigned int space_front,unsigned int y,
//									unsigned int* Menu_String)
//描述:显示菜单项子函数
//参数:space_front  显示缩进值
//		y            Y轴坐标
//		Menu_String  菜单项链表的首地址指针
//返回:显示溢出情况  0:溢出    1:无溢出
//注意:无        
//=====================================================================//
unsigned int ShowMenu_Item(unsigned int space_front,unsigned int y,unsigned int* Menu_String)
{
	unsigned int *uiTemp;
	unsigned int uiTemp1;
	unsigned int i,x,Char_Nmb;
	x = space_front;					//Mune show front space....
	Char_Nmb = (unsigned int)Menu_String[0];
	for(i=1;i<=Char_Nmb;i++)
	{
		uiTemp = (unsigned int*)(Menu_String+i);
		uiTemp1 = (unsigned int)*uiTemp;
		if(uiTemp1>0x0100)	
		{						//Show Chinese or bitmap
			LCD501_Bitmap(x,y,(unsigned int*)*uiTemp);
			x = x+GetBitMapX((unsigned int*)*uiTemp);
		}
		else
		{
			LCD501_PutChar(x,y,uiTemp1);
			x = x+GetASIIX();
		}
		if(x>=SCR_MAX_COL) return 0;			//横坐标溢出,返回零
	}
	return 1;
}
//=====================================================================//
//函数:void UpDateMenu(unsigned int First_Index,unsigned int Menu_Index,
//						unsigned int* Menu_List)
//描述:刷新整屏菜单显示函数
//参数:First_Index  当面显示页的第一条菜单号
//		Menu_Index   当前处于选用的菜单项
//		Menu_List    菜单资源链表指针
//返回:无
//注意:无        
//=====================================================================//
void UpDateMenu(unsigned int First_Index,unsigned int Menu_Index,unsigned int* Menu_List)
{
	unsigned int y_width,List_Num,i,y_Index;
	unsigned int uiTemp;
	List_Num = (unsigned int)Menu_List[0];
	y_width = (unsigned int)Menu_List[1];
	y_Index = 0;
	switch(y_width)
	{
		case 1:	y_width = 16;break;
		case 2: y_width = 12;break;
		case 3: y_width = 8;break;
		default:return ;break;
	}
	while(First_Index>List_Num) First_Index -= List_Num;
	if(Menu_Index>List_Num) return;
	LCD501_ClrScreen(0);
	for(i=First_Index+2;i<List_Num+2;i++)
	{
		ShowMenu_Item(0,y_Index,(unsigned int *)Menu_List[i]);
		y_Index = y_Index+y_width;
	}
	y_Index = Menu_Index-First_Index;
	y_Index = y_Index*y_width;
	uiTemp = LCD501_GetPaintMode();
	LCD501_SetPaintMode(3);
	LCD501_Rectangle(0,y_Index,128,y_Index+y_width-1,1);
	LCD501_SetPaintMode(uiTemp);
}
//=====================================================================//
//函数:unsigned int GetMLNum(unsigned int* Menu_List)
//描述:获取菜单资源的菜单项个数函数
//参数: Menu_List    菜单资源链表指针
//返回:菜单项个数
//注意:无        
//=====================================================================//
unsigned int GetMLNum(unsigned int* Menu_List)
{
	unsigned int uiTemp;
	uiTemp = (unsigned int)Menu_List[0];
	return uiTemp-1;
}
//=====================================================================//
//函数:unsigned int GetMLiNum_Page(unsigned int* Menu_List)
//描述:获取菜单资源在一屏可以显示的菜单项个数函数
//参数: Menu_List    菜单资源链表指针
//返回:菜单项个数
//注意:无        
//=====================================================================//
unsigned int GetMLiNum_Page(unsigned int* Menu_List)
{
	unsigned int uiTemp;
	uiTemp = (unsigned int)Menu_List[1];
	switch(uiTemp)
	{
		case 1: uiTemp = 4;break;
		case 2: uiTemp = 5;break;
		case 3: uiTemp = 8;break;
		default:break;
	}
	return uiTemp;
}

⌨️ 快捷键说明

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