您的位置 首页 国产IC

单片机C语言下LCD多级菜单的一种完成办法

0引言由于C语言的结构性和模块化,采用C语言编写的程序容易阅读和维护,还有很好的可移植性。本文介绍一种用C语言实现的LCD多

0  导言

因为C 言语的结构性和模块化,选用C 言语编写的程序简略阅览和保护,还有很好的可移植性。本文介绍一种用C 言语完成的LCD 多级菜单的办法,该办法已成功应用在煤矿安全监测设备上。

1  硬件环境及LCD 菜单完成的功用
图形点阵式液晶可显现用户自界说的恣意符号和图形,并可卷动显现。它作为单片机体系人机交互界面的重要组成部分被广泛应用于实时检测和显现的仪器仪表中,例如手机上的显现屏便是图形点阵液晶。

选用图形点阵式液晶显现较之其它显现方法首要有以下长处:

(1) 作业电压低、功耗极低。作业电压仅为3~5 V ,作业电流≤10 μA/ cm2 ,特别适用于低功耗的仪器仪表中。
(2) 液晶显现属被迫显现,受外界光线搅扰小。
(3) 图形点阵式液晶可显现的信息量大、分辨率高。
(4) 不产生电磁搅扰
(5) 牢靠性高,运用寿命长。

本文所介绍的LCD 选用128 ×64 点阵的液晶屏,因此可显现16 ×16 点阵的汉字4 行8 列。菜单为多级嵌套方法,最长的有13 层,首要完成对某个测点各方面的设置或查询,可通过“向上”、“向下”、“回退”、“承认”4 个键或遥控器来完成对菜单的挑选。详细功用:“向上”键:在本层菜单的项目中向上移动进行
挑选;“向下”键:在本层菜单的项目中向下移动进行挑选;“回退”键:撤销本层的菜单设置,回来上层菜
单;“承认”键:承认本层的菜单设置,进入下级菜单。可依据用户在菜单中的挑选项对测点进行某些设置,或许进行某些特别的显现,例如对某个测点的实时曲线显现等。

2  程序设计
依据需求,首要树立一个结构,并界说一个结构变量KbdTabSt ruct 。结构变量便是把多个不同类型的变量结合在一起构成的一个组合型变量,构成一个结构的各个变量称为结构元素。该结构中共有6 个结构元素,分别是5 个字符型和1 个指针变量,5 个字符型变量分别为当时及各个按键的索引号,也便是操作的状况号,最终1 个指针变量指向需履行函数。这样就可以做一个结构数组,在结构数组里为每一个菜单项编制一个独自的函数,并依据菜单的嵌套次序排好本菜单项的索引号,以及本级菜单项的上、下卷动的索引号和上、下级菜单的索号。
详细程序如下所述:
typedef st ruct
{
 uchar  KeyStateIndex ;   / / 当时状况索引号
 uchar  KeyDnState ;   / / 按下“向下”键时转向的状况索引号
 uchar  KeyUpState ;   / / 按下“向上”键时转向的状况索引号
 uchar  KeyCrState ;   / / 按下“回车”键时转向的状况索引号
 uchar  KeyBackState ;   / / 按下“退回”键时转向的状况索引号
 void  ( 3 CurrentOperate) ( ) ;   / / 当时状况应该履行的
功用操作
}  KbdTabSt ruct ;
# define SIZE – OF KEYBD – MENU 55   / / 菜单总长度
KbdTabSt ruct code KeyTab[ SIZE – OF – KEYBD – MENU ] =
{
 {0 ,0 ,0 ,1 ,0 , ( 3 MainJob1) } ,
 {1 ,7 ,2 ,8 ,0 , ( 3 Dsp Point) } ,   / / 第一层
 {2 ,1 ,3 ,8 ,0 , ( 3 DspCurve) ) ,   / / 第一层
 {3 ,2 ,4 ,36 ,0 , ( 3 Dsp Kout) } ,   / / 第一层
 {4 ,3 ,5 ,50 ,0 , ( 3 DisCloseDown) } ,   / / 第一层

 {5 ,4 ,6 ,8 ,0 , ( 3 ModifyPoint) } ,   / / 第一层
 {6 ,5 ,7 ,52 ,0 , ( 3 SetCloseDown) } ,   / / 第一层
 {7 ,6 ,1 ,0 ,0 , ( 3 Cancel) } ,   / / 第一层
 …
 …
 {52 ,53 ,53 ,0 ,1 , ( 3 OkSetCloseDown1) } ,
 {53 ,52 ,52 ,0 ,1 , ( 3 OkSetCloseDown2) } ,
 {54 ,0 ,0 ,0 ,0 , ( 3 Disable) } ,
} ;
 void Get Keylnput (void)
{
 switch ( status &0xf0)
  {
  case 0xe0 :/ / 回车键,找出新的菜单状况编号
   …
KeyFuncIndex = KeyTab[ KeyFuncIndex ] . KeyCrState ;
   …
   break ;
  case 0xb0 :/ / 向下键,找出新的菜单状况编号
   …
    KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyDn2
State ;
   …
  break ;
case 0xd0 :/ / 向上键,找出新的菜单状况编号
   …
    KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyUp2
State ;
   …
   break ;
  case 0x70 :/ / 回退键,找出新的菜单状况编号
   …
    KeyFuncIndex = KeyTab [ KeyFuncIndex ] . KeyBack2
State ;
   …
   break ;
  case 0 ;
    ret urn ;   / / 过错的处理
    break ;
   }
  KeyFuncPt r = KeyTab[ KeyFuncIndex ] . CurrentOperate ;
  ( 3 KeyFuncPt r) () ;   / / 履行当时按键的操作
}
3  结语
本文介绍了C 言语编程的特色,简略介绍了LCD 作为人机界面的特征,并介绍了一种用C 言语完成的LCD 多级嵌套菜单结构。该结构紧凑、功能安稳牢靠,已屡次运用在安全监测设备中。

  体系要运转牢靠,对其有关设备是否可以安全运转地检测也是很重要的一环。因此程序对体系所触及的设备都进行了全面监测,首要有电动球阀毛病、出水口电动闸阀毛病、水位传感器毛病、水泵启停时刻、运转电流、电动机温度、电动机和水泵轴承温度、出水压力、高压柜状况、高压柜毛病、阀门毛病等,并视状况进行事端主动处理或报警要求检修。本体系中各个机组有3 种运转挑选:主动、半主动和手动。通常状况下依照水位凹凸和体系时刻主动挑选是否开泵,一起调查水位改变率然后挑选需求开几台泵。在半主动方法下,一旦该泵的开泵信号被监测到,体系将主动依据当时状况用射流方法或许真空泵方法来抽真空,当真空度到达要求后发动电动机, 一起观测出水口处的压力, 当其大于5 MPa时翻开出水口处的电动闸阀施行正常排水。为了完善体系,避免意外状况的产生,一起为了便于检修,还保留了手动方法,该方法在正常运转状况下是不运用的。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/259556.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部