vfd_eq.h

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

H
446
字号
#ifndef __VFD_R_H
#define __VFD_R_H

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

#define VFD_EQ_MAX 4

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

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

//#define VFD_DOT_MIC1    (16)
//#define VFD_DOT_MIC2    (17)
#define VFD_DOT_MIC (72)
#define VFD_DOT_MP3     (88)
#define VFD_DOT_SVCD    (89)
#define VFD_DOT_VCD     (90)
#define VFD_DOT_CD      (91)
#define VFD_DOT_MINUS   (100)
#define VFD_DOT_PAL     (100)
#define VFD_DOT_NTSC    (100)
#define VFD_DOT_MEM     (100)
#define VFD_DOT_PLAYB   (100)
#define VFD_DOT_PLAYA   (100)
#define VFD_DOT_REPALL  (94)
#define VFD_DOT_REP1    (100)
#define VFD_DOT_REPEAT  (95)
#define VFD_DOT_MINSEC  (100)
#define VFD_DOT_MINSEC1 (39)
#define VFD_DOT_MINSEC2 (47)
#define VFD_DOT_MIN     (100)
#define VFD_DOT_SEC     (100)
#define VFD_DOT_COLON   (100)
#define VFD_DOT_DASH    (100)
#define VFD_DOT_RESUME  (100)
#define VFD_DOT_REMAIN  (100)
#define VFD_DOT_PAUSE   (93)
#define VFD_DOT_PLAY    (92)
#define VFD_DOT_PBC     (100)
#define VFD_DOT_RAN     (100)
#define VFD_DOT_PGM     (87)
#define VFD_DOT_VCD20   (100)
#define VFD_DOT_OVER    (100)
#define VFD_DOT_2R      (55)
#define VFD_DOT_1L      (63)
#define VFD_DOT_TIME    (100)
#define VFD_DOT_SPACE   (100)

#define VFD_DOT_INTRO   (100)
#define VFD_DOT_PGM01   (100)
#define VFD_DOT_PGM02   (100)
#define VFD_DOT_PGM03   (100)
#define VFD_DOT_PGM04   (100)
#define VFD_DOT_PGM05   (100)
#define VFD_DOT_PGM06   (100)
#define VFD_DOT_PGM07   (100)
#define VFD_DOT_PGM08   (100)
#define VFD_DOT_PGM09   (100)
#define VFD_DOT_PGM10   (100)
#define VFD_DOT_PGM11   (100)
#define VFD_DOT_PGM12   (100)
#define VFD_DOT_PGM13   (100)
#define VFD_DOT_PGM14   (100)
#define VFD_DOT_PGM15   (100)
#define VFD_DOT_PGM16   (100)

//#define VFDA_P0     10       
#define VFDA_P1     8
#define VFDA_M0     7
#define VFDA_M1     6
#define VFDA_S0     5
#define VFDA_S1     4

BYTE vfd_eq_display;    //jack added 02/12/15
#define VFD_EQ_MAX 4
BYTE vfd_eq[VFD_EQ_MAX];
const BYTE vfd_addr[5] = {8,7,6,5,4};
void print_vfd_digital(BYTE no,BYTE data)
{
      if(no<5)
       {
             vfd_mem[vfd_addr[no]]&=(~0x7f);
             vfd_mem[vfd_addr[no]]|=(vfd_digit[data]);
       }
}

void vfd_disc_turn(BYTE mode)
{
     static BYTE i=8;
     if(i<1)
       i=8;
     if(mode==2)
       {
         vfd_mem[10]=0x3f;
         vfd_mem[10]&=(~(1<<(i%8)));
     i--;
     
     //vfd_refresh();

     switch(i)
      {
          case 1:
                 vfd_dot(VFD_DOT_ON,VFD_DOT_COLON);
                 break;
          case 4:
                 vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);
          default:
               break; 
      }
     } 
     else if(mode==1)       
       {
         vfd_mem[10]=0x3f;         
         vfd_dot(VFD_DOT_ON,VFD_DOT_COLON);
       } 
       else if(mode==0)
       {
         vfd_mem[10]=0x3f;         
         vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);
       }
}

void vfd_cdtype(BYTE cd_types)
{
      switch(cd_types)
       {
            case CDCVD:
            case CDSVCD:
                 vfd_dot(VFD_DOT_ON,VFD_DOT_SVCD);
                 break;
            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 CDVCD30:
                 break;
            case CDROM:                         
                 vfd_dot(VFD_DOT_ON,VFD_DOT_MP3);
                 break;
       }
}

void vfd_close(void)
{
       print_vfd_digital(0,12);
       print_vfd_digital(1,21);
       print_vfd_digital(2,24);
       print_vfd_digital(3,28);
       print_vfd_digital(4,14);
}


void vfd_readtoc(void)
{
#if 0
       int i;
       init_vfd_clear(0);
       vfd_disc_turn(0);
       for(i=0;i<5;i++)
            vfd_mem[vfd_addr[i]]|=VFD_7SEG_SG;
       
#endif       
}

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(1,24);
       print_vfd_digital(2,25);
       print_vfd_digital(3,14);
       print_vfd_digital(4,23);
       #ifdef VFD_EQ
       vfd_eq_display = 0; 
       #endif
}

void vfd_show_time(void)
{
       static BYTE cd_time_ss=0xff;//0;  wyf 2-4-1 15:57       
       if(cd_disp_ss!=cd_time_ss)
       {
         cd_time_ss= cd_disp_ss;
         //print_vfd_digital(0, cd_disp_trk/10);
         if(cd_disp_trk<16)
          print_vfd_digital(0, cd_disp_trk);
         else 
          vfd_mem[vfd_addr[0]]&=(~0x7f);
         print_vfd_digital(1, cd_disp_mm/10);
         print_vfd_digital(2, cd_disp_mm%10);
         vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC1);
         vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC2);
         print_vfd_digital(3, cd_disp_ss/10);
         print_vfd_digital(4, cd_disp_ss%10);
       }
       else 
       {
         vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC1);
         vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC2);
       }    
}

void vfd_pause(void)
{
     vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
     vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
     vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC1);
     vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC2);        
}

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);
                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);
                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);
                break;
#ifdef VOCAL_CANCEL
    case CH_AUTO_LR:
                vfd_dot(VFD_DOT_ON,VFD_DOT_1L);
                vfd_dot(VFD_DOT_ON,VFD_DOT_2R);
                break;
#endif      
  }
}

void vfd_format(void)
{
     if(tv_format==TV_NTSC)
     {
        vfd_dot(VFD_DOT_ON,VFD_DOT_NTSC);
        vfd_dot(VFD_DOT_OFF,VFD_DOT_PAL);
     }      
     else       
     if(tv_format==TV_PAL)
     {
        vfd_dot(VFD_DOT_ON,VFD_DOT_PAL);
        vfd_dot(VFD_DOT_OFF,VFD_DOT_NTSC);
     }      
}

void vfd_playmode(void)
{
  // vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
   //vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
   
   if(cd_type_loaded==CDROM||cd_type_loaded==CDDA) 
   {
    vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);   
    return;
   } 
   else
   {   
    if(IsPBCOn ())
        vfd_dot(VFD_DOT_ON,VFD_DOT_PBC);
    else
        vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);   
   }
   
   
}

void vfd_repeat(void)
{
              if(rep_mode==REPEAT_TRACK)
                   { 
                    vfd_dot(VFD_DOT_ON,VFD_DOT_REP1);
                    vfd_dot(VFD_DOT_ON,VFD_DOT_REPEAT);
                    vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
                   } 
               else if(rep_mode==REPEAT_DISC)
                   {
                    vfd_dot(VFD_DOT_ON,VFD_DOT_REP1);
                    vfd_dot(VFD_DOT_ON,VFD_DOT_REPEAT);
                    vfd_dot(VFD_DOT_ON,VFD_DOT_REPALL);
                   }
               else             //repeat cancel
                   {
                    vfd_dot(VFD_DOT_OFF,VFD_DOT_REP1);
                    vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
                    vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
                   }
    
      #if 0
      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); 
                       
            }
      #endif      
  return;       
}


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


void vfd_stop(void)
{
   vfd_show_time();
   vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC1);
   vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC2);         
   
   if(IsKYProg())
     vfd_dot(VFD_DOT_ON,VFD_DOT_PGM);
   else
     vfd_dot(VFD_DOT_OFF,VFD_DOT_PGM);
          
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);    
   vfd_dot(VFD_DOT_OFF,VFD_DOT_REP1);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
   #ifdef VFD_EQ
   vfd_eq_display = 0; 
   #endif
   return;  
}

void vfd_normal_state(void)
{
  //int mic_on_off_flag;
  //UINT16 eq[8]; 
  if(cd_type_loaded != CDNODISK)
    {
     if(Gmem.gmp3.gifsFunc!=FS_FUNC_JPEG)    
       {
          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 == PLAY_PROGRAM)
         vfd_dot(VFD_DOT_ON,VFD_DOT_PGM);
       
       if(au_get_mic_mode() != MIC_OFF)
         vfd_dot(VFD_DOT_ON,VFD_DOT_MIC);
       else 
         vfd_dot(VFD_DOT_OFF,VFD_DOT_MIC);              
    }   
    else
    {
          init_vfd_clear(0);
          vfd_nodisc();
    }
   return; 
}     




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

void vfd_game_clear(void)
{
    print_vfd_digital(0, 0);
    print_vfd_digital(1, 0);
}

void vfd_jpeg_disp(void)
{//ok!
       init_vfd_clear(0);     
       print_vfd_digital(1,cd_disp_trk/1000);
       print_vfd_digital(2,(cd_disp_trk / 100) % 10);
       print_vfd_digital(3,(cd_disp_trk / 10) % 10);
       print_vfd_digital(4,cd_disp_trk % 10);      
       
       vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
       vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
}

#endif/*__VFD_R_H*/

⌨️ 快捷键说明

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