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

📄 bv309.h

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

//ZHX 033103

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

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

#define VFD_DOT_MP3     (114)
#define VFD_DOT_VCD     (115)
#define VFD_DOT_CD      (6)
#define VFD_DOT_MINUS   (6)
#define VFD_DOT_PAL     (17)
#define VFD_DOT_NTSC    (18)
#define VFD_DOT_REPALL  (6)
#define VFD_DOT_REP1    (63)
#define VFD_DOT_REPEAT  (6)
#define VFD_DOT_MINSEC  (51)
#define VFD_DOT_MIN 	(6)
#define VFD_DOT_SEC 	(6)
#define VFD_DOT_PAUSE   (112)
#define VFD_DOT_PLAY    (113)
#define VFD_DOT_PBC     (75)
#define VFD_DOT_2R      (19)
#define VFD_DOT_1L      (35)

#define VFD_DOT_PGM 	(6)
#define VFD_DOT_HUNDRED (107)

#define VFDA_P0    12	     
#define VFDA_P1    10
#define VFDA_M0    8
#define VFDA_M1    7
#define VFDA_S0    5
#define VFDA_S1    3

const BYTE vfd_disc[] = {116,117,118,119,123,122,121,120};
const BYTE vfd_addr[6] = {12,10,8,7,5,3};
void vfd_mem_clear(void);
void vfd_dance_turn(void);
BYTE dance_num;

void print_vfd_digital(BYTE no,BYTE data)
{       
  if (no<6) {
      if (no == 3) {
         vfd_mem[7]&=(~0x7f);
         vfd_mem[7]|=(vfd_digit[data]&0x7f);
       }
      else 
       {
         vfd_mem[vfd_addr[no]+1]&=(~0x07);
         vfd_mem[vfd_addr[no]+1]|=((vfd_digit[data]>>4)&0x07);
         vfd_mem[vfd_addr[no]]&=(~0x0f);
         vfd_mem[vfd_addr[no]]|=(vfd_digit[data]&0x0f);
       } 
     } 
}

void vfd_disc_turn(BYTE mode)
{

     static int j=3;
     
     if (mode==2) 
      {
        vfd_dance_turn();
        vfd_mem[14]|=0xf0;
        vfd_mem[15]|=0x0f;
        vfd_dot(VFD_DOT_OFF,vfd_disc[j]);     
        vfd_dot(VFD_DOT_OFF,vfd_disc[j+4]);     
        j--;
        if(j < 0)
          j=3;
      }
     else if (mode==1)
      {
     	vfd_mem[14]|=0xf0;
        vfd_mem[15]|=0x0f;
      }
     else 
      {
        vfd_mem[0] = 0;
        vfd_mem[1] = 0;
     	vfd_mem[14]&=0xf0;
        vfd_mem[15]&=0x0f;
      }
     return;  

}

void vfd_dance_turn(void)
{
    dance_num++;
    if(dance_num > 11)
    	dance_num = 0;
    switch (dance_num/3) {
    	case 0:
                vfd_mem[0] = 0;
                vfd_mem[1] = 0;
    		vfd_mem[0]|=0x03;
    		vfd_mem[1]|=0;
    		break;
    	case 1:
                vfd_mem[0] = 0;
                vfd_mem[1] = 0;
    		vfd_mem[0]|=0x01;
    		vfd_mem[1]|=0x07;
    		break;
    	case 2:
                vfd_mem[0] = 0;
                vfd_mem[1] = 0;
    		vfd_mem[0]|=0x03;
    		vfd_mem[1]|=0;
    		break;
    	case 3:
                vfd_mem[0] = 0;
                vfd_mem[1] = 0;
    		vfd_mem[0]|=0x01;
    		vfd_mem[1]|=0x0b;
    		break;
    	}    	
}

void vfd_cdtype(BYTE cd_types)
{
     switch(cd_types)
       {
         case CDCVD:
         case CDSVCD:
         case CDVCD10:
         case CDVCD11:
         case CDVCD20:
         case CDVCD30:
              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(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)
{
       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);
#ifdef VFDECHO_DISPLAY
           if(VfdFlag==1) {
             if(IsKYSetup()) {
               print_vfd_digital(2, 13);
               print_vfd_digital(3, 14);
               print_vfd_digital(4, 21);
               print_vfd_digital(5, 35);
               }
             else {                   
               if(!vcx_echo){	
                 print_vfd_digital(0, 24);
                 print_vfd_digital(1, 15);
                }
               else if(vcx_echo==1) {
                 print_vfd_digital(0, 24);
                 print_vfd_digital(1, 23);
                } 
               print_vfd_digital(2, 14);
               print_vfd_digital(3, 12);
               print_vfd_digital(4, 17);
               print_vfd_digital(5, 24);
               }
            }
           else if(VfdFlag==2) {
               print_vfd_digital(2, 13);
               print_vfd_digital(3, 14);
               print_vfd_digital(4, 12);
               print_vfd_digital(5, 35);
            }
           else 
#endif
            {	
           print_vfd_digital(2, 30);
           print_vfd_digital(3, 37);
           print_vfd_digital(4, 21);
           print_vfd_digital(5, 35);
          }
}
#endif

void vfd_pause(void)
{
     static BYTE flash_play = 0;
     flash_play ++;
     if(flash_play > 3) flash_play = 0;
     vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
     vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY); 
     if(flash_play/2)
     vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
     else
        vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE); 
     vfd_disc_turn(1);
#ifdef VFDVOL_DISPLAY
     if(volFlag) {
        volFlag = 0;
        cd_disp_ss ++;
        vfd_show_time();
       }
#endif
}

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_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)
{

  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);
    } 
 else
    {
          vfd_mem_clear();
          vfd_nodisc();
    }
   return; 
}


void vfd_stop(void)
{
   vfd_show_time();
   vfd_refresh();
   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);
   if(cd_type_loaded==CDROM) {
       	   vfd_dot(VFD_DOT_OFF, VFD_DOT_HUNDRED);
           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_disc_turn(2);
         vfd_refresh();
         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)
{ 
  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 + -