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

📄 tft.c

📁 车载电子影音系统dvd播放系统原程序代码
💻 C
📖 第 1 页 / 共 4 页
字号:
//for  tft control  for  portable
#include "winav.h"
// Micky2.80p, declare malloc.h into platform.h
#include "hal.h"
#include "servo.h"
#include "input.h"
#include "chips.h"

#ifdef  _WINDVD
#include "setup.h"
#include "navigate.h"
#include "cell.h"
#include "dvdinfo.h"    // ** TCH0.27;
#endif    // _WINDVD

#include "cc.h"
#include "isr.h"
#include "osd.h"
#include "linear.h"
#include "thumb.h"
#include "sysdebug.h" //CoCo.sd
#include "cdinfo.h"

#include "utl.h"
// Micky1.21, CodeReview
// to be removed next time
///BIT     __btFreeze;

// LLY.274, rename all MP3 relative info. because module name has changed !!
#ifndef NO_MP3
// MP3DISC
#include "fmanager.h" //   "mp3.h"
//DVD016-1BIT __btMP3Disc=FALSE;
#endif
#include "tft.h"


#ifndef  TFT_OSD_CONTROLED_BY_VX1818
WORD code aNDBright[] = {1, CHAR_N_Bri};
WORD code aNDContrast[] = {1, CHAR_N_Contr};
WORD code aNDColor[] = {1, CHAR_N_Color};
WORD code aNDReset[] = {1, CHAR_N_Reset};
#endif

#define TFT_H_START_GAP 8
#define TFT_V_START_GAP 8

#define TFT_MENU_TOP_H_START   152
#define TFT_MENU_TOP_V_START   180


#define TFT_BAR_WIDTH   172
#define TFT_BAR_HEIGHT    16
#define TFT_BAR_SLIDE_WIDTH 8
#define TFT_BAR_V_GAP 40
#define TFT_BAR_START_H_POS TFT_MENU_TOP_H_START+TFT_H_START_GAP+32+TFT_H_START_GAP
#define TFT_BAR_START_V_POS TFT_MENU_TOP_V_START+TFT_V_START_GAP+(32-TFT_BAR_HEIGHT)/2

//#define TFT_MENU_TOP_V_START   100
#define TFT_MENU_BOT_H_END    TFT_MENU_TOP_H_START+TFT_H_START_GAP*3+32*2+TFT_BAR_WIDTH
#define TFT_MENU_BOT_V_END    TFT_MENU_TOP_V_START+TFT_V_START_GAP*2+TFT_BAR_V_GAP*4

#define TFT_RESET_H_POS    TFT_MENU_TOP_H_START+32*5    
#define TFT_RESET_V_POS    TFT_MENU_TOP_V_START+TFT_BAR_V_GAP*3+TFT_V_START_GAP

#define TFT_TOTAL_LEVELS 16 // 0~15
#define TFT_BAR_SLIDE_GAP ((TFT_BAR_WIDTH-4-TFT_BAR_SLIDE_WIDTH)/TFT_TOTAL_LEVELS)
#define VX1818_ID        0xD8


BYTE   __bTftSize;
BYTE   __bTftRevise;
BYTE  __bTftSetupMode;
BYTE  	__bTftBright;
BYTE    __bTftColor;
BYTE  __bTftContrast;
BYTE  __bTftTemp1,__bTftTemp2;
DWORD   __dwTftCountTime;
BYTE  __bTftTvTypePrev=0xff;
BYTE  __bTftLowBatt=FALSE;
DWORD  __dwTtfLowBattTime=0;
BYTE   __bTftLowBattSleep=FALSE;
#define  TFT_HIGHLIGHT           0x10   // 1 : highlight  0:  blink
#define  TFT_FOREGROUND       0x08   // 1:  foregroudn 0: background
#define  TFT_BATTERY              0x04  // 1: batter low, blink the battery info  0: don't show battery info
BYTE    bTFT_Status; // for gloabal use varablei 

DWORD __dwDelayCount;

// if use TFT Driver's OSD 
#define OSD_CMD_ADDRESS 0x50
#define OSD_CMD_DATA            0x51
#define OSD_ALPHA_ENABLE    0x52
#define OSD_BLACK_RATE         0x53
#define OSD_TITLE_CHAR_LEN   0x54
#define OSD_TITLE_HL_START       0x55
#define OSD_TITLE_HL_END        0x56
#define OSD_TTTLE_BLINK_START   0x57
#define OSD_TTTLE_BLINK_END     0x58
#define OSD_TITLE_HOR_INI_POS           0x59
#define OSD_TITLE_VER_INI_POS           0x5a
#define OSD_TITLE_BG_FG_COLOR   0x5b
#define OSD_TITLE_HL_COLOR              0x5c

#define OSD_CONTENT_HOR_LEN             0x5d
#define OSD_CONTENT_VER_LEN             0x5e
#define OSD_CONTENT_CMD_START_ADDR    0x5f
#define OSD_CONTENT_HOR_INI_POS         0x60
#define OSD_CONTENT_VER_INI_POS 0x61
#define OSD_CONTENT_HL_VER_START_POS    0x62
#define OSD_CONTENT_HL_VER_END_POS      0x63
#define OSD_CONTENT_HL_HOR_START_POS    0x64
#define OSD_CONTENT_HL_HOR_END_POS      0x65
#define OSD_CONTENT_BLINK_VER_START 0x66
#define OSD_CONTENT_BLINK_VER_STOP      0x67
#define OSD_CONTENT_BLINK_HOR_START     0x68
#define OSD_CONTENT_BLINK_HOR_STOP      0x69
#define OSD_CONTENT_BG_FG_COLOR         0x6a
#define OSD_CONTENT_HL_BG_FG_COLOR      0x6b

#define OSD_BOTTOM_HOR_LENGHT   0x6c
#define OSD_BOTTOM_CMD_START_ADDR       0x6d
#define OSD_BOTTOM_HOR_INI_POS  0x6e
#define OSD_BOTTOM_VER_INI_POS  0x6f
#define OSD_BOTTOM_HL_START     0x70
#define OSD_BOTTOM_HL_STOP      0x71
#define OSD_BOTTOM_BLINK_START  0x72
#define OSD_BOTTOM_BLINK_STOP          0x73
#define OSD_BOTTOM_BG_FG_COLOR  0x74
#define OSD_BOTTOM_HL_BG_FG_COLOR       0x75
//#define       osd38   0x76
//#define       osd39   0x77
//#define       osd40   0x78
//#define       osd41   0x79
#define  OSD_WRITE_DES_INITIAL_ADDR     0xfd // bit 6 5 4 destination  bit 1 0 initial address[ 9:8]
#define  OSD_INITIAL_ADDR                       0xfe // initial address [7:0]
#define  OSD_WRITE_DATA                      0xff // the data to be writed

#define OSD_DEST_NONE                                       0
#define OSD_DEST_COMMAND_MEM                       1
#define OSD_DEST_FONT_MEM                               2
#define BLOCK_TITLE                                                  1
#define BLOCK_CONTENT                                         2
#define BLOCK_BOTTOM                                         3

// color defnition
#define BLACK                           0x00
#define BLUE                                   0x01
#define GREEN                           0x02
#define CYAN                                    0x03
#define RED                                     0x04
#define FUCHSIA                                0x05
#define YELLOW                          0x06
#define WHITE                           0x07
#define TRANSPORT                       0x08
#define ROYALBLUE               0x09
#define MEDIUMAQUAMARINE        0x0a
#define LIGHTGREEN                      0x0b
#define ORANGE                          0x0c
#define HOTPINK                         0x0d
#define SILVER                          0x0e
#define GRAY                                   0x0f
// font code = the total font number + each font index
#define  USING_SYMBOL
#ifdef USING_SYMBOL
BYTE code aBright[] = {2,0x69,0x6a};
BYTE code aContrast[] = {2,0x6b,0x6c};
BYTE code aColor[] = {2,0x6d,0x6e};
BYTE code aReset[] = {5,0x1b,0x0e,0x1c,0x0e,0x1d};
BYTE code aBattery[] = {4,0x58,0x59,0x59,0x6c};
BYTE code aAv[] =  {2,0x0a,0x1f};// for  coby 0629
#else // use text info
BYTE code aBright[] = {10,0x0b,0x1b,0x12,0x10,0x11,0x1d,0x17,0x0e,0x1c,0x1c};
BYTE code aContrast[] = {8,0x0c,0x18,0x17,0x1d,0x1b,0x0a,0x1c,0x1d};
BYTE code aColor[] = {5,0x0c,0x18,0x15,0x18,0x1b};
BYTE code aReset[] = {5,0x1b,0x0e,0x1c,0x0e,0x1d};
BYTE code aBattery[] = {16,0x0b,0x24,0x37,0x37,0x28,0x35,0x3c,0x57,0x0d,0x28,0x33,0x2f,0x28,0x37,0x28,0x27};//Battery Depleted
#endif
BYTE __bTFT_HW_Switch_OnOff;
//#ifdef SUPPORT_AVIN  //yfxiao1215,for pdv288
BYTE  __bTftAvSwitchStatus=0;
BYTE   __bTftAvSwitchFlag=0;
DWORD  __dwTftAvSwitchTime;
BYTE  __bAvInStatus;
BYTE  __bAvINPowerKeyEnable=TRUE;
BYTE  __bTtftVChannel;
BYTE  __bTftKeyAvInEnable=TRUE;
DWORD __dwOsdAVINSHowTime=0;
BYTE   __bOSDAVINShowFlag=0;
//#endif
BYTE bTftTmp1,bTftTmp2;
BYTE bTFT_TVMode=0xff;
BYTE  __bTftTvModeChangeFlag=0;
DWORD    __dwCountTFT;
BYTE   __bTtfKeyPowerFlag=0;
#ifdef SUPPORT_TVMODE_AUTO_DETECT
DWORD  __dwTftTVModeDetectTime=0;
#endif



void TFT_HW_Switch_ON_OFF(BYTE bOn)
{
	if(bOn)
	{
		P5CON|=0x02;
		P5&=0xfd;
	//	I2C_VX1818_Write(0x42,0x00);
		__bTFT_HW_Switch_OnOff=1;
		
	}
	else
	{
		P5CON|=0x02;
		P5|=0x02;
	//	I2C_VX1818_Write(0x42,0xA0);	
		__bTFT_HW_Switch_OnOff=0;
		
	}
}

void _TFT_PowerOn_Initial_Variable(void)
{
	__bTftSize=TFT_TVTYPE_WIDE;
	__bTftRevise=TFT_REVISE_NORMAL;
	__bTftSetupMode=TFT_SETUP_NULL;
	__bTftTvTypePrev=__bTftSize;
	__dwCountTFT=0;
#ifdef SUPPORT_AVIN
	__bAvInStatus=DVD_OUTPUT_STATUS;
	__bTftAvSwitchStatus=DVD_OUTPUT_STATUS;
#endif	
}


void _TFT_PowerOn_Initial(void)
{
//	 __sbTftreset=1;
//	 	 __sbTftreset=1;

#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
#ifdef SUPPORT_AVIN
			__sbAvIn=0;
#endif
//					if(__bTftSwd == 0xFF) // Power on reset
								I2C_VX1818_Write(0x01,0x5a);
 					//turn oN    HIGH  V of  TFT  PANEL
 
					I2C_VX1818_Write(0x05,0xd9);
					I2C_VX1818_Write(0x06,0x02);
					I2C_VX1818_Write(0xc0,0xff);
					I2C_VX1818_Write(0xc1,0xdd);
					I2C_VX1818_Write(0x3b,0x03);
					//I2C_VX1818_Write(0x06,0x28);
					I2C_VX1818_Write(0x06,0x30);
					 I2C_VX1818_Write(0x02,0x07); //For S-Video
				//C_VX1818_Write(0x02,0x01);
//		                      GDI_OUTPUT_TEXT(10, 15, BatterLow);
					//I2C_VX1818_Write(0x06,0x68);
					I2C_VX1818_Write(0x06,0x68);
					I2C_VX1818_Write(0x04,0x7a);
					I2C_VX1818_Write(0x04,0x79);
					I2C_VX1818_Write(0x04,0x78);
					I2C_VX1818_Write(0x04,0x77);
//					I2C_VX1818_Write(0x04,0x76);
					I2C_VX1818_Write(0x48,0x01);
					//I2C_VX1818_Write(0x06,0x01);
					I2C_VX1818_Write(0x48,0x02);
					//I2C_VX1818_Write(0x06,0x02);
					I2C_VX1818_Write(0x11,0x65);
					I2C_VX1818_Write(0x12,0x05);//yhtang_1101
					I2C_VX1818_Write(0xa0,0x0);
					I2C_VX1818_Write(0xa1,0x0);
					I2C_VX1818_Write(0xa2,0x0);
					//I2C_VX1818_Write(0x07,0x0a);
					I2C_VX1818_Write(0x07,0xCA);
					I2C_VX1818_Write(0x7A,0x98);
					


					//I2C_VX1818_Write(0xb1,0x0);
					I2C_VX1818_Write(0xb1,0x23);
					//I2C_VX1818_Write(0xb2,0x0);
					I2C_VX1818_Write(0xb2,0x23);
					//I2C_VX1818_Write(0xb3,0x0);
					I2C_VX1818_Write(0xb3,0x28);
					I2C_VX1818_Write(0xb4,0x0);
					I2C_VX1818_Write(0xb5,0x0);

					I2C_VX1818_Write(0xb6,0x0);
					//I2C_VX1818_Write(0xb7,0x0);

					//I2C_VX1818_Write(0xb8,0x0);

					//I2C_VX1818_Write(0xb9,0x0);
					I2C_VX1818_Write(0xb7,0x23);

					I2C_VX1818_Write(0xb8,0x23);

					I2C_VX1818_Write(0xb9,0x28);

					I2C_VX1818_Write(0xba,0x0);

					I2C_VX1818_Write(0xbb,0x0);
					I2C_VX1818_Write(0xbc,0x0);



                                      I2C_VX1818_Write(0x3a,0x08);
                                      I2C_VX1818_Write(0x3b,0xfb);
                                      I2C_VX1818_Write(0x3c,0x9b);
                                      I2C_VX1818_Write(0xc1,0x78);
                                      I2C_VX1818_Write(0x22,0x11);
// Will add read 24C02 value.
	_TFT_EpromData(TFT_READ_EPROM);
	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)));
                			I2C_VX1818_Write(0x21,0x60);//hue adjustment

                                      I2C_VX1818_Write(0x2f,0x20);//sharpness begin
                                      I2C_VX1818_Write(0x30,0x0d);
                                      I2C_VX1818_Write(0x31,0x1d);
                                      I2C_VX1818_Write(0x32,0xff);
                                      I2C_VX1818_Write(0x2e,0x96);//sharpness end

			 _TFT_Set_TvMode(__bMPEGVideoMode);

#ifdef  TFT_OSD_CONTROLED_BY_VX1818
VX1818_OSD_SetAddr(BLOCK_CONTENT,0x20);
VX1818_OSD_SetAddr(BLOCK_BOTTOM, 0xb0);
//VX1818_OSD_Enable(0x00);  // first off all block TFT OSD  //yhtang_0803
VX1818_OSD_SetBlink(0x0f);
VX1818_OSD_SetAlpha(0x0d);
VX1818_OSD_SetSize(BLOCK_TITLE,0x10,0x01); // 06  01
VX1818_OSD_SetSize(BLOCK_CONTENT, 0x14, 0x04); // 10 07
VX1818_OSD_SetPos(BLOCK_TITLE, 0x20, 0x07);  // 90->10
VX1818_OSD_SetPos(BLOCK_CONTENT, 0x40, 0x10); // 80 -> 10

bTFT_Status |= TFT_FOREGROUND;  bTFT_Status &= ~TFT_HIGHLIGHT;
VX1818_OSD_SetColor(BLOCK_CONTENT, WHITE);
bTFT_Status &= ~TFT_FOREGROUND;  bTFT_Status &= ~TFT_HIGHLIGHT;
VX1818_OSD_SetColor(BLOCK_CONTENT, ROYALBLUE);
bTFT_Status |= TFT_FOREGROUND;  bTFT_Status |= TFT_HIGHLIGHT;
VX1818_OSD_SetColor(BLOCK_CONTENT, ORANGE);
bTFT_Status &= ~TFT_FOREGROUND;  bTFT_Status |= TFT_HIGHLIGHT;
VX1818_OSD_SetColor(BLOCK_CONTENT, ROYALBLUE);
TFT_OSD_Initial();//yhtang_0719

#endif
}


void  TFT_MUTE_ON(BYTE bMute)
{
	if(bMute)
	{
		P5CON|=0x08;
		P5&=0xf7;
		#ifdef YHTANG_DEBUG
		_printf("\n mute on");
		#endif
	}
	else
	{
		P5CON|=0x08;
		P5|=0x08;
		#ifdef YHTANG_DEBUG
		_printf("\n mute off");
		#endif
	}
}

//************************************
void TFT_Driver_AV_Switch(BYTE bAvIn)
{    
#ifdef SUPPORT_AVIN
			__bTftAvSwitchFlag=1;
			__dwTftAvSwitchTime=__dwCountSystem;
					TFT_MUTE_ON(TRUE);
	if(!bAvIn)	 //switch to av in		
	{  
	UTL_DelayTime(COUNT_500_MSEC, FALSE);
			__sbAvIn=0;
		#ifdef YHTANG_DEBUG
		_printf("\n p1.7 is low");
		#endif
	               TFT_Driver_Write(0x02,0x07); //For S-Video    for coby         
	               TFT_Driver_Write(0x01,0xa5); //For S-Video   for yashi
		      UTL_DelayTime(COUNT_50_MSEC, FALSE);
	               TFT_Driver_Write(0x06,0x30); //For S-Video   for yashi
	               TFT_Driver_Write(0x06,0x68); 	
	               TFT_Driver_Write(0x04,0x7a);	
	              TFT_Driver_Write(0x04,0x79);	
	              TFT_Driver_Write(0x04,0x78);	
	              TFT_Driver_Write(0x04,0x77);	
	//               TFT_Driver_Write(0x04,0x76);
			__bTftAvSwitchStatus=DVD_OUTPUT_STATUS;
				VX1818_OSD_DisEnable(0x04);
				__dwOsdAVINSHowTime=0;
					__bOSDAVINShowFlag=0;
	}         
	else           //switch to s 
   	 {
	UTL_DelayTime(COUNT_500_MSEC, FALSE);
			__sbAvIn=1;
		#ifdef YHTANG_DEBUG
		_printf("\n p1.7 is high");
		#endif
		     TFT_Driver_Write(0x02,0x01);      //FOR CVBS  INPUT     for coby
	               TFT_Driver_Write(0x01,0xa5); //For S-Video   for yashi
		      UTL_DelayTime(COUNT_50_MSEC, FALSE);
		     TFT_Driver_Write(0x06,0x30);
	            TFT_Driver_Write(0x06,0x70); 	
	            TFT_Driver_Write(0x04,0x7a);	
	            TFT_Driver_Write(0x04,0x79);	
	            TFT_Driver_Write(0x04,0x78);	
	            TFT_Driver_Write(0x04,0x77);	
//	            TFT_Driver_Write(0x04,0x76);	  	
			__bTftAvSwitchStatus=AV_IN_STATUS;
	UTL_DelayTime(COUNT_500_MSEC, FALSE);
			TFT_MUTE_ON(FALSE);
			TFT_OSD_SHOW_AVIN();

⌨️ 快捷键说明

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