spv518_key.c

来自「TFT显示的源码,附了使用说明书 要下载的速度了」· C语言 代码 · 共 132 行

C
132
字号

#include "spv518.h"


#define  SPV518_KEY_SCAN_CHANNEL0    0
#define  SPV518_KEY_SCAN_CHANNEL1    1
#define  USE_CHANNEL0
#define  USE_CHANNEL1
#ifdef USE_CHANNEL0
#define  CHANNEL0_USE_KEY_NUMBER     5
#endif
#ifdef USE_CHANNEL1
#define  CHANNEL1_USE_KEY_NUMBER     5
#endif
extern const IRFUNC irc_Tcon_func_table[];
enum
{
    IRC_TCON_BRIGHTNESS,
    IRC_TCON_CONTRAST,
    IRC_TCON_HUE,
    IRC_TCON_SATURATION,
    IRC_TCON_SHARPNESS,
    IRC_TCON_SHARPNESS1,
    IRC_TCON_SHARPNESS2,
    IRC_TCON_SHARPNESS3,
    IRC_TCON_SHARPNESS4,
    IRC_TCON_SHARPNESS5,
    IRC_TCON_NULL,
};

const BYTE Tcon_keycode0[15]=
{
    IRC_TCON_BRIGHTNESS,IRC_TCON_CONTRAST,
    IRC_TCON_HUE,IRC_TCON_SATURATION,
    IRC_TCON_SHARPNESS,IRC_TCON_SHARPNESS1,
    IRC_TCON_SHARPNESS2,IRC_TCON_SHARPNESS3,
    IRC_TCON_SHARPNESS4,IRC_TCON_SHARPNESS5,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,
};
const BYTE Tcon_keycode1[15]=
{
    IRC_TCON_BRIGHTNESS,IRC_TCON_NULL,
    IRC_TCON_HUE,IRC_TCON_SATURATION,
    IRC_TCON_SHARPNESS,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_BRIGHTNESS,IRC_TCON_CONTRAST,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,
};
const BYTE Tcon_keycode2[15]=
{
    IRC_TCON_BRIGHTNESS,IRC_TCON_CONTRAST,
    IRC_TCON_HUE,IRC_TCON_SATURATION,
    IRC_TCON_SHARPNESS,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,
};
const BYTE Tcon_keycode3[15]=
{
    IRC_TCON_BRIGHTNESS,IRC_TCON_CONTRAST,
    IRC_TCON_HUE,IRC_TCON_SATURATION,
    IRC_TCON_SHARPNESS,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,IRC_TCON_NULL,
    IRC_TCON_NULL,
};

void tcon_key_parse(BYTE key_value)
{
    printf_w("\ntcon_key_parse in key_value:%d",key_value);
    switch(tcon_ui_state)
    {
    case TCON_UI_FIRST_STATE:
        irc_Tcon_func_table[Tcon_keycode0[key_value]]();
        break;
    case TCON_UI_SECOND_STATE:
        irc_Tcon_func_table[Tcon_keycode1[key_value]]();
        break;
    case TCON_UI_THIRD_STATE:
        irc_Tcon_func_table[Tcon_keycode2[key_value]]();
        break;
    case TCON_UI_FOURTH_STATE:
        irc_Tcon_func_table[Tcon_keycode3[key_value]]();
        break;
    }
}
BYTE key_virtual_cnt;
void polling_spv518_key(void)
{
    BYTE key_value,keyval,key1valoffset=0;
    #ifdef USE_CHANNEL0
    key1valoffset = CHANNEL0_USE_KEY_NUMBER;
    #endif
    #ifdef USE_CHANNEL0
        key_value=SAR(SPV518_KEY_SCAN_CHANNEL0);
        if((key_value>((0xff/CHANNEL0_USE_KEY_NUMBER)/2))&&(!key_virtual_cnt))
        {
        keyval=((key_value-(0xff/CHANNEL0_USE_KEY_NUMBER)/2)/(0xff/CHANNEL0_USE_KEY_NUMBER));
        printf_w("\nwwkeyval0:%d",keyval);
        tcon_key_parse(keyval);
        //irc_Tcon_func_table[(BYTE)keyval]();
        key_virtual_cnt = 3;
        }
    #endif
    #ifdef USE_CHANNEL1
        key_value=SAR(SPV518_KEY_SCAN_CHANNEL1);
        if((key_value>((0xff/CHANNEL1_USE_KEY_NUMBER)/2))&&(!key_virtual_cnt))
        {
        keyval=((key_value-(0xff/CHANNEL1_USE_KEY_NUMBER)/2)/(0xff/CHANNEL1_USE_KEY_NUMBER));
        printf_w("\nwwkeyval1:%d",keyval);
        tcon_key_parse(keyval+key1valoffset);
        //irc_Tcon_func_table[(BYTE)(keyval+key1valoffset)]();
        key_virtual_cnt = 3;
        }
    #endif
    key_value=SAR(SPV518_KEY_SCAN_CHANNEL1);
    
    if(key_virtual_cnt)
        key_virtual_cnt--;
    printf_w("\nqqspv518_key_value:%d;",key_value);
}


⌨️ 快捷键说明

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