#include "FUN.h"
#include "LCD12864.h"
#include "DELAY.h"
#include "ZK.h"
#define uchar unsigned char
sbit keydown=P1^1; //下键
sbit keyenter=P1^3; //确定键
sbit keyup=P1^0; // 上键
sbit keyback=P1^2 ;//返回
uchar func_index=0;
void (*current_operation_index)();
typedef struct
{
uchar current;
uchar up;//向上翻索引号 x
uchar down;//向下翻索引号 y
uchar enter;//确认索引号 z
uchar back;// 返回索引号 w
void (*current_operation)();
} key_table;
key_table code table[30]=
{
// x,y,z,w
{0,2,1,3,0, (*fun1)},//第一层,显示【清华大学】、北京大学、重庆三峡学院
{1,0,2,6,0,(*fun2)},//第一层,显示清华大学、【北京大学】、重庆三峡学院
{2,1,0,9,0,(*fun3)},//第一层,显示清华大学、北京大学、【重庆三峡学院】
// {3,2,0,25,(*fun4)},//第一层,显示清华大学、北京大学、重庆三峡学院
{3,5,4,12,0,(*fun5)},//第二层,清华大学层下显示【地点】、创建时间、简介
{4,3,5,13,0,(*fun6)},//第二层,清华大学层下显示地点、【创建时间】、简介
{5,4,3,14,0,(*fun7)}, //第二层,清华大学层下显示地点、创建时间、【简介】
// {7,6,4,0,(*fun8)},//第二层,清华大学层下显示地点、创建时间、简介
{6,8,7,15,0,(*fun9)},//第二层,北京大学层下显示【历史】、政治、简介
{7,6,8,16,0,(*fun10)},//第二层,北京大学层下显示历史、【政治】、简介
{8,7,6,17,0,(*fun11)}, //第二层,北京大学层下显示历史、政治、【简介】
// {11,10,8,1,(*fun12)},//第二层,北京大学层下显示历史、政治、简介
{9,11,10,18,0,(*fun13)},//第二层,重庆三峡学院层下显示【简介】、最佳院系、最佳实验室
{10,9,11,19,0,(*fun14)}, //第二层,重庆三峡学院层下显示简介、【最佳院系】、最佳实验室
{11,10,9,20,0,(*fun15)}, //第二层,重庆三峡学院层下显示简介、最佳院系、【最佳实验室】
// {15,14,12,2,(*fun16)}, //第二层,重庆三峡学院层下显示简介、最佳院系、最佳实验室
{12,12,12,12,3,(*fun17)}, //第三层,清华大学地点层
{13,13,13,13,4,(*fun18)}, //第三层,清华大学创时间层
{14,14,14,14,5,(*fun19)}, //第三层,清华大学简介层
{15,15,15,15,6,(*fun20)}, //第三层,北京大学历史层
{16,16,16,16,7,(*fun21)}, //第三层,北京大学政治层
{17,17,17,17,8,(*fun22)}, //第三层,北京大学简介层
{18,18,18,18,9,(*fun23)}, //第三层,重庆三峡学院简介层
{19,19,19,19,10,(*fun24)}, //第三层,重庆三峡学院最佳院系层
{20,20,20,20,11,(*fun25)}, //第三层,重庆三峡学院最佳实验室层
{21,21,21,21,0,(*fun26)}, //第0层
};
void main()
{
InitializeLCD(); //初始化LCD模块
while(1)
{
/*******************find index****************************/
if((keyup==0)||(keydown==0)||(keyenter==0)||(keyback==0))
{
delayms(5);//消抖
if(keyup==0)
{
func_index=table[func_index].up; //向上翻
while(!keyup);//松手检测
}
if(keydown==0)
{
func_index=table[func_index].down; //向下翻
while(!keydown);
}
if(keyenter==0)
{
func_index=table[func_index].enter; //确认
while(!keyenter);
}
if(keyback==0)
{
func_index=table[func_index].back; //返回
while(!keyback);
}
clear_screen();
InitializeLCD();
}
current_operation_index=table[func_index].current_operation;
(*current_operation_index)();//执行当前操作函数
}
}
|