新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機4個按鍵菜單

        單片機4個按鍵菜單

        作者: 時間:2016-11-13 來源:網絡 收藏
        #include "main.h"

        void PWM_Ctrl(signed char i) //脈沖寬度設置
        {
        }

        本文引用地址:http://www.104case.com/article/201611/316565.htm

        void OpenTime_Ctrl(signed char i) //開時間設置
        {
        }

        void CloseTime_Ctrl(signed char i) //關時間設置
        {
        }

        void ClearData(signed char i) //清除數據
        {
        }


        void NullMenu(signed char i) //空操作
        {
        ;
        }

        struct MenuItem
        {
        void (*Display)(void); //顯示函數
        void (*Subs)(signed char i); //節點函數
        struct MenuItem *ChildrenMenus; //子菜單
        struct MenuItem *ParentMenus; //母菜單
        };

        //本文共計2級菜單

        struct MenuItem SetMenu[4]; //設置鍵子菜單
        struct MenuItem StartMenu; //開始菜單
        struct MenuItem (*MenuPoint) = &StartMenu;
        struct MenuItem (*last_MenuPoint) = &StartMenu;

        struct MenuItem SetMenu[4] =
        { // Display Subs ChildrenMenus ParentMenus
        { Display_S0, PWM_Ctrl, &SetMenu[1], &StartMenu},
        { Display_S1, OpenTime_Ctrl, &SetMenu[2], &StartMenu},
        { Display_S2, CloseTime_Ctrl, &SetMenu[3], &StartMenu},
        { Display_S3, ClearData, &StartMenu, &StartMenu},
        };

        struct MenuItem StartMenu =
        {
        Display_Count, NullMenu, &SetMenu[0], &StartMenu
        };


        void Data_manage(void)
        {
        ;

        }


        void Key_Handle(void)
        {
        unsigned char key;
        signed char i = 0;

        if (key_value == 0)
        {
        return;
        }
        key = key_value;
        key_value = 0;

        switch (key)
        {
        case KEY_START:
        MenuPoint = (*MenuPoint).ParentMenus;
        break;
        case KEY_SET:
        MenuPoint = (*MenuPoint).ChildrenMenus;
        pause_flag = 1; //暫停計數
        break;
        case KEY_UP:
        i = 1;
        break;
        case KEY_DOWN:
        i = -1;
        break;
        default:
        break;
        }

        Data_manage();
        (*(*MenuPoint).Subs)(i);
        (*(*MenuPoint).Display)();

        Refresh_flash();
        }

        void Display(void)
        {
        if (time_1s_flag == 1)
        {
        time_1s_flag = 0;
        (*(*MenuPoint).Display)();
        }
        }



        關鍵詞: 單片機按鍵菜

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 扎兰屯市| 宁阳县| 商城县| 青河县| 德惠市| 西乌珠穆沁旗| 思茅市| 东山县| 沧源| 宝山区| 莱芜市| 收藏| 昆山市| 郴州市| 当雄县| 土默特右旗| 比如县| 江永县| 冷水江市| 兴安县| 修水县| 霞浦县| 手游| 化隆| 佛冈县| 青浦区| 格尔木市| 许昌县| 枣庄市| 西乡县| 泉州市| 河北区| 宿松县| 德令哈市| 龙南县| 罗定市| 岫岩| 巴林左旗| 抚州市| 沂水县| 颍上县|