应用代码(2)——(UC1701液晶显示屏)菜单界面模板
最近开始接触工控领域了。以前没有接触过显示屏跳转的代码,自己精简整理了一下了,可以作为一个菜单界面的显示模板使用。
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液晶显示屏)菜单界面模板相关推荐
- php简单网页制作代码,用HTML和CSS以及JS制作简单的网页菜单界面的代码
这篇文章主要介绍了使用HTML+CSS+JS制作简单的网页菜单界面,这个ABROAD项目所使用的JavaScript部分代码非常简单,需要的朋友可以参考下 写ABROAD项目用到了标签这个东东,其实标 ...
- 微信公众平台开发(二)——自定义菜单、模板消息微信素材
目录 获取AccessToken 1. 新建一个AccessToken对象 2. 新建一个TokenUtil工具类 自定义菜单 自定义菜单功能介绍 代码实现如下 效果如下 发送模板消息 1. 设置⾏业 ...
- 处理2D图像和纹理——创建2D菜单界面
问题 你想创建一个2D菜单界面,让你可以容易地添加新的菜单和指定它们的菜单选项.这个菜单允许用户使用控制器/键盘切换不同的选项和菜单,当用户从一个菜单切换到另一个菜单时还可以定义漂亮的过渡效果. 解决 ...
- 巧妙布局的APP界面模板,让你的作品更有吸引力
APP界面布局设计是APP设计中非常重要的一环,合理的运用APP界面布局会让APP的界面显得很清晰美观. 巧妙布局的APP界面模板,让你的作品更有吸引力 常见的APP界面布局有哪些呢? 1 ①顶部导航 ...
- HTML5响应式手机模板:电商网站设计——仿淘宝手机app界面模板源码 HTML+CSS+JavaScript...
HTML5响应式手机模板:电商网站设计--仿淘宝手机app界面模板源码 HTML+CSS+JavaScript 手机电商模板 手机网站模板 企业手机网站模板 手机网站模板 手机模板 响应式手机网站 h ...
- MFC多视频播放界面模板--(二)搭建视频播放界面空壳程序
继这上一篇静态文本画框的内容,将此功能加载进来,用于区分开窗口界面,这篇主要是编写出空壳框架,可以切换画面1.2.4.9以及全屏状态,加选中状态框. 一.界面布局 创建两个对话框,ID分别为 IDD_ ...
- 仿美团外卖菜单界面的实现
仿美团外卖菜单界面的实现 布局文件 总布局 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- python漂亮gui界面模板下载_Python GUI教程(十六):在PyQt5中美化和装扮图形界面...
在默认情况下,我们使用PyQt5创建出来的窗口和部件都是默认的样式,虽然谈不上很丑,但是也毫无美感可言.其实,在PyQt5中,我们可以有较高的自由度来自定义窗口和各种小部件的样式,通过自定义这些样式, ...
- 推荐优美的Pyqt/Pyside界面模板
pyqt5/pyside2/pyside5 声明:本文中所使用的图片均来自于网络,如有侵权,请联系博主进行删除: 序言:之前打比赛做项目总会用到 python+qt 做一些客户端界面用来展示.每次都苦 ...
最新文章
- linux @webserviceclient 访问超时_Linux系统调优
- C语言用户标准是什么,C语言系统用户标准管理系统.doc
- Bitwise Exclusive-OR Sequence 异或,dfs,菊花图(2021.11.沈阳)
- aws 服务器之间文件转发,aws bucket之间相互拷贝数据
- SpringCloud创建Eureka模块集群
- ASP.NET MVC3 系列教程 – Web Pages 1.0
- Chrome浏览器安装vue-devtools插件
- 3717 bLue的文件查找器
- monthcalendar_Python日历模块| 带有示例的monthcalendar()方法
- hexo博客之yilia主题的个性化设置
- 如何从CentOS官网下载我们想要的版本
- 几个学习软件测试的网站
- 典型的单管共射极放大电路
- android判断app前后台状态
- JMeter,LoadRunner,软件压力测试?
- Python对带光晕的任意纯色背景图像进行去背景色操作(保留透明效果、附源码)
- Virt-manager退出全屏
- What is Scala
- 史上最全的一句话木马
- matlab数值积分的计算
热门文章
- 数据体系和专题分析实战
- 用PHP实现虎牙压豆稳赚不赔的方法
- 海尔IDOL5怎么样,海尔JSQ30-16IDOL5-PU1和JSQ25-13IDOL5的区别
- 使用C#更改打印机驱动打印属性设置
- Supervisor 为服务创建守护进程
- ae制h5文字动画_H5案例分享:CSS3 Animation动画
- 屏中贵族!LED贴膜屏引市场关注 引领市场新潮
- python-如何正确显示中文(日文)以及负号
- Python 四五事
- python西塔怎么打出来_word里角度如“西塔”,“贝塔”的符号肿么打出来