📄 12864.c
字号:
for(i=0;i<W;i++)
{
OutSI(0xb8|layer+1);
OutSI(CO|0x40);
OutSI(HY|0xC0);
OutSD(china_code[p]);
p++;
CO+=1;
}
}
}
/***********************************整个字在右半屏的部分
/*******************************************************/
/*********************************************************************************************/
/*显示字全部在右半屏*/
else
{
W=whidth/DX;
for(i=0;i<W;i++)
{
for(k=0;k<DX;k++)
{
OutSI(0xb8|layer);
OutSI((CO-64)|0x40);
OutSI(HY|0xC0);
OutSD(china_code[p]);
p++;
CO+=1;
}
p+=DX;
}
CO-=W*DX;
p=0;
for(i=0;i<W;i++)
{
for(k=0;k<DX;k++)
{
OutSI(0xb8|layer+1);
OutSI((CO-64)|0x40);
OutSI(HY|0xC0);
OutSD(china_code[p+DX]);
p++;
CO+=1;
}
p+=DX;
}
W=whidth%DX;
for(k=0;k<W;k++)
{
OutSI(0xb8|layer);
OutSI(CO|0x40);
OutSI(HY|0xC0);
OutSD(china_code[p]);
p++;
CO+=1;
}
CO=CO-W;
for(k=0;k<W;k++)
{
OutSI(0xb8|layer+1);
OutSI(CO|0x40);
OutSI(HY|0xC0);
OutSD(china_code[p+DX-W]);
p++;
CO+=1;
}
}
}
/*------------------------------------------------------------------------------
函 数 名: void display
功 能: 随意显示
说 明: [起始页、起始列、字数、字体大小、行移动(为0时在指定
的页位置,为正数时向上移,为负数时向下移动)、字模]
//------------------------------------------------------------------------------*/
void display(unsigned char layer,unsigned char column,unsigned char whidth,unsigned char daxiao,unsigned char *china_code)
{
unsigned char p=0;
unsigned char i,k,z,x,o;
unsigned char j,W,CO;
W=whidth;
CO=column;
j=daxiao;
if(column<64)
{
if(column+whidth*j<64)
{
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(china_code[p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*W;
p=0;
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer+1);
OutFI(CO|0x40);
OutFD(china_code[p+j]);
p++;
CO+=1;
}
p+=j;
}
}
//***************************************************************************字全部在左半屏
/*******************************************************************************************/
else
{
W=(64-CO)/j;
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(china_code[p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*W;
p=p-j*W*2;
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer+1);
OutFI(CO|0x40);
OutFD(china_code[p+j]);
p++;
CO+=1;
}
p+=j;
}
//****************************处理在左半屏显的整个字的部分
/********************************************************/
z=(64-CO)%j;
for(k=0;k<z;k++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(china_code[p]); //*2+j*whidth
p++;
CO+=1;
}
p=p+j-z;
for(k=0;k<z;k++)
{
OutFI(0xb8|layer+1);
OutFI((CO-z)|0x40);
OutFD(china_code[p]); //*2+j*whidth+(j-z)
p++;
CO+=1;
}
/*******************************左右半屏过度的左半屏部分
/*******************************************************/
x=j-z;
if(x==j) x=0;
else x=x;
CO=64;
p=p-j;
for(k=0;k<x;k++)
{
OutSI(0xb8|layer);
OutSI(CO|0x40);
OutSD(china_code[p]); //*2+j*whidth-z
p++;
CO+=1;
}
CO=64;
p=p+z;
for(k=0;k<x;k++)
{
OutSI(0xb8|layer+1);
OutSI(CO|0x40);
OutSD(china_code[p]); //*2+j*whidth-z+x
p++;
CO+=1;
}
/***********************************左右半屏过度的右半屏部分
/**********************************************************/
if(x==0) o=whidth-(64-column)/j;
else o=whidth-(64-column)/j-1;
for(i=0;i<o;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer);
OutSI(CO|0x40);
OutSD(china_code[p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*o;
p=p-o*2*j;
for(i=0;i<o;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer+1);
OutSI(CO|0x40);
OutSD(china_code[p+j]);
p++;
CO+=1;
}
p+=j;
}
}
}
/***********************************整个字在右半屏的部分
/*******************************************************/
else
{
for(i=0;i<whidth;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer);
OutSI((CO-64)|0x40);
OutSD(china_code[p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*whidth;
p=0;
for(i=0;i<whidth;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer+1);
OutSI((CO-64)|0x40); //**有可能通过更改64实现上下滚动如为65CO=64则CO-65=-1,可能下移一行
OutSD(china_code[p+j]);
p++;
CO+=1;
}
p+=j;
}
}
/*********************************************************************************************/
/***************************************************************************显示字全部在右半屏*/
}
//***********************************************************************************************
/*------------------------------------------------------------------------------
函 数 名: void display_LM
功 能: 拉幕显示
说 明: [起始页、起始列、列数、字体大小、字模]
//------------------------------------------------------------------------------*/
void display_LM(unsigned char layer,unsigned char column,unsigned char whidth,unsigned char daxiao,unsigned char *china_code)
{
unsigned char p=0;
unsigned char i,j,W,CO;
W=whidth;
CO=column;
j=daxiao;
/*********************************************字全部在左半屏/
/***********************************************************/
if(column<64)
{
if(column+whidth<=64)
{
W=64-CO;
for(i=0;i<W;i++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(china_code[p]);
OutFI(0xb8|layer+1);
OutFI(CO|0x40);
OutFD(china_code[p+j]);
delay10ms(5);
p++;
CO+=1;
if(p%j==0) p+=j;
else p=p;
}
}
/**********************************************左右半屏都有/
/***********************************************************/
else
{
W=64-CO;
for(i=0;i<W;i++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(china_code[p]);
OutFI(0xb8|layer+1);
OutFI(CO|0x40);
OutFD(china_code[p+j]);
delay10ms(5);
p++;
CO+=1;
if(p%j==0) p+=j;
else p=p;
}
W=column+whidth-64;
for(i=0;i<W;i++)
{
OutSI(0xb8|layer);
OutSI((CO-64)|0x40);
OutSD(china_code[p]);
OutSI(0xb8|layer+1);
OutSI((CO-64)|0x40);
OutSD(china_code[p+j]);
delay10ms(5);
p++;
CO+=1;
if(p%j==0) p+=j;
else p=p;
}
}
}
/***************************************************字全部在右半屏/
/*****************************************************************/
else
{
for(i=0;i<whidth;i++)
{
OutSI(0xb8|layer);
OutSI((CO-64)|0x40);
OutSD(china_code[p]);
OutSI(0xb8|layer+1);
OutSI((CO-64)|0x40);
OutSD(china_code[p+j]);
delay10ms(5);
p++;
CO+=1;
if(p%j==0) p+=j;
else p=p;
}
}
}
/*************************************************************************
ASCII
*************************************************************************/
void QU_ASCII(unsigned char layer,unsigned char column,unsigned char whidth,unsigned char daxiao,unsigned char *china_code)
{
unsigned char p=0;
unsigned char i,k,z,x,o;
unsigned char j,W,CO;
W=whidth;
CO=column;
j=daxiao;
if(column<64)
{
if(column+whidth*j<64)
{
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(ASCII_code[*china_code-48][p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*W;
p=0;
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer+1);
OutFI(CO|0x40);
OutFD(ASCII_code[*china_code-48][p+j]);
p++;
CO+=1;
}
p+=j;
}
}
//****************************************字全部在左半屏
/*******************************************************************************************/
else
{
W=(64-CO)/j;
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(ASCII_code[*china_code-48][p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*W;
p=p-j*W*2;
for(i=0;i<W;i++)
{
for(k=0;k<j;k++)
{
OutFI(0xb8|layer+1);
OutFI(CO|0x40);
OutFD(ASCII_code[*china_code-48][p+j]);
p++;
CO+=1;
}
p+=j;
}
//****************************处理在左半屏显的整个字的部分
/********************************************************/
z=(64-CO)%j;
for(k=0;k<z;k++)
{
OutFI(0xb8|layer);
OutFI(CO|0x40);
OutFD(ASCII_code[*china_code-48][p]); //*2+j*whidth
p++;
CO+=1;
}
p=p+j-z;
for(k=0;k<z;k++)
{
OutFI(0xb8|layer+1);
OutFI((CO-z)|0x40);
OutFD(ASCII_code[*china_code-48][p]); //*2+j*whidth+(j-z)
p++;
CO+=1;
}
/*******************************左右半屏过度的左半屏部分
/*******************************************************/
x=j-z;
if(x==j) x=0;
else x=x;
CO=64;
p=p-j;
for(k=0;k<x;k++)
{
OutSI(0xb8|layer);
OutSI(CO|0x40);
OutSD(ASCII_code[*china_code-48][p]); //*2+j*whidth-z
p++;
CO+=1;
}
CO=64;
p=p+z;
for(k=0;k<x;k++)
{
OutSI(0xb8|layer+1);
OutSI(CO|0x40);
OutSD(ASCII_code[*china_code-48][p]); //*2+j*whidth-z+x
p++;
CO+=1;
}
/***********************************左右半屏过度的右半屏部分
/**********************************************************/
if(x==0) o=whidth-(64-column)/j;
else o=whidth-(64-column)/j-1;
for(i=0;i<o;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer);
OutSI(CO|0x40);
OutSD(ASCII_code[*china_code-48][p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*o;
p=p-o*2*j;
for(i=0;i<o;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer+1);
OutSI(CO|0x40);
OutSD(ASCII_code[*china_code-48][p+j]);
p++;
CO+=1;
}
p+=j;
}
}
}
/***********************************整个字在右半屏的部分
/*******************************************************/
/*********************************************************************************************/
/*显示字全部在右半屏*/
else
{
for(i=0;i<whidth;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer);
OutSI((CO-64)|0x40);
OutSD(ASCII_code[*china_code-48][p]);
p++;
CO+=1;
}
p+=j;
}
CO-=j*whidth;
p=0;
for(i=0;i<whidth;i++)
{
for(k=0;k<j;k++)
{
OutSI(0xb8|layer+1);
OutSI((CO-64)|0x40);
OutSD(ASCII_code[*china_code-48][p+j]);
p++;
CO+=1;
}
p+=j;
}
}
}
/*********************************************************************/
unsigned char code ASCII_code[10][16]=
{
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//00
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//11
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//22
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//33
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//44
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//55
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//66
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//77
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//88
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//99
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -