📄 vfdspec63.h
字号:
// *********************************************************************
// VFD control mode
// *********************************************************************
#define VFD_MODE 0x02
// *********************************************************************
// Predefined ANODE
// *********************************************************************
#define ANODE_EMPTY GET_NODE_WORD(0x06, 0x80)
#define ICON_EMPTY {0x06, 0x80}
// *********************************************************************
// Refresh Table
// *********************************************************************
BYTE pbVfdRefresh[] = {
0x00, 0x01, 0x02, 0x03,
0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b,
};
strucVfdIcon prVfdWheel[] = {
{0x0b, 0x08},
{0x0b, 0x04},
{0x0b, 0x02},
{0x0b, 0x01},
{0x0a, 0x80},
{0x0a, 0x40},
{0x0a, 0x20},
{0x0a, 0x10},
{0x0a, 0x08},
{0x0a, 0x04},
{0x0a, 0x02},
{0x0a, 0x01},
// {0x09, 0x40},
};
// *********************************************************************
// Panel/Controller Attributes
// *********************************************************************
#define VFD_CHAR_SEG_SZ 8
#include "vfd_char.h"
#define VFD_SHADOW_LEN VFD_REFRESH_TBL_SZ
#define VFD_FIELD_MAX 9
BYTE pbVfdMsgPosition[] = {
VFD_TITLE+1, VFD_TRACK, VFD_TRACK+1, VFD_MIN100, VFD_MINUTE,
VFD_MINUTE+1, VFD_SECOND, VFD_SECOND+1
};
typedef struct structVfdSegment
{
WORD pwSeg[VFD_CHAR_SEG_SZ];
} strucVfdSegment;
#define SEG_TRACK_HIGH { \
GET_NODE_WORD(0x04, 0x40), \
GET_NODE_WORD(0x04, 0x20), \
GET_NODE_WORD(0x04, 0x04), \
GET_NODE_WORD(0x04, 0x01), \
GET_NODE_WORD(0x04, 0x02), \
GET_NODE_WORD(0x04, 0x10), \
GET_NODE_WORD(0x04, 0x08), \
ANODE_EMPTY \
}
#define SEG_TRACK_LOW { \
GET_NODE_WORD(0x05, 0x80), \
GET_NODE_WORD(0x05, 0x40), \
GET_NODE_WORD(0x05, 0x08), \
GET_NODE_WORD(0x05, 0x02), \
GET_NODE_WORD(0x05, 0x04), \
GET_NODE_WORD(0x05, 0x20), \
GET_NODE_WORD(0x05, 0x10), \
ANODE_EMPTY \
}
#define SEG_MINUTE_HIGH { \
GET_NODE_WORD(0x03, 0x80), \
GET_NODE_WORD(0x03, 0x40), \
GET_NODE_WORD(0x03, 0x08), \
GET_NODE_WORD(0x03, 0x02), \
GET_NODE_WORD(0x03, 0x04), \
GET_NODE_WORD(0x03, 0x20), \
GET_NODE_WORD(0x03, 0x10), \
ANODE_EMPTY \
}
#define SEG_MINUTE_LOW { \
GET_NODE_WORD(0x00, 0x40), \
GET_NODE_WORD(0x00, 0x20), \
GET_NODE_WORD(0x00, 0x04), \
GET_NODE_WORD(0x00, 0x01), \
GET_NODE_WORD(0x00, 0x02), \
GET_NODE_WORD(0x00, 0x10), \
GET_NODE_WORD(0x00, 0x08), \
ANODE_EMPTY \
}
#define SEG_SECOND_HIGH { \
GET_NODE_WORD(0x01, 0x80), \
GET_NODE_WORD(0x01, 0x40), \
GET_NODE_WORD(0x01, 0x08), \
GET_NODE_WORD(0x01, 0x02), \
GET_NODE_WORD(0x01, 0x04), \
GET_NODE_WORD(0x01, 0x20), \
GET_NODE_WORD(0x01, 0x10), \
ANODE_EMPTY \
}
#define SEG_SECOND_LOW { \
GET_NODE_WORD(0x09, 0x80), \
GET_NODE_WORD(0x09, 0x40), \
GET_NODE_WORD(0x09, 0x08), \
GET_NODE_WORD(0x09, 0x02), \
GET_NODE_WORD(0x09, 0x04), \
GET_NODE_WORD(0x09, 0x20), \
GET_NODE_WORD(0x09, 0x10), \
ANODE_EMPTY \
}
#define SEG_HOUR { \
GET_NODE_WORD(0x02, 0x40), \
GET_NODE_WORD(0x02, 0x20), \
GET_NODE_WORD(0x02, 0x04), \
GET_NODE_WORD(0x02, 0x01), \
GET_NODE_WORD(0x02, 0x02), \
GET_NODE_WORD(0x02, 0x10), \
GET_NODE_WORD(0x02, 0x08), \
ANODE_EMPTY \
}
#define SEG_TITLE_HIGH { \
GET_NODE_WORD(0x06, 0x40), \
GET_NODE_WORD(0x06, 0x20), \
GET_NODE_WORD(0x06, 0x04), \
GET_NODE_WORD(0x06, 0x01), \
GET_NODE_WORD(0x06, 0x02), \
GET_NODE_WORD(0x06, 0x10), \
GET_NODE_WORD(0x06, 0x08), \
ANODE_EMPTY \
}
#define SEG_TITLE_LOW { \
GET_NODE_WORD(0x07, 0x80), \
GET_NODE_WORD(0x07, 0x40), \
GET_NODE_WORD(0x07, 0x08), \
GET_NODE_WORD(0x07, 0x02), \
GET_NODE_WORD(0x07, 0x04), \
GET_NODE_WORD(0x07, 0x20), \
GET_NODE_WORD(0x07, 0x10), \
ANODE_EMPTY \
}
strucVfdSegment prVfdCharSegments[] = {
SEG_TRACK_HIGH,
SEG_TRACK_LOW,
SEG_MINUTE_HIGH,
SEG_MINUTE_LOW,
SEG_SECOND_HIGH,
SEG_SECOND_LOW,
SEG_HOUR,
SEG_TITLE_HIGH,
SEG_TITLE_LOW,
};
#define VFD_MSG_CHAR_NUM 10
typedef struct structVfdMsg {
char * pcName;
WORD pwMsg[VFD_MSG_CHAR_NUM];
} strucVfdMsg;
strucVfdMsg prVfdMsg[] = {
{"stop", {CHAR_, CHAR_, CHAR_, CHAR_S,CHAR_t,CHAR_O,CHAR_P,CHAR_, CHAR_end}},
{"root", {CHAR_, CHAR_, CHAR_, CHAR_R,CHAR_O,CHAR_O,CHAR_t,CHAR_, CHAR_end}},
{"title", {CHAR_, CHAR_, CHAR_, CHAR_t,CHAR_I,CHAR_t,CHAR_L,CHAR_E,CHAR_end}},
{"nodisc", {CHAR_, CHAR_n,CHAR_O,CHAR_, CHAR_d,CHAR_I,CHAR_S,CHAR_C,CHAR_end}},
{"undisc", {CHAR_, CHAR_U,CHAR_n,CHAR_, CHAR_d,CHAR_I,CHAR_S,CHAR_C,CHAR_end}},
{"open", {CHAR_, CHAR_, CHAR_, CHAR_O,CHAR_P,CHAR_E,CHAR_n,CHAR_, CHAR_end}},
{"close", {CHAR_, CHAR_, CHAR_, CHAR_C,CHAR_L,CHAR_O,CHAR_S,CHAR_E,CHAR_end}},
{"vcd", {CHAR_, CHAR_, CHAR_, CHAR_U,CHAR_C,CHAR_d,CHAR_, CHAR_, CHAR_end}},
{"svcd", {CHAR_, CHAR_, CHAR_, CHAR_S,CHAR_U,CHAR_C,CHAR_d,CHAR_, CHAR_end}},
{"loading", {CHAR_, CHAR_, CHAR_, CHAR_L,CHAR_O,CHAR_A,CHAR_d,CHAR_, CHAR_end}},
{"off", {CHAR_, CHAR_, CHAR_, CHAR__,CHAR_O,CHAR_F,CHAR_F,CHAR__,CHAR_end}},
{"hello", {CHAR_, CHAR_, CHAR_, CHAR_H,CHAR_E,CHAR_L,CHAR_L,CHAR_O,CHAR_end}},
{"jpeg", {CHAR_, CHAR_, CHAR_, CHAR_J,CHAR_P,CHAR_E,CHAR_g,CHAR_, CHAR_end}},
{"p_cd", {CHAR_, CHAR_, CHAR_, CHAR_P,CHAR__,CHAR_c,CHAR_d,CHAR_, CHAR_end}},
{"pbc_play",{CHAR_, CHAR_P,CHAR_b,CHAR_c,CHAR_P,CHAR_L,CHAR_A,CHAR_y,CHAR_end}},
{"digest", {CHAR_ ,CHAR_ ,CHAR_ ,CHAR_d,CHAR_g,CHAR_S,CHAR_t,CHAR_, CHAR_end}},
{"err", {CHAR_ ,CHAR_ ,CHAR_ ,CHAR_E,CHAR_R,CHAR_R,CHAR_, CHAR_, CHAR_end}},
{"upg", {CHAR_ ,CHAR_ ,CHAR_ ,CHAR_U,CHAR_P,CHAR_g,CHAR_, CHAR_, CHAR_end}},
{"clearall",{CHAR_, CHAR_, CHAR_, CHAR_, CHAR_, CHAR_, CHAR_, CHAR_, CHAR_end}}
};
#if (VFD_CHAR_SEG_SZ <= 8)
#define CHAR_all 0x00ff
#elif (VFD_CHAR_SEG_SZ == 10)
#define CHAR_all 0x03ff
#elif (VFD_CHAR_SEG_SZ == 14)
#define CHAR_all 0x3fff
#endif
#define ICON_pbc ICON_empty//GET_NODE_WORD(0x01, 0x80)
#define ICON_angle GET_NODE_WORD(0x09, 0x01)
#define ICON_repeat GET_NODE_WORD(0x08, 0x40)
#define ICON_all GET_NODE_WORD(0x08, 0x80)
#define ICON_dvd GET_NODE_WORD(0x0b, 0x80)
#define ICON_super ICON_empty//GET_NODE_WORD(0x07, 0x40)
#define ICON_vcd GET_NODE_WORD(0x0b, 0x20)
#define ICON_mp3 GET_NODE_WORD(0x0b, 0x10)
#define ICON_cd GET_NODE_WORD(0x0b, 0x80)
#define ICON_colon1 GET_NODE_WORD(0x00, 0x80)
#define ICON_colon2 GET_NODE_WORD(0x02, 0x80)
#define ICON_play GET_NODE_WORD(0x08, 0x20)
#define ICON_pause GET_NODE_WORD(0x08, 0x10)
#define ICON_ac3 ICON_empty//GET_NODE_WORD(0x05, 0x80)
#define ICON_dts GET_NODE_WORD(0x08, 0x02)
#define ICON_clock GET_NODE_WORD(0x08, 0x04)
#define ICON_mic GET_NODE_WORD(0x08, 0x08)
#define ICON_dd GET_NODE_WORD(0x08, 0x01)
#define ICON_program GET_NODE_WORD(0x01,0x01)
#define ICON_tital GET_NODE_WORD(0x03, 0x01)
#define ICON_empty ANODE_EMPTY
#define ICON_ntsc ICON_empty
#define ICON_pal ICON_empty
#define ICON_vocal ICON_empty
#define ICON_one ICON_empty
//#define ICON_program ICON_empty
#define ICON_l ICON_empty
#define ICON_slash ICON_empty
#define ICON_r ICON_empty
#define ICON_random ICON_empty
#define ICON_s7 ICON_empty
#define ICON_s6 ICON_empty
#define ICON_s5 ICON_empty
#define ICON_s4 ICON_empty
#define ICON_s3 ICON_empty
#define ICON_s2 ICON_empty
#define ICON_s1 ICON_empty
#define ICON_seta ICON_empty
#define ICON_setb ICON_empty
#define ICON_chapter ICON_empty
#define ICON_title ICON_empty
strucVfdIconMacro prVfdIconMacro[] = {
/* Repeat AB related */
{"a2b_a", {ICON_seta}, {ICON_setb} },
{"a2b_b", {ICON_seta, ICON_setb}, {ICON_empty } },
{"a2b_cancel", {ICON_empty }, {ICON_seta, ICON_setb} },
/* Audio selection */
{"mono_l", {ICON_l},
{ICON_r, ICON_slash} },
{"mono_r", {ICON_r},
{ICON_l, ICON_slash} },
{"stereo", {ICON_slash, ICON_l, ICON_r},
{ICON_empty} },
{"stereo_off", {ICON_empty},
{ICON_slash, ICON_l, ICON_r}},
{"vocal_l", {ICON_l},
{ICON_slash, ICON_r} },
{"vocal_r", {ICON_r},
{ICON_slash, ICON_l} },
{"vocal_off", {ICON_empty},
{ICON_empty} },
/* Play selection */
{"fb", {ICON_empty}, {ICON_play, ICON_pause} },
{"ff", {ICON_empty}, {ICON_play, ICON_pause} },
{"pause", {ICON_pause}, {ICON_play} },
{"play", {ICON_play}, {ICON_pause} },
{"stop", {ICON_empty}, {ICON_play, ICON_pause} },
/* PBC selection */
{"pbc_on", {ICON_pbc}, {ICON_empty} },
{"pbc_off", {ICON_empty}, {ICON_pbc} },
/* Intro/digest */
{"intro_on",{ICON_empty}, {ICON_empty} },
{"intro_off",{ICON_empty}, {ICON_empty} },
/* Mic. colon, track, hyphen etc */
{"colon_on", {ICON_colon2}, {ICON_empty} },
{"colon_off",{ICON_empty}, {ICON_colon2} },
{"track", {ICON_chapter}, {ICON_title} },
{"title", {ICON_title, ICON_chapter}, {ICON_empty} },
/* title on/off */
{"title_on", {ICON_title}, {ICON_empty} },
{"title_off",{ICON_empty}, {ICON_title} },
/* Play sequence */
{"sequence", {ICON_empty}, {ICON_program, ICON_random, ICON_repeat, ICON_all, ICON_seta, ICON_setb} },
{"program", {ICON_program},
{ICON_random, ICON_pbc} },
{"shuffle", {ICON_random},
{ICON_program, ICON_pbc} },
/* Repeat related */
{"repeat_off", {ICON_empty},
{ICON_repeat, ICON_one, ICON_all, ICON_seta, ICON_setb} },
{"repeat_one", {ICON_repeat},
{ICON_all} },
{"repeat_all", {ICON_repeat, ICON_all},
{ICON_empty} },
/* CD type */
{"svcd", {ICON_vcd, ICON_super, ICON_cd},
{ICON_dvd} },
{"cdda", {ICON_cd},
{ICON_super, ICON_vcd, ICON_dvd} },
{"vcd", {ICON_vcd, ICON_cd},
{ICON_super, ICON_dvd} },
/* TV type */
{"ntsc", {ICON_empty},
{ICON_empty} },
{"pal", {ICON_empty},
{ICON_empty} },
/* Key shift */
{"key_up", {ICON_empty},
{ICON_empty} },
{"key_down", {ICON_empty},
{ICON_empty} },
{"key_resume", {ICON_empty},
{ICON_empty} },
/* Initialization */
{"init_state", {ICON_chapter, ICON_l, ICON_r, ICON_s1, ICON_s2,
ICON_s3, ICON_s4, ICON_s5, ICON_s6, ICON_s7},
{ICON_empty} },
{"clear_msg", {ICON_empty }, {ICON_colon1, ICON_colon2, ICON_title, ICON_chapter} },
{"panel4_off", {ICON_empty },
{ICON_ntsc, ICON_pal, ICON_l, ICON_r, ICON_vocal, ICON_pbc, }, },
{"panel5_off", {ICON_empty },
{ICON_angle, ICON_title, ICON_ac3, ICON_dts }, },
{"in_vts", {ICON_dvd, ICON_chapter, ICON_play, ICON_title },
{ICON_empty } },
{"pause_on", {ICON_pause}, {ICON_play} },
{"pause_off", {ICON_play}, {ICON_pause} },
{"angle_on", {ICON_angle}, {ICON_empty } },
{"angle_off", {ICON_empty }, {ICON_angle} },
{"ac3", {ICON_ac3}, {ICON_dts, ICON_mp3} },
{"dts", {ICON_dts}, {ICON_ac3, ICON_mp3} },
{"mp3", {ICON_mp3}, {ICON_ac3, ICON_dts} },
{"pcm", {ICON_empty}, {ICON_dts, ICON_ac3, ICON_mp3} },
{"clear_audio", {ICON_empty}, {ICON_dts, ICON_ac3, ICON_mp3}},
{"chapter_repeat_on", {ICON_repeat, ICON_one },
{ICON_all}, },
{"title_repeat_on", {ICON_repeat, ICON_all },
{ICON_one}, },
{"chapter_repeat_off", {ICON_empty },
{ICON_repeat, ICON_one}, },
{"title_repeat_off", {ICON_empty },
{ICON_repeat, ICON_all}, },
{"dvdon", {ICON_dvd},
{ICON_empty }, },
{"dvdoff", {ICON_empty },
{ICON_dvd} },
{"multi_on", {ICON_pal, ICON_ntsc},
{ICON_empty } },
{"colonon", {ICON_colon1,ICON_colon2},
{ICON_empty }, },
{"colonoff", {ICON_empty },
{ICON_colon1,ICON_colon2} },
};
/* for table size */
#define VFD_REFRESH_TBL_SZ TBL_SIZE(pbVfdRefresh)
#define VFD_SHADOW_LEN VFD_REFRESH_TBL_SZ
#define VFD_KEY_LEN 3
#define VFD_WHEEL_FANS TBL_SIZE(prVfdWheel)
#define VFD_MSG_NO TBL_SIZE(prVfdMsg)
#define CHAR_NUM_ARRAY_SZ TBL_SIZE(pwNumberList)
#define VFD_CHAR_NO TBL_SIZE(prVfdCharSegments)
#define VFD_ICON_MACRO_NO TBL_SIZE(prVfdIconMacro)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -