vfd97.h

来自「代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考」· C头文件 代码 · 共 400 行

H
400
字号
#ifndef	__VFD_R_H
#define	__VFD_R_H

//ZHX 061503

#define	VFD_7SEG_SD	(1<<6)
#define	VFD_7SEG_SE	(1<<5)
#define	VFD_7SEG_SC	(1<<4)
#define	VFD_7SEG_SG	(1<<3)
#define	VFD_7SEG_SF	(1<<2)
#define	VFD_7SEG_SB	(1<<1)
#define	VFD_7SEG_SA	(1<<0)

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

#define VFD_DOT_DVD     (44)
#define VFD_DOT_AC3     (73)
#define VFD_DOT_ANGLE   (95)
#define VFD_DOT_SVCD    (46) 
#define VFD_DOT_VCD     (45)
#define	VFD_DOT_L	(78)
#define	VFD_DOT_R	(76)
#define	VFD_DOT_STEREO	(77)
#define	VFD_DOT_PAUSE	(74)
#define	VFD_DOT_PLAY	(75)
#define	VFD_DOT_PBC	(79)
#define	VFD_DOT_RAN	(72)
#define	VFD_DOT_PGM	(94)
#define	VFD_DOT_PLAYB	(41)
#define	VFD_DOT_PLAYA	(42)
#define	VFD_DOT_REPALL	(40)
#define	VFD_DOT_REP1	(43)
#define	VFD_DOT_MINSEC	(39)
#define VFD_DOT_COLON   (71)
#define	VFD_DOT_TITLE	(15)
#define VFD_DOT_CHAP    (31) 

#define	VFDA_P0		1
#define	VFDA_P1		0
#define VFDA_M0         5
#define VFDA_M1         4
#define	VFDA_S0		7
#define	VFDA_S1		6

const BYTE vfd_addr[9] = { 1, 0, 3, 2, 4, 6, 8, 11, 10};

void print_vfd_digital(BYTE no, BYTE data)
{
	switch (no)
	{
		case 0:
		case 2:
		case 7:
			vfd_mem[vfd_addr[no]] &= (~0x3f);
			vfd_mem[vfd_addr[no] - 1] &= (~0x80);
			vfd_mem[vfd_addr[no]] |= ((vfd_digit[data] >> 1)&0x3f);
			if (vfd_digit[data] & 0x01)
		            vfd_mem[vfd_addr[no] - 1] |= (0x80);
			break;
		default:
			vfd_mem[vfd_addr[no]] &= (~0x7f);
			vfd_mem[vfd_addr[no]] |= (vfd_digit[data]&0x7f);
			break;
	}
}

void vfd_disc_turn(BYTE mode)
{
	static int i = 0;
	
        if(play_state==VCD_STATE_STOP) {
		vfd_mem[7] = 0x7f;
		return;
           }                     //ZHX 061503
	if(i > 5)   i = 0;
	if(mode)
	{
		vfd_mem[7] = 0x7f;
		vfd_mem[7] &= (~(1 << i));
	}
	else
	{
		vfd_mem[7] = 0x7f;
	}
	i++;

	if (i % 2) {
#ifdef VFDVOL_DISPLAY
            if(!volFlag)
#endif
             {
	       vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
	       vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
             }
	    if(IsPBCOn())
		vfd_dot(VFD_DOT_ON, VFD_DOT_PBC);
	    else
		vfd_dot(VFD_DOT_OFF, VFD_DOT_PBC);
           }
       else {
#ifdef VFDVOL_DISPLAY
            if(!volFlag)
#endif
             {
	       vfd_dot(VFD_DOT_OFF, VFD_DOT_MINSEC);
	       vfd_dot(VFD_DOT_OFF, VFD_DOT_COLON);
             }
	    if(IsKYRand())
		vfd_dot(VFD_DOT_ON, VFD_DOT_RAN);
	    else
		vfd_dot(VFD_DOT_OFF, VFD_DOT_RAN);
	}
}

void vfd_cdtype(BYTE cd_types)
{
	switch (cd_types)
	{
		case CDVCD10:
		case CDVCD11:
		case CDVCD20:
			vfd_dot(VFD_DOT_ON, VFD_DOT_VCD);
			break;
                default:
			break;
	}
	vfd_audio();
        if(!(bDiscType & NES_DISC)){                  //ZHX 062303
            vfd_dot(VFD_DOT_ON, VFD_DOT_TITLE);
            if (cd_type_loaded != CDROM) {
	        print_vfd_digital(0, cd_total_trk() / 10);
	        print_vfd_digital(1, cd_total_trk() % 10);
              }
           else {
	       print_vfd_digital(0, Gmem.gmp3.mp3_dir_now / 10);
	       print_vfd_digital(1, Gmem.gmp3.mp3_dir_now % 10);
             }
        }
}

void vfd_close(void)
{
	print_vfd_digital(4, 12);
	print_vfd_digital(5, 21);
	print_vfd_digital(6, 24);
	print_vfd_digital(7, 28);
	print_vfd_digital(8, 14);
}

void vfd_open(void)
{
	print_vfd_digital(4, 24);
	print_vfd_digital(5, 25);
	print_vfd_digital(6, 14);
	print_vfd_digital(7, 23);
}

void vfd_nodisc(void)
{
	print_vfd_digital(2, 23);
	print_vfd_digital(3, 24);
	print_vfd_digital(5, 13);
	print_vfd_digital(6, 18);
	print_vfd_digital(7, 28);
	print_vfd_digital(8, 12);
}

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

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;
          else if(cd_disp_ss != cd_time_ss)
	     {
		cd_time_ss = cd_disp_ss;
		print_vfd_digital(2, cd_disp_trk / 10);
		print_vfd_digital(3, cd_disp_trk % 10);
                print_vfd_digital(4, cd_disp_mm / 60);
		print_vfd_digital(5, (cd_disp_mm % 60) / 10);
		print_vfd_digital(6, cd_disp_mm % 10);
		print_vfd_digital(7, cd_disp_ss / 10);
		print_vfd_digital(8, cd_disp_ss % 10);
	     }
           if(!(bDiscType&NES_DISC))
              vfd_dot(VFD_DOT_ON, VFD_DOT_CHAP);
        }
}

#ifdef VFDVOL_DISPLAY
void vfd_vol_display(BYTE volNum)
{
           vfd_dot(VFD_DOT_ON,VFD_DOT_COLON);          
           vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);          
           print_vfd_digital(4, 30);
           print_vfd_digital(5, 37);
           print_vfd_digital(6, 21);
           print_vfd_digital(7, volNum/10);
           print_vfd_digital(8, volNum%10);
}
#endif

void vfd_audio(void)
{
	switch (audio_channel)
	{
		case CH_LR:								//STEREO
			vfd_dot(VFD_DOT_ON, VFD_DOT_L);
			vfd_dot(VFD_DOT_ON, VFD_DOT_R);
			vfd_dot(VFD_DOT_ON, VFD_DOT_STEREO);
			break;
#ifdef VOCAL_CANCEL
		case CH_AUTO_L:
#endif
		case CH_LL:
			vfd_dot(VFD_DOT_ON, VFD_DOT_L);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_R);
			vfd_dot(VFD_DOT_ON, VFD_DOT_STEREO);
			break;
#ifdef VOCAL_CANCEL
		case CH_AUTO_R:
#endif
		case CH_RR:
			vfd_dot(VFD_DOT_OFF, VFD_DOT_L);
			vfd_dot(VFD_DOT_ON, VFD_DOT_R);
			vfd_dot(VFD_DOT_ON, VFD_DOT_STEREO);
			break;
	}
}

void vfd_format(void)
{

}

void vfd_playmode(void)
{

}

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_COLON);
     vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
     vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY); 
#else
     vfd_dot(VFD_DOT_ON,VFD_DOT_COLON);
     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_PLAYA);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_PLAYB);
			break;
		case REPEAT_FIND_B:
			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_PLAYA);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_PLAYB);
	}
	switch (rep_mode)
	{
		case REPEAT_TRACK:
			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_REP1);
			vfd_dot(VFD_DOT_ON, VFD_DOT_REPALL);
			break;
		default:										//repeat cancel
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REP1);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
			break;
	}

}

void vfd_normal_state(void)
{
  if(cd_type_loaded!=CDNODISK)
    {
       vfd_disc_turn(2);
       vfd_show_time();         
       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);
    } 
  else
    {
          init_vfd_clear(0);
          vfd_nodisc();
    }
}

void vfd_stop(void)
{
   //vfd_show_time();
   vfd_disc_turn(0);
   if(!IsKYProg())
       vfd_dot(VFD_DOT_OFF, VFD_DOT_PGM);         //ZHX 061503
   vfd_dot(VFD_DOT_OFF, VFD_DOT_RAN);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);         
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);         
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);         
   vfd_dot(VFD_DOT_OFF,VFD_DOT_REP1);         
   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(cd_type_loaded==CDROM) {
        vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);         
        vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);         
        vfd_dot(VFD_DOT_OFF,VFD_DOT_TITLE);         
        vfd_dot(VFD_DOT_OFF,VFD_DOT_CHAP);         
        print_vfd_digital(0, 20);
        print_vfd_digital(1, 25);
        print_vfd_digital(2, 3);
        print_vfd_digital(3, 20);
        print_vfd_digital(4, 0);
        print_vfd_digital(5, Gmem.gmp3.iso9660_file_cnt/100);
        print_vfd_digital(6, (Gmem.gmp3.iso9660_file_cnt%100)/10);
        print_vfd_digital(7, Gmem.gmp3.iso9660_file_cnt%10);
        print_vfd_digital(8, 20);
   	}
}

void vfd_game(void)
{
	print_vfd_digital(0, 20);
	print_vfd_digital(1, 20);
	print_vfd_digital(2, GetCmdSrc(sys_cmd) / 10);
	print_vfd_digital(3, GetCmdSrc(sys_cmd) % 10);
	print_vfd_digital(4, 0);
	print_vfd_digital(5, 0);
	print_vfd_digital(6, 0);
	print_vfd_digital(7, 0);
	print_vfd_digital(8, 0);
}

void vfd_game_clear(void)
{
        vfd_disc_turn(2);
        vfd_refresh();
        vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
        vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);//ZHX 062103 for gun
	print_vfd_digital(0, 20);
	print_vfd_digital(1, 20);
	print_vfd_digital(2, 20);
	print_vfd_digital(3, 20);
	print_vfd_digital(4, 0);
	print_vfd_digital(5, 0);
	print_vfd_digital(6, 0);
	print_vfd_digital(7, 0);
	print_vfd_digital(8, 0);
}


#endif/*__VFD_R_H*/

⌨️ 快捷键说明

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