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

📄 tft.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 4 页
字号:
				_TFT_OSD_Draw_Symbo(0xff);
				_TFT_OSD_Draw_Symbo(__bTftSetupMode);
				_TFT_OSD_DrawBar(0xff);
#endif
#ifdef TFT_OSD_CONTROLED_BY_VX1818
  // update current TFT UI
                        TFT_OSD_UpdateMode();
#endif
				__dwTftCountTime=__dwCountSystem;
				bKey=KEY_NO_KEY;
				break;
			case  KEY_TFT_REVERSE:
				#ifdef YHTANG_DEBUG
				_printf("\n process key_reverse");
				#endif
			      if(__bTftRevise==TFT_REVISE_NORMAL)
     			 	{
			      		__bTftRevise=TFT_REVISE_UPDOWN;
					#ifndef SERIAL_DEBUG
					        __sbTftud   =1;
					        __sbTftlr    =0; 
					#else
						P5CON|=0x01;//set p5.0
						P5CON|=0x04;//set p5.2
						P5&=0xfb;  //set p5.2 to low//lr
//						for(__bTftTemp1=0;__bTftTemp1<50;__bTftTemp1++){}
						P5|=0x01;  //set p5.0 to high//ud
					#endif
				I2C_VX1818_Write(0xc0,0xf9);	
			      	}
				else if(__bTftRevise==TFT_REVISE_UPDOWN)
      				{
				      	__bTftRevise=TFT_REVISE_NORMAL;
					#ifndef SERIAL_DEBUG
					        __sbTftud   =0;
						__sbTftlr    =1; 
					#else
						P5CON|=0x01;//set p5.0
						P5CON|=0x04;//set p5.2
						P5|=0x04;  //set p5.2 to high//lr
//						for(__bTftTemp1=0;__bTftTemp1<50;__bTftTemp1++){}
						P5&=0xfe;  //set p5.0 to low//ud
					#endif
					I2C_VX1818_Write(0xc0,0xff);	   
 			   	}
				bKey=KEY_NO_KEY;
				break;
			case KEY_TFT_SIZE:
		     		if(__bTftSize==TFT_TVTYPE_PS)
		     			{
		     			__bTftSize=TFT_TVTYPE_WIDE;
				   I2C_VX1818_Write(0xc1,0x7a);	
		     			}
				else if(__bTftSize==TFT_TVTYPE_WIDE)
					{
		     			__bTftSize=TFT_TVTYPE_PS;
		  			     I2C_VX1818_Write(0xc1,0x79);
					}
				_TFT_Set_TvMode(__bMPEGVideoMode);
				bKey=KEY_NO_KEY;
				break;
			case KEY_TFT_UP:
			case KEY_TFT_DOWN:
				if(__bTftSetupMode==TFT_SETUP_NULL)
					{
								bKey=KEY_INVALID;
					}
				else
					{
						switch(__bTftSetupMode)
						{
							case   TFT_SETUP_BRIGHT:
								if(bKey==KEY_TFT_UP)
								{
								if(__bTftBright<TFT_EPROM_MAX_BRIGHT)
										__bTftBright++;
								}
								else if(bKey==KEY_TFT_DOWN)
								{
									if(__bTftBright>TFT_EPROM_MIN_BRIGHT)
										__bTftBright--;
								}
								I2C_VX1818_Write(0x1E,(64+8*(__bTftBright-TFT_EPROM_MIN_BRIGHT)));
								break;
							case TFT_SETUP_CONTRAST:
								if(bKey==KEY_TFT_UP)
								{
								if(__bTftContrast<TFT_EPROM_MAX_CONTRAST)
										__bTftContrast++;
								}
								else if(bKey==KEY_TFT_DOWN)
								{
									if(__bTftContrast>TFT_EPROM_MIN_CONTRAST)
										__bTftContrast--;
								}
								I2C_VX1818_Write(0x1f,(64+8*(__bTftContrast-TFT_EPROM_MIN_BRIGHT)-32));		
								break;
								
							case   TFT_SETUP_COLOR:
								if(bKey==KEY_TFT_UP)
								{
								if(__bTftColor<TFT_EPROM_MAX_COLOR)
										__bTftColor++;
								}
								else if(bKey==KEY_TFT_DOWN)
								{
									if(__bTftColor>TFT_EPROM_MIN_COLOR)
										__bTftColor--;
								}
								I2C_VX1818_Write(0x20,(64+8*(__bTftColor-TFT_EPROM_MIN_BRIGHT)));
								break;
							case TFT_SETUP_RESET:
								__bTftBright=TFT_EPROM_DEFAULT_BRIGHT;
								__bTftContrast=TFT_EPROM_DEFAULT_CONTRAST;
								__bTftColor=TFT_EPROM_DEFAULT_COLOR;
								I2C_VX1818_Write(0x1E,(64+8*(__bTftBright-TFT_EPROM_MIN_BRIGHT)));
								I2C_VX1818_Write(0x1f,(64+8*(__bTftContrast-TFT_EPROM_MIN_BRIGHT)-32));		
								I2C_VX1818_Write(0x20,(64+8*(__bTftColor-TFT_EPROM_MIN_BRIGHT)));
								break;
						}
						_TFT_EpromData(TFT_WRITE_EPROM);
#ifdef TFT_OSD_CONTROLED_BY_CT908
						_TFT_OSD_Draw_Symbo(__bTftSetupMode);
						_TFT_OSD_DrawBar(__bTftSetupMode);
#endif
#ifdef TFT_OSD_CONTROLED_BY_VX1818
						TFT_Driver_UpdateValue();
#endif
						bKey=KEY_NO_KEY;
					}
				__dwTftCountTime=__dwCountSystem;
				break;
			default:
				break;
		}
	return bKey;
}


#ifdef TFT_OSD_CONTROLED_BY_CT908
void _TFT_Draw_Background(void)
{
                GDI_SetMixRatio(28);               
                GDI_SetCurrentRegion(0);
                GDI_ActivateRegion();	
		// 1.Draw background frame.
		GDI_DRAW_FRAME(TFT_MENU_TOP_H_START,
			 TFT_MENU_TOP_V_START, 
			TFT_MENU_BOT_H_END, 
			TFT_MENU_BOT_V_END, 
			GDI_ENTRY_4B_COLOR_WHITE,
			GDI_ENTRY_4B_COLOR_TEXT_DISABLED,
			GDI_ENTRY_4B_COLOR_CENTER,
			FRAME_POP_SOLID,
			2);	
}

void _TFT_OSD_HiLight_Bar(BYTE bMode)
{

		//draw the hightlight
	       GDI_FILL_RECT(TFT_MENU_TOP_H_START+TFT_H_START_GAP,
						 TFT_MENU_TOP_V_START+(bMode-1)*TFT_BAR_V_GAP+TFT_V_START_GAP, 
						TFT_MENU_TOP_H_START+TFT_H_START_GAP*3+32*2+TFT_BAR_WIDTH-8,  
						TFT_MENU_TOP_V_START+(bMode-1)*TFT_BAR_V_GAP+TFT_V_START_GAP+32, 
						GDI_ENTRY_4B_COLOR_YELLOW);
               GDI_SetTextColor(TEXT_FG_COLOR, GDI_ENTRY_4B_COLOR_BLACK); 
}

void _TFT_OSD_UnHiLight_Bar(BYTE bMode)
{

		//draw the hightlight
	       GDI_FILL_RECT(TFT_MENU_TOP_H_START+TFT_H_START_GAP,
						 TFT_MENU_TOP_V_START+(bMode-1)*TFT_BAR_V_GAP+TFT_V_START_GAP, 
						TFT_MENU_TOP_H_START+TFT_H_START_GAP*3+32*2+TFT_BAR_WIDTH-8,  
						TFT_MENU_TOP_V_START+(bMode-1)*TFT_BAR_V_GAP+TFT_V_START_GAP+32, 
						GDI_ENTRY_4B_COLOR_CENTER);
               GDI_SetTextColor(TEXT_FG_COLOR, GDI_ENTRY_4B_COLOR_BLACK); 
}

void _TFT_OSD_Draw_Symbo(BYTE bMode)
{
	if(bMode==0xff)
	{
		GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_CENTER); 					
		GDI_CopyCodeString(aNDBright);
		GDI_DRAW_STRING(TFT_MENU_TOP_H_START+TFT_H_START_GAP, TFT_MENU_TOP_V_START+TFT_V_START_GAP);		

		GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_CENTER); 					
		GDI_CopyCodeString(aNDContrast);
		GDI_DRAW_STRING(TFT_MENU_TOP_H_START+TFT_H_START_GAP, TFT_MENU_TOP_V_START+TFT_V_START_GAP+1*TFT_BAR_V_GAP);		

		GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_CENTER); 					
		GDI_CopyCodeString(aNDColor);
		GDI_DRAW_STRING(TFT_MENU_TOP_H_START+TFT_H_START_GAP, TFT_MENU_TOP_V_START+TFT_V_START_GAP+2*TFT_BAR_V_GAP);		

		GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_CENTER); 					
		GDI_CopyCodeString(aNDReset);
		GDI_DRAW_STRING(TFT_RESET_H_POS,TFT_RESET_V_POS);		
	}
	else
	{
			GDI_SetTextColor(TEXT_SHADOW_COLOR_1, GDI_ENTRY_4B_COLOR_YELLOW); 					
			  switch(bMode)
			  	{
			  		case TFT_SETUP_BRIGHT:
							GDI_CopyCodeString(aNDBright);
							GDI_DRAW_STRING(TFT_MENU_TOP_H_START+TFT_H_START_GAP, TFT_MENU_TOP_V_START+TFT_V_START_GAP);		
							break;
					case TFT_SETUP_CONTRAST:
							GDI_CopyCodeString(aNDContrast);
							GDI_DRAW_STRING(TFT_MENU_TOP_H_START+TFT_H_START_GAP, TFT_MENU_TOP_V_START+TFT_V_START_GAP+1*TFT_BAR_V_GAP);		
							break;
			  		case TFT_SETUP_COLOR:
							GDI_CopyCodeString(aNDColor);
							GDI_DRAW_STRING(TFT_MENU_TOP_H_START+TFT_H_START_GAP, TFT_MENU_TOP_V_START+TFT_V_START_GAP+2*TFT_BAR_V_GAP);		
							break;
			  		case TFT_SETUP_RESET:
							GDI_CopyCodeString(aNDReset);
							GDI_DRAW_STRING(TFT_RESET_H_POS,TFT_RESET_V_POS);		
							break;
					default: break;	
			  	}
	}
}

void _TFT_OSD_DrawBar(BYTE  bValue)
{
		// 4. Draw bars
		if((bValue==0xff)||(bValue==TFT_SETUP_RESET))
		{
		for(__bTftTemp1=1;__bTftTemp1<4;__bTftTemp1++)

			{
				GDI_FILL_RECT(TFT_BAR_START_H_POS,
					 TFT_BAR_START_V_POS+(__bTftTemp1-1)*TFT_BAR_V_GAP, 
					TFT_BAR_START_H_POS+TFT_BAR_WIDTH, 
					TFT_BAR_START_V_POS+(__bTftTemp1-1)*TFT_BAR_V_GAP+TFT_BAR_HEIGHT, 
					GDI_ENTRY_4B_COLOR_BLACK);
					
				GDI_FILL_RECT(TFT_BAR_START_H_POS+2,
					 TFT_BAR_START_V_POS+(__bTftTemp1-1)*TFT_BAR_V_GAP+2, 
					TFT_BAR_START_H_POS+TFT_BAR_WIDTH-2, 
					TFT_BAR_START_V_POS+(__bTftTemp1-1)*TFT_BAR_V_GAP+TFT_BAR_HEIGHT-2, 
					GDI_ENTRY_4B_COLOR_GREEN);
				switch(__bTftTemp1)
				{
					case TFT_SETUP_BRIGHT:
						__bTftTemp2=__bTftBright;
					//	if(__bTFTLevel==TFT_MAX_BRIGHT)  __bTFTLevel=TFT_TOTAL_LEVELS;
						break;
					case TFT_SETUP_CONTRAST:
						__bTftTemp2=__bTftContrast;
					//	if(__bTFTLevel==TFT_MAX_CONTRAST)  __bTFTLevel=TFT_TOTAL_LEVELS;
						break;		
					case TFT_SETUP_COLOR:
						__bTftTemp2=__bTftColor;
					//	if(__bTFTLevel==TFT_MAX_CONTRAST)  __bTFTLevel=TFT_TOTAL_LEVELS;
						break;							
				}

				 GDI_FILL_RECT(TFT_BAR_START_H_POS+2+__bTftTemp2*TFT_BAR_SLIDE_GAP,
				TFT_BAR_START_V_POS+(__bTftTemp1-1)*TFT_BAR_V_GAP+2, 
				TFT_BAR_START_H_POS+2+__bTftTemp2*TFT_BAR_SLIDE_GAP+TFT_BAR_SLIDE_WIDTH,
				TFT_BAR_START_V_POS+TFT_BAR_HEIGHT+(__bTftTemp1-1)*TFT_BAR_V_GAP-2, 
				GDI_ENTRY_4B_COLOR_WHITE);
			}
		}
		else
			{
					GDI_FILL_RECT(TFT_BAR_START_H_POS,
						 TFT_BAR_START_V_POS+(bValue-1)*TFT_BAR_V_GAP, 
						TFT_BAR_START_H_POS+TFT_BAR_WIDTH, 
						TFT_BAR_START_V_POS+(bValue-1)*TFT_BAR_V_GAP+TFT_BAR_HEIGHT, 
						GDI_ENTRY_4B_COLOR_BLACK);
						
					GDI_FILL_RECT(TFT_BAR_START_H_POS+2,
						 TFT_BAR_START_V_POS+(bValue-1)*TFT_BAR_V_GAP+2, 
						TFT_BAR_START_H_POS+TFT_BAR_WIDTH-2, 
						TFT_BAR_START_V_POS+(bValue-1)*TFT_BAR_V_GAP+TFT_BAR_HEIGHT-2, 
						GDI_ENTRY_4B_COLOR_GREEN);
					switch(bValue)
					{
						case TFT_SETUP_BRIGHT:
							__bTftTemp2=__bTftBright;
							break;
						case TFT_SETUP_CONTRAST:
							__bTftTemp2=__bTftContrast;
							break;		
						case TFT_SETUP_COLOR:
							__bTftTemp2=__bTftColor;
							break;	
						default: break;
					}

					 GDI_FILL_RECT(TFT_BAR_START_H_POS+2+__bTftTemp2*TFT_BAR_SLIDE_GAP,
					TFT_BAR_START_V_POS+(bValue-1)*TFT_BAR_V_GAP+2, 
					TFT_BAR_START_H_POS+2+__bTftTemp2*TFT_BAR_SLIDE_GAP+TFT_BAR_SLIDE_WIDTH,
					TFT_BAR_START_V_POS+TFT_BAR_HEIGHT+(bValue-1)*TFT_BAR_V_GAP-2, 
					GDI_ENTRY_4B_COLOR_WHITE);
			}

}

void _TFT_OSD_Clear(void)
{
		GDI_FILL_RECT(TFT_MENU_TOP_H_START,
			 TFT_MENU_TOP_V_START, 
			TFT_MENU_BOT_H_END, 
			TFT_MENU_BOT_V_END, 
			GDI_ENTRY_4B_COLOR_TRANSPARENT	 
			);	

}
#endif


#ifdef  TFT_OSD_CONTROLED_BY_VX1818

void TFT_Driver_UpdateValue(void)
{
   if(__bTftSetupMode<TFT_SETUP_RESET)   
   {
        VX1818_OSD_ShowBar(__bTftSetupMode);
   }
   else
   {
          for(__bTftTemp1=1;__bTftTemp1<TFT_SETUP_RESET;__bTftTemp1++)
               VX1818_OSD_ShowBar(__bTftTemp1);
   }
}


/*********************************************************************
   Turn on/off OSD Function (For VX1818)

Input Factor:
        osd_en   => 8 bits , Lower 3 bits is available,and higher 5 bits
                             must be zero.
                             0 bit => OSD Bottom Block enable or not
                             1 bit => OSD Content Block enable or not
                             2 bit => OSD Title Block enable or not
                             0 => Disable    1 => Enable
Output Factor:
        None
Motion:
        1.Setup the three block of osd enable or not
*********************************************************************/
void VX1818_OSD_Enable(BYTE bOsdEn)
{
    bOsdEn &= 0x07;     // Remove redundant bits
    __bTftTemp1= TFT_Driver_Read(OSD_ALPHA_ENABLE);
//    __bTftTemp1 &= 0xf8;
    bOsdEn |= __bTftTemp1;
    TFT_Driver_Write(OSD_ALPHA_ENABLE,bOsdEn);
}

void VX1818_OSD_DisEnable(BYTE bOsdEn)
{
    __bTftTemp1= TFT_Driver_Read(OSD_ALPHA_ENABLE);
    __bTftTemp1 &= ~bOsdEn;
    TFT_Driver_Write(OSD_ALPHA_ENABLE,__bTftTemp1);
}

/*********************************************************************
   Set position of OSD Function (For VX1818)

Input Factor:
        block    => 8 bits , Choose which block to set
                             0x01 => Title Block
                             0x02 => Content Block
                             0x03 => Bottom Block
        posx     => 8 bits , The position of X direction
        posy     => 8 bits , The position of Y direction
Output Factor:
        None
Motion:
        1.Set the position of OSD Block
*********************************************************************/
void VX1818_OSD_SetPos(BYTE bBlock,BYTE bPosx,BYTE bPosy)
{
  switch(bBlock)
  {
   case 1:      // Setup position of Title Block
        TFT_Driver_Write(OSD_TITLE_HOR_INI_POS,bPosx);
        TFT_Driver_Write(OSD_TITLE_VER_INI_POS,bPosy);
        break;
   case 2:      // Setup position of Content Block
        TFT_Driver_Write(OSD_CONTENT_HOR_INI_POS,bPosx);
        TFT_Driver_Write(OSD_CONTENT_VER_INI_POS,bPosy);
        break;
   case 3:      // Setup position of Bottom Block
        TFT_Driver_Write(OSD_BOTTOM_HOR_INI_POS,bPosx);
        TFT_Driver_Write(OSD_BOTTOM_VER_INI_POS,bPosy);
        break;
   default:
        break;
  }
}

/*********************************************************************
   Set Size of OSD Function (For VX1818)

Input Factor:
        block    => 8 bits , Choose which block to set
                             0x01 => Title Block
                             0x02 => Content Block
                             0x03 => Bottom Block
        sizex    => 8 bits , The size of X direction (Lower 6bits are available)
                             Value range => for small font:01h-26h
                                            for large font:01h-13h
        sizey    => 8 bits , The size of Y direction (Lower 5bits are available)
                             (Just for Content Block)
                             Value range => for small font:01h-15h
                                            for large font:01h-0ah
Output Factor:
        None
Motion:
        1.Set the size of OSD Block
*********************************************************************/
void VX1818_OSD_SetSize(BYTE bBlock,BYTE bSizeX,BYTE bSizeY)
{
  switch(bBlock)
  {
   case 1:      // Setup x size of Title Block
        TFT_Driver_Write(OSD_TITLE_CHAR_LEN,bSizeX);
        break;
   case 2:      // Setup x and y size of Content Block
        TFT_Driver_Write(OSD_CONTENT_HOR_LEN,bSizeX);
        TFT_Driver_Write(OSD_CONTENT_VER_LEN,bSizeY);
        break;
   case 3:      // Setup x size of Bottom Block
        TFT_Driver_Write(OSD_BOTTOM_HOR_LENGHT,bSizeX);

⌨️ 快捷键说明

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