#include <stdio.h> #include "oled.h" #include "menu.h" #include "gpio.h" #include "usart.h"

Key_index_struct const Key_table[18] = { //当前, 下, 上, 确定, home {0, 0, 0, 1, 0, mainWindow}, //一级界面 {1, 2, 4, 5, 0, menu1}, //二级界面第一行 {2, 3, 1, 9, 0, menu2}, //二级界面第二行 {3, 4, 2, 13, 0, menu3}, //二级界面第三行 {4, 1, 3, 0, 0, menu4}, //退出 {5, 6, 8, 5, 0, subMenu1_1}, //三级界面,menu1选中第1行 {6, 7, 5, 6, 0, subMenu1_2}, //menu1三级界面第2行 {7, 8, 6, 7, 0, subMenu1_3}, //menu1三级界面第3行 {8, 5, 7, 1, 0, subMenu1_4}, //menu1三级界面第4行 {9 , 10, 12, 9, 0, subMenu2_1}, //menu2三级界面第1行 {10, 11, 9, 10, 0, subMenu2_2}, //menu2三级界面第2行 {11, 12, 10, 11, 0, subMenu2_3}, //menu2三级界面第3行 {12, 9, 11, 2, 0, subMenu2_4}, //menu2三级界面第4行 {13, 14, 16, 13, 0, subMenu3_1}, //menu3三级界面第1行 {14, 15, 13, 14, 0, subMenu3_2}, //menu3三级界面第2行 {15, 16, 14, 15, 0, subMenu3_3}, //menu3三级界面第3行 {16, 13, 15, 3, 0, subMenu3_4}, //menu3三级界面第4行 };

uint8_t nowIndex = 0; extern unsigned char logo[]; extern unsigned char logoR[];

void OLED_display(void) { switch(encoderEvent[1]) { case BM_down: //逆时针旋转,向下 nowIndex = Key_table[nowIndex].down_index; break; case BM_up: //顺时针旋转,向上 nowIndex = Key_table[nowIndex].up_index; break; case KEY_DOWN://短按 确定进入 nowIndex = Key_table[nowIndex].enter_index; break; case KEY_LONG://长按 返回主界面 nowIndex = Key_table[nowIndex].esc_index; break; } printf("%d,index:%d\n", encoderEvent[1], nowIndex); OLED_Clear();//清空屏幕 Key_table[nowIndex].operate(); OLED_Refresh_Gram();//刷新显存 }

void mainWindow(void) { OLED_Fill(0,0,127,63,0);//清空 OLED_ShowString(35,2,(uint8_t *)"J-20",24,1);//主界面 OLED_ShowString(20,35,(uint8_t *)"RADIO CONTROL",12,1);//主界面 }

void menu1(void)//菜单列表 { OLED_ShowString(2,0, (uint8_t *)"menu1 ",16);//以空格填充,不要用Tab填充,反白显示 OLED_ShowString(2,16,(uint8_t *)"menu2 ",16);//正常显示 OLED_ShowString(2,32,(uint8_t *)"menu3 ",16); OLED_ShowString(2,48,(uint8_t *)"exit ",16); }

void menu2(void)//菜单列表 { OLED_ShowString(2,0, (u8 *)"menu1 ",16,1); OLED_ShowString(2,16,(u8 *)"menu2 ",16,0); OLED_ShowString(2,32,(u8 *)"menu3 ",16,1); OLED_ShowString(2,48,(u8 *)"exit ",16,1); }

void menu3(void)//菜单列表 { OLED_ShowString(2,0, (u8 *)"menu1 ",16,1); OLED_ShowString(2,16,(u8 *)"menu2 ",16,1); OLED_ShowString(2,32,(u8 *)"menu3 ",16,0); OLED_ShowString(2,48,(u8 *)"exit ",16,1); }

void menu4(void)//菜单列表-退出 { OLED_ShowString(2,0, (u8 *)"menu1 ",16,1); OLED_ShowString(2,16,(u8 *)"menu2 ",16,1); OLED_ShowString(2,32,(u8 *)"menu3 ",16,1); OLED_ShowString(2,48,(u8 *)"exit ",16,0); }

//=======================子菜单1========================== void subMenu1_1(void)//子菜单列表 { OLED_ShowString(2,0, (u8 *)"subMenu1_1 ",16,0); OLED_ShowString(2,16,(u8 *)"subMenu1_2 ",16,1); OLED_ShowString(2,32,(u8 *)"subMenu1_3 ",16,1); OLED_ShowString(2,48,(u8 *)"exit ",16,1); }

void subMenu1_2(void)//子菜单列表 { OLED_ShowString(2,0, (u8 *)"subMenu1_1 ",16,1); OLED_ShowString(2,16,(u8 *)"subMenu1_2 ",16,0); OLED_ShowString(2,32,(u8 *)"subMenu1_3 ",16,1); OLED_ShowString(2,48,(u8 *)"exit ",16,1); }

voi

把以下代码转为可以在IAR Embedded Workbench上运行的格式:#include oledh	 #include menuh#include gpioh#include usarthhttpsblogcsdnnetembedded_guziarticledetails35835755httpsblogcsdnnetcalmusearticledetails79346742Key_in

原文地址: https://www.cveoy.top/t/topic/iJ1I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录