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

📄 vfd_drv_nec16312.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
					}
				}
#endif

		if(key_data != key_previ)
		{
			
#ifdef TWO_FUN_IN_ONE_VFD_KEY
            //num_add_flag = 0;   //dingzhy 
			key_previ_temp = key_previ;
#endif //TWO_FUN_IN_ONE_VFD_KEY

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY  //xyy add for Oritron 2004-11-10
			uPrevKey = key_previ;
#endif

#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY  //lihj add for Oritron 2004-11-10
						uPrevKey = key_previ;
#endif


			key_previ = key_data;

			if(key_data != 0)
			{
#ifdef TWO_FUN_IN_ONE_VFD_KEY
				//key_press_time_count=0;
				if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_NEXT)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_PREV))
		        {
		            key_press_time_count++;
		        }
#endif //TWO_FUN_IN_ONE_VFD_KEY

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10
				if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_LEFT)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_RIGHT))
				{
					uTimeCount++;
				}
#endif

#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
								if((vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_UP)||(vfd_keycode[keycode_to_num(key_data)-1]==IRC_VOLUME_DN))
								{
									uTimeCount++;
								}
#endif


				#ifdef XINGQIU_RECEIVER_PANNEL
				if(key_data == 0x111111)     //xulf 2004-3-9
					return;
				key_data -= 0x111111;  
				#endif
								
				for(i = 0; i < 24; i++)
				{
					temp = 0x01 << i;
					if(key_data & temp)
					{
						if (key_data > temp) // Robert 030224 for preventing illegal key_data
						{
							key_data = 0;
							return;
						}
						else
						{
							key_data = i + 1;
							break;
						}
					}
				}
				
				save_srn_start_t = get_rtc_val();

#if defined(TONIC_DVD)//20040206
				if(KeyLockStatus==1)
				{
					extern const char *const KeyLockString[4][10];
    				//psprintf(RegionValStr[REGION1],"KEY LOCK ON");
    				
    				//PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
    				psprintf(RegionValStr[REGION1],KeyLockString[osd_font_mode][0]);
    				PrintOsdMsg(STR_OS_SPACE,REGION1,1,1);
    				vfd_state = VFD_WRITE;
    				return;
				}
#endif//defined(TONIC_DVD)				

#ifdef VFD_KEY_TEST
				psprintf(RegionValStr[REGION1], "KEY %02d F:%d", key_data,vfd_keycode[key_data - 1]);
				PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);
#else
				if((Is_JPEG_SlideMode()) && (vfd_keycode[key_data - 1] == IRC_PAUSE))
				{
					//Jeff 20020523
					bJpgVFDPause = 1;
				}
				else if((Is_JPEG_SlideMode()) &&
					((vfd_keycode[key_data - 1] == IRC_PLAY) ||
					(vfd_keycode[key_data - 1] == IRC_PLAY_SELECT) ||
					(vfd_keycode[key_data - 1] == IRC_PLAY_RESUME)))
				{
					//bJpgVFDPause=0;
					bJpgVFDPause = 2;			//Jeff 20020525
					PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
					ircmd_play();//nono 20031210
				}
				else if((Is_JPEG_SlideMode()) &&	//Jeff 20020527
					(vfd_keycode[key_data - 1] == IRC_PAUSEPLAY))
				{
					if(bJpgVFDPause == 0)
					{
						//bJpgVFDPause = 1;
						if(play_state == VCD_STATE_PAUSE)	//nono 2-6-28 14:00
							//bJpgVFDPause = 2;
							
						{
							bJpgVFDPause = 2;
							PrintOsdMsg(STR_OS_PLAY,REGION1,1,0);//nono 20030804
							ircmd_play();//nono 20031210
						}							
						else
                        {
                            #ifdef FIX_PAUSEPLAY_IN_JPEG_SLIDE
                            if(play_pause_flay_in_jpeg == 0)
                            #endif
							bJpgVFDPause = 1;
					}
					}
					else if(bJpgVFDPause == 1)
					{
						bJpgVFDPause = 2;
					}
				}
				else if(key_data<40)
				{
					extern UINT8 power_on;
					
#ifdef QISHENG_DVD
		            standby_cnt=0;
                    if((vfd_keycode[key_data - 1])==IRC_STOP)
                    	standby_cnt=1;
#endif//#ifdef QISHENG_DVD

#ifdef NEXT_FORWARD_IN_A_KEY					
					key_data_flag = 1;
#endif//#ifdef NEXT_FORWARD_IN_A_KEY					

					if(power_on == 2)			//2-6-18 13:36 to avoid accepting a VFD_key in the beginning. 
					{
						power_on--;
						if(key_data != 1)
						{
#ifdef TWO_FUN_IN_ONE_VFD_KEY							
                            if((vfd_keycode[key_data-1]!=IRC_NEXT) && (vfd_keycode[key_data-1]!=IRC_PREV))
#endif //TWO_FUN_IN_ONE_VFD_KEY

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10
                            if((vfd_keycode[key_data-1]!=IRC_LEFT) && (vfd_keycode[key_data-1]!=IRC_RIGHT))
#endif

#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
														if((vfd_keycode[key_data-1]!=IRC_VOLUME_UP) && (vfd_keycode[key_data-1]!=IRC_VOLUME_DN))
#endif

							//save_srn_start_t = get_rtc_val();//axel moved to top 2004/2/4 06:13PM
							call_ir_func(vfd_keycode[key_data - 1]);
						}
					}
					else
					{
						//save_srn_start_t = get_rtc_val(); //axel moved to top 2004/2/4 06:13PM
                        #ifdef USE_VFD_LED_TO_KEY_SOUND_INDICATE		//gerry for PANDA6950,3-8-23 17:19					
						write_vfd_led(0);
                        #elif defined(USE_VFD_LED_TO_KEY_SOUND_INDICATE_HI_ON)		//NONO 2003-10-15 16:14
						write_vfd_led(0xf);
                        #endif						
					
#ifdef TWO_FUN_IN_ONE_VFD_KEY
                        if((vfd_keycode[key_data-1]!=IRC_NEXT) && (vfd_keycode[key_data-1]!=IRC_PREV))
#endif //TWO_FUN_IN_ONE_VFD_KEY
#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10
                            if((vfd_keycode[key_data-1]!=IRC_LEFT) && (vfd_keycode[key_data-1]!=IRC_RIGHT))
#endif

#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihj add for Oritron 2004-11-10
													if((vfd_keycode[key_data-1]!=IRC_VOLUME_UP) && (vfd_keycode[key_data-1]!=IRC_VOLUME_DN))
#endif

						call_ir_func(vfd_keycode[key_data - 1]);
					}

#ifdef NEXT_FORWARD_IN_A_KEY					
					key_data_flag = 0;
#endif//#ifdef NEXT_FORWARD_IN_A_KEY
				}
#endif

		    }

		    else{
#ifdef TWO_FUN_IN_ONE_VFD_KEY
			    if((key_press_time_count>0)&&(key_press_time_count<15)&&(num_add_flag==0)&&(command_flag))
			    {
    				if(vfd_keycode[keycode_to_num(key_previ_temp)-1]==IRC_NEXT)
    				{
    					call_ir_func(IRC_NEXT);
    					command_flag=0;
    				}
    			    				
    				else if(vfd_keycode[keycode_to_num(key_previ_temp)-1]==IRC_PREV)
    			    {
    					call_ir_func(IRC_PREV);
    					command_flag=0;
    			    }
    		    }
    			key_press_time_count=0;	 
    			num_add_flag = 0;	
    			
#endif //TWO_FUN_IN_ONE_VFD_KEY

#ifdef TWO_FUNC_IN_LEFT_RIGHT_KEY //xyy add for Oritron 2004-11-10 9:58
			    if((uTimeCount>0)&&(uTimeCount<20)&&(num_add_flag==0)&&(command_flag))
			    {
    				if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_LEFT)
    				{
    					call_ir_func(IRC_LEFT);
    					command_flag=0;
    				}
    			    				
    				else if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_RIGHT)
    			    {
    					call_ir_func(IRC_RIGHT);
    					command_flag=0;
    			    }
    		    }
    			uTimeCount=0;	 
    			num_add_flag = 0;	
#endif

#ifdef TWO_FUNC_IN_VOLUP_VOLDN_KEY //lihjadd for Oritron 2004-11-10 9:58
			    if((uTimeCount>0)&&(uTimeCount<20)&&(num_add_flag==0)&&(command_flag))
			    {
    				if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_VOLUME_UP)
    				{
    					call_ir_func(IRC_VOLUME_UP);
    					command_flag=0;
    				}
    			    				
    				else if(vfd_keycode[keycode_to_num(uPrevKey)-1]==IRC_VOLUME_DN)
    			    {
    					call_ir_func(IRC_VOLUME_DN);
    					command_flag=0;
    			    }
    		    }
    			uTimeCount=0;	 
    			num_add_flag = 0;	
#endif



#ifdef QISHENG_DVD		   	 
		   	    standby_cnt = 0;
#endif 
		    }
		}
#ifdef QISHENG_DVD
        else if ((key_data!=0))
        {
        	if(standby_cnt)
        	{
        		standby_cnt++;
        		printf("*");
        		if(standby_cnt==50)
        		{
        			vfd_state = VFD_WRITE;
        			call_ir_func(IRC_POWER);
        		}
        	}
        }
#endif
	
#if defined(TWO_FUN_IN_ONE_VFD_KEY) || defined(TWO_FUNC_IN_LEFT_RIGHT_KEY)||defined(TWO_FUNC_IN_VOLUP_VOLDN_KEY)//lihj add for Oritron 2004-11-10
		else
		{
		    command_flag=1;
		}	
#endif			
		vfd_state = VFD_WRITE;
	}	
	else
	{
		update_vfd_data();
#if defined(SUPPORT_APOGEE_AMP) && defined(AMPVOL_ADJUST_TYPE1)//xyy 2004-4-14
    	if(full_scrn==APOGEEAMPVOL && timeout_osd[REGION1] == 0)
    	{
    		full_scrn = 0;
    		erase_vfd_mem();
    	}
#endif
        //int i;
#ifdef AUTO_INTO_STANDBY   //for tonic dvd//20040206
    	//if(play_state==VCD_STATE_STOP||system_state==SYSTEM_NODISC)
	    if(system_state==SYSTEM_STOP||system_state==SYSTEM_NODISC||play_state==VCD_STATE_STOP)
        {
        	//auto_standby_timer++;
	    	//if(auto_standby_timer==100*60*30)
	    	if(auto_standby_timer==100*60*25)
	        	ircmd_power();
        }
        else
	        auto_standby_timer=0;
#endif

		switch (bWriteState)
		{
		case 0:
			//update to reset mode
#ifndef TEST_VFD
			regs0->iop_data[VFD_CMD] = VFDC_SET_DISP | VFD_DISPLAY_MODE;
#else
			regs0->iop_data[VFD_CMD] = VFDC_SET_DISP | COMMAND_MODE;
#endif		
			
			regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN0);
			
			bWriteState++;
			break;
			
		case 1:
			regs0->iop_data[VFD_CMD] =
				VFDC_DISP_CTRL | VFDC_DISP_CTRL_ON | VFDC_DISP_CTRL_10_16;
			
			regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
				(FUN_VFD_WRITE | VFD_DAT_LEN0);
			
			bWriteState++;
			break;

#ifdef  SM1623_DRIVER_VFD
		case 2:				
		//update in one polling
            for(i=0;i<VFD_DISPLAY_SIZE;i+=4)       // fengjl upload  3-11-23 17:33
            {
    			regs0->iop_data[VFD_CMD] = (0xc0 | i);   // transfer  address   
    			if((VFD_DISPLAY_SIZE-i)<=4)//modefied by wangfeng,2003-11-24 10:41
    			{
    			    regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
    			    regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
    				(FUN_VFD_WRITE | VFD_DAT_LEN2);
    			}
    			else
    			{
    			    regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
    			    regs0->iop_data[VFD_DAT1] = vfd_mem[i + 3] << 8 | vfd_mem[i + 2];
    				regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
    				(FUN_VFD_WRITE | VFD_DAT_LEN4);
    			}
    			
    			WaitIopFunRdy(IOP_RDY_WAIT);
            }			
			vfd_state = VFD_READ;
			bWriteState=0;
			break;

#elif defined(GBM_LED6961_PANEL)||defined(ET6201_PANNEL)||defined(GBM_PBCY_8202_PANNEL)            //gerry for GBM_LED_PANEL,2004-2-4 22:41
		case 2:				

			for(i=0;i<VFD_DISPLAY_SIZE;i+=2)
			{
				regs0->iop_data[VFD_CMD] = (0xc0 | i);

				regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
				regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN2);
				WaitIopFunRdy(IOP_RDY_WAIT);		
			}	
			vfd_state = VFD_READ;	
			bWriteState=0;
			break;

#else//GBM_LED6961_PANEL
			
		case 2:				
			
#if !defined(TP6311_DRIVER_VFD) && !defined(XINGQIU_RECEIVER_PANNEL)&& !defined(KENLOON_PANEL3)	&& !defined(ORITRON_PANEL)//xyy
			regs0->iop_data[VFD_CMD] = (0xc0 | count);
			regs0->iop_data[VFD_DAT0] = vfd_mem[count + 1] << 8 | vfd_mem[count];
			regs0->iop_data[VFD_DAT1] = vfd_mem[count + 3] << 8 | vfd_mem[count + 2];
			#ifndef SKYWORTH_DVD
			regs0->iop_data[VFD_DAT2] = vfd_mem[count + 5] << 8 | vfd_mem[count + 4];
			#endif
			regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
			#ifndef SKYWORTH_DVD
				(FUN_VFD_WRITE | VFD_DAT_LEN6);
			
			/* transfer data size add by chichang 2001 6/6 */
			count += 6;
			#else
			(FUN_VFD_WRITE | VFD_DAT_LEN4);
			/* transfer data size add by chichang 2001 6/6 */
			count += 4;
			#endif
			
			if(count == VFD_DISPLAY_SIZE)
			{
				count = 0;
				vfd_state = VFD_READ;
			}
#else//#ifndef TP6311_DRIVER_VFD		                                             //marked by xyy 2003-10-31 19:42	
    		for(i = 0; i < VFD_DISPLAY_SIZE; i += 6)    //xyy 2003-10-31 19:42
    		{
    			regs0->iop_data[VFD_CMD] = (0xc0 | i);
    			regs0->iop_data[VFD_DAT0] = vfd_mem[i + 1] << 8 | vfd_mem[i];
    			regs0->iop_data[VFD_DAT1] = vfd_mem[i + 3] << 8 | vfd_mem[i + 2];
    			regs0->iop_data[VFD_DAT2] = vfd_mem[i + 5] << 8 | vfd_mem[i + 4];
    			
    			regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) |
    				(FUN_VFD_WRITE | VFD_DAT_LEN6);
    			
    			WaitIopFunRdy(IOP_RDY_WAIT);
    		}
			vfd_state = VFD_READ;
#endif//#ifndef TP6311_DRIVER_VFD
			bWriteState=0;
			break;
#endif//#ifdef  SM1623_DRIVER_VFD
			
			
		}//write state control
	}
#elif defined(GPIO_KEY_LIGHT)//SUPPORT_VFD nono 3-8-18 14:41
    check_gpio_keylight_status();
#elif defined(USE_VFDPORT_TRANDATA)
    Communication_And_MCU4051();	   
#endif//SUPPORT_VFD

#endif //support spi qsi
}

#ifdef TP6317_PANNEL   //yaowh add 04-10-25
BYTE Read_SW(void)
{
   BYTE key_datasw ;
   key_datasw= (BYTE)regs0->iop_data[7] ;	  
   //regs0->iop_data[7] = 0xF0 ;            
   return  key_datasw ;
}
void write_vfd_data(BYTE bAddr, BYTE bData)
{
	regs0->iop_data[VFD_CMD] = 0x40;//Writes data to display memory
	regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN0);
	regs0->iop_data[VFD_CMD] = (0xc0 | bAddr);//Assress setting command
	regs0->iop_data[VFD_DAT0] = 0xff00 | bData;
	regs0->iop_data[0] = (regs0->iop_data[0] & VFD_DATLEN_MASK) | (FUN_VFD_WRITE | VFD_DAT_LEN1);
	WaitIopFunRdy(IOP_RDY_WAIT);
}
void define_standbykey(void)
{
    write_vfd_data(0x16,IR_USER_CODE_LOW8 & 0xff);
    write_vfd_data(0x17,IR_USER_CODE_HIGHT8 & 0xff);
    write_vfd_data(0x18,TP6317_IR_CODE1 & 0xff);
    write_vfd_data(0x19,TP6317_IR_CODE2 & 0xff);
    write_vfd_data(0x1a,TP6317_IR_CODE3 & 0xff);
    write_vfd_data(0x1b,TP6317_IR_CODE4 & 0xff);
    write_vfd_data(0x1c,TP6317_IR_CODE5 & 0xff);
    write_vfd_data(0x1d,TP6317_IR_CODE6 & 0xff);
    write_vfd_data(0x1e,TP6317_IR_CODE7 & 0xff);
    write_vfd_data(0x1f,TP6317_IR_CODE8 & 0xff);
    write_vfd_data(0x20,TP6317_VFD_KEY_CODE1 & 0xff);
    write_vfd_data(0x21,TP6317_VFD_KEY_CODE2 & 0xff);
    write_vfd_data(0x22,TP6317_VFD_KEY_CODE3 & 0xff);
    	
}
void  Power_off_define_TP6317_standbykey(void) 
{
    define_standbykey();
}
void TP6317_int(void)
{
    define_standbykey();
}
#endif

⌨️ 快捷键说明

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