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

📄 vfd63.h

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

/*
**	777777
**     2      6
**     2      6
**      111111     
**     3      5
**     3      5
**      444444     
*/

//ZHX 033003

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

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

#define VFD_DOT_DVD      (95)
#define VFD_DOT_DTS      (65)
#define VFD_DOT_AC3      (64)
#define VFD_DOT_ANGLE    (72)
#define VFD_DOT_LOCK     (66)
#define VFD_DOT_VCD      (93)
#define VFD_DOT_CD       (94)
#define VFD_DOT_MP3      (92)
#define VFD_DOT_MIC      (67)
#define VFD_DOT_REPALL   (71)
#define VFD_DOT_REPEAT   (70)
#define VFD_DOT_MINSEC   (7)
#define VFD_DOT_COLON    (23)
#define VFD_DOT_PAUSE    (68)
#define VFD_DOT_PLAY     (69)
#define VFD_DOT_PGM      (8)
#define VFD_DOT_TOTAL    (24)

#define VFDA_T0        6
#define VFDA_T1        7
#define VFDA_P0        4
#define VFDA_P1        5
#define VFDA_M0        3
#define VFDA_M1        0
#define VFDA_S0        1
#define VFDA_S1        9

const BYTE vfd_addr[9] = { 6, 7, 4, 5, 2, 3, 0, 1, 9};

void print_vfd_digital(BYTE no, BYTE data)
{
       if ((vfd_addr[no])%2) {
	     vfd_mem[vfd_addr[no]] &= (~0xfe);
	     vfd_mem[vfd_addr[no]] |= ((vfd_digit[data]<<1)&0xfe);
       	  }
       else {
	     vfd_mem[vfd_addr[no]] &= (~0x7f);
	     vfd_mem[vfd_addr[no]] |= (vfd_digit[data]&0x7f);
       	  }
}

void vfd_disc_turn(BYTE mode)
{
	static int i = 11;
        if(play_state==VCD_STATE_STOP) {
	        vfd_mem[10] = 0xff;
	        vfd_mem[11] |= 0x0f;
	        return;
        	}             //ZHX 061503
	if(i < 0)  i = 11;
	if(mode)
	{
	        vfd_mem[10] = 0xff;
	        vfd_mem[11] |= 0x0f;
                if (i > 7)
		    vfd_mem[11] &= (~(1 << ((i-8) % 8)));
                else
		    vfd_mem[10] &= (~(1 << (i % 8)));
	}
	else
	{
	        vfd_mem[10] = 0xff;
	        vfd_mem[11] |= 0x0f;
	}
	i--;
	switch (i)
	{
		case 1:
		case 5:
		case 9:
#ifdef VFDVOL_DISPLAY
                        if(!volFlag)
#endif
                         {
			   vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
			   vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
                         }
			break;
		case 3:
		case 7:
		case 11:
#ifdef VFDVOL_DISPLAY
                        if(!volFlag)
#endif
                          {
			   vfd_dot(VFD_DOT_OFF, VFD_DOT_MINSEC);
			   vfd_dot(VFD_DOT_OFF, VFD_DOT_COLON);
                          }
			break;
		case 0:
		case 4:
		case 8:
			if(IsKYProg())
				vfd_dot(VFD_DOT_ON, VFD_DOT_PGM);
			else
				vfd_dot(VFD_DOT_OFF, VFD_DOT_PGM);
		default:
			break;
	}
}

void vfd_cdtype(BYTE cd_types)
{
	switch (cd_types)
	{
		case CDVCD10:
		case CDVCD11:
		case CDVCD20:
			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(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;
        if(cd_disp_ss != cd_time_ss)
	{
		cd_time_ss = cd_disp_ss;
                if(cd_disp_trk > 99)
                   print_vfd_digital(0, cd_disp_trk/100);
                else	
                   print_vfd_digital(0, 20);
 	        print_vfd_digital(1, (cd_disp_trk%100) /10);
	        print_vfd_digital(2, (cd_disp_trk%100) % 10);
	        print_vfd_digital(3, 20);
		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);
	}
    }
}

#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_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((bDiscType & NES_DISC)||(cd_type_loaded==CDROM)) 
           vfd_dot(VFD_DOT_OFF,VFD_DOT_MIC);
       else  
           vfd_dot(VFD_DOT_ON,VFD_DOT_MIC);
    } 
  else
    {
          init_vfd_clear(0);
          vfd_nodisc();
    }
}

void vfd_stop(void)
{
   //vfd_show_time();
   vfd_disc_turn(0);
   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);
   if(cd_type_loaded==CDROM) {
        vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);         
        vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);         
        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);
   	}
   else {
       vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);         
       vfd_dot(VFD_DOT_ON,VFD_DOT_COLON);         
   	}
}

void vfd_audio(void)
{
}

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_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:										//repeat cancel
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REPEAT);
			vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
			break;
	}
}

void vfd_game(void)
{
        vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
        vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
	print_vfd_digital(0, 20);
	print_vfd_digital(1, GetCmdSrc(sys_cmd) / 10);
	print_vfd_digital(2, GetCmdSrc(sys_cmd) % 10);
	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);
}

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_COLON);
        vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);//ZHX 062103 for gun
	print_vfd_digital(0, 20);
	print_vfd_digital(1, 0);
	print_vfd_digital(2, 0);
	print_vfd_digital(3, 20);
	print_vfd_digital(3, 0);
	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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -