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

📄 main.c

📁 周立功开发板smartArm2300上的GUI程序。
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			黄绍斌
** Created date:		2007-05-25
** Version:				1.0
** Descriptions:		基于ZLG/GUI的多级菜单应用。
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"


// 按键定义
#define  KEY1			(1<<6)		/* P0.6 (上移) */
#define  KEY2			(1<<7)		/* P0.7 (下移) */
#define  KEY3			(1<<8)		/* P0.8 (确定) */
#define  KEY4			(1<<9)		/* P0.9 (退出到最顶层菜单) */

#define  KEY_CON		(KEY1 | KEY2 | KEY3 | KEY4)




// 声明外部图片资源 (gImage_nokia数组为小端结构,可以一次读16位数据)
extern const uint16  gImage_nokia[];


/****************************************************************************
* 名称:Disp_BkPic()
* 功能:显示背景图片。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  Disp_BkPic(void)
{  uint32  x, y;
   uint32  no;
   uint16  dat;
   
   TftSetWindow(0,0, 0+141,0+319);
   TftSetWrite(0,0);
   no = 0;
   for(y=0; y<320; y++)
   {  for(x=0; x<142; x++)
      {  dat = gImage_nokia[no];
         TftSendDat(dat);
         no++;          
      }
   }
   
   TftSetWindow(0,0, 239,319);
}





/****************************************************************************
* 名称:GetAKey()
* 功能:等待按键,然后返回键值。
* 入口参数:无
* 出口参数:返回按键的键值(KEY_UP、KEY_DOWN、KEY_OK、KEY_ESC)。
****************************************************************************/
uint8  GetAKey(void)
{  	uint32  i;
    uint8   key;

   	while(1)
   	{  	while((FIO0PIN&KEY_CON) == KEY_CON);   	    
   	
      	for(i=0; i<50000; i++);			// 软件延时,去抖动(根据系统时钟调整)
      	
      	// 判断按键是否还有效,即去除假按键
      	i = FIO0PIN;
      	if((i&KEY_CON) != KEY_CON) break;	
   	}
   	
   	/* 查询是哪个按键 */

    if((i&KEY1) == 0) key = KEY_UP;
    if((i&KEY2) == 0) key = KEY_DOWN;
    if((i&KEY3) == 0) key = KEY_OK;
    if((i&KEY4) == 0) key = KEY_ESC;
   
    // 等待按键放开
    i = FIO0PIN;
   	while((i&KEY_CON) != KEY_CON)
   	{   i = FIO0PIN;   	   	    
   	} 
   	
   	return(key);
}





/*--  文字:  功  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz1[] =
{ 	0x00,0x80,0x00,0x80,0xFC,0x80,0x13,0xF0,0x10,0x90,0x10,0x90,0x10,0x90,0x11,0x10,
	0x19,0x10,0xE2,0x10,0x04,0xA0,0x08,0x40,0x00,0x00
};

/*--  文字:  能  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz2[] =
{	0x11,0x00,0x21,0x20,0x49,0xC0,0xFD,0x10,0x01,0x10,0x78,0xF0,0x49,0x00,0x79,0x20,
	0x49,0xC0,0x79,0x10,0x49,0x10,0x58,0xF0,0x00,0x00
};

/*--  文字:  正  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz3[] =
{	0x00,0x40,0x7F,0xE0,0x02,0x00,0x02,0x00,0x22,0x00,0x22,0x00,0x23,0xE0,0x22,0x00,
	0x22,0x00,0x22,0x00,0x22,0x00,0xFF,0xF0,0x00,0x00
};

/*--  文字:  在  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz4[] =
{	0x04,0x00,0x04,0x20,0xFF,0xF0,0x08,0x00,0x11,0x00,0x21,0x00,0x67,0xE0,0xA1,0x00,
	0x21,0x00,0x21,0x00,0x21,0x00,0x2F,0xF0,0x00,0x00
};

/*--  文字:  建  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz5[] =
{	0x01,0x00,0xF7,0xE0,0x11,0x20,0x2F,0xF0,0x41,0x20,0x77,0xE0,0x11,0x00,0x97,0xE0,
	0x51,0x00,0x2F,0xF0,0x51,0x00,0x8F,0xF0,0x00,0x00
};

/*--  文字:  设  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz6[] =
{	0x43,0xC0,0x22,0x40,0x22,0x40,0x04,0x70,0xE8,0x00,0x27,0xE0,0x24,0x40,0x22,0x80,
	0x29,0x00,0x32,0x80,0x24,0x40,0x08,0x30,0x00,0x00
};	

/*--  文字:  中  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz7[] =
{	0x04,0x00,0x04,0x00,0x7F,0xE0,0x44,0x20,0x44,0x20,0x44,0x20,0x7F,0xE0,0x44,0x20,
	0x04,0x00,0x04,0x00,0x04,0x00,0x04,0x00,0x00,0x00
};	

/*--  文字:  .  --*/
/*--  点阵为:宽x高=13x13   --*/
const uint8 hz8[] =
{	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00
};	

/* 汉字字模, "功能正在建设中..." */
const uint8 *hz_msg[] =
{ 	hz1, hz2, hz3, hz4, hz5, hz6, hz7, hz8, hz8, hz8, NULL
};



/****************************************************************************
* 名称:DispCreateMessage()
* 功能:显示"功能正在建设..."的信息窗口。
* 入口参数:title		窗口标题
* 出口参数:无
* 注意:调用本函数前要先清屏。
****************************************************************************/
void  DispCreateMessage(uint8  *title)
{	int  i;
	int  x, y;
	WINDOWS  g_fun_window;

	g_fun_window.x = 20;
	g_fun_window.y = 60;

	g_fun_window.with  = 200;
	g_fun_window.hight = 170;
	
	g_fun_window.title = title;  			// 窗口标题
	g_fun_window.state = NULL;				// 不需要状态栏 
	
	GUI_WindowsDraw(&g_fun_window);       	// 显示对话框窗口
	
	// 显示汉字
	x = 40;
	y = 120;
	for(i=0; i<15; i++)	
	{	if(hz_msg[i] == NULL) break;	
		GUI_PutHZ(x, y, (uint8 *)hz_msg[i], 16,13);			
		x += 16;
	}
		
	// 显示按钮
	GUI_Button_OK1(100,190);
	
	// 等待按键
	GetAKey();
}




/****************************************************************************
* 名称:FUN11_Find()
* 功能:菜单功能函数。 已分配给菜单项 1-->1 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN11_Find(void)
{	DispCreateMessage((uint8 *)" FUN11_Find.");	
}

/****************************************************************************
* 名称:FUN12_Edit()
* 功能:菜单功能函数。 已分配给菜单项 1-->2 。
* 入口参数:无
* 出口参数:无
****************************************************************************/       
void  FUN12_Edit(void)
{	DispCreateMessage((uint8 *)" FUN12_Edit.");	
}


/****************************************************************************
* 名称:FUN21_Rcv()
* 功能:菜单功能函数。 已分配给菜单项 2-->1 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN21_Rcv(void)
{	DispCreateMessage((uint8 *)" FUN21_Rcv.");	
}


/****************************************************************************
* 名称:FUN22_Send()
* 功能:菜单功能函数。 已分配给菜单项 2-->2 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN22_Send(void)
{	DispCreateMessage((uint8 *)" FUN22_Send.");	
}


/****************************************************************************
* 名称:FUN23_Bad()
* 功能:菜单功能函数。 已分配给菜单项 2-->3 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN23_Bad(void)
{	DispCreateMessage((uint8 *)" FUN23_Bad.");	
}


/****************************************************************************
* 名称:FUN32_Disp()
* 功能:菜单功能函数。 已分配给菜单项 3-->2 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN32_Disp(void)
{	DispCreateMessage((uint8 *)" FUN32_Disp.");	
}


/****************************************************************************
* 名称:FUN41_Vk100()
* 功能:菜单功能函数。 已分配给菜单项 4-->1 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN41_Vk100(void)
{	DispCreateMessage((uint8 *)" FUN41_Vk100.");	
}


/****************************************************************************
* 名称:FUN311_Chgt()
* 功能:菜单功能函数。 已分配给菜单项 3-->1-->1 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN311_Chgt(void)
{	DispCreateMessage((uint8 *)" FUN311_Chgt.");	
}


/****************************************************************************
* 名称:FUN312_T12()
* 功能:菜单功能函数。 已分配给菜单项 3-->1-->2 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN312_T12(void)
{	DispCreateMessage((uint8 *)" FUN312_T12.");	
}


/****************************************************************************
* 名称:FUN313_T24()
* 功能:菜单功能函数。 已分配给菜单项 3-->1-->3 。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  FUN313_T24(void)
{	DispCreateMessage((uint8 *)" FUN313_T24.");	
}





/****************************************************************************
* 名称:SysInit()
* 功能:系统初始化。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  SysInit(void)
{ 
    SCS |= 0x01;				// P0,P1口作快速I/O
   
   // 内部上/下拉电阻,在GPIO作为输入用时有用。当作输出时,输出1就为强输出,输出0也正确输出。	
   PINSEL0 = 0x00000000;
   PINSEL1 = 0x00000000;
   FIO0DIR &= 0xFFFFFC3F;	// P0.6--0.9为独立按键输入
   
  
   // 配置MiniBUS
   PINSEL6 = 0x00005555;  	// D0--D7       
   PINSEL8 = 0x55555555;	// A0--A15
   PINSEL9 = 0x500A0000;	// nOE, nWE, nCS0, nCS1
   
   PCONP = PCONP | (1<<11);   
   
   							
   EMCConfig = 0x00;		// 小端模式         
   EMCStaticConfig1 = 0x00;	// 8位宽度, 页模式禁止, 片选低电平有效, 不使用延长计时器EMCStaticExtendedWait, 
   							// (而使用EMCStaticWaitRd和EMCStaticWaitWr), 禁止写/读缓冲, 禁止写保护   							
   EMCStaticWaitWen1 = 5;	// 片选nCS0到写nWE的延时时间为9clk, 最大可设置为15.
   EMCStaticWaitOen1 = 5;	// 片选nCS0到输出使能的延时时间为9, 最大可设置为15.
   EMCStaticWaitRd1 = 5;	// 读访问延时为9, 最大可设置为15.
   EMCStaticWaitWr1 = 5;	// 写访问延进为9, 最大可设置为31.
   
   EMCControl = 0x01;		// EMC使能, 正常地址映射,正常工作模式
   							// 通过读取EMC_STAT的bit0,判断总线是否已空闲    							         							   
   							// 关闭Cache   							   							   							 
   							     
}



extern MY_MENU  MAIN_MENU[5];	// 菜单模板

/****************************************************************************
* 名称:main()
* 功能:使用ZLG/TUI实现3级图标菜单应用。
****************************************************************************/
int  main(void)
{   
    SysInit();			// 初始化I/O
     	
    GUI_Initialize(); 	// 初始化GUI及LCD   
    
    GUI_SetColor(BLUE, WHITE);	// 设置显示颜色
    
    while(1) GUI_ICOMenuClass3(MAIN_MENU);	// 菜单操作
    
    return(0);
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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