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

📄 vfd_1621_disc.h

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

#define VFD_7SEG_SAR     (1<<0) 
#define VFD_7SEG_SBR     (1<<1) 
#define VFD_7SEG_SCR     (1<<3)
#define VFD_7SEG_SDL     (1<<3)
#define VFD_7SEG_SEL     (1<<2)
#define VFD_7SEG_SFL     (1<<1)
#define VFD_7SEG_SGR     (1<<2)

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

#define VFD_DOT_MP3     (72)
#define VFD_DOT_VCD     (122)
#define VFD_DOT_CD      (121)
#define VFD_DOT_MINUS   (59)
#define VFD_DOT_PAL     (118)
#define VFD_DOT_NTSC    (117)
#define VFD_DOT_REPALL  (255)
#define VFD_DOT_REP1    (255)
#define VFD_DOT_REPEAT  (16)
#define VFD_DOT_MINSEC  (88)
#define VFD_DOT_MIN     (104)
#define VFD_DOT_SEC     (116)
#define VFD_DOT_PAUSE   (18)
#define VFD_DOT_PLAY    (17)
#define VFD_DOT_PBC     (19)
#define VFD_DOT_2R      (56)
#define VFD_DOT_1L      (57)

#define VFD_DOT_PGM     (58)
#define VFD_DOT_HUNDRED (24)


#define VFDA_P0L    3        
#define VFDA_P0R    4   
#define VFDA_P1L    5
#define VFDA_P1R    6
#define VFDA_M0L    7
#define VFDA_M0R    8
#define VFDA_M1L    9
#define VFDA_M1R    10
#define VFDA_S0L    11
#define VFDA_S0R    12
#define VFDA_S1L    13
#define VFDA_S1R    14

const BYTE vfd_disc[] = {0,3,2,1,8,9,10,11};
const BYTE vfd_addr[] = {4,3,6,5,8,7,10,9,12,11,14,13};
void print_vfd_digital(BYTE no,BYTE data)
{       
         if (no%2==0)
        {
             vfd_mem[vfd_addr[no]]&=(~0x0f);
             vfd_mem[vfd_addr[no]]|=(vfd_digit[data]);
        }
        else 
        {
             if(no==5)
             {
                 vfd_mem[vfd_addr[no]]&=(~0xe0);
                 vfd_mem[vfd_addr[no]]|=(vfd_digit[data]<<4);
             } 
             else
             {
                 vfd_mem[vfd_addr[no]]&=(~0x0e);
                 vfd_mem[vfd_addr[no]]|=(vfd_digit[data]);
             }        
        } 
}

void vfd_disc_turn(BYTE mode)
{
     static BYTE j=0;
     
     if (mode==2) 
     {
        vfd_mem[0]|=0x0f;
        vfd_mem[1]|=0x0f;
        vfd_dot(VFD_DOT_OFF,vfd_disc[j++]);     
        if(j>=8)
          j=0;
     }
     else if (mode==1)
     {
        vfd_mem[0]|=0x0f;
        vfd_mem[1]|=0x0f;
     }
     else 
     {
        vfd_mem[0]&=0xf0;
        vfd_mem[1]&=0xf0;
     }
     return;  
}

void vfd_cdtype(BYTE cd_types)
{
      switch(cd_types)
       {
            #if 0
            case CDCVD:
            case CDSVCD:
                 vfd_dot(VFD_DOT_ON,VFD_DOT_SVCD);
                 break;
             #endif    
            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)
{//ok!
       print_vfd_digital(2,12*2);
       print_vfd_digital(3,12*2+1);
       print_vfd_digital(4,21*2);
       print_vfd_digital(5,21*2+1);
       print_vfd_digital(6,24*2);
       print_vfd_digital(7,24*2+1);
       print_vfd_digital(8,28*2);
       print_vfd_digital(9,28*2+1);
       print_vfd_digital(10,14*2);
       print_vfd_digital(11,14*2+1);
       vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
       
}
void vfd_readtoc(void)
{
       init_vfd_clear(0);
       vfd_disc_turn(0);
        print_vfd_digital(4,54);
       print_vfd_digital(5,55);
       print_vfd_digital(6,28);
       print_vfd_digital(7,29);
       print_vfd_digital(8,20);
       print_vfd_digital(9,21);
       print_vfd_digital(10,26);
       print_vfd_digital(11,27);
       return;
}

void vfd_nodisc(void)
{//ok!
       print_vfd_digital(0,23*2);
       print_vfd_digital(1,23*2+1);          
       print_vfd_digital(2,24*2);
       print_vfd_digital(3,24*2+1);
       print_vfd_digital(4,13*2);
       print_vfd_digital(5,13*2+1);
       print_vfd_digital(6,18*2);
       print_vfd_digital(7,18*2+1);
       print_vfd_digital(8,28*2);
       print_vfd_digital(9,28*2+1);
       print_vfd_digital(10,12*2);
       print_vfd_digital(11,12*2+1);
}


void vfd_open(void)
{//ok!
       print_vfd_digital(4,24*2);
       print_vfd_digital(5,24*2+1);
       print_vfd_digital(6,25*2);
       print_vfd_digital(7,25*2+1);
       print_vfd_digital(8,14*2);
       print_vfd_digital(9,14*2+1);
       print_vfd_digital(10,23*2);
       print_vfd_digital(11,23*2+1);
}

void vfd_show_time(void)
{//ok!
       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;
         if ((cd_disp_trk/100)>0)
           vfd_dot(VFD_DOT_ON,VFD_DOT_HUNDRED);        
         if((cd_disp_trk/10)==0)
          {
            print_vfd_digital(0, cd_disp_trk/10);
            print_vfd_digital(1, cd_disp_trk/10+1);
          }
         else
          {
            print_vfd_digital(0, (cd_disp_trk/10)*2);
            print_vfd_digital(1, (cd_disp_trk/10)*2+1);
          }
         if((cd_disp_trk%10)==0)
         { 
           print_vfd_digital(2, cd_disp_trk%10);
           print_vfd_digital(3, cd_disp_trk%10+1);
         }
         else
         { 
           print_vfd_digital(2, (cd_disp_trk%10)*2);
           print_vfd_digital(3, (cd_disp_trk%10)*2+1);
         }
         if((cd_disp_mm/10)==0)
         {
           print_vfd_digital(4, cd_disp_mm/10);
           print_vfd_digital(5, cd_disp_mm/10+1);
         }
         else
         {
           print_vfd_digital(4, (cd_disp_mm/10)*2);
           print_vfd_digital(5, (cd_disp_mm/10)*2+1);
         }
         if((cd_disp_mm%10)==0)
         {
           print_vfd_digital(6, cd_disp_mm%10);
           print_vfd_digital(7, cd_disp_mm%10+1);
         }
         else
         {
           print_vfd_digital(6, (cd_disp_mm%10)*2);
           print_vfd_digital(7, (cd_disp_mm%10)*2+1);
         }
         if((cd_disp_ss/10)==0)
         {
           print_vfd_digital(8,cd_disp_ss/10);
           print_vfd_digital(9,cd_disp_ss/10+1);
         }
         else
         {
           print_vfd_digital(8,(cd_disp_ss/10)*2);
           print_vfd_digital(9,(cd_disp_ss/10)*2+1);
         }
         if((cd_disp_ss%10)==0)
         {         
           print_vfd_digital(10,cd_disp_ss%10);
           print_vfd_digital(11,cd_disp_ss%10+1);
         }
         else
         {         
           print_vfd_digital(10,(cd_disp_ss%10)*2);
           print_vfd_digital(11,(cd_disp_ss%10)*2+1);
         }
        
        vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);          
       }
       else
        vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
       return;  
}

void vfd_pause(void)
{
     vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
     vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY); 
     vfd_disc_turn(1);
     return;       
}

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)
{
   if(cd_type_loaded==CDROM||cd_type_loaded==CDDA)  //wyf 2-6-25 9:02.
   {
    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)
{

     switch (rep_mode)
      {
          case 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);
               break;
          case REPEAT_DISC:
               if(cd_type_loaded==CDROM)
                 vfd_dot(VFD_DOT_ON,VFD_DOT_REPALL);
               else 
                 vfd_dot(VFD_DOT_ON,VFD_DOT_REPALL);
               //vfd_dot(VFD_DOT_ON,VFD_DOT_REP1);
                vfd_dot(VFD_DOT_ON,VFD_DOT_REPEAT);
               
               break;
          default:       //repeat cancel
               vfd_dot(VFD_DOT_OFF,VFD_DOT_REP1);
               vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
               vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
               break;
          }             
}


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

void vfd_normal_state(void)
{
  //int mic_on_off_flag;
   
  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 0
       if(au_get_mic_mode()!=MIC_OFF)
         vfd_dot(VFD_DOT_ON,VFD_DOT_MIC);
       else 
         vfd_dot(VFD_DOT_OFF,VFD_DOT_MIC);
       #endif
       //AVAPI_control(C_WRITE,AVAPI_SPECTRUM,C_ON);
       //vfd_show_eq(1);  
    } 
  else
    {
          vfd_mem_clear();
          vfd_nodisc();
    }
   return; 
}




void vfd_stop(void)
{
   vfd_show_time();
   vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);         
   
   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);
   return;  
}
void vfd_game(void)
{
     print_vfd_digital(0, 0);
     print_vfd_digital(1, 1);
         print_vfd_digital(2, (GetCmdSrc(sys_cmd)/10)*2);
         print_vfd_digital(3, (GetCmdSrc(sys_cmd)/10)*2+1);
         print_vfd_digital(4, (GetCmdSrc(sys_cmd)%10)*2);
         print_vfd_digital(5, (GetCmdSrc(sys_cmd)%10)*2+1);
         print_vfd_digital(6, 0);
         print_vfd_digital(7, 1);
         print_vfd_digital(8, 0);
         print_vfd_digital(9, 1);
         print_vfd_digital(10, 0);
         print_vfd_digital(10, 1);
         
}

void vfd_game_clear(void)
{
       print_vfd_digital(2,0);
       print_vfd_digital(3,1);
       print_vfd_digital(4,0);
       print_vfd_digital(5,1);
}

void vfd_jpeg_disp(void)
{//ok!
       vfd_mem_clear();
       print_vfd_digital(0,26*2);
       print_vfd_digital(1,26*2+1);
       print_vfd_digital(2,26*2);
       print_vfd_digital(3,26*2+1);
       print_vfd_digital(4,(cd_disp_trk/1000)*2);
       print_vfd_digital(5,(cd_disp_trk/1000)*2+1);
       print_vfd_digital(6,((cd_disp_trk/100)%10)*2);
       print_vfd_digital(7,((cd_disp_trk/100)%10)*2+1);
       print_vfd_digital(8,((cd_disp_trk/10)%10)*2);
       print_vfd_digital(9,((cd_disp_trk/10)%10)*2+1);
       print_vfd_digital(10,(cd_disp_trk%10)*2);
       print_vfd_digital(11,(cd_disp_trk%10)*2+1);
       
       vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
       vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
}

void vfd_mem_clear(void)
{ 
  int i=0;
  
  for(i=0;i<16;i++)
  {
    vfd_mem[i] = 0; 
  } 
    
}

#endif/*__VFD_R_H*/

⌨️ 快捷键说明

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