LCD_12864 菜单【数组】

用数组实现12864点阵屏的菜单 

按键:up down enter back(上翻页   下翻页   确认   返回)

menu.h

typedef struct
{
    uint8_t page;  //当前页码
    uint8_t up;    //上翻页码
    uint8_t down;  //下翻页码
    uint8_t ok;    //确认页码
    uint8_t back;  //返回页码
    void (*page_fun)();  //函数指针
}key_table;

extern key_table table1[];//定于数组
//构造界面显示函数menu_a1  menu_b1  menu_c1
void menu_homepage(void)
{
    clear_screen();
    display_graphic_64x64(1,1,gImage_aaa);
    display_graphic_16x16_2(1,7,(16*6+1),cai1);
    display_graphic_16x16_2(1,7,(16*7+1),dan1);
}

void menu_a1(void)
{
    clear_screen();
    display_graphic_16x16_2(0,1,(1+16*0),kai1);
    display_graphic_16x16_2(1,3,(1+16*0),ji1);
    display_graphic_16x16_2(1,5,(1+16*0),ce1);
    display_graphic_16x16_2(1,7,(1+16*0),shi1);
}

void menu_b1(void)
{
    clear_screen();
    display_graphic_16x16_2(1,1,(1+16*0),kai1);
    display_graphic_16x16_2(0,3,(1+16*0),ji1);
    display_graphic_16x16_2(1,5,(1+16*0),ce1);
    display_graphic_16x16_2(1,7,(1+16*0),shi1);

}

void menu_c1(void)
{
    clear_screen();
    display_graphic_16x16_2(1,1,(1+16*0),kai1);
    display_graphic_16x16_2(1,3,(1+16*0),ji1);
    display_graphic_16x16_2(0,5,(1+16*0),ce1);
    display_graphic_16x16_2(1,7,(1+16*0),shi1);    

}


key_table table1[] = 
{
    //主界面
    {0,0,0,1,0,(*menu_homepage)}, //0
    //第一界面
    {1,3,2,1,0,(*menu_a1)},//1
    {2,1,3,2,0,(*menu_b1)},//2
    {3,2,1,3,0,(*menu_c1)},//3
    //第二界面   
};

main.c

    void (*page_index)();//定义函数指针  指向结构体里面的显示函数
    uint8_t key = 0;
    uint8_t index = 0;//结构体中的页  key_table table1 的index
    uint8_t index_temp = 34;//!= index   初始化刷新显示
    //在按键轮询中分配值

      key = Key_Scan(0);
      if(key == Key_Up_Press)
      {
         index = table1[index].up;
      }
      else if (key == Key_Down_Press)
      { 
         index = table1[index].down;
      }
      else if (key == Key_Ok_Press)
      {  
         index = table1[index].ok;
      }
      else if (key == Key_Back_Press)
      {
         index = table1[index].back;
      }
//当按键按下时,索引发生与临时变量不一致时执行 对应的指针函数
      if(index != index_temp)
      {
          page_index = table1[index].page_fun;
          (*page_index)();//指向相应的菜单显示
          index_temp = index;      
      }

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值