最新12864LCD菜单程序Word文档格式.docx
- 文档编号:21056735
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:10
- 大小:18.18KB
最新12864LCD菜单程序Word文档格式.docx
《最新12864LCD菜单程序Word文档格式.docx》由会员分享,可在线阅读,更多相关《最新12864LCD菜单程序Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
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);
键码作为参数,没有返回值
实际使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 12864 LCD 菜单 程序