#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)();//執行當前操作函數
}
}
|