📄 hz16.c
字号:
#include "config.h"
const uint8 hz16[][32]={
//提[16*16]横排
{ 0x10, 0x08, 0x11, 0x0FC, 0x11, 0x08, 0x11, 0x08,
0x0FD, 0x0F8, 0x11, 0x08, 0x15, 0x08, 0x19, 0x0F8,
0x30, 0x00, 0x0D7, 0x0FE, 0x10, 0x20, 0x11, 0x28,
0x11, 0x3C, 0x11, 0x20, 0x52, 0x0A6, 0x24, 0x7C
},
//取[16*16]横排
{ 0x01, 0x00, 0x0FF, 0x80, 0x22, 0x00, 0x23, 0x0FC,
0x3E, 0x04, 0x22, 0x84, 0x22, 0x88, 0x3E, 0x88,
0x22, 0x48, 0x22, 0x50, 0x22, 0x20, 0x3E, 0x50,
0x0E2, 0x48, 0x42, 0x8E, 0x03, 0x04, 0x02, 0x00
},
//指[16*16]横排
{ 0x11, 0x00, 0x11, 0x08, 0x11, 0x1C, 0x11, 0x0E0,
0x0FD, 0x02, 0x11, 0x02, 0x14, 0x0FE, 0x18, 0x04,
0x31, 0x0FE, 0x0D1, 0x04, 0x11, 0x04, 0x11, 0x0FC,
0x11, 0x04, 0x11, 0x04, 0x51, 0x0FC, 0x21, 0x04
},
//纹[16*16]横排
{ 0x10, 0x80, 0x10, 0x40, 0x20, 0x40, 0x20, 0x04,
0x4F, 0x0FE, 0x0FA, 0x08, 0x11, 0x10, 0x21, 0x10,
0x40, 0x0A0, 0x0FC, 0x0A0, 0x00, 0x40, 0x00, 0x0A0,
0x1C, 0x0A0, 0x0E1, 0x10, 0x42, 0x0E, 0x04, 0x04
}
};
const int8 hz16_tab[]="提取指纹";
extern uint8 dcb2dex_tab[];
//const uint8 dcb2dex_tab[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
/****************************************************************************
* 名称:GUI_PutChar24()
* 功能:显示ASCII码(24*24字体),显示值为20H-7FH(若为其它值,则显示' ')。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* ch 要显示的ASCII码值。
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
uint8 GUI_PutChar16(uint32 x, uint32 y,int8 ch)
{ uint8 font_dat;
uint8 i, j, k;
/* 参数过滤 */
if( x>(GUI_LCM_XMAX-16) ) return(0);
if( y>(GUI_LCM_YMAX-16) ) return(0);
for(i=0;i<10;i++)
{
if(ch==hz16_tab[i])break;
i++;
}
k=i;
for(i=0; i<16; i++) // 显示共24行
{ for(j=0; j<16; j++) // 每行共24点
{ // 若当前点为0、8、16点,读取点阵数据
if((j==0)|(j==8)) font_dat = hz16[k][i*2+j/8];
// 设置相应的点为color或为back_color
if( (font_dat&dcb2dex_tab[j%8])==0 ) GUI_Point(x, y, RED);
else GUI_Point(x, y, GREEN);
x++;
}
y++; // 指向下一行
x -= 16; // 恢复x值
}
return(1);
}
uint8 GUI_Put16(uint32 x, uint32 y)
{ uint8 font_dat;
uint8 i, j, k;
/* 参数过滤 */
if( x>(GUI_LCM_XMAX-16) ) return(0);
if( y>(GUI_LCM_YMAX-16) ) return(0);
for(k=0;k<4;k++)
{
for(i=0; i<16; i++) // 显示共24行
{ for(j=0; j<16; j++) // 每行共24点
{ // 若当前点为0、8、16点,读取点阵数据
if((j==0)|(j==8)) font_dat = hz16[k][i*2+j/8];
// 设置相应的点为color或为back_color
if( (font_dat&dcb2dex_tab[j%8])==0 ) GUI_Point(x, y, RED);
else GUI_Point(x, y, GREEN);
x++;
}
y++; // 指向下一行
x -= 16; // 恢复x值
}
}
return(1);
}
/****************************************************************************
* 名称:GUI_PutString16()
* 功能:输出显示字符串((24*24字体,没有自动换行功能)。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* str 要显示的ASCII码字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void GUI_PutString16(uint32 x, uint32 y, int8 *str)
{ while(1)
{ if( (*str)=='\0' ) break;
if( GUI_PutChar16(x, y, *str++)==0 ) break;
x += 16; // 下一个字符显示位置,y不变(即不换行)
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -