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

📄 vfd_51.h

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

/*
**   66666
**     4      5
**     4      5
**     33333     
**     1      2
**     1      2
**     00000     
*/
/*         _________________________________________________________    */
/*         | DVD   dts   SVCD     DD    (camer)       PBC  MP3      |   */
/*         |  __         ___   ___    ___    ___   ___   ___   ___  |   */
/*         | /  \       |   | |   |  |   |. |   | |   |.|   | |   | |   */
/*         ||    |-> ||  ---   ---    --- .  ---   --- . ---   ---  |   */
/*         | \_ / ALL <-|   | |   |  |   |  |   | |   | |   | |   | |   */
/*         |             ---   ---    ---    ---   ---   ---   ---  |   */
/*         |________________________________________________________|   */
/*   wangbin creat it for VFD_511                                                       */
/*  CAUTION:In this VFD BIT-1(S0),display differential sequence.    */
/*     03-01-03                                                                                   */

#define VFD_7SEG_SG (0x08)
#define VFD_7SEG_SF (0x10)
#define VFD_7SEG_SE (0x02)
#define VFD_7SEG_SD (0x01)
#define VFD_7SEG_SC (0x04)
#define VFD_7SEG_SB (0x20)
#define VFD_7SEG_SA (0x40)

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

#define VFD_DOT_S       62
#define VFD_DOT_V       61
#define VFD_DOT_CD      60
#define VFD_DOT_MP3     14
#define VFD_DOT_REPALL  57
#define VFD_DOT_REP1    56
#define VFD_DOT_SEC     23// :sec
#define VFD_DOT_MIN     39// :min
#define VFD_DOT_PAUSE   58
#define VFD_DOT_PLAY    59
#define VFD_DOT_PBC     15
#define VFD_DOT_REP1    56

#define VFD_DOT_DOLBY   47//two" D" sign.
#define VFD_DOT_DTS     63
#define VFD_DOT_DVD     79
#define VFD_DOT_CAMER   31

#define VFDA_T1         6
#define VFDA_P0         5     
#define VFDA_P1         4
#define VFDA_M0         3
#define VFDA_M1         2
#define VFDA_S0         1
#define VFDA_S1         0

const BYTE vfd_addr[7] =
    {VFDA_T1, VFDA_P0, VFDA_P1, VFDA_M0, VFDA_M1, VFDA_S0, VFDA_S1};


void print_vfd_digital(BYTE no, BYTE data)
{
    if(no == 5)//"S0" differential sequence.wangbin 03-01-03
            {
            vfd_mem[VFDA_S0] &= (0xc0);
            vfd_mem[VFDA_S0] |= (vfd_digit[data]>>1);
            switch(data)
                {
                case 0:
                case 2:
                case 3:
                case 5:
                case 6:
                case 8:
                case 9:
                vfd_dot(VFD_DOT_ON, 7);
                break;
                default:
                vfd_dot(VFD_DOT_OFF, 7);
                }
            }
        else
            {
            vfd_mem[vfd_addr[no]] &= (0x80);
            vfd_mem[vfd_addr[no]] |= (vfd_digit[data]);
            }
}

void vfd_disc_turn(BYTE mode)
{
    static BYTE i = 7;

    if(i < 2)
      i = 7;
    if(mode)
    {
        vfd_mem[8] = 0xfc;
        vfd_mem[9] = 0x7f;
        vfd_mem[8] &= (~(1 << (i % 8)));
        vfd_mem[9] &= (~(1 <<((i%8)-1)));
    }
    else
    {
        vfd_mem[8] = 0xfc;
        vfd_mem[9] = 0x7f;
    }
    i--;
}

void vfd_cdtype(BYTE cd_types)
{
    switch (cd_types)
    {
        case CDCVD:
        case CDSVCD:
            vfd_dot(VFD_DOT_ON, VFD_DOT_S);     
        case CDVCD10:
        case CDVCD11:
        case CDVCD20:
        case CDVCD30:   
            vfd_dot(VFD_DOT_ON, VFD_DOT_V);     
        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)
{
    vfd_mem[4] = 0x53;//C
    vfd_mem[3] = 0x13;//L
    vfd_mem[2] = 0x77;//O
    vfd_mem[1] = 0x2e;//S
    vfd_mem[0] = 0xdb;//E
}
void vfd_readtoc(void)//display"---:--:--" and turn on disc all dot .wangbin
{
    init_vfd_clear(0);
    vfd_disc_turn(0);
    vfd_mem[6] = 0x08;
    vfd_mem[5] = 0x08;
    vfd_mem[4] = 0x88;
    vfd_mem[3] = 0x08;
    vfd_mem[2] = 0x88;
    vfd_mem[1] = 0x04;
    vfd_mem[0] = 0X08;
}

void vfd_nodisc(void)
{
    vfd_mem[6] = 0x76;//n
    vfd_mem[5] = 0x77;//O
    vfd_mem[3] = 0x2f;//d
    vfd_mem[2] = 0x24;//I
    vfd_mem[1] = 0x2e;//S
    vfd_mem[0] = 0xd3;//C
}


void vfd_open(void)
{
    vfd_mem[3] = 0x77;//O
    vfd_mem[2] = 0x7a;//P
    vfd_mem[1] = 0x2d;//E
    vfd_mem[0] = 0xf6;//n
}

void vfd_show_time(void)
{
    static BYTE cd_time_ss = 0xff;

    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(3, cd_disp_mm / 10);
        print_vfd_digital(4, cd_disp_mm % 10);
        print_vfd_digital(5, cd_disp_ss / 10);
        print_vfd_digital(6, cd_disp_ss % 10);
            vfd_dot(VFD_DOT_OFF,VFD_DOT_SEC);
            vfd_dot(VFD_DOT_OFF,VFD_DOT_MIN);
    }
    else
    {//modified 02/12/24 
           vfd_dot(VFD_DOT_ON,VFD_DOT_SEC);
    }   

}

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

}

void vfd_play(void)
{
    vfd_dot(VFD_DOT_OFF, VFD_DOT_PAUSE);
    vfd_dot(VFD_DOT_ON, VFD_DOT_PLAY);

}

void vfd_playmode(void)
{
    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_OFF, VFD_DOT_REPALL);
            vfd_dot(VFD_DOT_ON, VFD_DOT_REP1);
        }
            break;
        case REPEAT_DISC:
        {
            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_REPALL);
            vfd_dot(VFD_DOT_OFF, VFD_DOT_REP1);
        }
            break;
    }
}

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


void vfd_set_pgm(BYTE method)
{
}


//modified 02/12/24
void vfd_normal_state(void)
{
  if(cd_type_loaded!=CDNODISK)
    {
     if(Gmem.gmp3.gifsFunc!=FS_FUNC_JPEG)    
       {
          vfd_disc_turn(1);
          vfd_show_time();         
         }
        vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
       vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
      } 
  else
    {
          init_vfd_clear(0);
          vfd_nodisc();
    }
}

void vfd_stop(void)
{
   vfd_dot(VFD_DOT_ON,VFD_DOT_SEC);                      
   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_REPALL);
}
//end modified 02/12/24

void flash_pause(void)//for flash pause state PP.wangbin 03-01-04.
{
static BYTE flash;
flash++;
if(flash == 4)
    flash = 0;
if(flash >= 2)
    {
    vfd_mem[6] &=0x80;
    vfd_mem[5] &=0x80;
    }
else
    {
    print_vfd_digital(0, cd_disp_trk / 10);
    print_vfd_digital(1, cd_disp_trk % 10);
    }
}

void vfd_Clear(void)
{
BYTE i;
for(i = 0;i < 12;i++)
    vfd_mem[i] = 0x00;
}
void vfd_game_clear(void)
{
}

void vfd_game(void)
{
}

void vfd_format(void)
{
}

void vfd_audio(void)
{
}

void vfd_jpeg_disp(void)
{//ok!
       init_vfd_clear(0);     
       print_vfd_digital(3,cd_disp_trk/1000);
       print_vfd_digital(4,(cd_disp_trk / 100) % 10);
       print_vfd_digital(5,(cd_disp_trk / 10) % 10);
       print_vfd_digital(6,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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -