led8g.h

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

H
276
字号
#ifndef __VFD_R_H
#define __VFD_R_H

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

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

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

#define VFD_DOT_VCD     (8)
#define VFD_DOT_PBC     (10)
#define VFD_DOT_PLAY    (11)
#define VFD_DOT_COLON   (12)
#define VFD_DOT_MORE    (13)

const BYTE vfd_addr[6] = { 3, 5, 7, 9, 11, 13};
const BYTE vfd_disc[7] = { 119, 121, 122, 124, 123, 125, 120};

void print_vfd_digital(BYTE no, BYTE data)
{
      vfd_mem[vfd_addr[no]] &= (~0x3f);
      vfd_mem[vfd_addr[no]] |= (vfd_digit[data]&0x3f);
      vfd_mem[vfd_addr[no]-1] &= (~0x80);
      vfd_mem[vfd_addr[no]-1] |= (vfd_digit[data]&0x80);
}

void vfd_disc_turn(BYTE mode)
{
	static BYTE i = 0;
        if(play_state==VCD_STATE_STOP)
           return;      //ZHX 061503
        i ++;
	if(i == 7)
           i = 0;		
       if(mode) { 
	UINT8 num;
        for(num=0;num<7;num++)
        	vfd_dot(1, vfd_disc[num]);
        vfd_dot(0,vfd_disc[i]);
       	}
}

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

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

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;
      else if (cd_disp_ss != cd_time_ss)
	{
		cd_time_ss = cd_disp_ss;
                if (cd_disp_trk > 99)
                    vfd_dot(VFD_DOT_ON,VFD_DOT_MORE);
                else
                    vfd_dot(VFD_DOT_OFF,VFD_DOT_MORE);
		print_vfd_digital(0, (cd_disp_trk % 100) / 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_COLON);
                vfd_dot(VFD_DOT_ON, VFD_DOT_PLAY);
	}
      else 
           vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
    }
}

#ifdef VFDVOL_DISPLAY
void vfd_vol_display(BYTE volNum)
{
           vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);          
           vfd_dot(VFD_DOT_OFF,VFD_DOT_MORE);
           print_vfd_digital(0, volNum/10);
           print_vfd_digital(1, volNum%10);
           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;
     BYTE disc_num;
     for(disc_num=0;disc_num<7;disc_num++)
     	vfd_dot(VFD_DOT_ON,vfd_disc[disc_num]);
     flash_play ++;
     if(flash_play > 3) flash_play = 0;
     vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
     if(flash_play/2)
        vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
     else
        vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY); 
#ifdef VFDVOL_DISPLAY
     if(volFlag) {
         volFlag = 0;
         cd_disp_ss ++;
         vfd_show_time();
     	}
#endif     
}

void vfd_audio(void)
{

}

void vfd_format(void)
{
}

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

}


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

//modified 02/12/24   
void vfd_normal_state(void)
{

  if(cd_type_loaded!=CDNODISK)
    {
     if(Gmem.gmp3.gifsFunc!=FS_FUNC_JPEG)    
       {
       vfd_disc_turn(2);
       vfd_show_time();         
       }
    } 
  else
    {
          init_vfd_clear(0);
          vfd_nodisc();
    }
}

void vfd_stop(void) 
{ 
   //vfd_show_time(); 
   //vfd_disc_turn(0);
   BYTE disc_num;
   for(disc_num=0;disc_num<7;disc_num++)
        vfd_dot(VFD_DOT_ON,vfd_disc[disc_num]);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);          
   vfd_dot(VFD_DOT_OFF,VFD_DOT_MORE);
   vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
   //vfd_mem[1] = 0xfe;         //ZHX 061503
   if (cd_type_loaded==CDROM) {
           vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);          
           print_vfd_digital(0, 25);
           print_vfd_digital(1, 3);
           print_vfd_digital(2, 36);
           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_COLON);          
} 

void vfd_game(void)
{
        vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);//ZHX 062103 for gun
	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_COLON);//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);
}

#endif/*__VFD_R_H*/

⌨️ 快捷键说明

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