?? t102osd.c
字號:
#include <reg51.h>
#include "common.h"
#include "System.h"
#include "OSDDraw.h"
#include "TwoWire.h"
#include "TW10xReg.h"
#include "T102OSD.h"
#ifdef NEW_OSD
#include "font1216.c"
#else
#include "T102_Font12W18H.c" // 12W18H
//#include "T102_Font8W16H.c" // 8W16H // It's better for Au 3.5".
//#include "T102_Font6W16H.c" // 6W16H // It's too small for Au 3.5".
#endif
#define LOGO_ON
#ifdef LOGO_ON
#define OSDBMP_2BIT_PIXEL 0xf8
#define OSDBMP_4BIT_PIXEL 0xb8
#define OSDBMP_TYPE OSDBMP_2BIT_PIXEL
#define BMP_HPOS (1024-320)/2
#define BMP_VPOS (768-76)/2
#include "T102_Logo.c"
bit OSD_PowerOnLogo_On = 1;
// define OSD Logo BMP LUT color data
code unsigned char OSDLutLogoData[32]={
0x33,0x03, //Black f=0 , b=0 0x12, 03
0xaa,0x02, //Light Blue f=2 , b=1
0x18,0x01, //Dark Blue f=8 , b=4
0x1f,0x01, //Dark Blue f=8 , b=4
0xff,0x0f, //White f=3
0xf6,0x0f, //Dark Brown f=4 , b=2
0x08,0x08, //Purple f=5
0xa8,0x07, //Light Green f=6 , b=3
0x86,0x0f, //Dark Red f=7
0x54,0x0f, //Dark Red f=7
0x54,0x0f, //Dark Red f=7
0x0f,0x0f,
0xb9,0x00, //purple 6
0x44,0x04,
0x88,0x08, //grey
0xff,0x0f //white
};
#endif //LOGO_ON
void OSDLogo(void)
{
unsigned int i;
#ifdef LOGO_ON
OSDSetRamAddr(FONT_DATA_START_ADDRESS);
I2CWriteByte(TW101,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);
OSDCfgWr(BW_W,20);
OSDCfgWr(BW_H,29);
twdWr_Burst_A(OSD_RAM_DL);
for(i=0;i<40*32;i++)
twdWr_Burst_D(logodata[i]);
twdWr_Burst_P();
OSDCfgWr(OSD_CTRL,0xf8); //2 bits pixel BitMap
//kenny 20060301 ==================
//#ifdef T116
I2CWriteByte(TW101,0xE2,0x11);
//#endif
//kenny 20060301 ==================
twdDelay(2000);
#endif
}
void OSDInit(void)
{
unsigned int i,j;
OSDCfgWr(OSD_CTRL,0x18); //disable osd and width*1
OSDSetRamAddr(FONT_DATA_START_ADDRESS);
OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
// add by Sherman 06'02'06
#if (defined T102)|(defined T112)|(defined T118)
if((FONT_SIZE==FONT_SIZE8W16H)|(FONT_SIZE==FONT_SIZE6W16H))
OSDCfgWr(0x0f,0x40);
#endif
//
OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START); //To setup character index start address.
//If start address is 0x9c0,
//You have get ((0x9c0 >> 5) & 0x7f) to store it
OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END); //This is to set index end address.
OSDCfgWr(BLINK_CTRL,0x09);
OSDCfgWr(ALPHA_BLD_CTRL,0x84);
OSDLoadColor();
OSDSetRamAddr(FONT_DATA_START_ADDRESS);
twdWr_Burst_A(OSD_RAM_DL);
//Below is re-writted // chagne by Sherman 06'02'06
#ifdef T102
if((FONT_SIZE==FONT_SIZE8W16H)|(FONT_SIZE==FONT_SIZE6W16H)){
for(j=0;j<(TOTAL_FONT_NUM/2)+1;j++)
for(i=0; i<FONT_HEIGHT; i++){
twdWr_Burst_D(AllFonts[2*j+1][2*i+1]);
twdWr_Burst_D(AllFonts[2*j][2*i+1]);
}
}else{
#endif
for(j=0;j<TOTAL_FONT_NUM;j++)
for(i=0; i<FONT_HEIGHT; i++){
twdWr_Burst_D(AllFonts[j][2*i]);
twdWr_Burst_D(AllFonts[j][2*i+1]);
}
#ifdef T102
}
#endif
//0x400==1024;
#ifdef T118
for(i=(TOTAL_FONT_NUM)*FONT_HEIGHT; i<0xc00; i++){
#elif (defined T116)
for(i=(TOTAL_FONT_NUM)*FONT_HEIGHT; i<0x600; i++){
#else
for(i=(TOTAL_FONT_NUM)*FONT_HEIGHT; i<0x400; i++){
#endif
twdWr_Burst_D(0x00);
twdWr_Burst_D(0x00);
}
twdWr_Burst_P();
for(i=0;i<OSD_LINE_NUM;i++){
OSDCleanLine(0,i,0,31);
OSDSetLineAttribute(i,0x80);
}
}
void OSDShowLine(uCHAR *string,uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
{
uCHAR c;
if((x < 30) && ( y < OSD_LINE_NUM)){
OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
twdWr_Burst_A(OSD_RAM_DL); // Write OSD index
while((*string) != EOL && (x < cLength)){
c=*string++;
if(c>0x40) // Character
twdWr_Burst_D(c-IndexCharacterOffset);
else if(c>=0x30) // number
twdWr_Burst_D(c-IndexNumOffset);
else
twdWr_Burst_D(c);
twdWr_Burst_D(cColor );
x++;
}
}
twdWr_Burst_P();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -