📄 t102.c
字号:
#include "tw803_regs.h"
#include "t108_util.h"
#include "osddraw.h"
#include "OSD2_define.h"
#include "OSD1_define.h"
#include "iic.h"
#include "GAMMA.H"
#include "t102.h"
#include "T102_Logo.c"
#include "Font12x12.c"
unsigned int m_wBuff[3];
const unsigned char Icon1BPColorTable[]={
0x00,0x00,0x1F,0x00,0x00,0xF8,0xE0,0x07,0x80,0xB7,0xA0,0x8D,0x80,0x53,0xA6,0x33,
0xA0,0x07,0xC4,0x24,0xB9,0x10,0x1E,0x00,0x52,0x29,0x46,0x33,0xE0,0x05,0x44,0x24
};
const unsigned char OSDLutLogoData[32]={
0x00,0x00,
0xDE,0x00,
0x10,0x00,
0xFE,0x00,
0x9C,0x00,
0x17,0x00,
0xDD,0x00,
0x14,0x00,
0x0D,0x00,
0x38,0x00,
0x5A,0x00,
0x11,0x00,
0x7B,0x00,
0x15,0x00,
0x7B,0x00,
0x16,0x00
};
void OSD1Init(void);
void OSDLogo(void);
void OSD1ClearSRam(void);
void OSD1InItClearMenu(unsigned char MenuIndex);
void OSD1Load1BPFont(void);
void OSD1LoadColor(void);
void OpenBluePanel(void);
void OSDLogo(void)
{
unsigned int i,j;
unsigned char tt,tt1;
OSD1Disable();
OSDCfgWr(OSD_MENU1_ENABLE,0x00);
//OSDSetRamAddr(MENU_RAM_START_ADDRESS);
//for(i=0; i< 0x1FFF; i++) OSDSetRamData(0xE001);
//~ Set OSD Main Color LUT for Logo. ~//
OSDCfgWr(OSD_COLOR_LUT_ADR_PORT,0x00);
I2CWriteByte(TW803_P0,OSD_CFG_INDEX,0x09);
for(i=0;i<32;i++)
{
OSDCfgWr(OSD_COLOR_LUT_DATA_PORT,OSDLutLogoData[i]);
}
//~ Set BMP Color LUT Base address. ~//
OSDCfgWr(0x2C,0x00);
// OSDCfgWr(0x2d,0xc0);
//~ Set LOGO Width. ~//
OSDCfgWr(OSD_BMP_HSIZE_L,0x54); //width 40(x8)
OSDCfgWr(OSD_BMP_HSIZE_M,0x00);
//~ Set LOGO Height. ~//
OSDCfgWr(OSD_BMP_VSIZE_L,0x51); //width 40(x8)
OSDCfgWr(OSD_BMP_VSIZE_M,0x00);
//~ Set LOGO Horizintal start position. ~//
OSDCfgWr(OSD_BMP_HSTART_L,0x40); //width 40(x8)
OSDCfgWr(OSD_BMP_HSTART_M,0x00);
//~ Set LOGO Vertical start position. ~//
OSDCfgWr(OSD_BMP_VSTART_L,0x38); //width 40(x8)
OSDCfgWr(OSD_BMP_VSTART_M,0x00);
//~ Set OSD RAM Address. ~//
OSDSetRamAddr(0x0000);
//~ Load LOGO bitmap table to RAM. ~//
twdWr_Burst_A(OSD1_RAM_DL);
for(i=0;i<168*81/2;i++)
{
tt=0;tt1=0;
for(j=0;j<4;j++)
{
tt=((logodata[i*2+1]>>j*2)&0x03);
tt1=tt|(tt1<<2);
}
twdWr_Burst_D(tt1);
//IC_WritByte(TWIC_P0,OSD2_RAM_DL,tt1);
tt=0;tt1=0;
for(j=0;j<4;j++)
{
tt=((logodata[i*2]>>j*2)&0x03);
tt1=tt|(tt1<<2);
}
twdWr_Burst_D(tt1);
//IC_WritByte(TWIC_P0,OSD2_RAM_DL,tt1);
}
twdWr_Burst_P();
//~ Set LOGO bitmap data address in RAM. ~//
OSDCfgWr(OSD_BMP_START_ADR_L,0x00);
OSDCfgWr(OSD_BMP_START_ADR_M,0x00);
//~ Set BMP configuration. ~//
OSDCfgWr(0x20,0xC0);
OSDEnable();
twdDelay(/*30000*/2000);
// OSD1Disable();
// OSDCfgWr(0x20,0x25); cjh
}
void OSD1Init(void)
{
OSDCfgWr(OSD_CHAR_FONT_SIZE,(0xC0)|(0x00)|FontHeight);
//~Set Char2BP Font Index Base.~//
OSDCfgWr(OSD_CHAR2BP_FONT_INDEX,Font2BPIndexStr>>1);
//~Set Char4BP Font Index Base.~//
OSDCfgWr(OSD_CHAR4BP_FONT_INDEX,Font4BPIndexStr>>1);
//~Set Char2BP Font Memory Base Address.~//
OSDCfgWr(OSD_CHAR2BP_FONT_MEMADD_L,Font2BPDataStrAdr&0x00FF);
OSDCfgWr(OSD_CHAR2BP_FONT_MEMADD_M,Font2BPDataStrAdr>>8);
//~Set Char4BP Font Memory Base Address.~//
OSDCfgWr(OSD_CHAR4BP_FONT_MEMADD_L,Font4BPDataStrAdr&0x00FF);
OSDCfgWr(OSD_CHAR4BP_FONT_MEMADD_M,Font4BPDataStrAdr>>8);
//~Set Globa Alpha Blending Control.~//
OSDCfgWr(OSD_GLOBAL_ALPHA_BLENDING,0x10);
//~Set Border/Shadow/Char1BP Color High Bits Offset.~//
OSDCfgWr(OSD_BSH_COLOR_HIGHBIT,0x20);
//~Set Build-in Rom Font Index Base//
OSDCfgWr(OSD_FONTROM_INDEX,ROMFONTIndexStr>>1);
//~Clear Ram ~//
OSD1ClearSRam();
//Clear CFG
I2CWriteByte(TW803_P0,OSD1_CFG_INDEX,0x09);
for(m_wBuff[0] =0;m_wBuff[0]<18;m_wBuff[0]++)
{
I2CWriteByte(TW803_P0,OSD1_CFG_DATA,0);
}
//~Menue-1 Setting. ~//
OSDCfgWr(OSD_MENU1_ENABLE,0x00);
OSDCfgWr(OSD_MENU1_START_ADR_L,Menu1StrAdr&0x00FF);
OSDCfgWr(OSD_MENU1_START_ADR_M,Menu1StrAdr>>8);
OSDCfgWr(OSD_MENU1_END_ADR_L,Menu1EndAdr&0x00FF);
OSDCfgWr(OSD_MENU1_END_ADR_M,Menu1EndAdr>>8);
//~Menue-2 Setting. ~//
OSDCfgWr(OSD_MENU2_ENABLE,0x00);
OSDCfgWr(OSD_MENU2_START_ADR_L,Menu2StrAdr&0x00FF);
OSDCfgWr(OSD_MENU2_START_ADR_M,Menu2StrAdr>>8);
OSDCfgWr(OSD_MENU2_END_ADR_L,Menu2EndAdr&0x00FF);
OSDCfgWr(OSD_MENU2_END_ADR_M,Menu2EndAdr>>8);
//~Load Color Table.~//
OSD1Load1BPFont();
OSD1LoadColor();
OSD1InItClearMenu(MENU1);
OSD1InItClearMenu(MENU2);
}
void OSD1ClearSRam(void)
{
OSDCfgWr(OSD_BLK_WRT_LSB,0x00);
OSDCfgWr(OSD_BLK_WRT_MSB,0x00);
OSDCfgWr(OSD_BLK_WRT_SADD_LSB,0x00);
OSDCfgWr(OSD_BLK_WRT_SADD_MSB,0x00);
OSDCfgWr(OSD_BLK_WRT_LENGTH,0xFF);
OSDCfgWr(OSD_BLK_WRT_CTR,0x9f);
}
void OSD1InItClearMenu(unsigned char MenuIndex)
{
unsigned char i=0;
if(MenuIndex == MENU1)
{
for(i=0; i<Menu1Height; i++)
{
OSDSetRamAddr(Menu1StrAdr+(Menu1Width+4)*i);
twdWr_Burst_A(OSD1_RAM_DL);
//~Set RAtt_V~//
if(i==0)
OSDSetRamDataBuest(0x4000|Menu1StartY);
else
OSDSetRamDataBuest(0xE001);
//~Set RAtt_H~//
OSDSetRamDataBuest(0x6000|Menu1StartX);
//~Set RAtt_A~//
OSDSetRamDataBuest(0xD000|0x0003);
//~Set RAtt_C~//
OSDSetRamDataBuest(0x0000|(Menu1Width));
m_wBuff[0]=0;
while(m_wBuff[0]<Menu1Width)
{
OSDSetRamDataBuest(0x0000|((unsigned int)(0&0x04)<<9)|(0));
m_wBuff[0]++;
}
twdWr_Burst_P();
}
}
else if(MenuIndex == MENU2)
{
for(i=0; i<Menu2Height; i++)
{
OSDSetRamAddr(Menu2StrAdr+(Menu2Width+4)*i);
twdWr_Burst_A(OSD1_RAM_DL);
//~Set RAtt_V~//
if(i==0)
OSDSetRamDataBuest(0x4000|Menu2StartY);
else
OSDSetRamDataBuest(0xE001);
//~Set RAtt_H~//
OSDSetRamDataBuest(0x6000|Menu2StartX);
//~Set RAtt_A~//
OSDSetRamDataBuest(0xD000|0x0003);
//~Set RAtt_C~//
OSDSetRamDataBuest(0x0000|(Menu2Width));
m_wBuff[0]=0;
while(m_wBuff[0]<Menu2Width)
{
OSDSetRamDataBuest(0x0000|((unsigned int)(0&0x0F)<<9)|(0));
m_wBuff[0]++;
}
twdWr_Burst_P();
}
}
}
void OSD1Load1BPFont(void)
{
unsigned int i,j,k,l;
OSDSetRamAddr(Font1BPDataStrAdr);
twdWr_Burst_A(OSD1_RAM_DL);
if(FontWidth==OSD1FONTWIDTH12)
{
for(j=0;j<Font1BPNum;j++)
{
for(i=0; i<(FontHeight); i++)
{
k = i<<1;
l = (i+1)<<1;
m_wBuff[1] = (unsigned int)(All1BPFonts[j][k])|((unsigned int)(All1BPFonts[j][k+1])<<8);
m_wBuff[2] = (unsigned int)(All1BPFonts[j][l])|((unsigned int)(All1BPFonts[j][l+1])<<8);
switch(i&0x03)
{
case 0:
m_wBuff[0]= m_wBuff[1] |(m_wBuff[2]>>12);
twdWr_Burst_D(m_wBuff[0]&0x00FF);
twdWr_Burst_D(m_wBuff[0]>>8);
break;
case 1:
m_wBuff[0]= (m_wBuff[1] <<4)|(m_wBuff[2] >>8);
twdWr_Burst_D(m_wBuff[0]&0x00FF);
twdWr_Burst_D(m_wBuff[0]>>8);
break;
case 2:
m_wBuff[0]= (m_wBuff[1] <<8)|(m_wBuff[2]>>4);
twdWr_Burst_D(m_wBuff[0]&0x00FF);
twdWr_Burst_D(m_wBuff[0]>>8);
break;
case 3:
//Do nothing
break;
}
}
}
}
twdWr_Burst_P();
}
void OSD1LoadColor(void)
{
OSDCfgWr(OSD_COLOR_LUT_ADR_PORT,0x00);
I2CWriteByte(TW803_P0,OSD1_CFG_INDEX,0x09);
twdWr_Burst_A(OSD1_CFG_DATA);
for(m_wBuff[0] =0;m_wBuff[0]<3212;m_wBuff[0]++)
{
twdWr_Burst_D(Icon1BPColorTable[m_wBuff[0]]);
}
twdWr_Burst_P();
OSDCfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
I2CWriteByte(TW803_P0,OSD1_CFG_INDEX,0x09);
for(m_wBuff[0]=0;m_wBuff[0]<18;m_wBuff[0]++)
{
I2CWriteByte(TW803_P0,OSD1_CFG_DATA,0);
I2CWriteByte(TW803_P0,OSD1_CFG_DATA,0);
I2CWriteByte(TW803_P0,OSD1_CFG_DATA,0);
}
}
void OpenBluePanel(void)
{
I2CWriteByte(TW803_P0, 0x9d, 0x00);
I2CWriteByte(TW803_P0, 0x9e, 0xff);
I2CWriteByte(TW803_P0, 0x9f, 0x00);
I2CWriteByte(TW803_P0, PATTERN_CTRL, I2CReadByte(TW803_P0, PATTERN_CTRL)|0x80);
I2CWriteByte(TW803_P0, 0xe2, 0x11); /*/enable registers shadow control,sync all shadow registers */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -