0 前言
由于C语言的结构性和模块化性,用C语言编写的程序易于阅读和维护,并且具有良好的可移植性。 本文介绍一种用C语言实现LCD多级菜单的方法。 该方法已成功应用于煤矿安全监测设备。
1 硬件环境及LCD菜单实现的功能
图形点阵液晶屏可以显示任意用户定义的符号和图形,并且可以滚动。 作为单片机系统人机交互界面的重要组成部分,广泛应用于实时检测和显示仪器中。 例如,手机上的显示屏是图形点阵液晶。
与其他显示方式相比,采用图形点阵液晶显示器有以下主要优点:
(1)工作电压低,功耗极低。 工作电压仅为3~5V,工作电流≤10μA/cm2。 特别适用于低功耗仪器。
(2)液晶显示器属于被动式显示器,受外界光干扰影响较小。
(3)图形点阵液晶显示器可显示信息量大、分辨率高。
(4)不产生电磁干扰。
(5)可靠性高,使用寿命长。
本文介绍的液晶显示器采用128×64点阵液晶屏,因此可以显示4行8列16×16点阵汉字。 菜单采用多级嵌套的形式。 最长的有13层。 主要完成某个测点各方面的设置或查询。 可以通过“上”、“下”、“后退”、“确认”四个按钮进行访问。 键或遥控器选择菜单。具体功能: “上”键:在本层菜单项中向上移动。
选择; “下”键:向下移动选择当前菜单项; “返回”键:取消本层菜单设置,返回上层菜单
点击; “确认”键:确认本层菜单设置并进入下级菜单。 可以根据用户在菜单中的选择对测点进行一定的设置,也可以进行一些特殊的显示,如某个测点的实时曲线显示。
本文参考地址:
2 编程
根据需求,首先创建一个结构体,定义一个结构体变量ruct。 结构变量是由多个不同类型的变量组合而成的组合变量。 形成结构的每个变量称为结构元素。 该结构体共有6个结构元素,分别是5个字符变量和1个指针变量。 5个字符变量是当前和每个键的索引号,即操作的状态号。 最后一个指针变量指向所需的执行函数。 这样就可以制作一个结构体数组,为结构体数组中的每个菜单项编译一个单独的函数,并根据菜单的嵌套顺序以及上下滚动来排列这个菜单项的索引号此级别的菜单项。 上下菜单的索引号和调用号。
具体流程如下:
结构体
乌查尔; //当前状态索引号
乌查尔; // 当按下“Down”键时要转到的状态索引号
乌查尔; // 按“向上”键时要转到的状态索引号
乌查尔; // 当按下“Enter”键时要转到的状态索引号
乌查尔; // 按下“后退”键时要转到的状态索引号
无效 (3) (); // 当前状态应该被执行
功能操作
} 规则;
# SIZE - OF KEYBD - MENU 55 // 菜单总长度
ruct 代码 [ SIZE - OF - KEYBD - MENU ] =
{0,0,0,1,0,(3)},
{1 ,7 ,2 ,8 ,0 , ( 3 Dsp Point) } , // 第一层
{2 ,1 ,3 ,8 ,0 , ( 3 ) ) , // 第一层
{3 ,2 ,4 ,36 ,0 , ( 3 Dsp Kout) } , // 第一层
{4 ,3 ,5 ,50 ,0 , ( 3 ) } , // 第一层
{5 ,4 ,6 ,8 ,0 , ( 3 ) } , // 第一层
{6,5,7,52,0, (3)}, // 第一层
{7 ,6 ,1 ,0 ,0 , ( 3 ) } , // 第一层
……
……
{52,53,53,0,1,(3)},
{53,52,52,0,1,(3)},
{54,0,0,0,0,(3)},
};
无效获取(无效)
(&0xf0)
case 0xe0://回车键查找新菜单状态号
……
= [ ] 。 ;
……
休息 ;
case 0xb0://下键查找新菜单状态号
……
= [ ] 。
状态;
……
休息 ;
case 0xd0://向上箭头查找新菜单状态号
……
= [ ] 。
状态;
……
休息 ;
case 0x70://返回键查找新菜单状态号
……
= [ ] 。
状态;
……
休息 ;
情况0;
返回; // 错误处理
休息 ;
r = [ ] 。 ;
(3r) (); // 执行当前按键操作
3 结论
本文介绍了C语言编程的特点,简要介绍了LCD作为人机界面的特点,介绍了一种用C语言实现的LCD多级嵌套菜单结构。 结构紧凑,性能稳定可靠,多次应用于安全监控设备。
一个系统要可靠运行,检测其相关设备是否能够安全运行也很重要。 因此,方案对系统涉及的设备进行全面监控,主要包括电动球阀故障、出水电动闸阀故障、水位传感器故障、水泵启停时间、运行电流、电机温度、电机及水泵轴承温度、出水压力、高压柜状态、高压柜故障、阀门故障等,并自动处理事故或报警,酌情需要维护。 该系统中的每个单元都有三种操作选项:自动、半自动和手动。 一般情况下,根据水位和系统时间自动选择是否开启水泵,同时观察水位变化率来选择需要开启多少台水泵。 半自动模式下,一旦检测到泵启动信号,系统将根据当前情况自动使用射流或真空泵进行抽真空。 当真空度达到要求时,启动电机,同时观察出水口压力。 当大于5MPa时,打开出口电动闸阀正常排水。 为了完善系统和防止出现意外情况,并方便维护,保留了手动模式,正常运行时不使用。