📄 mb9002.c
字号:
00 Y5 Y4 Y3 Y2 Y1 Y0
EC:同步信号选择 EC=0 只用行同步信号 EC=1 行场共用
LP:LP=0 正常操作
LP=1 NTSC/PAL 格式
FO:颜色信号输出控制
Y5---Y0垂直位置设定*/
/*--------command 8------------*/
/* 水平位置设定 */
/*********************************************************************/
/* COMMAND8 */
/* bit7 bit 6 bit5 bit4 bit3 bit2 bit1 bit0 */
/*first byte 1 1 0 0 0 SC 0 FC */
/*second byte 0 0 X5 X4 X3 X2 X1 X0 */
/* SC:同步信号输入控制位 */
/* FC:同步信号是否要有3US的滤波 */
/* X5--X0 :屏幕上从哪里起始显示(系统显示起始位置) */
/*********************************************************************/
Send_byte(0xc0);
// Send_byte(0x18);
Send_byte(0x08);
/*--------command 9--------- */
Send_byte(0xc8);
/* */
// Send_byte(0x20);
Send_byte(0x00);
/*------背景设置1-------*/
/*--------command 10----------*/
Send_byte(0xd1);
// Send_byte(0xd0);
Send_byte(0x38+bc);/*1101000 RB
0 BK CC BC UC UG UR UB
RB:背影(solid-fill)选择
BK:闪烁;
CC:彩色/黑白选择
BC:背景颜色
UC:屏幕颜色
UG,UR,UB 颜色选择*/
/*-------command 4----------*/
Send_byte(COMMAND_4+0x02); //内同步,非隔行扫描,一般性的屏幕背景显示
Send_byte(0x2b); /*区域控制:一般显示,显示颜色:彩色,放大控制:不放大*/
/*制式:PAL制,显示控制:使能显示输出 */
for(i=0;i<12;i++)
{
Disp_color(i);
}
Vram_clear();
}
/******************************************************/
/******************************************************/
unsigned char *Disp_next_content(unsigned char *s)
{
unsigned int actual_adr;
if(*s!='\0')
{
if(*(s + 1) != '\0')
{
if(Isascii2((int)*s & 0xff)) //显示ASCII字符
{
if(*s != '\n') //not return
{
actual_adr = 0x0000;
Disp_num(content_row,content_col,actual_adr,font_size,back_cor,char_cor,at_label);
content_col++;
if(content_col>MAX_DISP_COL)
{
content_col=0;
content_row++;
if(content_row>6)
{
content_row=0;
content_col=0;
full_screen_F = 1;
}
}
}
else
{
content_col = 2; //换行,起始第二列开始显示
content_row++;
if(content_row>6)
{
content_row=0;
full_screen_F = 1;
}
}
++s ;
}
else //非ASCII码
{
actual_adr = Dfontadr(*(int *)s ) ;
Disp_num(content_row,content_col,actual_adr,font_size,back_cor,char_cor,at_label);
content_col++;
if(content_col>MAX_DISP_COL)
{
content_col=0;
content_row++;
if(content_row>6)
{
content_row=0;
content_col=0;
full_screen_F = 1;
}
}
++((int *)s);
}
}
else
{
actual_adr =(unsigned int)*s; //disp NULL
Disp_num(content_row,content_col,actual_adr,font_size,back_cor,char_cor,at_label);
++s;
}
mes_content = s ;
}
else
{
content_disp_end_F = 1;
mes_content = (unsigned char *)0x00;
s=(unsigned char*)0x00;
}
return(s);
}
/***********************************************/
/***********************************************/
unsigned char* Disp_next_font(unsigned char *s)
{
unsigned int actual_adr;
if(*s!='\0')
{
if(*(s + 1) != '\0')
{
if(Isascii2((int)*s & 0xff)) //显示ASCII字符
{
if(*s != '\n') //not return
{
actual_adr = 0x0000;
Disp_num(str_row,str_col,actual_adr,font_size,back_cor,char_cor,at_label);
str_col++;
if(str_col>MAX_DISP_COL)
{
str_col=0;
str_row++;
if(str_row>MAX_DISP_ROW)
{
str_row=0;
str_col=0;
full_screen_F = 1;
}
}
}
else
{
str_col = 2; //换行,起始第二列开始显示
str_row++;
if(str_row>MAX_DISP_ROW)
{
str_row=0;
full_screen_F = 1;
}
}
++s ;
}
else //非ASCII码
{
actual_adr = Dfontadr(*(int *)s ) ;
Disp_num(str_row,str_col,actual_adr,font_size,back_cor,char_cor,at_label);
str_col++;
if(str_col>MAX_DISP_COL)
{
str_col=0;
str_row++;
if(str_row>MAX_DISP_ROW)
{
str_row=0;
str_col=0;
full_screen_F = 1;
}
}
++((int *)s);
}
}
else
{
actual_adr =(unsigned int)*s; //disp NULL
Disp_num(str_row,str_col,actual_adr,font_size,back_cor,char_cor,at_label);
++s;
}
}
else
{
/* row++;
col=2;
if(row>MAX_DISP_ROW)
{
row = 0 ;
col = 2;
}*/
str_disp_end_F = 1;
s=(unsigned char*)0x00;
}
return(s);
}
/*******************************************************/
/*******************************************************/
int Isascii2( int c )
{
// if(((c >= 0) && (c <= 0x7f)) || ((c >= 0xa0) && (c <= 0xd6)))
if((c >= 0) && (c <= 0x7f))
{
return(1);
}
return(0);
}
/******************************************************/
/******************************************************/
unsigned int Dfontadr( unsigned int font_code )
{
TCODE dt ;
unsigned int actual_adr ;
dt.wcode = font_code ;
if((dt.scode.high>=0xa1)&&(dt.scode.high<=0xaa))
{
actual_adr = (dt.scode.high-0xa1)*94+dt.scode.low-0xa1;
}
else if((dt.scode.high>=0xb0)&&(dt.scode.high<=0xf7))
{
actual_adr = (dt.scode.high-0xa1-6)*94+dt.scode.low - 0xa1;
}
else
actual_adr = font_code;
return(actual_adr);
}
/******************************************************/
/******************************************************/
void Set_str_attr(byte x,byte y,byte size,byte bc,byte cc,byte at)
{
str_row = x;
str_col = y;
font_size = size ;
back_cor = bc;
char_cor = cc;
at_label = at;
}
/******************************************************/
/******************************************************/
void Set_content_attr(byte x,byte y,byte size,byte bc,byte cc,byte at)
{
content_row = x;
content_col = y;
font_size = size ;
back_cor = bc;
char_cor = cc;
at_label = at;
}
/******************************************************/
/******************************************************/
void Disp_str(unsigned char *pointer,byte x,byte y,byte size,byte bc,byte cc,byte at)
{
str_disp_end_F = 0;
full_screen_F = 0;
Set_str_attr(x,y,size,bc,cc,at);
while((str_disp_end_F != 1)&&(full_screen_F != 1))
pointer = Disp_next_font(pointer) ;
}
/*****************************************************/
/*****************************************************/
void Disp_content(unsigned char *pointer,byte x,byte y,byte size,byte bc,byte cc,byte at)
{
content_disp_end_F = 0;
full_screen_F = 0;
Set_content_attr(x,y,size,bc,cc,at);
while((content_disp_end_F != 1)&&(full_screen_F != 1))
pointer = Disp_next_content(pointer) ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -