⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfd.c

📁 sunplus spca514 cdmp3 源码
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -