vfd_turnkey2.h

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

H
662
字号
#ifndef __VFD_R_H
#define __VFD_R_H

#include "gpio.h"
/*
**      777777
**     2      6
**     2      6
**      555555
**     2      4
**     1      4
**      000000
*/

/* LCD pin map
  1    2    3    4   5   6   7   8   9     10    11      12    13   14  15    16  17    18  19    20  21  22  23  24  25  26  27
COM1                 1D  1C  2D  2C  DISC  HEAD  INTRO   LOCK  3D   3C  4D    4C  5D    5C  6D    6C  7D  7C  8D  8C  9D  9C  U4
     COM2            1E  1G  2E  2G  DIR   对比  RANDOM  手动  3E   3G  4E    4G  5E    5G  6E    6G  7E  7G  8E  8G  9E  9G  U3
          COM3       1F  1B  2F  2B  RD    RA    PROG    MIC   3F   3B  4F    4B  5F    5B  6F    6B  7F  7B  8F  8B  9F  9B  U2
               COM4  CD  1A  R1  2A  MP3   WMA   自动    VCD   BAT  3A  BAT1  4A  BAT2  5A  BAT3  6A  COL 7A  U   8A  U5  9A  U1
             
                 a
                ----
             f |  g | b
                ----
             e |    | c
                ----
                 d
*/

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

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

#define VFD_DOT_MIC1    (255)
#define VFD_DOT_MIC2    (255)
//#define VFD_DOT_MP3     (56)
#define VFD_DOT_SVCD    (255)
//#define VFD_DOT_VCD     (31)
//#define VFD_DOT_CD      (30)
#define VFD_DOT_MINUS   (255)
#define VFD_DOT_PAL     (255)
#define VFD_DOT_NTSC    (255)
#define VFD_DOT_MEM (255)
#define VFD_DOT_PLAYB   (255)
#define VFD_DOT_PLAYA   (255)
#define VFD_DOT_REPALL  16          //(255)
#define VFD_DOT_REP1    11          //  (30)
//#define VFD_DOT_REPEAT  (31)

//#define VFD_DOT_COLON   (48)
#define VFD_DOT_DASH    (255)
#define VFD_DOT_RESUME  (255)
#define VFD_DOT_REMAIN  (255)
#define VFD_DOT_PAUSE   (255)
#define VFD_DOT_PLAY    (255)
//#define VFD_DOT_RAN (70)
//#define VFD_DOT_PGM (0)
#define VFD_DOT_VCD20   (255)
#define VFD_DOT_OVER    (255)
#define VFD_DOT_2R      (255)
#define VFD_DOT_1L      (255)
#define VFD_DOT_TIME    (255)
#define VFD_DOT_SPACE   (255)
//#define VFD_DOT_INTRO   (9)

#define VFD_DOT_CD       (3)
//#define VFD_DOT_REP      255//(11)
//#define VFD_DOT_DISC     255//(16)
#define VFD_DOT_DIRR     (17)
#define VFD_DOT_DIR      (18)
#define VFD_DOT_MP3      (19)
#define VFD_DOT_HEAD     (20)
#define VFD_DOT_COMP     (21)
#define VFD_DOT_ALL      (22)
#define VFD_DOT_WMA      (23)
#define VFD_DOT_INTRO    (24)
#define VFD_DOT_RAN      (25)
#define VFD_DOT_PGM      (26)
#define VFD_DOT_AM       (27)
#define VFD_DOT_LOCK     (28)
#define VFD_DOT_FM       (29)
#define VFD_DOT_MIC      (30)
#define VFD_DOT_VCD      (31)
#define VFD_DOT_BAT      (35)
#define VFD_DOT_BAT1     (43)
#define VFD_DOT_BAT2     (51)
#define VFD_DOT_BAT3     (59)
#define VFD_DOT_COLON    (67)
#define VFD_DOT_U        (75)
#define VFD_DOT_U5       (83)
#define VFD_DOT_U4       (88)
#define VFD_DOT_U3       (89)
#define VFD_DOT_U2       (90)
#define VFD_DOT_U1       (91)
#define VFD_DOT_PBC     (255)


//#define VFDA_P0     1       
//#define VFDA_P1     0
//#define VFDA_M0     5
//#define VFDA_M1     4
//#define VFDA_S0     7
//#define VFDA_S1     6
extern BYTE Select_Dir_flag;        //zhg 2002/09/26 13:50

const BYTE vfd_addr[9] = { 0, 1, 4, 5, 6, 7, 8, 9, 10 };
void print_vfd_digital(BYTE no, BYTE data)
{
    if(no < 9)
    {
        vfd_mem[vfd_addr[no]] &= (~0xf7);
        vfd_mem[vfd_addr[no]] |= (vfd_digit[data]);
    }
    else
    {
        vfd_mem[vfd_addr[no - 9]] &= (~0xf7);
    }


}

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

    if(ircmd_5s_timer)                      ////jasing 02-09-25-sentence
        return;
    if(i < 2)
        i = 7;
    if(mode == 2)
    {
        //vfd_mem[1]=0xfe;
        //vfd_mem[1]&=(~(1<<(i%8)));
        i--;
        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[1]=0xfe;         
        vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
    }
    else if(mode == 0)
    {
        //vfd_mem[1]=0xfe;         
        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);
            vfd_dot(VFD_DOT_ON, VFD_DOT_DIRR);
            vfd_dot(VFD_DOT_ON, VFD_DOT_U);
            break;
    }
}

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_readtoc(void)
{
    //int i;
    init_vfd_clear(0);
    vfd_disc_turn(0);
    //for(i=0;i<7;i++)
    //     vfd_mem[vfd_addr[i]]|=VFD_7SEG_SG;              
    print_vfd_digital(5, 27);
    print_vfd_digital(6, 14);
    print_vfd_digital(7, 10);
    print_vfd_digital(8, 13);
}

void vfd_nodisc(void)
{
    print_vfd_digital(2, 23);
    print_vfd_digital(3, 24);
    print_vfd_digital(5, 13);
    print_vfd_digital(6, 18);
    print_vfd_digital(7, 28);
    print_vfd_digital(8, 12);
}


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

void vfd_show_time(void)
{
    static BYTE cd_time_ss = 0xff;  //0;  wyf 2-4-1 15:57

    if(ircmd_5s_timer)                      //jasing 02-09-25-sentence
        return;
    if(cd_disp_ss != cd_time_ss)
    {
        if(cd_type_loaded == CDROM) //zhg 2002/09/25 16:04
        {
            print_vfd_digital(0, Gmem.gmp3.mp3_dir_now / 10);
            print_vfd_digital(1, Gmem.gmp3.mp3_dir_now % 10);
            print_vfd_digital(2, Gmem.gmp3.mp3_trk_now / 100);
            print_vfd_digital(3, (Gmem.gmp3.mp3_trk_now % 100) / 10);
            print_vfd_digital(4, (Gmem.gmp3.mp3_trk_now % 100) % 10);
        }
        cd_time_ss = cd_disp_ss;
        if(cd_type_loaded != CDROM) //zhg 2002/09/25 16:04
        {
            print_vfd_digital(2, cd_disp_trk / 100);
            print_vfd_digital(3, cd_disp_trk / 10);
            print_vfd_digital(4, cd_disp_trk % 10);
        }
        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);
    }


    // else

    if((IsNMIntro()) || (Select_Dir_flag & 0x02))   //zhyf 2-10-25 14:56
        vfd_dot(VFD_DOT_ON, VFD_DOT_INTRO);
    else if(IsKYRand())
        vfd_dot(VFD_DOT_ON, VFD_DOT_RAN);
    else
    {
        vfd_dot(VFD_DOT_OFF, VFD_DOT_RAN);
        vfd_dot(VFD_DOT_OFF, VFD_DOT_INTRO);
    }

}

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

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

⌨️ 快捷键说明

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