最近开始接触工控领域了。以前没有接触过显示屏跳转的代码,自己精简整理了一下了,可以作为一个菜单界面的显示模板使用。

1)模板介绍

^1 硬件:

[1]6个按键:向上按键、向下按键、确认按键、返回按键、+键、-键
[2]显示屏UC1701

^2 大致功能(以确认键为例):

按返回键------进入主菜单界面
主菜单界面有4条命令行

确认键按下-----提示输入密码


密码正确后按下确认键----进入基本设置的子界面

再按确认—进入终端界面

点击确认—保存数据

2) 代码解析:

[1] 列表结构体及初始化,初始化涵盖了所有主表子表的内容,
通过按键功能来进入不同的索引号,从而可以跳转置不同的界面

struct ListOption{uint8_t ListNum;           //菜单选项所属菜单表号uint8_t EnterIndex;        //选项进入索引号uint8_t CancelIndex;       //选项退出索引号uint8_t Word[17];          //菜单选项文字描述数组uint8_t WordNum;           //菜单选项描述文字个数
};
struct ListOption  sListOption[OPTIONMETE_t] = {/* 表号,进入索引号  返回所应号  文字  文字数量*/{0, 4,18,"基本设置        ",4},             //0   ListHeadIndex = 0{0,16,18,"反馈设置        ",4},             //1{0, 8,18,"高级设置        ",4},             //2{0,60,18,"故障诊断        ",4},             //3{1,OPTIONMETE_t-1,0,"                ",0},    //4  ListHeadIndex = 4 {1,OPTIONMETE_t-1,0,"  请输入基本密码",7},    //5{1,OPTIONMETE_t-1,0,"                ",0},    //6{1,OPTIONMETE_t-1,0,"                ",0},    //7{2,OPTIONMETE_t-1,0,"高级一          ",3},    //8 ListHeadIndex = 8 {2,OPTIONMETE_t-1,0,"高级二          ",3},    //9{2,OPTIONMETE_t-1,0,"高级三          ",3},    //10{2,OPTIONMETE_t-1,0,"高级四          ",3},    //11{2,OPTIONMETE_t-1,0,"高级五          ",3},    //12{3,16,            0,"基本一          ",3},    //13{3,OPTIONMETE_t-1,0,"基本二          ",3},    //14{3,OPTIONMETE_t-1,0,"基本三          ",3},    //15       {4,OPTIONMETE_t-1,13,"基本一一        ",4},    //16      {4,OPTIONMETE_t-1,13,"基本一二        ",4},    //17
};

[2]统计各表单的起始、结束地址和该表单总共有多少行数据

    #define MENU_LEVEL  5   //当前菜单表个数// 菜单表分类数组uint8_t  Level_t[MENU_LEVEL][3] = {// 开始索引号  结束索引号   选项数目{0,3,4},           {4,7,4},   {8,12,5}, {13,15,3}, {16,17,2}, };

[3]通过不同按键响应不同功能

void KeyAction(uint8_t Keycode)
{switch(Keycode){case Return_value:     //返回******User_MenuCancelOption(); ******case Up_value:       //向上按键User_MenuUpOneOption();break;case Down_value:    //向下按键User_MenuDownOneOption();break;case Enter_value:     //确认按键      User_MenuEnterOption();break;case Add_value:       //+键 User_MenuAddOption();break;case Subtract_value:  //-键User_MenuSubtractOption();   break;     default:     break;}
}

[4]响应完对应功能后需要刷新屏幕,让屏幕更新显示
这里说明下代码里分了两种更新:
(1)菜单页面更新,也ListOption结构体中,当前命令值NowSelectIndex 的EnterIndex参数 != (OPTIONMETE_t-1)的更新
(2)终端更新(无子目录的更新),就是NowSelectIndex 的EnterIndex参数 == (OPTIONMETE_t-1)的更新

/** breif:菜单刷新界面显示* */
void user_dis_list(void)
{  uint8_t NowList_Line_Num = 0;uint8_t i = 0;uint8_t temp_num[11];if(ListHeadIndex > OPTIONMETE_t)//每个表单的第一个头索引号{return ;}//清屏幕clear_screen();//当前表单的项目数NowList_Line_Num = Level_t[sListOption[ListHeadIndex].ListNum][2];//step1:显示菜单界面/以及反选(当前选择的行)while(( i < NowList_Line_Num)&&(i < 4)){if(NowSelectLine == 1+i){//显示选中的行display_row_16x16(1+i, 1, sListOption[ListHeadIndex+i].WordNum, sListOption[ListHeadIndex+i].Word);}else{display_row_16x16(1+i, 1, 0, sListOption[ListHeadIndex+i].Word); }i++;}//step2:菜单界面中,后半段显示界面//0~4 ,8 if((NowSelectIndex >= 0 && NowSelectIndex < 4)||(NowSelectIndex == 13)){display_row_16x16(NowSelectLine,6,0,"进入?");}else if((NowSelectIndex >= 4)&&(NowSelectIndex <= 7)){  }else if(NowSelectIndex == 9){}else if(NowSelectIndex == 10){ }....
}
/** breif:处理终端函数的要处理的事件**/
static void User_FunctionAction(void)
{ switch (LastSelectIndex)      //根据进入前的索引判断具体函数{ case 4:   display_row_16x16(4,1,0,"    密码错误    "); Delay_ms(200); break;  case 5:   display_row_16x16(4,1,0,"    密码错误    "); Delay_ms(200); break;case 6:   display_row_16x16(4,1,0,"    密码错误    "); Delay_ms(200); break;case 7:   display_row_16x16(4,1,0,"    密码错误    "); Delay_ms(200); break;case 16:  display_row_16x16(NowSelectLine,5,0,"  已存  "); Delay_ms(200);display_row_16x16(NowSelectLine,5,0,"        "); Delay_ms(200);display_row_16x16(NowSelectLine,5,0,"  已存  ");break;default:break;}if( NowSelectIndex == OPTIONMETE_t-1){NowSelectIndex = LastSelectIndex;    //显示按下确定键之前的画面  }user_dis_list();
}

驱动代码已上传

应用代码(2)——(UC1701液晶显示屏)菜单界面模板相关推荐

  1. php简单网页制作代码,用HTML和CSS以及JS制作简单的网页菜单界面的代码

    这篇文章主要介绍了使用HTML+CSS+JS制作简单的网页菜单界面,这个ABROAD项目所使用的JavaScript部分代码非常简单,需要的朋友可以参考下 写ABROAD项目用到了标签这个东东,其实标 ...

  2. 微信公众平台开发(二)——自定义菜单、模板消息微信素材

    目录 获取AccessToken 1. 新建一个AccessToken对象 2. 新建一个TokenUtil工具类 自定义菜单 自定义菜单功能介绍 代码实现如下 效果如下 发送模板消息 1. 设置⾏业 ...

  3. 处理2D图像和纹理——创建2D菜单界面

    问题 你想创建一个2D菜单界面,让你可以容易地添加新的菜单和指定它们的菜单选项.这个菜单允许用户使用控制器/键盘切换不同的选项和菜单,当用户从一个菜单切换到另一个菜单时还可以定义漂亮的过渡效果. 解决 ...

  4. 巧妙布局的APP界面模板,让你的作品更有吸引力

    APP界面布局设计是APP设计中非常重要的一环,合理的运用APP界面布局会让APP的界面显得很清晰美观. 巧妙布局的APP界面模板,让你的作品更有吸引力 常见的APP界面布局有哪些呢? 1 ①顶部导航 ...

  5. HTML5响应式手机模板:电商网站设计——仿淘宝手机app界面模板源码 HTML+CSS+JavaScript...

    HTML5响应式手机模板:电商网站设计--仿淘宝手机app界面模板源码 HTML+CSS+JavaScript 手机电商模板 手机网站模板 企业手机网站模板 手机网站模板 手机模板 响应式手机网站 h ...

  6. MFC多视频播放界面模板--(二)搭建视频播放界面空壳程序

    继这上一篇静态文本画框的内容,将此功能加载进来,用于区分开窗口界面,这篇主要是编写出空壳框架,可以切换画面1.2.4.9以及全屏状态,加选中状态框. 一.界面布局 创建两个对话框,ID分别为 IDD_ ...

  7. 仿美团外卖菜单界面的实现

    仿美团外卖菜单界面的实现 布局文件 总布局 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  8. python漂亮gui界面模板下载_Python GUI教程(十六):在PyQt5中美化和装扮图形界面...

    在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式, ...

  9. 推荐优美的Pyqt/Pyside界面模板

    pyqt5/pyside2/pyside5 声明:本文中所使用的图片均来自于网络,如有侵权,请联系博主进行删除: 序言:之前打比赛做项目总会用到 python+qt 做一些客户端界面用来展示.每次都苦 ...

最新文章

  1. linux @webserviceclient 访问超时_Linux系统调优
  2. C语言用户标准是什么,C语言系统用户标准管理系统.doc
  3. Bitwise Exclusive-OR Sequence 异或,dfs,菊花图(2021.11.沈阳)
  4. aws 服务器之间文件转发,aws bucket之间相互拷贝数据
  5. SpringCloud创建Eureka模块集群
  6. ASP.NET MVC3 系列教程 – Web Pages 1.0
  7. Chrome浏览器安装vue-devtools插件
  8. 3717 bLue的文件查找器
  9. monthcalendar_Python日历模块| 带有示例的monthcalendar()方法
  10. hexo博客之yilia主题的个性化设置
  11. 如何从CentOS官网下载我们想要的版本
  12. 几个学习软件测试的网站
  13. 典型的单管共射极放大电路
  14. android判断app前后台状态
  15. JMeter,LoadRunner,软件压力测试?
  16. Python对带光晕的任意纯色背景图像进行去背景色操作(保留透明效果、附源码)
  17. Virt-manager退出全屏
  18. What is Scala
  19. 史上最全的一句话木马
  20. matlab数值积分的计算

热门文章

  1. 数据体系和专题分析实战
  2. 用PHP实现虎牙压豆稳赚不赔的方法
  3. 海尔IDOL5怎么样,海尔JSQ30-16IDOL5-PU1和JSQ25-13IDOL5的区别
  4. 使用C#更改打印机驱动打印属性设置
  5. Supervisor 为服务创建守护进程
  6. ae制h5文字动画_H5案例分享:CSS3 Animation动画
  7. 屏中贵族!LED贴膜屏引市场关注 引领市场新潮
  8. python-如何正确显示中文(日文)以及负号
  9. Python 四五事
  10. python西塔怎么打出来_word里角度如“西塔”,“贝塔”的符号肿么打出来