📄 osd1_init.c
字号:
#include <reg51.h>
#include "common.h"
#include "Font12x12.h"
#include "OSD_def.h"
#include "OSD1_CLS.h"
code unsigned char Font1BPColorTable[]={
0x00,0x00, // 0 TRANSPERANT
0x1F,0x00, // 1 PINK
0x00,0x00, // 2 BLACK
0x1f,0xf8, // 3 PURPLE
0x1f,0x00, // 4 BLUE
0x80,0xB7, // 5 BROWN
0x00,0xf8, // 6 RED
0xA6,0x33, // 7 SAFFRON
0xe0,0x07, // 8 GREEN
0xff,0x07, // 9 CYAN
0xff,0xff, // A WHITE
0x1f,0x84, // B CAMBRIDGE_BLUE
0xe0,0xff, // C YELLOW
0x1f,0xfc, // D LILAC
0x10,0x14, // E GRAYEST
0x18,0xc6, // F GRAYISH
};
void OSD1Load1BPFont(void)
{
unsigned int i,j,k,l;
OSD1SetRamAddr(OSD1Font1BPDataStrAdr);
twdWr_Burst_A(OSD1_RAM_DL);
if(FontWidth==12)
{
for(j=0;j<Font1BPNum;j++)
{
for(i=0; i<(FontHeight); i++)
{
k = i<<1;
l = (i+1)<<1;
m_wBuff[1] = (uWORD)(All1BPFonts[j][k])|((uWORD)(All1BPFonts[j][k+1])<<8);
m_wBuff[2] = (uWORD)(All1BPFonts[j][l])|((uWORD)(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)
{
OSD1CfgWr(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]<32;m_wBuff[0]++)
{
twdWr_Burst_D(Font1BPColorTable[m_wBuff[0]]);
}
twdWr_Burst_P();
OSD1CfgWr(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 OSD1InItClearMenu(uCHAR MenuIndex)
{
uCHAR i=0;
if(MenuIndex == MENU1)
{
for(i=0; i<OSD1Menu1Height; i++)
{
OSD1SetRamAddr(OSD1Menu1StrAdr+(OSD1Menu1Width+4)*i);
twdWr_Burst_A(OSD1_RAM_DL);
//~Set RAtt_V~//
if(i==0)
OSDSetRamDataBuest(0x4000|OSD1Menu1StartY);
else
OSDSetRamDataBuest(0xE001);
//~Set RAtt_H~//
OSDSetRamDataBuest(0x6000|OSD1Menu1StartX);
//~Set RAtt_A~//
OSDSetRamDataBuest(0xD000|0x0003);
//~Set RAtt_C~//
OSDSetRamDataBuest(0x0000|(OSD1Menu1Width));
m_wBuff[0]=0;
while(m_wBuff[0]<OSD1Menu1Width)
{
OSDSetRamDataBuest(0x0000|((uWORD)(0&0x04)<<9)|(0));
m_wBuff[0]++;
}
twdWr_Burst_P();
}
}
else if(MenuIndex == MENU2)
{
for(i=0; i<OSD1Menu2Height; i++)
{
OSD1SetRamAddr(OSD1Menu2StrAdr+(OSD1Menu2Width+4)*i);
twdWr_Burst_A(OSD1_RAM_DL);
//~Set RAtt_V~//
if(i==0)
OSDSetRamDataBuest(0x4000|OSD1Menu2StartY);
else
OSDSetRamDataBuest(0xE001);
//~Set RAtt_H~//
OSDSetRamDataBuest(0x6000|OSD1Menu2StartX);
//~Set RAtt_A~//
OSDSetRamDataBuest(0xD000|0x0003);
//~Set RAtt_C~//
OSDSetRamDataBuest(0x0000|(OSD1Menu2Width));
m_wBuff[0]=0;
while(m_wBuff[0]<OSD1Menu2Width)
{
OSDSetRamDataBuest(0x0000|((uWORD)(0&0x0F)<<9)|(0));
m_wBuff[0]++;
}
twdWr_Burst_P();
}
}
}
void OSD1Init(void)
{
OSD1CfgWr(OSD_CHAR_FONT_SIZE,(0xC0)|(0x00)|FontHeight); //Set Font Size
OSD1CfgWr(OSD_CHAR2BP_FONT_INDEX,Font2BPIndexStr>>1); //Set Char2BP Font Index Base
OSD1CfgWr(OSD_CHAR4BP_FONT_INDEX,Font4BPIndexStr>>1); //Set Char4BP Font Index Base
OSD1CfgWr(OSD_CHAR2BP_FONT_MEMADD_L,OSD1Font2BPDataStrAdr&0x00FF); //Set Char2BP Font Memory Base Address
OSD1CfgWr(OSD_CHAR2BP_FONT_MEMADD_M,OSD1Font2BPDataStrAdr>>8);
OSD1CfgWr(OSD_CHAR4BP_FONT_MEMADD_L,OSD1Font4BPDataStrAdr&0x00FF); //Set Char4BP Font Memory Base Address
OSD1CfgWr(OSD_CHAR4BP_FONT_MEMADD_M,OSD1Font4BPDataStrAdr>>8);
OSD1CfgWr(OSD_GLOBAL_ALPHA_BLENDING,0x80); //Set Globa Alpha Blending Control
OSD1CfgWr(OSD_BSH_COLOR_HIGHBIT,0x20); //Set Border/Shadow/Char1BP Color High Bits Offset
OSD1CfgWr(OSD_FONTROM_INDEX,ROMFONTIndexStr>>1); //Set Build-in Rom Font Index Base
OSD1ClearSRam(); //Clear Ram
I2CWriteByte(TW803_P0,OSD1_CFG_INDEX,0x09); //Clear CFG
for(m_wBuff[0] =0;m_wBuff[0]<18;m_wBuff[0]++)
I2CWriteByte(TW803_P0,OSD1_CFG_DATA,0);
//~Menue-1 Setting. ~//
OSD1CfgWr(OSD_MENU1_ENABLE,0x00);
OSD1CfgWr(OSD_MENU1_START_ADR_L,OSD1Menu1StrAdr&0x00FF);
OSD1CfgWr(OSD_MENU1_START_ADR_M,OSD1Menu1StrAdr>>8);
OSD1CfgWr(OSD_MENU1_END_ADR_L,OSD1Menu1EndAdr&0x00FF);
OSD1CfgWr(OSD_MENU1_END_ADR_M,OSD1Menu1EndAdr>>8);
//~Menue-2 Setting. ~//
OSD1CfgWr(OSD_MENU2_ENABLE,0x00);
OSD1CfgWr(OSD_MENU2_START_ADR_L,OSD1Menu2StrAdr&0x00FF);
OSD1CfgWr(OSD_MENU2_START_ADR_M,OSD1Menu2StrAdr>>8);
OSD1CfgWr(OSD_MENU2_END_ADR_L,OSD1Menu2EndAdr&0x00FF);
OSD1CfgWr(OSD_MENU2_END_ADR_M,OSD1Menu2EndAdr>>8);
//~Load Color Table.~//
OSD1Load1BPFont();
OSD1LoadColor();
OSD1InItClearMenu(MENU1);
OSD1InItClearMenu(MENU2);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -