分享OLED三级菜单框架(源码),本程序在ALIENTEK MiniSTM32开发板验证 ,更新到2011102

2019-07-21 01:30发布

因为项目中的OLED有多级菜单,所以不得不研究一下,经过一天时间的测试,OLED三级菜单框架做好了。和大家分享一下。我用的是自己的OLED屏,大家可以改成开发板的屏,改一下OLED初始化就可以了,因为只是框架,大家可以加入自己的东西,反正我的项目还在改新中。
因为开发板上的按键有限所以我用了一个跳线PA14(选择/退出),PA15(上翻),PA13(下翻) , 第一级选择语言,第二级进入界面,第三级进入功能。在功能中,我在做了英文的,其实中文的也一样的。呵
 


更新说明:程序中加了P12(退出),程序只有两个分支,English , 中文, 现在两个分支都做到了三级菜单,





程序更新说明:之前发现显示有些闪,程序中有BUG,经过一段时间的测试后发现不应该在每一次换屏后才清屏,而应该是按下按键后就清屏,现在程序改过来后屏不闪了。还有就是控制口换成了PC6, PC7, PC8, PC9, 按键换成了B5,PA8,PA11,PA12





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
兜里有糖
1楼-- · 2019-07-25 00:20
 精彩回答 2  元偷偷看……
suqingxiao
2楼-- · 2019-07-25 04:28
回复【31楼】玻璃之城2046:
--------------------------------
请看26楼的说明
邓艾菁
3楼-- · 2019-07-25 08:28

typedef struct
{
 u8 current;//当前状态索引号
 u8 up; //向上
 u8 down; //向下
 u8 enter; //确定
 u8 exit; //退出
 void (*current_operation)(void); //当前状态应该执行的操作
} Menu_table;

Menu_table  table[56]=
{
    { 0, 8, 8, 1,1,(*fun0)}, //0//第一级English
 { 1, 1, 1, 2,1,(*fun1)},// 第二级 主界面
 { 2, 4, 3, 2,1,(*fun2)},// 第三级  功能界面     
 { 3, 2, 4, 4,0,(*fun3)},//  第三级
 { 4, 3, 2, 3,0,(*fun4)},// 第三级     
 { 5, 3, 7, 6,0,(*fun5)},//
 { 6, 6, 6, 5,0,(*fun6)},//      
 { 7, 5, 1, 0,0,(*fun7)},//1
        
 { 8, 0, 0, 9,9,(*fun8)},//第一层中文
 { 9, 9, 9,10,9,(*fun9)},//第二级 主界面
 {10,10,10,10,9,(*fun10)},// 第三级 功能界面                       
 {11, 9,13,12,0,(*fun11)},// 第三级 
 {12,12,12,11,0,(*fun12)}, // 第三级                    
 {13,11,15,14,0,(*fun13)},
 {14,14,14,13,0,(*fun14)},                       
 {15,13, 9, 8,0,(*fun15)},
}; 楼主,请问那些数据是怎么算出来的

wenrui132690
4楼-- · 2019-07-25 09:52
 精彩回答 2  元偷偷看……
henu四叶草
5楼-- · 2019-07-25 15:32
楼主大神你好 void (*current_operation_index)(void)这个函数是什么啊,看不懂啊
henu四叶草
6楼-- · 2019-07-25 18:29
 精彩回答 2  元偷偷看……

一周热门 更多>