#include <SST89x5x4.H>
#include <string.h>
#include "rtx_th.h"
#include "lcd_12232.h"
#define KEY_UP 0XFE
#define KEY_DOWN 0XFD
#define KEY_ADD 0XFB
#define KEY_SUB 0XF7
#define KEY_CR 0XEF
#define KEY_ESC 0XDF
unsigned char xdata ucxKeyValue _at_ 0x10ff; //不影响LCD的工作高字节的低4位为0。
unsigned char xdata ucxDialSwitch _at_ 0x20ff; //
unsigned char xdata ucxBackWard _at_ 0x40ff; //
unsigned char xdata ucxInitializeFlag1 _at_ 0x507e;
unsigned char xdata ucxInitializeFlag2 _at_ 0x507f;
unsigned char xdata ucxPassword[6] _at_ 0x500e+0;
unsigned char xdata ucxPasswordBack[6] _at_ 0x500e+6; //修改密码用
unsigned char xdata ucxTestMode _at_ 0x500e+12;
unsigned char xdata ucxCustomerMode _at_ 0x500e+13;
float xdata fxVentilatedT _at_ 0x500e+14;
float xdata fxEnergySavingT _at_ 0x500e+18;
float xdata fxSafeguardT _at_ 0x500e+22;
float xdata fxBacklash _at_ 0x500e+26;
unsigned char xdata ucxPasswordTmp[6],uciDisplayNum[4];
unsigned char ucKey,ucPasswordCount;
unsigned char ucCurrentFocusMenu; //菜单的工作态号 ;每个菜单的每一条都对应一个工作态号和菜单号
unsigned char ucMenu1Index,ucMenu2Index; //菜单号 ;每级菜单一个菜单号,同级子菜单可有不同的显示方式
unsigned char bdata ucOutControlWord;
sbit bBuzzer = ucOutControlWord^7;
sbit bAirConditioner = ucOutControlWord^6;
sbit bExhaustFanner = ucOutControlWord^5;
sbit bShutter = ucOutControlWord^4;
sbit bBackup = ucOutControlWord^3;
sbit bDustAbatement = ucOutControlWord^2;
sbit bHeatExtractionFanner = ucOutControlWord^1;
sbit bHumidifier = ucOutControlWord^0;
bit bKeyProcess;
unsigned char bLightShade;
void KeyInputDisplay(void);
void menuBegin(void);
void menuScanPassword(void);
void menu0Display(unsigned char);
void menu1Display(unsigned char);
void ValueToDisplayNum(float);
void menu2Display(unsigned char);
void menu3Display(unsigned char,unsigned char);
void menu0OnUp();
void menu0OnDown();
void menu0OnAdd();
void menu0OnSub();
void menu0OnCr();
void menu0OnEsc();
void menu1OnUp();
void menu1OnDown();
void menu1OnAdd();
void menu1OnSub();
void menu1OnCr();
void menu1OnEsc();
void menu2OnUp();
void menu2OnDown();
void menu2OnAdd();
void menu2OnSub();
void menu2OnCr();
void menu2OnEsc();
void menu3OnUp();
void menu3OnDown();
void menu3OnAdd();
void menu3OnSub();
void menu3OnCr();
void menu3OnEsc();
void menu4OnUp();
void menu4OnDown();
void menu4OnAdd();
void menu4OnSub();
void menu4OnCr();
void menu4OnEsc();
void menu5OnUp();
void menu5OnDown();
void menu5OnAdd();
void menu5OnSub();
void menu5OnCr();
void menu5OnEsc();
void menu6OnUp();
void menu6OnDown();
void menu6OnAdd();
void menu6OnSub();
void menu6OnCr();
void menu6OnEsc();
void menu7OnUp();
void menu7OnDown();
void menu7OnAdd();
void menu7OnSub();
void menu7OnCr();
void menu7OnEsc();
void menu8OnUp();
void menu8OnDown();
void menu8OnAdd();
void menu8OnSub();
void menu8OnCr();
void menu8OnEsc();
void menu9OnUp();
void menu9OnDown();
void menu9OnAdd();
void menu9OnSub();
void menu9OnCr();
void menu9OnEsc();
/* 将菜单的属性和操作"封装"在一起 */
typedef struct tagSysMenu
{
// unsigned char StateIndex;
// unsigned char x0Pos; /* 菜单在LCD上的x坐标(排号)*/
// unsigned char y0Pos; /* 菜单在LCD上的y坐标(列号)*/
// unsigned char *text0; /* 菜单的文本 */
// unsigned char x1Pos; /* 菜单在LCD上的x坐标(排号)*/
// unsigned char y1Pos; /* 菜单在LCD上的y坐标(列号)*/
// unsigned char *text1; /* 菜单的文本 */
void (*onUpFun)(); /* 在该菜单上按下up 键的处理函数指针 */
void (*onDownFun)(); /* 在该菜单上按下down键的处理函数指针 */
void (*onAddFun)(); /* 在该菜单上按下add 键的处理函数指针 */
void (*onSubFun)(); /* 在该菜单上按下sub 键的处理函数指针 */
void (*onCrFun)(); /* 在该菜单上按下cr 键的处理函数指针 */
void (*onEscFun)(); /* 在该菜单上按下esc 键的处理函数指针 */
}SysMenu;//, *LPSysMenu;
SysMenu code menu[] =
{
{menu0OnUp,menu0OnDown,menu0OnAdd,menu0OnSub,menu0OnCr,menu0OnEsc},
{menu1OnUp,menu1OnDown,menu1OnAdd,menu1OnSub,menu1OnCr,menu1OnEsc},
{menu2OnUp,menu2OnDown,menu2OnAdd,menu2OnSub,menu2OnCr,menu2OnEsc},
{menu3OnUp,menu3OnDown,menu3OnAdd,menu3OnSub,menu3OnCr,menu3OnEsc},
{menu4OnUp,menu4OnDown,menu4OnAdd,menu4OnSub,menu4OnCr,menu4OnEsc},
{menu5OnUp,menu5OnDown,menu5OnAdd,menu5OnSub,menu5OnCr,menu5OnEsc},
{menu6OnUp,menu6OnDown,menu6OnAdd,menu6OnSub,menu6OnCr,menu6OnEsc},
{menu7OnUp,menu7OnDown,menu7OnAdd,menu7OnSub,menu7OnCr,menu7OnEsc},
{menu8OnUp,menu8OnDown,menu8OnAdd,menu8OnSub,menu8OnCr,menu8OnEsc},
{menu9OnUp,menu9OnDown,menu9OnAdd,menu9OnSub,menu9OnCr,menu9OnEsc},
};
//{"menu2", 7, 48, menu2OnOk, menu2OnCancel},menu0OnEsc
/******************************************************************************/
/* keyinput processor */
/******************************************************************************/
void KeyInputDisplay (void)
{
switch (ucKey)
{
case KEY_UP:
menu[ucCurrentFocusMenu].onUpFun();
break;
case KEY_DOWN:
menu[ucCurrentFocusMenu].onDownFun();
break;
case KEY_ADD:
menu[ucCurrentFocusMenu].onAddFun();
break;
case KEY_SUB:
menu[ucCurrentFocusMenu].onSubFun();
break;
case KEY_CR:
menu[ucCurrentFocusMenu].onCrFun();
break;
case KEY_ESC:
menu[ucCurrentFocusMenu].onEscFun();
break;
default:
break;
}
}
/****************************************************************************
菜单操作函数
*****************************************************************************/
void menu0Display(unsigned char ucMenuIndex)
{
unsigned char i;
ClearScreen();
for(i=0;i<6;i++) DisplayChinese(0,19+i*16,uccMenu0[2*ucMenuIndex][i]); //第一排显示---请输入密码:
for(i=0;i<6;i++) DisplayChinese(1,13+i*16,uccMenu0[2*ucMenuIndex+1][i]); //第二排显示------*****
}
/**********************************工作态0***********************************/
void menuBegin()
{
menu0Display(0);
ucPasswordCount = 0;
ucCurrentFocusMenu = 1; //进入密码输入态
}
/*******************************/
void menu0OnUp()
{
menuBegin();
}
/*******************************/
void menu0OnDown()
{
menuBegin();
}
/*******************************/
void menu0OnAdd()
{
menuBegin();
}
/*******************************/
void menu0OnSub()
{
menuBegin();
}
/*******************************/
void menu0OnCr()
{
menuBegin();
}
/*******************************/
void menu0OnEsc()
{
menuBegin();
}
/**********************************工作态1***********************************/
/**********************************0级菜单(含工作态1)**********************************/
void menuScanPassword()
{
if (ucPasswordCount < 6)
{
DisplayChineseN(1,13+ucPasswordCount*16,2); //第一排显示不变;第二排反显
ucxPasswordTmp[ucPasswordCount++] = ucKey; //存密码
}
}
/*******************************/
void menu1OnUp()
{
menuScanPassword();
}
/*******************************/
void menu1OnDown()
{
menuScanPassword();
}
/*******************************/
void menu1OnAdd()
{
menuScanPassword();
}
/*******************************/
void menu1OnSub()
{
menuScanPassword();
}
/*******************************/
void menu1OnCr()
{
unsigned char i;
//输入密码是否正确
if ((memcmp(ucxPasswordTmp,ucxPassword,6) == 0) || (memcmp(ucxPasswordTmp,uccPassword,6) == 0))
{
for(i=0;i<6;i++) ucxPasswordTmp[i] = 0; //清密码缓冲区
ucCurrentFocusMenu = 2;
ucMenu1Index = 0;
menu1Display(ucMenu1Index);
}
else
{
ucCurrentFocusMenu = 0;
menu0Display(2);
}
}
/*******************************/
void menu1OnEsc()
{
if (ucPasswordCount)
{
menuBegin();
}
else
{
bKeyProcess = 0; //温湿度显示
ucCurrentFo
rtx51tiny版的应用程序
4星 · 超过85%的资源 需积分: 33 51 浏览量
2010-03-30
18:56:02
上传
评论 2
收藏 203KB RAR 举报
cybil333
- 粉丝: 0
- 资源: 1
最新资源
- 毕业设计基于STM32的测量温度与压力的数据处理设计C语言完整源码+论文.zip
- 基于MATLAB的PCA算法人脸识别项目源码+GUI界面+说明文档.zip
- 基于STM32的测量温度与压力的数据处理设计源码+论文(毕业设计).zip
- Vision Transformer 网络对不同氨气氧气浓度轨迹RAS 图像数据集的分类,包含训练权重和数据集、迁移学习
- 基于C51带字库LCD12864(ST7920)的keil工程源码,只支持8位并口通讯(不支持串口),可显示中文.zip
- 基于SI4463射频模块433MD-SMA无线模块软硬件技术资料及(SI4463)IC技术资料文档.zip
- (GPS+北斗+GSM)HLK-GS2503模块软硬件开发资料包硬件参考设计(原理图PCB)+技术文档资料.zip
- 基于BERT+Biaffine结构的关系抽取模型源码+文档说明.zip
- 利用c语言编写的冒泡排序代码
- 基于Ansoft-HFSS知识总结hfss中文教程HFSS培训教材等技术资料合集(50个).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈