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

📄 vfd58.h

📁 代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考
💻 H
字号:
#ifndef __VFD_R_H
#define __VFD_R_H


//wangbin 02-07-09
#define VFD_7SEG_SG     (1<<4)
#define VFD_7SEG_SF     (1<<5)
#define VFD_7SEG_SE     (1<<2)
#define VFD_7SEG_SD     (1<<1)
#define VFD_7SEG_SC     (1<<3)
#define VFD_7SEG_SB     (1<<6)
#define VFD_7SEG_SA     (1<<7)

#include "vfd_7seg.h"
#include "macro.h"
#include "fs9660.h"

#define VFD_DOT_MP3     (82)
#define VFD_DOT_SVCD    (10)
#define VFD_DOT_VCD     (8)
#define VFD_DOT_CD      (82)
#define VFD_DOT_GAME    (6)
#define VFD_DOT_PAUSE   (4)
#define VFD_DOT_PLAY    (5)
#define VFD_DOT_PBC     (9)
#define VFD_DOT_MIC1    (44)
#define VFD_DOT_MIC2    (45)
#define VFD_DOT_PLAYB   (1)
#define VFD_DOT_PLAYA   (2)
#define VFD_DOT_REPALL  (0)
#define VFD_DOT_REPEAT  (3)
#define VFD_DOT_MINSEC  (64)
#define VFD_DOT_COLON   (100)
#define VFD_DOT_REMAIN  (72)
#define VFD_DOT_RAN     (56)
#define VFD_DOT_PGM     (24)
#define VFD_DOT_VCD20   (7)   
#define VFD_DOT_OVER    (84)
#define VFD_DOT_2R      (41)
#define VFD_DOT_1L      (42)
#define VFD_DOT_SPACE   (43)
#define VFD_DOT_INTRO   (40)

#define VFD_DOT_PGM01   (95)
#define VFD_DOT_PGM02   (94)
#define VFD_DOT_PGM03   (93)
#define VFD_DOT_PGM04   (92)
#define VFD_DOT_PGM05   (91)
#define VFD_DOT_PGM06   (90)
#define VFD_DOT_PGM07   (89)
#define VFD_DOT_PGM08   (88)
#define VFD_DOT_PGM09   (87)
#define VFD_DOT_PGM10   (86)
#define VFD_DOT_PGM11   (85)

#define VFDA_P0   2
#define VFDA_P1   4
#define VFDA_M0   6
#define VFDA_M1   7
#define VFDA_S0   8
#define VFDA_S1   9

const BYTE vfd_addr[6] ={ 2,4,6,7,8,9};

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_OVER,
};

void print_vfd_digital(BYTE no, BYTE data)
{
	vfd_mem[vfd_addr[no]] &= (~0xfe);
	vfd_mem[vfd_addr[no]] |= (vfd_digit[data]&0xfe);
}

void vfd_disc_turn(BYTE mode)
{
	static BYTE i = 7;

	if (play_state == VCD_STATE_STOP)  {
	   vfd_mem[3] |= 0xfe;
	   return;                
	}                 /*ZHX 032903*/

	if(i < 2)
	  i = 7;
	if(mode)
	{
		vfd_mem[3] |= 0xfe;
		vfd_mem[3] &= (~(1 << i ));
	}
	else
	{
		vfd_mem[3] |= 0xfe;
	}
	i--;
}

void vfd_cdtype(BYTE cd_types)
{
	switch (cd_types)
	{
		case CDVCD20:
		case CDVCD11:
		case CDVCD10:
			vfd_dot(VFD_DOT_ON, VFD_DOT_VCD);
			break;
		case CDDA:
			vfd_dot(VFD_DOT_ON, VFD_DOT_CD);
			break;
		case CDROM:
			vfd_dot(VFD_DOT_ON, VFD_DOT_MP3);
			break;
	}
}

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);
}

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)
{
	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;
#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);
	vfd_dot(VFD_DOT_ON, VFD_DOT_SPACE);
    }
}

#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);
#ifdef VFDECHO_DISPLAY
           if(VfdFlag==1) {
             if(IsKYSetup()) {
               print_vfd_digital(2, 13);
               print_vfd_digital(3, 14);
               print_vfd_digital(4, 21);
               print_vfd_digital(5, 35);
               }
             else {                   
               if(!vcx_echo){	
                 print_vfd_digital(0, 24);
                 print_vfd_digital(1, 15);
                }
               else if(vcx_echo==1) {
                 print_vfd_digital(0, 24);
                 print_vfd_digital(1, 23);
                } 
               print_vfd_digital(2, 14);
               print_vfd_digital(3, 12);
               print_vfd_digital(4, 17);
               print_vfd_digital(5, 24);
               }
            }
           else if(VfdFlag==2) {
               print_vfd_digital(2, 13);
               print_vfd_digital(3, 14);
               print_vfd_digital(4, 12);
               print_vfd_digital(5, 35);
            }
           else 
#endif
            {	
           print_vfd_digital(2, 30);
           print_vfd_digital(3, 37);
           print_vfd_digital(4, 21);
           print_vfd_digital(5, 35);
           }
}
#endif

void vfd_pause(void)
{
     static BYTE flash_play = 0;
     flash_play ++;
     if(flash_play > 3) flash_play = 0;
     vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
     vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
     if(flash_play/2)
        vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
     else
        vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
#ifdef VFDVOL_DISPLAY
     if(volFlag) {
        volFlag = 0;
        cd_disp_ss ++;
        vfd_show_time();
       }
#endif
}

void vfd_audio(void)
{
	switch (audio_channel)
	{
		case CH_LR:
			vfd_dot(VFD_DOT_ON, VFD_DOT_1L);
			vfd_dot(VFD_DOT_ON, VFD_DOT_2R);
			if(user_mute == C_ON)
			    {
				vfd_dot(VFD_DOT_OFF, VFD_DOT_1L);
				vfd_dot(VFD_DOT_OFF, VFD_DOT_2R);
			    }
			break;
#ifdef VOCAL_CANCEL
		case CH_AUTO_L:
#endif
		case CH_LL:
			vfd_dot(VFD_DOT_ON, VFD_DOT_1L);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_2R);
			if(user_mute == C_ON)
			    vfd_dot(VFD_DOT_OFF, VFD_DOT_1L);
			break;
#ifdef VOCAL_CANCEL
		case CH_AUTO_R:
#endif
		case CH_RR:
			vfd_dot(VFD_DOT_OFF, VFD_DOT_1L);
			vfd_dot(VFD_DOT_ON, VFD_DOT_2R);
			if(user_mute == C_ON)
                            vfd_dot(VFD_DOT_OFF, VFD_DOT_2R);
			break;
#ifdef VOCAL_CANCEL
		case CH_AUTO_LR:
			vfd_dot(VFD_DOT_ON, VFD_DOT_1L);
			vfd_dot(VFD_DOT_ON, VFD_DOT_2R);
			if(user_mute == C_ON)
			   {
			     vfd_dot(VFD_DOT_OFF, VFD_DOT_1L);
			     vfd_dot(VFD_DOT_OFF, VFD_DOT_2R);
			   }
			break;
#endif
	}

}

void vfd_format(void)
{
}

void vfd_playmode(void)
{
	if(IsPBCOn())
		vfd_dot(VFD_DOT_ON, VFD_DOT_PBC);
	else
		vfd_dot(VFD_DOT_OFF, VFD_DOT_PBC);
}

void vfd_repeat(void)
{
	switch (rep_ab_mode)
	{
		case REPEAT_FIND_A:
			vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
			vfd_dot(VFD_DOT_ON, VFD_DOT_PLAYA);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_PLAYB);
			break;
		case REPEAT_FIND_B:
			vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
			vfd_dot(VFD_DOT_ON, VFD_DOT_PLAYA);
			vfd_dot(VFD_DOT_ON, VFD_DOT_PLAYB);
			break;
		default:
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REPEAT);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_PLAYA);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_PLAYB);
			break;
	}
	switch (rep_mode)
	{
		case REPEAT_TRACK:
			vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
			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);
			break;
		default:
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REPEAT);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
			break;
	}
}

void vfd_refresh(void)
{
	vfd_playmode();
	vfd_format();
	vfd_cdtype(cd_type_loaded);
	vfd_audio();
}

void vfd_set_pgm(BYTE method)
{
	extern const BYTE vfd_prg[];
	BYTE    i, trk, prg_flag;

	trk = cd_trk_hi - cd_trk_lo;
	prg_flag = (method <= 12) ? method : 12;
	if(trk > 12)   trk = 12;
	for(i = 1; i <= trk; i++)
	{
		if (prg_flag == 0)
			vfd_mem[vfd_prg[i] >> 3] |= (1 << (vfd_prg[i] & 0x07));
		else if (--prg_flag == 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_set_remain(void)
{
	extern BYTE remain;

	switch (remain)
	{
		case REMAIN_DISC:
		case REMAIN_TRK:
			vfd_dot(VFD_DOT_ON, VFD_DOT_REMAIN);
			break;
		case REMAIN_OFF:
		case REMAIN_STOP:
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REMAIN);
			break;
	}
}

void vfd_normal_state(void)
{
  if(cd_type_loaded!=CDNODISK)
    {
     vfd_disc_turn(2);
     vfd_show_time();       
     if(ZHXTimer % 2)
        vfd_set_pgm(cd_disp_trk);
     vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
     vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
     if(prog_state != PROG_IDLE)
       vfd_dot(VFD_DOT_ON,VFD_DOT_PGM);
     else
       vfd_dot(VFD_DOT_OFF,VFD_DOT_PGM);
#ifdef  IR_INTRO_ON
       if(intro_osd_flag)                 //ZHX 033003
	  vfd_dot(VFD_DOT_ON, VFD_DOT_INTRO);
       else
	  vfd_dot(VFD_DOT_OFF, VFD_DOT_INTRO);
#endif
       if(IsKYRand())
         vfd_dot(VFD_DOT_ON, VFD_DOT_RAN);
       else
         vfd_dot(VFD_DOT_OFF, VFD_DOT_RAN);
       vfd_set_remain();
       if((bDiscType & NES_DISC)||(cd_type_loaded==CDROM)
#ifdef AX_ECHO_CTL
           ||!vcx_echo
#endif
       	) {
         vfd_dot(VFD_DOT_OFF,VFD_DOT_MIC1);
         vfd_dot(VFD_DOT_OFF,VFD_DOT_MIC2);
       	}
#ifdef AX_ECHO_CTL
       else if(vcx_echo) 
#else
       else
#endif
       	{ 
         vfd_dot(VFD_DOT_ON,VFD_DOT_MIC1);
         vfd_dot(VFD_DOT_ON,VFD_DOT_MIC2);
       	}
    } 
  else
    {
          init_vfd_clear(0);
          vfd_nodisc();
    }
}

void vfd_stop(void)
{
   //vfd_show_time();
   vfd_disc_turn(0);
   vfd_set_pgm(0);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_INTRO);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_RAN);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);    
   vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAYA);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAYB);
   if(!IsKYProg())
       vfd_dot(0, 24);         //ZHX 061503
   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)
{
	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);
        vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
	vfd_dot(VFD_DOT_ON, VFD_DOT_GAME);
}

void vfd_game_clear(void)
{
        vfd_disc_turn(2);
        vfd_refresh();
        vfd_dot(VFD_DOT_ON, VFD_DOT_SPACE);
        vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);//ZHX 062103 for gun
	vfd_dot(VFD_DOT_ON, VFD_DOT_GAME);
	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);
}


#endif/*__VFD_R_H*/

⌨️ 快捷键说明

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