📄 vfd.c
字号:
#include "..\main.h"
#include "..\io.h"
#include <iom163.h>
#ifdef SGJM_RDS
#include "..\bu1923\bu1923.h"
#endif
#define VFD_BUFFER_SIZE 12
unsigned int g_vfd_grid_buffer[VFD_BUFFER_SIZE];
#ifdef MORE_THAN_16SEGMENT
unsigned char g_vfd_grid_ext_buffer[VFD_BUFFER_SIZE];
#endif
extern unsigned char display_type,work_mode,led_val;
extern unsigned int key_buff;
unsigned int g_ui_timing_cnt;
#define VFD_LED_MIN 0x0001
#define VFD_LED_M 0x0002
#define VFD_LED_SEC 0x0004
#define VFD_LED_CH 0x0008
#define VFD_LED_DB 0x0010
#define VFD_LED_AUTO 0x0020
#define VFD_LED_CINEMA 0x4000 //cinema dsp
#define VFD_LED_SLEEP 0x8000
#define VFD_LED_PLUS 0x4000
#define VFD_LED_SUB 0x8000
#define VFD_LED_KHZ 0x4000
#define VFD_LED_MHZ 0x8000
#define VFD_LED_COL 0x4000
#define VFD_LED_DP 0x8000
#define VFD_LED_MEMORY 0x4000
#define VFD_LED_FM 0x4000
#define VFD_LED_AM 0x8000
#define VFD_LED_MUTE 0x4000
#define VFD_LED_STEREO 0x4000
#define VFD_LED_TAPE2 0x4000
#define VFD_LED_SURROUND 0x0001
#define VFD_LED_EQ 0x0002
#define VFD_LED_MIC 0x0004
#define VFD_LED_PRO 0x0008
#define VFD_LED_DOLBY 0x0010
#define VFD_LED_AC3 0x0020
#define VFD_LED_SRS 0x0040
#define VFD_LED_KEYCON 0x0080
#define VA 0x0001
#define VB 0x0002
#define VH 0x0004
#define VJ 0x0008
#define VK 0x0010
#define VF 0x0020
#define VG 0x0040
#define VM 0x0080
#define VC 0x0100
#define VN 0x0200
#define VP 0x0400
#define VR 0x0800
#define VE 0x1000
#define VD 0x2000
#define VFD_digit_zero VA|VB|VC|VD|VE|VF
#define VFD_digit_one VB|VC
#define VFD_digit_two VA|VB|VG|VM|VE|VD
#define VFD_digit_three VA|VB|VC|VD|VG|VM
#define VFD_digit_four VF|VG|VB|VC|VM
#define VFD_digit_five VA|VF|VG|VC|VD|VM
#define VFD_digit_six VA|VF|VG|VC|VD|VE|VM
#define VFD_digit_seven VA|VB|VC
#define VFD_digit_eight VA|VB|VC|VD|VE|VF|VG|VM
#define VFD_digit_nine VA|VB|VC|VD|VF|VG|VM
/* VFD Alphabetic Characters */
#define VFD_alpha_A VA|VB|VC|VF|VE|VG|VM
#define VFD_alpha_B VF|VG|VE|VD|VC|VM
#define VFD_alpha_C VA|VF|VE|VD
#define VFD_alpha_D VB|VG|VE|VD|VC|VM
#define VFD_alpha_E VA|VF|VE|VG|VD|VM
#define VFD_alpha_F VA|VF|VG|VE|VM
#define VFD_alpha_G VA|VF|VE|VD|VC|VM
#define VFD_alpha_H VF|VE|VB|VC|VG|VM
#define VFD_alpha_I VJ|VP
#define VFD_alpha_J 0x0000
#define VFD_alpha_K VJ|VP|VK|VN
#define VFD_alpha_L VF|VE|VD
#define VFD_alpha_M VB|VC|VE|VF|VH|VK
#define VFD_alpha_N VF|VE|VH|VN|VB|VC
#define VFD_alpha_O VA|VB|VC|VD|VE|VF
#define VFD_alpha_P VA|VB|VG|VF|VE|VM
#define VFD_alpha_R VA|VB|VG|VF|VE|VM|VN
#define VFD_alpha_S VA|VF|VG|VC|VD|VM
#define VFD_alpha_T VA|VJ|VP
#define VFD_alpha_U VF|VE|VD|VC|VB
#define VFD_alpha_V VF|VE|VR|VK
#define VFD_alpha_W VF|VE|VR|VN|VC|VB
#define VFD_alpha_X VH|VK|VR|VN
#define VFD_alpha_Y VH|VK|VP
#define VFD_alpha_Z VA|VK|VR|VD
#define VFD_alpha_aster VH|VJ|VK|VG|VM|VR|VP|VN
#define VFD_alpha_DASH VD
#define VFD_alpha_MINUS VG|VM
#define VFD_alpha_PLUS VJ|VP|VG|VM
#define LA 0x0080
#define LB 0x0100
#define LC 0x0800
#define LD 0x2000
#define LE 0x1000
#define LF 0x0200
#define LG 0x0400
#define RA 0x0001
#define RB 0x0002
#define RC 0x0010
#define RD 0x0040
#define RE 0x0020
#define RF 0x0004
#define RG 0x0008
#define VFD_digit_right_zero RA|RB|RC|RD|RE|RF
#define VFD_digit_right_one RB|RC
#define VFD_digit_right_two RA|RB|RG|RE|RD
#define VFD_digit_right_three RA|RB|RC|RD|RG
#define VFD_digit_right_four RF|RG|RB|RC
#define VFD_digit_right_five RA|RF|RG|RC|RD
#define VFD_digit_right_six RA|RF|RG|RC|RD|RE
#define VFD_digit_right_seven RA|RB|RC
#define VFD_digit_right_eight RA|RB|RC|RD|RE|RF|RG
#define VFD_digit_right_nine RA|RB|RC|RD|RF|RG
#define VFD_digit_left_zero LA|LB|LC|LD|LE|LF
#define VFD_digit_left_one LB|LC
#define VFD_digit_left_two LA|LB|LG|LE|LD
#define VFD_digit_left_three LA|LB|LC|LD|LG
#define VFD_digit_left_four LF|LG|LB|LC
#define VFD_digit_left_five LA|LF|LG|LC|LD
#define VFD_digit_left_six LA|LF|LG|LC|LD|LE
#define VFD_digit_left_seven LA|LB|LC
#define VFD_digit_left_eight LA|LB|LC|LD|LE|LF|LG
#define VFD_digit_left_nine LA|LB|LC|LD|LF|LG
#define MAX_LETTER 8
#define G1 0x00
#define G2 0x01
#define G3 0x02
#define G4 0x03
#define G5 0x04
#define G6 0x05
#define G7 0x06
#define G8 0x07
#define G9 0x08
#define G10 0x09
#define G11 0x0a
const static unsigned int num_xlate[10] =
{
VFD_digit_zero,
VFD_digit_one,
VFD_digit_two,
VFD_digit_three,
VFD_digit_four,
VFD_digit_five,
VFD_digit_six,
VFD_digit_seven,
VFD_digit_eight,
VFD_digit_nine
};
const static unsigned int num_xlate_left[10] = {
VFD_digit_left_zero,
VFD_digit_left_one,
VFD_digit_left_two,
VFD_digit_left_three,
VFD_digit_left_four,
VFD_digit_left_five,
VFD_digit_left_six,
VFD_digit_left_seven,
VFD_digit_left_eight,
VFD_digit_left_nine
};
const static unsigned num_xlate_right[10] = {
VFD_digit_right_zero,
VFD_digit_right_one,
VFD_digit_right_two,
VFD_digit_right_three,
VFD_digit_right_four,
VFD_digit_right_five,
VFD_digit_right_six,
VFD_digit_right_seven,
VFD_digit_right_eight,
VFD_digit_right_nine
};
const static unsigned int vfd_alpha[] = {
VFD_alpha_A,
VFD_alpha_B,
VFD_alpha_C,
VFD_alpha_D,
VFD_alpha_E,
VFD_alpha_F,
VFD_alpha_G,
VFD_alpha_H,
VFD_alpha_I,
VFD_alpha_J,
VFD_alpha_K,
VFD_alpha_L,
VFD_alpha_M,
VFD_alpha_N,
VFD_alpha_O,
VFD_alpha_P,
0x0000,
VFD_alpha_R,
VFD_alpha_S,
VFD_alpha_T,
VFD_alpha_U,
VFD_alpha_V,
VFD_alpha_W,
VFD_alpha_X,
VFD_alpha_Y,
VFD_alpha_Z,
};
unsigned char Set_String(unsigned char *str);
extern unsigned char Mchvol,Bassvol,Treblevol,Balanceval,Loudnessval;
unsigned char *err_msg,blink_time;
extern unsigned int radio_count,freq;
extern unsigned char is_autosearching;
extern unsigned char amfm_flag,g_ui_tmp_msg_cnt,station_no;
#ifdef SGJM_RDS
extern unsigned char rds_status;
extern unsigned char pty_is_searching;
extern unsigned char rds_dis_buffer[65];
extern unsigned char rds_dis_string[65];
extern unsigned char rds_display_type;
#endif
extern unsigned char muted;
unsigned int info;
extern unsigned char hm_flag,time_val[];
unsigned int num_trans(unsigned char num)
{
return num_xlate[num];
}
void display_digit(unsigned int num)
{
unsigned char r,r2;
r = 2;
do
{
r2 = num%10;
num /= 10;
g_vfd_grid_buffer[r] = num_trans(r2);
r++;
}while(num);
}
void tuner_display(void)
{
unsigned char r,r2;
switch(display_type)
{
case DISPLAY_DIGIT:
if(blink_time<3)
display_digit(radio_count);
break;
case DIS_FREQUENCY:
display_digit(freq);
if(g_ui_tmp_msg_cnt)
{
r = station_no;
r++;
r2 =r/10;
g_vfd_grid_buffer[9] = num_trans(r2);
r2 =r%10;
g_vfd_grid_buffer[8] = num_trans(r2);
}
else
{
if(amfm_flag)
{
g_vfd_grid_buffer[9] = VFD_alpha_A;
g_vfd_grid_buffer[8] = VFD_alpha_M;
}
else
{
g_vfd_grid_buffer[9] = VFD_alpha_F;
g_vfd_grid_buffer[8] = VFD_alpha_M;
};
};
if(amfm_flag)
g_vfd_grid_buffer[2] |= VFD_LED_KHZ;
else
{
g_vfd_grid_buffer[2] |= VFD_LED_MHZ;
g_vfd_grid_buffer[3] |= VFD_LED_DP;
};
break;
#ifdef SGJM_RDS
case DIS_PS_NAME:
// printf(rds_dis_string);printf("\n");
if(rds_status&PS_NAME_EXIST)
Set_String(rds_dis_string);
else
Set_String("NOPSNAME");
break;
case DIS_PTY:
if(pty_is_searching == 2)
{
if(blink_time<3)
Set_String("PTY");
display_digit(freq);
if(amfm_flag)
{
g_vfd_grid_buffer[2] |= VFD_LED_KHZ;
}
else
{
g_vfd_grid_buffer[2] |= VFD_LED_MHZ;
g_vfd_grid_buffer[3] |= VFD_LED_DP;
};
}
else
{
if(pty_is_searching==1)
{
if(blink_time>2)
break;
rds_dis_string[5] = pty_search_type;
}
else
{
if((rds_status&PTY_EXIST)==0)
{
Set_String("NO PTY");
break;
};
rds_dis_string[5] = pty_dis_type;
}
switch(rds_dis_string[5])
{
case PTY_NONE:
Set_String("NONE");
break;
case PTY_NEWS:
Set_String("NEWS");
break;
case PTY_AFFAIRS:
Set_String("AFFAIRS");
break;
case PTY_INFO:
Set_String("INFO");
break;
case PTY_SPORT:
Set_String("SPORT");
break;
case PTY_EDUCATE:
Set_String("EDUCATE");
break;
case PTY_DRAMA:
Set_String("DRAMA");
break;
case PTY_CULTURE:
Set_String("CULTUTE");
break;
case PTY_SCIENCE:
Set_String("SCIENCE");
break;
case PTY_VARIED:
Set_String("VARIED");
break;
case PTY_POP_M:
Set_String("POP M");
break;
case PTY_ROCK_M:
Set_String("ROCK M");
break;
case PTY_EASY_M:
Set_String("EASY M");
break;
case PTY_LIGHT_M:
Set_String("LIGHT M");
break;
case PTY_CLASSICS:
Set_String("CLASSICS");
break;
case PTY_OTHER_M:
Set_String("OTHER M");
break;
case PTY_ALARM:
Set_String("ALARM");
break;
default:
Set_String("OTHER");
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -