vfd32.h
来自「代码有点长,需细心阅读,仅供影音视听类产品的开发人员参考」· C头文件 代码 · 共 397 行
H
397 行
#ifndef __VFD_R_H
#define __VFD_R_H
/*
** 777777
** 2 6
** 2 6
** 111111
** 3 5
** 3 5
** 444444
*/
//ZHX 033003
#define VFD_7SEG_SG (1<<3)
#define VFD_7SEG_SF (1<<4)
#define VFD_7SEG_SE (1<<1)
#define VFD_7SEG_SD (1<<0)
#define VFD_7SEG_SC (1<<2)
#define VFD_7SEG_SB (1<<5)
#define VFD_7SEG_SA (1<<6)
#include "vfd_7seg.h"
#include "macro.h"
#include "fs9660.h"
#define VFD_DOT_DVD (79)
#define VFD_DOT_DTS (63)
#define VFD_DOT_AC3 (47)
#define VFD_DOT_ANGLE (31)
#define VFD_DOT_SVCD (62)
#define VFD_DOT_VCD (61)
#define VFD_DOT_CD (60)
#define VFD_DOT_MP3 (14)
#define VFD_DOT_REPALL (57)
#define VFD_DOT_REPEAT (56)
//#define VFD_DOT_MINSEC (39)
#define VFD_DOT_MINSEC (23)
#define VFD_DOT_COLON (23)
#define VFD_DOT_PAUSE (58)
#define VFD_DOT_PLAY (59)
#define VFD_DOT_PBC (15)
#define VFDA_P0 6
#define VFDA_P1 5
#define VFDA_M0 3
#define VFDA_M1 2
#define VFDA_S0 1
#define VFDA_S1 0
const BYTE vfd_addr[7] = { 6, 5, 4, 3, 2, 1, 0};
void print_vfd_digital(BYTE no, BYTE data)
{
switch (no)
{
case 5:
vfd_mem[1] &= (~0x3f);
vfd_mem[0] &= (~0x80);
vfd_mem[1] |= ((vfd_digit[data] >> 1)&0x3f);
if (vfd_digit[data] & 0x01)
vfd_mem[0] |= (0x80);
break;
default:
vfd_mem[vfd_addr[no]] &= (~0x7f);
vfd_mem[vfd_addr[no]] |= (vfd_digit[data]&0x7f);
break;
}
}
void vfd_disc_turn(BYTE mode)
{
static int i = 12;
if(play_state == VCD_STATE_STOP) {
vfd_mem[9] = 0x7f;
vfd_mem[8] = 0xfc;
return;
} //ZHX 061503
if (i < 0) i = 12;
if(mode)
{
vfd_mem[9] = 0x7f;
vfd_mem[8] = 0xfc;
if (i < 7)
vfd_mem[9] &= (~(1 << i));
else
vfd_mem[8] &= (~(1 << (i -5)));
}
i--;
switch (i)
{
case 1:
case 4:
case 7:
case 10:
#ifdef VFDVOL_DISPLAY
if(!volFlag)
#endif
{
vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
}
break;
case 2:
case 5:
case 8:
case 11:
#ifdef VFDVOL_DISPLAY
if(!volFlag)
#endif
{
vfd_dot(VFD_DOT_OFF, VFD_DOT_MINSEC);
vfd_dot(VFD_DOT_OFF, VFD_DOT_COLON);
}
break;
case 3:
case 6:
case 9:
case 12:
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;
default:
break;
}
}
void vfd_cdtype(BYTE cd_types)
{
switch (cd_types)
{
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 CDROM:
vfd_dot(VFD_DOT_ON, VFD_DOT_MP3);
break;
}
}
void vfd_close(void)
{
print_vfd_digital(2, 12);
print_vfd_digital(3, 21);
print_vfd_digital(4, 24);
print_vfd_digital(5, 28);
print_vfd_digital(6, 14);
}
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_nodisc(void)
{
print_vfd_digital(0, 23);
print_vfd_digital(1, 24);
print_vfd_digital(3, 13);
print_vfd_digital(4, 18);
print_vfd_digital(5, 28);
print_vfd_digital(6, 12);
}
void vfd_refresh(void)
{
vfd_playmode();
vfd_format();
vfd_cdtype(cd_type_loaded);
vfd_audio();
}
void vfd_show_time(void)
{
static BYTE cd_time_ss = 0xff;
#ifdef VFDVOL_DISPLAY
if(!volFlag)
#endif
{
if ((cd_type_loaded==CDROM)&&CheckUIState(VCD_STATE_STOP))
return;
if(cd_disp_ss != cd_time_ss)
{
cd_time_ss = cd_disp_ss;
if(cd_disp_trk > 99) {
print_vfd_digital(0, cd_disp_trk / 100);
print_vfd_digital(1, (cd_disp_trk%100) / 10);
print_vfd_digital(2, cd_disp_trk % 10);
print_vfd_digital(3, 36);
print_vfd_digital(4, cd_disp_mm%10);
print_vfd_digital(5, cd_disp_ss / 10);
print_vfd_digital(6, cd_disp_ss % 10);
}
else {
print_vfd_digital(0, cd_disp_trk / 10);
print_vfd_digital(1, cd_disp_trk % 10);
print_vfd_digital(2, 36);
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);
}
}
}
}
#ifdef VFDVOL_DISPLAY
void vfd_vol_display(BYTE volNum)
{
vfd_dot(VFD_DOT_OFF,VFD_DOT_COLON);
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
print_vfd_digital(0, volNum/10);
print_vfd_digital(1, volNum%10);
print_vfd_digital(2, 20);
#ifdef VFDECHO_DISPLAY
if(VfdFlag==1) {
if(IsKYSetup()) {
print_vfd_digital(3, 13);
print_vfd_digital(4, 14);
print_vfd_digital(5, 21);
print_vfd_digital(6, 20);
}
else {
if(!vcx_echo){
print_vfd_digital(0, 24);
print_vfd_digital(1, 15);
}
else if(vcx_echo==1) {
print_vfd_digital(0, 24);
print_vfd_digital(1, 23);
}
print_vfd_digital(3, 14);
print_vfd_digital(4, 12);
print_vfd_digital(5, 17);
print_vfd_digital(6, 24);
}
}
else if(VfdFlag==2) {
print_vfd_digital(3, 13);
print_vfd_digital(4, 14);
print_vfd_digital(5, 12);
print_vfd_digital(6, 20);
}
else
#endif
{
print_vfd_digital(3, 30);
print_vfd_digital(4, 37);
print_vfd_digital(5, 21);
print_vfd_digital(6, 20);
}
}
#endif
void vfd_audio(void)
{
}
void vfd_format(void)
{
}
void vfd_playmode(void)
{
}
void vfd_set_remain(void)
{
}
void vfd_normal_state(void)
{
if(cd_type_loaded!=CDNODISK)
{
vfd_disc_turn(2);
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_show_time();
vfd_disc_turn(0);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PLAY);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
vfd_dot(VFD_DOT_OFF,VFD_DOT_PBC);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_OFF,VFD_DOT_REPALL);
if(cd_type_loaded == CDROM) {
vfd_dot(VFD_DOT_OFF,VFD_DOT_MINSEC);
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, 0);
print_vfd_digital(4, Gmem.gmp3.iso9660_file_cnt/100);
print_vfd_digital(5, (Gmem.gmp3.iso9660_file_cnt%100)/10);
print_vfd_digital(6, Gmem.gmp3.iso9660_file_cnt%10);
}
else {
vfd_dot(VFD_DOT_ON,VFD_DOT_MINSEC);
vfd_dot(VFD_DOT_ON,VFD_DOT_COLON);
}
}
void vfd_pause(void)
{
static BYTE flash_play = 0;
flash_play ++;
if(flash_play > 3) flash_play = 0;
vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);
vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
vfd_dot(VFD_DOT_ON,VFD_DOT_PLAY);
if(flash_play/2)
vfd_dot(VFD_DOT_ON,VFD_DOT_PAUSE);
else
vfd_dot(VFD_DOT_OFF,VFD_DOT_PAUSE);
#ifdef VFDVOL_DISPLAY
if(volFlag) {
volFlag = 0;
cd_disp_ss ++;
vfd_show_time();
}
#endif
}
void vfd_repeat(void)
{
switch (rep_mode)
{
case REPEAT_TRACK:
vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
break;
case REPEAT_DISC:
vfd_dot(VFD_DOT_ON, VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_ON, VFD_DOT_REPALL);
break;
default: //repeat cancel
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPEAT);
vfd_dot(VFD_DOT_OFF, VFD_DOT_REPALL);
break;
}
}
void vfd_game(void)
{
vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);//ZHX 062103 for gun
print_vfd_digital(0, GetCmdSrc(sys_cmd) / 10);
print_vfd_digital(1, GetCmdSrc(sys_cmd) % 10);
print_vfd_digital(2, 36);
print_vfd_digital(3, 0);
print_vfd_digital(4, 0);
print_vfd_digital(5, 0);
print_vfd_digital(6, 0);
}
void vfd_game_clear(void)
{
vfd_disc_turn(2);
vfd_refresh();
vfd_dot(VFD_DOT_ON, VFD_DOT_COLON);
vfd_dot(VFD_DOT_ON, VFD_DOT_MINSEC);//ZHX 062103 for gun
print_vfd_digital(0, 0);
print_vfd_digital(1, 0);
print_vfd_digital(2, 36);
print_vfd_digital(3, 0);
print_vfd_digital(4, 0);
print_vfd_digital(5, 0);
print_vfd_digital(6, 0);
}
#endif/*__VFD_R_H*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?