htlcd.h
来自「代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考」· C头文件 代码 · 共 368 行
H
368 行
#ifndef __VFD_R_H
#define __VFD_R_H
//ZHX 040103
#define VFD_7SEG_SA (1<<0)
#define VFD_7SEG_SB (1<<1)
#define VFD_7SEG_SG (1<<2)
#define VFD_7SEG_SC (1<<3)
#define VFD_7SEG_SF (1<<5)
#define VFD_7SEG_SE (1<<6)
#define VFD_7SEG_SD (1<<7)
#include "vfd_7seg.h"
#include "macro.h"
#include "fs9660.h"
#define VFD_DOT_REPALL (24)
#define VFD_DOT_REP1 (8)
#define VFD_DOT_REPEAT (0)
#define VFD_DOT_REPA (40)
#define VFD_DOT_REPB (41)
#define VFD_DOT_MINSEC (72)
#define VFD_DOT_PAUSE (2)
#define VFD_DOT_PLAY (1)
#define VFD_DOT_REMAIN (3)
#define VFD_DOT_SPACE (42)
#define VFD_DOT_RAND (60)
#define VFD_DOT_INTRO (106)
#define VFD_DOT_PGM01 (112)
#define VFD_DOT_PGM02 (116)
#define VFD_DOT_PGM03 (120)
#define VFD_DOT_PGM04 (124)
#define VFD_DOT_PGM05 (113)
#define VFD_DOT_PGM06 (117)
#define VFD_DOT_PGM07 (121)
#define VFD_DOT_PGM08 (125)
#define VFD_DOT_PGM09 (114)
#define VFD_DOT_PGM10 (118)
#define VFD_DOT_PGM11 (122)
#define VFD_DOT_PGM12 (126)
#define VFD_DOT_PGM13 (115)
#define VFD_DOT_PGM14 (119)
#define VFD_DOT_PGM15 (123)
#define VFD_DOT_PGM16 (127)
#define VFDA_P0 2
#define VFDA_P1 4
#define VFDA_M0 7
#define VFDA_M1 8
#define VFDA_S0 10
#define VFDA_S1 12
void vfd_mem_clear(void);
const BYTE vfd_prg[] = {
0,
VFD_DOT_PGM01,
VFD_DOT_PGM02,
VFD_DOT_PGM03,
VFD_DOT_PGM04,
VFD_DOT_PGM05,
VFD_DOT_PGM06,
VFD_DOT_PGM07,
VFD_DOT_PGM08,
VFD_DOT_PGM09,
VFD_DOT_PGM10,
VFD_DOT_PGM11,
VFD_DOT_PGM12,
VFD_DOT_PGM13,
VFD_DOT_PGM14,
VFD_DOT_PGM15,
VFD_DOT_PGM16,
};
const BYTE vfd_addr[6] = {2,4,7,8,10,12};
void print_vfd_digital(BYTE no,BYTE data)
{
vfd_mem[vfd_addr[no]]&=(~0x0f);
vfd_mem[vfd_addr[no]]|=(vfd_digit[data]&0x0f);
if (no == 3) {
vfd_mem[7]&=(~0xe0);
vfd_mem[7]|=((vfd_digit[data])&0xe0);
}
else {
vfd_mem[vfd_addr[no]-1]&=(~0x0e);
vfd_mem[vfd_addr[no]-1]|=((vfd_digit[data]>>4)&0x0e);
}
}
void vfd_disc_turn(BYTE mode)
{
}
void vfd_set_pgm(BYTE method)
{
extern const BYTE vfd_prg[];
BYTE i, trk;
trk = cd_trk_hi - cd_trk_lo;
if(trk > 16) trk = 16;
for(i = 1; i <= trk; i++)
{
if (method == 0)
vfd_mem[vfd_prg[i] >> 3] |= (1 << (vfd_prg[i] & 0x07));
else if (--method == 0)
vfd_mem[vfd_prg[i] >> 3] ^= (1 << (vfd_prg[i] & 0x07)); //flash vfd pgm
else if (!IsPBCOn())
vfd_mem[vfd_prg[i] >> 3] &= ~(1 << (vfd_prg[i] & 0x07)); //turn off vfd pgm
}
}
void vfd_close(void)
{
print_vfd_digital(1,12);
print_vfd_digital(2,21);
print_vfd_digital(3,24);
print_vfd_digital(4,28);
print_vfd_digital(5,14);
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
}
void vfd_nodisc(void)
{
print_vfd_digital(0,23);
print_vfd_digital(1,24);
print_vfd_digital(2,13);
print_vfd_digital(3,18);
print_vfd_digital(4,28);
print_vfd_digital(5,12);
}
void vfd_open(void)
{
// vfd_mem_clear();
print_vfd_digital(2,24);
print_vfd_digital(3,25);
print_vfd_digital(4,14);
print_vfd_digital(5,23);
}
void vfd_show_time(void)
{
static BYTE cd_time_ss=0xff;//0; wyf 2-4-1 15:57
#ifdef VFDVOL_DISPLAY
if(!volFlag)
#endif
{
if((cd_type_loaded == CDROM)&&(CheckUIState(VCD_STATE_STOP)))
return;
if(cd_disp_ss!=cd_time_ss)
{
cd_time_ss= cd_disp_ss;
print_vfd_digital(0, cd_disp_trk/10);
print_vfd_digital(1, cd_disp_trk%10);
print_vfd_digital(2, cd_disp_mm/10);
print_vfd_digital(3, cd_disp_mm%10);
print_vfd_digital(4, cd_disp_ss/10);
print_vfd_digital(5, cd_disp_ss%10);
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
}
else
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
}
}
#ifdef VFDVOL_DISPLAY
void vfd_vol_display(BYTE volNum)
{
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
print_vfd_digital(0, volNum/10);
print_vfd_digital(1, volNum%10);
print_vfd_digital(2, 30);
print_vfd_digital(3, 37);
print_vfd_digital(4, 21);
print_vfd_digital(5, 35);
}
#endif
void vfd_set_remain(void)
{
switch (remain)
{
case REMAIN_DISC:
case REMAIN_TRK:
vfd_dot(VFD_DOT_ON, VFD_DOT_REMAIN);
vfd_dot(VFD_DOT_ON,VFD_DOT_SPACE);
break;
case REMAIN_OFF:
case REMAIN_STOP:
vfd_dot(VFD_DOT_OFF, VFD_DOT_REMAIN);
vfd_dot(VFD_DOT_OFF, VFD_DOT_SPACE);
break;
}
}
void vfd_pause(void)
{
#if 1 //ZHX 081103
static BYTE flash_pause = 0;
flash_pause ++;
if (flash_pause > 3)
flash_pause = 0;
if(flash_pause/2)
vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
else
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
#else
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
#endif
#ifdef VFDVOL_DISPLAY
if(volFlag) {
volFlag = 0;
cd_disp_ss ++;
vfd_show_time();
}
#endif
}
void vfd_repeat(void)
{
switch (rep_ab_mode)
{
case REPEAT_FIND_A:
vfd_dot(VFD_DOT_ON, VFD_DOT_REPA);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPB);
break;
case REPEAT_FIND_B:
vfd_dot(VFD_DOT_ON, VFD_DOT_REPA);
vfd_dot(VFD_DOT_ON, VFD_DOT_REPB);
break;
default:
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPA);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPB);
break;
}
switch (rep_mode)
{
case REPEAT_TRACK:
{
vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_ON, VFD_DOT_REP1);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
}
break;
case REPEAT_DISC:
{
vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_ON, VFD_DOT_REPALL);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REP1);
}
break;
default:
{
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REP1);
}
break;
}
}
void vfd_format(void)
{
}
void vfd_cdtype(BYTE cd_types)
{
}
void vfd_playmode(void)
{
}
void vfd_audio(void)
{
}
void vfd_refresh(void)
{
vfd_playmode();
vfd_format();
vfd_cdtype(cd_type_loaded);
vfd_audio();
}
void vfd_normal_state(void)
{
static BYTE set_pgm=1;
set_pgm++;
if (set_pgm > 9) set_pgm=1;
if(cd_type_loaded!=CDNODISK)
{
if (!(set_pgm%3))
vfd_set_pgm(cd_disp_trk);
vfd_show_time();
vfd_set_remain();
vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
}
else
{
vfd_mem_clear();
vfd_nodisc();
}
}
void vfd_stop(void)
{
vfd_show_time();
vfd_set_pgm(0);
vfd_repeat();
vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
if(cd_type_loaded == CDROM) {
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
print_vfd_digital(0, 25);
print_vfd_digital(1, 3);
print_vfd_digital(2, 0);
print_vfd_digital(3, Gmem.gmp3.iso9660_file_cnt/100);
print_vfd_digital(4, (Gmem.gmp3.iso9660_file_cnt%100)/10);
print_vfd_digital(5, Gmem.gmp3.iso9660_file_cnt%10);
}
else
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
}
void vfd_game(void)
{
vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
print_vfd_digital(0, (GetCmdSrc(sys_cmd)/10));
print_vfd_digital(1, (GetCmdSrc(sys_cmd)%10));
print_vfd_digital(2, 0);
print_vfd_digital(3, 0);
print_vfd_digital(4, 0);
print_vfd_digital(5, 0);
}
void vfd_game_clear(void)
{
vfd_refresh();
vfd_dot(VFD_DOT_ON, VFD_DOT_SPACE);
vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);//ZHX 062103 for gun
print_vfd_digital(0, 0);
print_vfd_digital(1, 0);
print_vfd_digital(2, 0);
print_vfd_digital(3, 0);
print_vfd_digital(4, 0);
print_vfd_digital(5, 0);
}
void vfd_mem_clear(void)
{
BYTE i=0;
for(i=0;i<16;i++)
{
vfd_mem[i] = 0;
}
}
#endif/*__VFD_R_H*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?