IAR Embedded Workbench 代码转换:菜单导航系统
#include\x20\x22stdio.h\x22 #include\x20\x22oled.h\x22 #include\x20\x22menu.h\x22 #include\x20\x22gpio.h\x22 #include\x20\x22usart.h\x22
Key_index_struct\x20const\x20Key_table[18]\x20=\x20 {\x20//当前,\x20下,\x20上,\x20确定,\x20home \x20{0,\x200,\x200,\x201,\x200,\x20mainWindow},\x20//一级界面 \x20{1,\x202,\x204,\x205,\x200,\x20menu1},\x20//二级界面第一行 \x20{2,\x203,\x201,\x209,\x200,\x20menu2},\x20//二级界面第二行 \x20{3,\x204,\x202,\x2013,\x200,\x20menu3},\x20//二级界面第三行 \x20{4,\x201,\x203,\x200,\x200,\x20menu4},\x20//退出 \x20{5,\x206,\x208,\x205,\x200,\x20subMenu1_1},\x20//三级界面,menu1选中第1行 \x20{6,\x207,\x205,\x206,\x200,\x20subMenu1_2},\x20//menu1三级界面第2行 \x20{7,\x208,\x206,\x207,\x200,\x20subMenu1_3},\x20//menu1三级界面第3行 \x20{8,\x205,\x207,\x201,\x200,\x20subMenu1_4},\x20//menu1三级界面第4行 \x20{9,\x2010,\x2012,\x209,\x200,\x20subMenu2_1},\x20//menu2三级界面第1行 \x20{10,\x2011,\x209,\x2010,\x200,\x20subMenu2_2},\x20//menu2三级界面第2行 \x20{11,\x2012,\x2010,\x2011,\x200,\x20subMenu2_3},\x20//menu2三级界面第3行 \x20{12,\x209,\x2011,\x202,\x200,\x20subMenu2_4},\x20//menu2三级界面第4行 \x20{13,\x2014,\x2016,\x2013,\x200,\x20subMenu3_1},\x20//menu3三级界面第1行 \x20{14,\x2015,\x2013,\x2014,\x200,\x20subMenu3_2},\x20//menu3三级界面第2行 \x20{15,\x2016,\x2014,\x2015,\x200,\x20subMenu3_3},\x20//menu3三级界面第3行 \x20{16,\x2013,\x2015,\x203,\x200,\x20subMenu3_4},\x20//menu3三级界面第4行 };
uint8_t\x20nowIndex\x20=\x200; extern\x20unsigned\x20char\x20logo[]; extern\x20unsigned\x20char\x20logoR[];
void\x20OLED_display(void) { switch(encoderEvent[1]) \x20{ \x20case\x20BM_down:\x20//逆时针旋转,向下 \x20\x20nowIndex\x20=\x20Key_table[nowIndex].down_index; \x20\x20break; \x20case\x20BM_up:\x20//顺时针旋转,向上 \x20\x20nowIndex\x20=\x20Key_table[nowIndex].up_index; \x20\x20break; \x20case\x20KEY_DOWN://短按\x20确定进入 \x20\x20nowIndex\x20=\x20Key_table[nowIndex].enter_index; \x20\x20break; \x20case\x20KEY_LONG://长按\x20返回主界面 \x20\x20nowIndex\x20=\x20Key_table[nowIndex].esc_index; \x20\x20break; \x20} \x20printf("%d,index:%d\n",encoderEvent[1],nowIndex); \x20OLED_Clear();//清空屏幕 \x20Key_table[nowIndex].operate(); \x20OLED_Refresh_Gram();//刷新显存 }
void\x20mainWindow(void) { \x20OLED_Fill(0,0,127,63,0);//清空 \x20OLED_ShowString(35,2,(uint8_t\x20*)\x22J-20\x22,24,1);//主界面 \x20OLED_ShowString(20,35,(uint8_t\x20*)\x22RADIO\x20CONTROL\x22,12,1);//主界面 }
void\x20menu1(void)//菜单列表 { \x20OLED_ShowString(2,0,\x20(uint8_t\x20*)\x22menu1\x20\x20\x20\x20\x20\x20\x20\x20\x22,16);//以空格填充,不要用Tab填充,反白显示 \x20OLED_ShowString(2,16,(uint8_t\x20*)\x22menu2\x20\x20\x20\x20\x20\x20\x20\x20\x22,16);//正常显示 \x20OLED_ShowString(2,32,(uint8_t\x20*)\x22menu3\x20\x20\x20\x20\x20\x20\x20\x20\x22,16); \x20OLED_ShowString(2,48,(uint8_t\x20*)\x22exit\x20\x20\x20\x20\x20\x20\x20\x20\x22,16); }
void\x20menu2(void)//菜单列表 { \x20OLED_ShowString(2,0,\x20(u8\x20*)\x22menu1\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,16,(u8\x20*)\x22menu2\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,0); \x20OLED_ShowString(2,32,(u8\x20*)\x22menu3\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,48,(u8\x20*)\x22exit\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); }
void\x20menu3(void)//菜单列表 { \x20OLED_ShowString(2,0,\x20(u8\x20*)\x22menu1\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,16,(u8\x20*)\x22menu2\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,32,(u8\x20*)\x22menu3\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,0); \x20OLED_ShowString(2,48,(u8\x20*)\x22exit\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); }
void\x20menu4(void)//菜单列表-退出 { \x20OLED_ShowString(2,0,\x20(u8\x20*)\x22menu1\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,16,(u8\x20*)\x22menu2\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,32,(u8\x20*)\x22menu3\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); \x20OLED_ShowString(2,48,(u8\x20*)\x22exit\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,0); }
//=======================子菜单1========================== void\x20subMenu1_1(void)//子菜单列表 { \x20OLED_ShowString(2,0,\x20(u8\x20*)\x22subMenu1_1\x20\x20\x22,16,0); \x20OLED_ShowString(2,16,(u8\x20*)\x22subMenu1_2\x20\x20\x22,16,1); \x20OLED_ShowString(2,32,(u8\x20*)\x22subMenu1_3\x20\x20\x22,16,1); \x20OLED_ShowString(2,48,(u8\x20*)\x22exit\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); }
void\x20subMenu1_2(void)//子菜单列表 { \x20OLED_ShowString(2,0,\x20(u8\x20*)\x22subMenu1_1\x20\x20\x22,16,1); \x20OLED_ShowString(2,16,(u8\x20*)\x22subMenu1_2\x20\x20\x22,16,0); \x20OLED_ShowString(2,32,(u8\x20*)\x22subMenu1_3\x20\x20\x22,16,1); \x20OLED_ShowString(2,48,(u8\x20*)\x22exit\x20\x20\x20\x20\x20\x20\x20\x20\x22,16,1); }
void
原文地址: https://www.cveoy.top/t/topic/qqij 著作权归作者所有。请勿转载和采集!