久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5208|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)多級菜單及按鍵參數(shù)設(shè)置的架構(gòu) 求分享

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:79874 發(fā)表于 2018-6-22 08:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)多級菜單及按鍵參數(shù)設(shè)置的架構(gòu),希望分享下
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:624105 發(fā)表于 2019-10-16 23:36 | 只看該作者
同樣在找
回復(fù)

使用道具 舉報(bào)

板凳
ID:601639 發(fā)表于 2019-10-17 09:41 | 只看該作者
我前段時(shí)候剛做了個(gè)菜單,用OLED屏顯示,挺好用的。
//按鍵處理函數(shù)
//返回按鍵值
//mode:0,不支持連續(xù)按;1,支持連續(xù)按;
//0,沒有任何按鍵按下

u8 KEY_Scan(u8 mode)
{         
        static u8 key_up=1;//按鍵標(biāo)志
        if(mode)key_up=1;  //支持連按       
  //檢測按鍵是否按下       
        if(key_up&&(Upper_KEY==0||Left_KEY==0||Right_KEY==0||Lower_KEY==0||Determine_KEY==0||Return_KEY==0))
        {
                delay_ms(20);//去抖動(dòng)
                if(key_up&&(Upper_KEY==0||Left_KEY==0||Right_KEY==0||Lower_KEY==0||Determine_KEY==0||Return_KEY==0))
                {
                                key_up=0;
                                                 if(Upper_KEY     == 0)           return Upper;
                                else if(Left_KEY      == 0)           return Left;
                                else if(Right_KEY     == 0)           return Right;
                                else if(Lower_KEY     == 0)           return Lower;
                                else if(Determine_KEY == 0)           return Determine;
                                else if(Return_KEY    == 0)           return Return;
                }
        }
        //檢測按鍵是否松開
        else if(Upper_KEY==1 && Left_KEY==1 && Right_KEY==1 && Lower_KEY==1 && Determine_KEY==1 && Return_KEY==1)
        key_up=1;         return 0;//無按鍵按下
       
}

//  IIC協(xié)議    OLED屏 人機(jī)界面
void lnterface(void)  //人機(jī)界面
{       
        switch(Page_Sgin)       
        {               
                case 0:
                             Main_Menu(); break;
                case 2:
                             Menu_2(); break;
                case 3:
                             Menu_3();break;                               
                default : break;
        }
       
}


//主菜單
void Main_Menu(void)
{
        OLED_P16x16Ch(0*16,6,11);                   //顯示 //菜
        OLED_P16x16Ch(1*16,6,12);                   //顯示 //單
        OLED_P16x16Ch(6*16,6,13);                   //顯示 //退       
        OLED_P16x16Ch(7*16,6,14);                   //顯示 //出
        if(KEY_Scan(Key_Selection)==Determine)//判斷是否按下確定按鍵
        {                           
                Page_Sgin=2;                              //頁面選擇置2
                OLED_Clear();
        }
}

void Menu_2(void)
{

        if(Choice==2||Choice==4||Choice==6)       
        {                       
                OLED_P16x16Ch(0*16,Choice,44);              //選擇
                Display(0,0,0);
                               
                switch(KEY_Scan(Key_Selection))       
                {               
                        case Superior_Choice:                     //上翻
                                   OLED_P16x16Ch(0*16,Choice,37);
                                   Choice-=2;
                                   break;
                        case Subordinate_Choice:                  //下翻
                                   OLED_P16x16Ch(0*16,Choice,37);
                                   Choice+=2;
                                   break;
                        case Determine_Choice:                    //確定
                             Page_Sgin=3;Choice=2;
                                         OLED_Clear();
                                   break;
                        case Return_Choice:                       //返回
                                   Page_Sgin=0;   
                             break;
                        default :
                                   break;
                }
               
        }       
        else if(Choice>6)Choice=2;
        else if(Choice<2)Choice=6;

}
void Menu_3(void)
{
        if(Choice==2||Choice==4||Choice==6)       
        {
                OLED_P16x16Ch(0*16,Choice,44);              //選擇
                Display(0,0,0);
               
                switch(KEY_Scan(Key_Selection))       
                {               
                        case Superior_Choice:                     //上翻
                                   OLED_P16x16Ch(0*16,Choice,37);
                                   Choice-=2;
                                   break;
                        case Subordinate_Choice:                  //下翻
                                   OLED_P16x16Ch(0*16,Choice,37);
                                   Choice+=2;
                                   break;
                        case Determine_Choice:                    //確定
                             Page_Sgin=3;Choice=2;
                                   break;
                        case Return_Choice:                       //返回
                                   Page_Sgin=2;Choice=2;  
                             break;
                        default :
                                   break;
                }
               
        }       
        else if(Choice>6)Choice=2;
        else if(Choice<2)Choice=6;
}

int main(void)
{         
         delay_init();
         uart_init(9600);         
         LED_Init();
         KEY_Init();
        while(1)
        {
            lnterface();
        }
}

就是這么個(gè)意思,在主函數(shù)里掃描switch(Page_Sgin),按確定鍵時(shí)跳轉(zhuǎn)到想進(jìn)的下一級菜單,比如該例子,首先剛開始程序位于主菜單,按確定鍵,Page_Sgin=2;進(jìn)入2級菜單。再2級菜單里比如Page_Sgin=4;進(jìn)入2級菜單的子菜單,按返回鍵返回想要到的上一級菜單。這個(gè)程序很好用,我也是找了很久才發(fā)現(xiàn)的,這個(gè)理解起來最簡單。
回復(fù)

使用道具 舉報(bào)

地板
ID:79874 發(fā)表于 2019-11-9 21:11 來自手機(jī) | 只看該作者
謝謝哥們分享不錯(cuò)
回復(fù)

使用道具 舉報(bào)

5#
ID:235200 發(fā)表于 2019-11-9 21:46 | 只看該作者
用狀態(tài)設(shè)置各級菜單,完成一個(gè)顯示后通過某種邏輯改變至另是種狀態(tài)就實(shí)現(xiàn)了
回復(fù)

使用道具 舉報(bào)

6#
ID:976070 發(fā)表于 2022-2-3 20:49 | 只看該作者
怎么完成參數(shù)加減?
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜无码国产理论在线 | 免费一级黄色 | 精品成人一区 | 欧美精品二区 | 亚洲综合中文字幕在线观看 | 午夜码电影 | 中文字幕免费视频 | 国产视频福利一区 | 国产1区在线 | 成人在线视频观看 | 日日精品| 国产日韩久久 | 久久久精品视频免费看 | 国精品一区二区 | 欧洲亚洲一区 | 亚洲狠狠 | 怡红院怡春院一级毛片 | 99资源站 | 夜夜爽99久久国产综合精品女不卡 | 国产精品欧美一区二区三区不卡 | 午夜精品一区二区三区在线播放 | 日韩在线视频网址 | www.操com| 欧美精品1区 | 久久国产精品-久久精品 | 免费国产一区二区视频 | 久草.com| 欧美亚洲国产一区 | 亚洲一区二区三区四区五区中文 | 一级黄色片免费 | 国产免费一区二区三区免费视频 | 欧美精品在线免费 | 中文字幕在线观看第一页 | 91在线看| 日本公妇乱淫xxxⅹ 国产在线不卡 | 亚洲欧美另类在线 | 国色天香成人网 | 91.com视频| 日韩免费一区二区 | 男人阁久久 | 在线亚洲免费 |