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 + -
显示快捷键?