K66 菜单

99封情书 提交于 2020-03-26 05:05:10

一个菜单,我感觉就是利用按键选择不同功能   每一个操作 代表一个界面 你想有10个操作  就弄出10个界面

首先一个结构体

struct caidan
{
    uint8 current;//当前
    uint16 up;//上
    uint16 down;//下
    uint16 enter;//确认
    uint16 back;
} ope[20]={
                    {0,5,1,9,0},//界面1,第一页‘TEL’ game mes uc
                    {1,0,2,6,1},//界面1   TEL ‘game’ MES UC 
                    {2,1,3,12,2},//界面1   TEL  game 'mes' uc
                    {3,2,4,8,3},//界面1   TEL  game  mes ‘uc’
                    {4,3,5,4,4},//界面1 第二页 ‘QQ’ WX
                    {5,4,0,5,5},//界面1  QQ 'WX'
                    {6,4,7,11,1},//界面2 游戏界面 'TCS' TET
                    {7,6,6,10,1},//界面2 TCS 'TET'
                    {8,8,8,8,3},//时钟
                    {9,9,9,11,0},//电话号
                    {10,10,10,10,7},//21点小游戏
                    {11,11,11,11,6},//贪吃蛇游戏
                    {12,12,12,12,2}//温度
                    
};

uint8 function=0;

function代表当前选择的界面所对应的函数序号

假如你选择了0界面,用case0对应fun(0)

keyup=gpio_get(A6);
        keydown=gpio_get(A7);
        enter=gpio_get(A12);
        back=gpio_get(A13);
        if( (keyup==0) || (keydown==0) ||(enter==0)||(back==0))
        {
                DelayMs(2);//消抖
              if(gpio_get(A6)==0)  //up
                {
                        function=ope[function].up;
                    while( !(gpio_get(A6)) );//松手
                }

                if(gpio_get(A7)==0)   //down
                {
                        function=ope[function].down;
                    while( !(gpio_get(A7)) );
                }
                
                if(gpio_get(A12)==0) //确认
                {
                        function=ope[function].enter;
                    while(!(gpio_get(A12)));
                }
                
                if(gpio_get(A13)==0 ) //back
                {
                        function=ope[function].back;
                    while(!(gpio_get(A13)));
                }
        }

之后的case语句

    switch(function)
        {
            case(0): fun1(); break;
            case(1): fun2(); break;
            case(2): fun3(); break;
            case(3): fun4(); break;
            case(4): fun5(); break;
            case(5): fun6(); break;
            case(6): fun7(); break;
            case(7): fun8(); break;
            case(8): fun9(); break;
            case(9): fun10();break;
            case(10):fun112();break;
            case(11):fun111();break;
            case(12):fun333();break;
            default : fun1(); break;
        }    

这句很重要 防止界面刷新 只有你按下下一个按键才会刷新

while( (gpio_get(A6)) && (gpio_get(A7)) &&(gpio_get(A12)) &&(gpio_get(A13)) ); 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!