这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » LCD12864菜单程序

共1条 1/1 1 跳转至

LCD12864菜单程序

助工
2014-10-08 21:11:55     打赏

//=====================================================================
//      菜单指针指向的函数(既索引对应的功能体)
//=====================================================================
void Top_Menu(void)
{
Send_EnterKey();
Send_String("***************************\r\n");
Send_String("*******主菜单界面*********\r\n");
Send_String("***************************\r\n");
Send_String("***************************\r\n");
Send_String("建立时间:"__DATE__" \r\n");
Send_String("          "__TIME__" \r\n");
Send_String("左键:   进入菜单    \r\n");
Send_String("右键:   进入宝典    \r\n\r\n");
Send_String("%K1菜单%          %K2宝典%\r\n");
Send_String("***************************\r\n");
Send_EnterKey();


LED1_ON();
}


 



void Menu_IN(void)
{
Send_EnterKey();
Send_String("***************************\r\n");
Send_String("*******进入菜单界面*********\r\n");
Send_String("***************************\r\n");
Send_String("短信      信息宝典     设置 \r\n");
Send_String("彩信相册  彩信         彩信帝国\r\n");
Send_String("互联网    电话本       播放器  \r\n");
Send_String("通话记录   闹钟        多媒体\r\n");
Send_String("                 %K3返回%\r\n");
Send_String("***************************\r\n");
Send_EnterKey();
LED2_ON();
}



void baodian(void)
{
Send_EnterKey();
Send_String("***************************\r\n");
Send_String("*******进入宝典界面*********\r\n");
Send_String("***************************\r\n");
Send_String("1、新闻资讯\r\n");
Send_String("2、天气预报\r\n");
Send_String("3、聊天交友\r\n");
Send_String("4、无限游戏\r\n");
Send_String("5、笑话情趣\r\n");
Send_String("6、神机妙算\r\n");
Send_String("7、两性生活\r\n");
Send_String("                 %K3返回%\r\n");
Send_String("***************************\r\n");
Send_EnterKey();


 


LED3_ON();
 
}


 


//=====================================================================
//      菜单的实现代码如下:
//=====================================================================
#define MENU_SIZE 18             //菜单长度


unsigned char KeyFuncIndex=0;    //存放当前的菜单索引


void (*KeyFuncPtr)();            //定义按键功能指针
//定义类型 
typedef struct 
{
   unsigned char KeyStateIndex;   //当前的状态索引号
   unsigned char KeyLiftState;    //按下向左键时的状态索引号
   unsigned char KeyRightState;   //按下向右键时的状态索引号
   unsigned char KeyReturnState;  //按下返回键时的状态索引号
   void (*CurrentOperate)();      //当前状态应该执行的功能操作
}  StateTab;
//=====================================================================


 //数据结构数组
StateTab code KeyTab[MENU_SIZE]=
{
    {0,1,2,0,   (*Top_Menu)},      //顶层
 {1,1,1,0,   (*Menu_IN)},    //菜单
 {2,2,2,0,   (*baodian)},       //宝典
};
//=====================================================================
void MenuOperate(void)
{


     if(K1==0)        //左键
  {KeyFuncIndex=KeyTab[KeyFuncIndex].KeyLiftState;}
  if(K2==0)     //右键
  {KeyFuncIndex=KeyTab[KeyFuncIndex].KeyRightState;}
  if(K3==0)     //返回键
  {KeyFuncIndex=KeyTab[KeyFuncIndex].KeyReturnState;}
  //此处添加按键错误代码
  
 //下面是执行按键的操作
 KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate;
 (*KeyFuncPtr)();     //执行当前的按键操作
}
//======================================================================
//              菜单功能程序结束
//======================================================================


 


void main()
{
 #ifdef Enable_UART_Debug   //调用串口初始化程序
 Init_Com();   
 #endif
 MenuOperate();


 while(1)
 {
  if(K1==0||K2==0||K3==0)
  {LED_OFF();MenuOperate(); }
 }
}



共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]