⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 6.5.c

📁 很多元件的驱动程序,数模转换,模数转换芯片驱动,液晶显示,很多,更详细请参阅单片机语言-C51典型应用设计这本书!
💻 C
字号:
#include <reg51.h>    
#include <stdio.h>   
#define    SIZE_OF_KEYBD_MENU    20
unsigned  DummyJob=0;
unsigned  DspUserInfo=0;
unsigned  DspServiceInfo=0;
unsigned  DspVoltInfo=0;
unsigned  DspCurrInfo=0;
unsigned  DspFreqInfo=0;
unsigned  DspCableInfo=0;
unsigned  DspSetVoltLevel=0;
unsigned  KeyFuncIndex=0;

void    (*KeyFuncPtr)();                    //按键功能指针

typedef struct
{
   unsigned char    KeyStateIndex;    //当前状态索引号
   unsigned char    KeyDnState;      //按下"向下"键时转向的状态索引号
   unsigned char    KeyUpState;      //按下"向上"键时转向的状态索引号
   unsigned char    KeyCrState;        //按下"回车"键时转向的状态索引号
    void    (*CurrentOperate)();    //当前状态应该执行的功能操作
}    KbdTabStruct;

KbdTabStruct  code  KeyTab[SIZE_OF_KEYBD_MENU]=
{
    { 0, 0, 0, 1,(&DummyJob)},          //顶层
    
    { 1, 2, 0, 3,(&DspUserInfo)},        //第二层
    { 2, 1, 1, 9,(&DspServiceInfo)},      //第二层
    
    { 3, 0, 0, 1,(&DspVoltInfo)},     //第三层>>DspUserInfo的展开
    { 4, 0, 0, 1,(&DspCurrInfo)},     //第三层>>DspUserInfo的展开
    { 5, 0, 0, 1,(&DspFreqInfo)},     //第三层>>DspUserInfo的展开
    { 6, 0, 0, 1,(&DspCableInfo)},    //第三层>>DspUserInfo的展开
//...........
{ 9, 0, 0, 1,(&DspSetVoltLevel)}      //第三层>>DspServiceInfo的展开
//..........
};

void    GetKeyInput(void)
{unsigned char    KeyValue;
    KeyValue=P1&0x07;             //去掉高5位
//    delay(50000);
    switch(KeyValue)
    {
        case    1:                 //回车键,找出新的菜单状态编号
        {
            KeyFuncIndex=KeyTab[KeyFuncIndex].KeyCrState;
            break;
        }
        case    2:              //向上键,找出新的菜单状态编号
        {
            KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState;
            break;
        }
        case    4:             //向下键,找出新的菜单状态编号
        {
            KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDnState;
            break;
        }
        default:                //按键错误的处理
//......
        break;
    }
    KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate;
    (*KeyFuncPtr)();//
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -