最新12864LCD菜单程序Word文档格式.docx

上传人:b****6 文档编号:21056735 上传时间:2023-01-27 格式:DOCX 页数:10 大小:18.18KB
下载 相关 举报
最新12864LCD菜单程序Word文档格式.docx_第1页
第1页 / 共10页
最新12864LCD菜单程序Word文档格式.docx_第2页
第2页 / 共10页
最新12864LCD菜单程序Word文档格式.docx_第3页
第3页 / 共10页
最新12864LCD菜单程序Word文档格式.docx_第4页
第4页 / 共10页
最新12864LCD菜单程序Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

最新12864LCD菜单程序Word文档格式.docx

《最新12864LCD菜单程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《最新12864LCD菜单程序Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

最新12864LCD菜单程序Word文档格式.docx

unsignedcharEnterIndex;

//选项进入索引号

unsignedcharCancelIndex;

//选项退出索引号

unsignedcharKeyWord[16];

//菜单选项文字描述数组

unsignedcharWordMete;

//菜单选项描述文字字节数

};

具体菜单选项定义,定义一个结构数组

存储在编码区,节省内存RAM

structOptioncodesOption[OPTIONMETE]={

{0,9,0,"

文本功能"

8}, 

//0

{0,16,1,"

时间功能"

//1

{0,19,2,"

温度功能"

//2

{0,OPTIONMETE-1,3,"

系统检测"

//3

{0,OPTIONMETE-1,4,"

修改密码"

//4

{0,OPTIONMETE-1,5,"

帮助说明"

//5

{0,OPTIONMETE-1,6,"

作者介绍"

//6

{0,OPTIONMETE-1,7,"

系统版本"

//7

{0,OPTIONMETE-1,8,"

退出系统"

//8

{1,OPTIONMETE-1,0,"

输入显示向导"

12}, 

//9

新建显示文本"

//10

文本发送显示"

//11

删除已存文本"

//12

{1,14,0,"

输入法设定"

10}, 

//13

{2,OPTIONMETE-1,13,"

输入法选择"

//14

输入法排序"

//15

{3,OPTIONMETE-1,1,"

设定本机时间"

//16

发送本机时间"

//17

与计算机同步时间"

16}, 

//18

{4,23,2,"

显示当前温度"

//19

{4,OPTIONMETE-1,2,"

存储当前温度"

//20

显示已存温度"

//21

删除已存温度"

//22

{5,25,18,"

本机显示"

//23

{5,OPTIONMETE-1,19,"

子机显示"

//24

{6,OPTIONMETE-1,23,"

LED显示"

//25

数码管显示"

//26

同时显示"

//27

{0,0,0,"

"

0} 

//28

//--------------------------------------

菜单表分类数组

unsignedcharcodeLevel[MENULEVEL][3]={

{0,8,9}, 

//每层表单对应开始结束索引号以及选项数目

{9,13,5},

{14,15,2},

{16,18,3},

{19,22,4},

{23,24,2},

{25,27,3}

unsignedcharFirstLineDisIndex=0;

//屏幕第一行显示的索引号

unsignedcharSelectLine=1;

//当前选择的行

unsignedcharSelectIndex=0;

//当前选定行对应的索引号

unsignedcharLastIndex=0;

//进入功能函数前的索引号,判断具体功能使用

刷新菜单功能函数

函数原形:

voidDIS12864M(void);

没有参数,没有返回值

调用方式:

voidDIS12864M(void)

{

unsignedchari,LineMete=Level[sOption[SelectIndex].KeyLevel][2];

//循环量,显示行数

SentAIns(0x30);

//进入液晶普通指令模式

SentAIns(0x01);

//清屏

SetALineReverse(SelectLine);

//填充所需反白

do 

//分别显示各行菜单项

SentAIns(0x80);

for(i=0;

i<

sOption[FirstLineDisIndex].WordMete;

i++)

SentAData(sOption[FirstLineDisIndex].KeyWord[i]);

if(--LineMete==0) 

break;

SentAIns(0x90);

sOption[FirstLineDisIndex+1].WordMete;

SentAData(sOption[FirstLineDisIndex+1].KeyWord[i]);

SentAIns(0x88);

sOption[FirstLineDisIndex+2].WordMete;

SentAData(sOption[FirstLineDisIndex+2].KeyWord[i]);

SentAIns(0x98);

sOption[FirstLineDisIndex+3].WordMete;

SentAData(sOption[FirstLineDisIndex+3].KeyWord[i]);

}while(0);

}

判断当前索引是否是表单第一项功能函数

bitMenuLevelStart(void);

没有参数,返回Bit标志,是第一项返回1,不是返回0

bitMenuLevelStart(void) 

//判断当前索引是否为当前层第一个选项

unsignedchari=MENULEVEL;

do

i--;

if(SelectIndex==Level[i][0]) 

return1;

}while(i);

return0;

判断当前索引是否是表单最后一项功能函数

bitMenuLevelEnd(void);

没有参数,返回Bit标志,是最后一项返回1,不是返回0

bitMenuLevelEnd(void)

if(SelectIndex==Level[i][1]) 

菜单上移一项函数

voidMenuUpOneOption(void);

voidMenuUpOneOption(void)

if(MenuLevelStart()) 

//如果当前为表单第一项

if(Level[sOption[SelectIndex].KeyLevel][2]>

=4) 

//并且表单中选项数目大于等于4个

FirstLineDisIndex=Level[sOption[SelectIndex].KeyLevel][1]-3;

//第一行显示索引号为倒数第四项

SelectIndex=Level[sOption[SelectIndex].KeyLevel][1];

//选择索引为表单最后一项

SelectLine=4;

//标记选择行为第四行

DIS12864M();

//刷新屏幕显示

else 

//如果选项数目并不大于四个

//选择索引为当前表单最后一个

SelectLine=Level[sOption[SelectIndex].KeyLevel][2];

//显示行表单数目(最后一个)

//如果当前不是开始索引

if(SelectLine==1) 

//并且已经在屏幕最上边一行

FirstLineDisIndex--;

//显示索引上移

SelectIndex--;

//选择索引自减

SelectLine=1;

//选择行还是第一行

//刷新屏幕

//如果不是第一行

SelectLine--;

//选择行自减

菜单下移一项函数

voidMenuDownOneOption(void);

voidMenuDownOneOption(void)

if(MenuLevelEnd()) 

//如果当前是表单最后一个索引

FirstLineDisIndex=Level[sOption[SelectIndex].KeyLevel][0];

//第一行显示索引为表单第一个选项

SelectIndex=Level[sOption[SelectIndex].KeyLevel][0];

//选择索引为表单第一个选项索引

//选择行为第一行

//刷新显示

//如果不是最后的索引

if(SelectLine!

//如果当前不是屏幕最底行

SelectIndex++;

//选择索引自加

SelectLine++;

//选择行下移

//刷新选择行

//如果是屏幕最低行

FirstLineDisIndex++;

//第一行显示下移

DIS12864M();

某一项功能函数 

实际应该改为实际功能函数

voidShutDown(void)

unsignedcharcodefont[]={"

系统关闭"

unsignedchari;

SentAIns(0x92);

8;

i++)SentAData(font[i]);

voidMenuCancelOption(void);

voidNoThisFunction(void)

unsignedcharcodeFont[]={"

没有这个功能"

unsignedinti,j;

SentAIns(0x91);

12;

i++)SentAData(Font[i]);

i=65535;

j=10;

j--;

}while(j);

MenuCancelOption();

voidTemperatureShow(void)

测试温度:

TempConvert();

10;

i++) 

SentAData(Font[i]);

6;

i++) 

SentAData(TempFont[i]);

具体功能散转函数

voidFunctionAction

voidFunctionAction(void);

voidFunctionAction(void)

switch(LastIndex) 

//根据进入前的索引判断具体函数

case8:

ShutDown();

case5:

TemperatureShow();

default:

NoThisFunction();

//如果没有具体操作,显示没有这个功能

进入某项功能函数

voidMenuEnterOption(void);

voidMenuEnterOption(void)

LastIndex=SelectIndex;

//标记进入前的索引号(以便判断具体功能)

SelectIndex=sOption[SelectIndex].EnterIndex;

//更新选择索引为之前索引号对应进入索引

if(SelectIndex!

=OPTIONMETE-1) 

//如果当前索引不是功能选择索引

//第一行显示为进入表单第一项

//设定第一行为选择行

//刷新菜单

FunctionAction();

//如果是功能选择项,进入功能分支判断函数

菜单退出功能函数

voidMenuCancelOption(void);

voidMenuCancelOption(void)

//如果不是从功能返回

SelectIndex=sOption[SelectIndex].CancelIndex;

//选择索引为选项返回索引

//如果是从功能返回

SelectIndex=LastIndex;

//索引等于进入前保存索引

//如果返回表单选项数目大于4个

if(SelectIndex>

Level[sOption[SelectIndex].KeyLevel][1]-3) 

//根据返回选项确定显示首项

SelectLine=4-(Level[sOption[SelectIndex].KeyLevel][1]-SelectIndex);

//一般显示方式

FirstLineDisIndex=SelectIndex;

//第一行显示索引

//选择第一行

//如果返回表单选项数目不足4个

//第一行显示索引为表单第一项

SelectLine=SelectIndex-Level[sOption[SelectIndex].KeyLevel][0]+1;

//选择行标志为当前选择索引对应行

菜单操作按键处理散转函数

voidKeyCodeAction(unsignedcharKeyCode);

键码作为参数,没有返回值

实际使用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1