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 + -
显示快捷键?