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

📄 vfd_269gk1.h

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

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

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

#include "vfd_7seg.h"

#define VFD_DOT_MIC1    (16)
#define VFD_DOT_MIC2    (17)
#define VFD_DOT_VCD (45)
#define VFD_DOT_MINUS   (19)
#define VFD_DOT_L   (78)
#define VFD_DOT_R   (76)
#define VFD_DOT_STEREO  (77)
#define VFD_DOT_MEM (26)
#define VFD_DOT_PLAYB   (41)
#define VFD_DOT_PLAYA   (42)
#define VFD_DOT_REPALL  (40)
#define VFD_DOT_REP1    (43)
#define VFD_DOT_REPEAT  (47)
#define VFD_DOT_MINSEC  (32)
#define VFD_DOT_MIN (40)
#define VFD_DOT_SEC (56)
#define VFD_DOT_SVCD    (46)
#define VFD_DOT_CD      (31)
#define VFD_DOT_COLON   (71)
#define VFD_DOT_MP3     (47)
#define VFD_DOT_RESUME  (64)
#define VFD_DOT_REMAIN  (65)
#define VFD_DOT_PAUSE   (74)
#define VFD_DOT_PLAY    (75)
#define VFD_DOT_TITLE   (15)
#define VFD_DOT_PBC (79)
#define VFD_DOT_RAN (72)
#define VFD_DOT_PGM (94)
#define VFD_DOT_VCD20   (72)
#define VFD_DOT_OVER    (73)
#define VFD_DOT_2R  (74)
#define VFD_DOT_1L  (75)
#define VFD_DOT_TIME    (76)
#define VFD_DOT_SPACE   (77)
#define VFD_DOT_INTRO   (79)
#define VFD_DOT_PGM01   (92)
#define VFD_DOT_PGM02   (93)
#define VFD_DOT_PGM03   (94)
#define VFD_DOT_PGM04   (95)
#define VFD_DOT_PGM05   (88)
#define VFD_DOT_PGM06   (89)
#define VFD_DOT_PGM07   (90)
#define VFD_DOT_PGM08   (91)
#define VFD_DOT_PGM09   (84)
#define VFD_DOT_PGM10   (85)
#define VFD_DOT_PGM11   (86)
#define VFD_DOT_PGM12   (87)
#define VFD_DOT_PGM13   (80)
#define VFD_DOT_PGM14   (81)
#define VFD_DOT_PGM15   (82)
#define VFD_DOT_PGM16   (83)
#define VFDA_P0     1
#define VFDA_P1     0
#define VFDA_M0     5
#define VFDA_M1     4
#define VFDA_S0     7
#define VFDA_S1     6

const BYTE vfd_addr[12] = { 1, 0, 3, 2, 4, 6, 8, 11, 10, 0, 0, 0 };
void print_vfd_digital(BYTE no, BYTE data)
{
    switch (no)
    {
        case 0:
        case 2:
        case 7:
            vfd_mem[vfd_addr[no]] &= (~0x3f);
            vfd_mem[vfd_addr[no] - 1] &= (~0x80);
            if(vfd_digit[data] & 0x01)
                vfd_mem[vfd_addr[no] - 1] |= (0x80);
            vfd_mem[vfd_addr[no]] |= (vfd_digit[data] >> 1);
            break;
        default:
            vfd_mem[vfd_addr[no]] &= (~0x7f);
            vfd_mem[vfd_addr[no]] |= (vfd_digit[data]);
            break;
    }
}

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

    if(i > 5)
        i = 0;
    if(mode)
    {
        vfd_mem[7] = 0x7f;
        vfd_mem[7] &= (~(1 << (i % 8)));
    }
    else
    {
        vfd_mem[7] = 0x7f;
    }
    i++;
    switch (i)
    {
        case 1:
            vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
            break;
        case 4:
            vfd_dot(VFD_DOT_OFF, VFD_DOT_COLON);
            break;
        case 3:
        case 6:
            vfd_mem[VFD_DOT_PLAY / 8] |= (1 << (VFD_DOT_PLAY % 8));
            vfd_mem[VFD_DOT_PAUSE / 8] &= (~(1 << (VFD_DOT_PAUSE % 8)));
            if(IsPBCOn())
                vfd_dot(VFD_DOT_ON, VFD_DOT_PBC);
            else
                vfd_dot(VFD_DOT_OFF, VFD_DOT_PBC);
            break;
        case 2:
        case 5:
            if(IsKYRand())
                vfd_dot(VFD_DOT_ON, VFD_DOT_RAN);
            else
                vfd_dot(VFD_DOT_OFF, VFD_DOT_RAN);

            if(IsKYProg())
                vfd_dot(VFD_DOT_ON, VFD_DOT_PGM);
            else
                vfd_dot(VFD_DOT_OFF, VFD_DOT_PGM);

        default:

            break;
    }
}

void vfd_cdtype(BYTE cd_types)
{
    switch (cd_types)
    {
        case CDCVD:
        case CDSVCD:
            vfd_dot(VFD_DOT_ON, VFD_DOT_SVCD);
        case CDVCD10:
        case CDVCD11:
        case CDVCD20:
            vfd_dot(VFD_DOT_ON, VFD_DOT_VCD);
        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;
    }
    vfd_audio();
    vfd_dot(VFD_DOT_ON, VFD_DOT_TITLE);
    print_vfd_digital(0, cd_total_trk() / 10);
    print_vfd_digital(1, cd_total_trk() % 10);
}

void vfd_close(void)
{
    print_vfd_digital(4, 12);
    print_vfd_digital(5, 21);
    print_vfd_digital(6, 24);
    print_vfd_digital(7, 28);
    print_vfd_digital(8, 14);
}

void vfd_open(void)
{
    print_vfd_digital(4, 24);
    print_vfd_digital(5, 25);
    print_vfd_digital(6, 14);
    print_vfd_digital(7, 23);
}

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(2, cd_disp_trk / 10);
        print_vfd_digital(3, cd_disp_trk % 10);

        print_vfd_digital(4, 20);       //show space
        print_vfd_digital(5, cd_disp_mm / 10);
        print_vfd_digital(6, cd_disp_mm % 10);
        print_vfd_digital(7, cd_disp_ss / 10);
        print_vfd_digital(8, cd_disp_ss % 10);
    }

}

void vfd_audio(void)
{
    switch (audio_channel)
    {
        case CH_LR:                             //STEREO
            vfd_dot(VFD_DOT_ON, VFD_DOT_L);
            vfd_dot(VFD_DOT_ON, VFD_DOT_R);
            vfd_dot(VFD_DOT_ON, VFD_DOT_STEREO);
            break;
#ifdef VOCAL_CANCEL
        case CH_AUTO_L:
#endif
        case CH_LL:
            vfd_dot(VFD_DOT_ON, VFD_DOT_L);
            vfd_dot(VFD_DOT_OFF, VFD_DOT_R);
            vfd_dot(VFD_DOT_ON, VFD_DOT_STEREO);
            break;
#ifdef VOCAL_CANCEL
        case CH_AUTO_R:
#endif
        case CH_RR:
            vfd_dot(VFD_DOT_OFF, VFD_DOT_L);
            vfd_dot(VFD_DOT_ON, VFD_DOT_R);
            vfd_dot(VFD_DOT_ON, VFD_DOT_STEREO);
            break;
    }
}

void vfd_format(void)
{

}

void vfd_playmode(void)
{

}

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

void vfd_repeat(void)
{
    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);

    }
    switch (rep_mode)
    {
        case REPEAT_TRACK:
            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_REP1);
            vfd_dot(VFD_DOT_ON, VFD_DOT_REPALL);
            break;
        default:                                        //repeat cancel
            vfd_dot(VFD_DOT_OFF, VFD_DOT_REP1);
            vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
            break;
    }

}

void vfd_game(void)
{
    print_vfd_digital(2, GetCmdSrc(sys_cmd) / 10);
    print_vfd_digital(3, GetCmdSrc(sys_cmd) % 10);
    print_vfd_digital(5, 0);
    print_vfd_digital(6, 0);
    print_vfd_digital(7, 0);
    print_vfd_digital(8, 0);
}

void vfd_game_clear(void)
{
    print_vfd_digital(2, 0);
    print_vfd_digital(3, 0);
}
void vfd_refresh(void)
{
    vfd_playmode();
    vfd_cdtype(cd_type_loaded);
}
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_jpeg_disp(void)
{//ok!
       init_vfd_clear(0);     
       print_vfd_digital(5,cd_disp_trk/1000);
       print_vfd_digital(6,(cd_disp_trk / 100) % 10);
       print_vfd_digital(7,(cd_disp_trk / 10) % 10);
       print_vfd_digital(8,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 + -