📄 lcd.c
字号:
{
if(UnPrint==0)//正常打印
{
TemCh=mask[yh%WZIMOSIZE]& SmallZiMo[(*(TxtBuf+i)-MDEL)][xh];
if(TemCh!=0)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, Color);
else
{
if(!Color)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, 1);
}
}
else //清除打印
{
TemCh=mask[yh%WZIMOSIZE]& SmallZiMo[(*(TxtBuf+i)-MDEL)][xh];
if(TemCh!=0)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, ~Color);
}
yhh++;
}
xhh++;
}
}
/*加1列间距*/
if(UnPrint==0)//正常打印
B_DrawLine(xhh, Sy, xhh, Sy+7, !Color);
else
B_DrawLine(xhh, Sy, xhh, Sy+7, ~Color);
xhh++;
}
}
}
/*
**********************************************************************
函数名: B_Print_S1
参数:
ASCII字符数组首地址TxtBuf
Len字符个数
起点座标(Sx,Sy)
Type样式(常规1、反转2、下划线4、强调8)
Justy对齐方式(left-0、center-1、right-2、absolute-3)
UnPrint清除 UnPrint=0 default, UnPrint=1(Un-Print)
返回值: 无
作用: 用于在屏幕指起心点处写入字符串,样式为默认样式2
default--8X16点阵字,字符间距1列,不定宽度
**********************************************************************
*/
extern void B_Print_S1(uchar idata *TxtBuf, uchar Len,
uchar Sx, uchar Sy, uchar Type, uchar Justy, bit UnPrint)
{
uchar xh, yh, xhh, yhh;
uchar i,j;
bit Color;
uchar TemH;
uchar TemL;
if((Type&0x02)==0x02)//反转
Color=0;
else
Color=1;
//确定对齐方式
switch(Justy)
{
case 0: xhh=0;
break;//左对齐
case 1:
if(Len*8<=128)
xhh=(128-8*Len)/2;
else
xhh=8*Len/2;
break;//居中
case 2:
if(8*Len<=128)
xhh=128-8*Len;
else
xhh=8*Len;
break;//右对齐
case 3: xhh=Sx;
break;//指定起点
}
for(i=0;i<Len;i++)
{
if(*(TxtBuf+i)==ASC_SPACE)//若字符为SPACE
{
//空5列
B_DrawRect(xhh, Sy, xhh+8, Sy+15, 1, ~Color);
xhh+=8;
}
else
{
/*显示字形*/
for(xh=0;xh<8;xh++)
{
TemH=DfZiMo[(*(TxtBuf+i)-MDEL)][2*xh];
TemL=DfZiMo[(*(TxtBuf+i)-MDEL)][2*xh+1];
/*2.如果第一列为空,则不作图,并且不移动作图位置,即为不定宽度*/
if((TemH==0x00)&&(TemL==0x00))
{
xhh+=0;//
}
else
{
yhh=Sy;
for(j=0;j<2;j++)
{
TemH=DfZiMo[(*(TxtBuf+i)-33)][2*xh+j];
for(yh=0;yh<8;yh++)
{
if(UnPrint==0)//正常打印
{
if((mask[yh%8]& TemH)!=0x00)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, Color);
else
{
if(!Color)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, 1);
}
}
else //清除打印
{
if((mask[yh%8]& TemH)!=0x00)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, ~Color);
}
yhh++;
}
}
xhh++;
}
}
/*加1列间距*/
if(UnPrint==0)//正常打印
B_DrawLine(xhh,Sy,xhh,Sy+15, !Color);
else
B_DrawLine(xhh,Sy,xhh,Sy+15, ~Color);
xhh++;
}
}
}
/*
**********************************************************************
函数名: B_Print_S2
参数:
ASCII字符数组首地址TxtBuf
Len字符个数
起点座标(Sx,Sy)
Type样式(常规1、反转2、下划线4、强调8)
Justy对齐方式(left-0、center-1、right-2、absolute-3)
UnPrint清除 UnPrint=0 default, UnPrint=1(Un-Print)
返回值: 无
作用: 用于在屏幕指起心点处写入字符串,样式为默认样式1
Micro样式--5X8点阵字,字符间距1列,不定宽度
**********************************************************************
*/
extern void B_Print_S2(uchar idata *TxtBuf, uchar Len,
uchar Sx, uchar Sy, uchar Type, uchar Justy, bit UnPrint)
{
uchar xh, yh, xhh, yhh;
uchar i;
bit Color;
if((Type&0x02)==0x02)//反转
Color=0;
else
Color=1;
//确定对齐方式
switch(Justy)
{
case 0: xhh=0;
break;//左对齐
case 1:
if(Len*5<=128)
xhh=(128-5*Len)/2;
else
xhh=5*Len/2;
break;//居中
case 2:
if(5*Len<=128)
xhh=128-5*Len;
else
xhh=5*Len;
break;//右对齐
case 3: xhh=Sx;
break;//指定起点
}
for(i=0;i<Len;i++)
{
if(*(TxtBuf+i)==ASC_SPACE)//若字符为SPACE
{
//空5列
B_DrawRect(xhh, Sy, xhh+5, Sy+7, 1, ~Color);
xhh+=5;
}
else
{
/*显示字形*/
for(xh=0;xh<5;xh++)
{
/*2.此列为空,则不作图,并且不移动作图位置,即为不定宽度*/
if(MicroZiMo[(*(TxtBuf+i)-MDEL)][xh]!=0x00)
{
yhh=Sy;
for(yh=0;yh<WZIMOSIZE;yh++)
{
if(UnPrint==0)//正常打印
{
if((mask[yh%WZIMOSIZE]& MicroZiMo[(*(TxtBuf+i)-MDEL)][xh])!=0)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, Color);
else
{
if(!Color)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, 1);
}
}
else //清除打印
{
if((mask[yh%WZIMOSIZE]& MicroZiMo[(*(TxtBuf+i)-MDEL)][xh])!=0)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, ~Color);
}
yhh++;
}
xhh++;
}
}
/*加1列间距*/
if(UnPrint==0)//正常打印
B_DrawLine(xhh, Sy, xhh, Sy+7, !Color);
else
B_DrawLine(xhh, Sy, xhh, Sy+7, ~Color);
xhh++;
}
}
}
/*
**********************************************************************
函数名: B_Print_S3
参数:
ASCII字符数组首地址TxtBuf
Len字符个数
起点座标(Sx,Sy)
Type样式(常规1、反转2、下划线4、强调8)
Justy对齐方式(left-0、center-1、right-2、absolute-3)
UnPrint清除 UnPrint=0 default, UnPrint=1(Un-Print)
返回值: 无
作用: 用于在屏幕指起心点处写入字符串,样式为默认样式4
BigBold样式--16X32点阵字,字符间距2列,定宽度
**********************************************************************
*/
extern void B_Print_S3(uchar idata *TxtBuf, uchar Len,
uchar Sx, uchar Sy, uchar Type, uchar Justy, bit UnPrint)
{
uchar xh, yh;
uchar xhh, yhh;
uchar i,j;
uchar TemCh;
bit Color;
if((Type&0x02)==0x02)//反转
Color=0;
else
Color=1;
//确定对齐方式
switch(Justy)
{
case 0: xhh=0;
break;//左对齐
case 1:
if(Len*16<=128)
xhh=(128-16*Len)/2;
else
xhh=16*Len/2;
break;//居中
case 2:
if(16*Len<=128)
xhh=128-16*Len;
else
xhh=16*Len;
break;//右对齐
case 3: xhh=Sx;
break;//指定起点
}
for(i=0;i<Len;i++)
{
if(*(TxtBuf+i)>='0'&&*(TxtBuf+i)<='9')
{
/*显示字形*/
for(xh=0;xh<16;xh++)
{
yhh=Sy;
for(j=0;j<4;j++)
{
TemCh=(*(TxtBuf+i)-0x30)*4+xh/4;
TemCh=4*(xh%4)+j;
TemCh=GiantZiMo[(*(TxtBuf+i)-0x30)*4+xh/4][4*(xh%4)+j];
for(yh=0;yh<8;yh++)
{
if(UnPrint==0)//正常打印
{
if((mask[yh%WZIMOSIZE]& TemCh)!=0)
draw_pixel((xhh+xh) % MaxHdots, yhh % MaxVdots, Color);
else
{
if(!Color)
draw_pixel((xhh+xh) % MaxHdots, yhh % MaxVdots, 1);
}
}
else //清除打印
{
if((mask[yh%WZIMOSIZE]& TemCh)!=0)
draw_pixel((xhh+xh) % MaxHdots, yhh % MaxVdots, ~Color);
}
yhh++;
}
}
}
xhh+=16;
}
}
}
/*
**********************************************************************
函数名: B_Print_S4
参数:
ASCII字符数组首地址TxtBuf
Len字符个数
起点座标(Sx,Sy)
Type样式(常规1、反转2、下划线4、强调8)
Justy对齐方式(left-0、center-1、right-2、absolute-3)
UnPrint清除 UnPrint=0 default, UnPrint=1(Un-Print)
返回值: 无
作用: 用于在屏幕指起心点处写入字符串,样式为默认样式3
FIXED样式--5X8点阵字,字符间距1列,定宽度
**********************************************************************
*/
extern void B_Print_S4(uchar idata *TxtBuf, uchar Len,
uchar Sx, uchar Sy, uchar Type, uchar Justy, bit UnPrint)
{
uchar xh, yh, xhh, yhh;
uchar i;
bit Color;
if((Type&0x02)==0x02)//反转
Color=0;
else
Color=1;
//确定对齐方式
switch(Justy)
{
case 0: xhh=0;
break;//左对齐
case 1:
if(Len*6<=128)
xhh=(128-6*Len)/2;
else
xhh=6*Len/2;
break;//居中
case 2:
if(6*Len<=128)
xhh=128-6*Len;
else
xhh=6*Len;
break;//右对齐
case 3: xhh=Sx;
break;//指定起点
}
for(i=0;i<Len;i++)
{
if(*(TxtBuf+i)==ASC_SPACE)//若字符为SPACE
{
//空5列
B_DrawRect(xhh, Sy, xhh+5, Sy+7, 1, ~Color);
xhh+=5;
}
else
{
/*显示字形*/
for(xh=0;xh<5;xh++)
{
yhh=Sy;
for(yh=0;yh<WZIMOSIZE;yh++)
{
if(UnPrint==0)//正常打印
{
if((mask[yh%WZIMOSIZE]& SmallZiMo[(*(TxtBuf+i)-MDEL)][xh])!=0)
draw_pixel(xhh % MaxHdots, yhh % MaxVdots, Color);
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -