www.pudn.com > armzhiwenshibie.rar > font5_7.c
/****************************************************************************************
* 文件名:FONT5_7.C
* 功能:5*7 ASCII码字体及显示函数。
* 作者:黄绍斌
* 日期:2004.02.26
* 备注:使用GUI_SetColor()函数设置前景颜色及背景色。
****************************************************************************************/
#include "config.h"
#if FONT5x7_EN==1
/* 5*7字体定义 */
const uint8 FONT5x7ASCII[][8] = {
/* 空格 */
{
________,
________,
________,
________,
________,
________,
________,
________}
/* ! */
,{
X_______,
X_______,
X_______,
X_______,
X_______,
________,
X_______,
________}
/* " */
,{
X_X_____,
X_X_____,
X_X_____,
________,
________,
________,
________,
________}
/* # */
,{
_X_X____,
_X_X____,
XXXXX___,
_X_X____,
XXXXX___,
_X_X____,
_X_X____,
________}
/* $ */
,{
__X_____,
_XXXX___,
X_X_____,
_XXX____,
__X_X___,
XXXX____,
__X_____}
/* % */
,{
XX______,
XX__X___,
___X____,
__X_____,
_X______,
X__XX___,
___XX___,
________}
/* & */
,{
_XX_____,
X__X____,
X_X_____,
_X______,
X_X_X___,
X__X____,
_XX_X___,
________}
/* ' */
,{
XX______,
_X______,
X_______,
________,
________,
________,
________,
________}
/* ( */
,{
__X_____,
_X______,
X_______,
X_______,
X_______,
_X______,
__X_____,
________}
/* ) */
,{
X_______,
_X______,
__X_____,
__X_____,
__X_____,
_X______,
X_______,
________}
/* * */
,{
________,
_X_X____,
__X_____,
XXXXX___,
__X_____,
_X_X____,
________,
________}
,{
________,
__X_____,
__X_____,
XXXXX___,
__X_____,
__X_____,
________,
________}
,{
________,
________,
________,
________,
________,
XX______,
_X______,
X_______}
,{
________,
________,
________,
XXXXX___,
________,
________,
________,
________}
,{
________,
________,
________,
________,
________,
XX______,
XX______,
________}
,{
________,
____X___,
___X____,
__X_____,
_X______,
X_______,
________,
________}
/* 0 */
,{
_XXX____,
X___X___,
X__XX___,
X_X_X___,
XX__X___,
X___X___,
_XXX____,
________}
/* 1 */
,{
__X_____,
_XX_____,
__X_____,
__X_____,
__X_____,
__X_____,
_XXX____,
________}
/* 2 */
,{
_XXX____,
X___X___,
____X___,
__XX____,
_X______,
X_______,
XXXXX___,
________}
/* 3 */
,{
_XXX____,
X___X___,
____X___,
__XX____,
____X___,
X___X___,
_XXX____,
________}
/* 4 */
,{
___X____,
__XX____,
_X_X____,
X__X____,
XXXXX___,
___X____,
___X____,
________}
/* 5 */
,{
XXXXX___,
X_______,
XXXX____,
____X___,
____X___,
X___X___,
_XXX____,
________}
/* 6 */
,{
__XX____,
_X______,
X_______,
XXXX____,
X___X___,
X___X___,
_XXX____,
________}
/* 7 */
,{
XXXXX___,
____X___,
___X____,
__X_____,
_X______,
_X______,
_X______,
________}
/* 8 */
,{
_XXX____,
X___X___,
X___X___,
_XXX____,
X___X___,
X___X___,
_XXX____,
________}
/* 9 */
,{
_XXX____,
X___X___,
X___X___,
_XXXX___,
____X___,
___X____,
_XX_____,
________}
/* ':' 3a */
,{
________,
XX______,
XX______,
________,
XX______,
XX______,
________,
________}
/* ';' 3b */
,{
________,
________,
XX______,
XX______,
________,
XX______,
_X______,
X_______}
/* '<' 3c */
,{
___X____,
__X_____,
_X______,
X_______,
_X______,
__X_____,
___X____,
________}
/* '=' 3d */
,{
________,
________,
XXXXX___,
________,
XXXXX___,
________,
________,
________}
/* '>' */
,{
X_______,
_X______,
__X_____,
___X____,
__X_____,
_X______,
X_______,
________}
/* '?' */
,{
_XXX____,
X___X___,
____X___,
___X____,
__X_____,
________,
__X_____,
________}
/* @ */
,{
_XXX____,
X___X___,
____X___,
_XX_X___,
X_X_X___,
X_X_X___,
_XXX____,
________}
/* A */
,{
_XXX____,
X___X___,
X___X___,
XXXXX___,
X___X___,
X___X___,
X___X___,
________}
/* B */
,{
XXXX____,
X___X___,
X___X___,
XXXX____,
X___X___,
X___X___,
XXXX____,
________}
/* C */
,{
_XXX____,
X___X___,
X_______,
X_______,
X_______,
X___X___,
_XXX____,
________}
/* D */
,{
XXX_____,
X__X____,
X___X___,
X___X___,
X___X___,
X__X____,
XXX_____,
________}
/* E */
,{
XXXXX___,
X_______,
X_______,
XXXX____,
X_______,
X_______,
XXXXX___,
________}
/* F */
,{
XXXXX___,
X_______,
X_______,
XXXX____,
X_______,
X_______,
X_______,
________}
/* G */
,{
_XXX____,
X___X___,
X_______,
X_______,
X__XX___,
X___X___,
_XXXX___,
________}
/* H */
,{
X___X___,
X___X___,
X___X___,
XXXXX___,
X___X___,
X___X___,
X___X___,
________}
/* I */
,{
XXX_____,
_X______,
_X______,
_X______,
_X______,
_X______,
XXX_____,
________}
/* J */
,{
__XXX___,
___X____,
___X____,
___X____,
___X____,
X__X____,
_XX_____,
________}
/* K */
,{
X___X___,
X__X____,
X_X_____,
XX______,
X_X_____,
X__X____,
X___X___,
________}
/* L */
,{
X_______,
X_______,
X_______,
X_______,
X_______,
X_______,
XXXXX___,
________}
/* M */
,{
X___X___,
XX_XX___,
X_X_X___,
X_X_X___,
X___X___,
X___X___,
X___X___,
________}
/* N */
,{
X___X___,
X___X___,
XX__X___,
X_X_X___,
X__XX___,
X___X___,
X___X___,
________}
/* O */
,{
_XXX____,
X___X___,
X___X___,
X___X___,
X___X___,
X___X___,
_XXX____,
________}
/* P */
,{
XXXX____,
X___X___,
X___X___,
XXXX____,
X_______,
X_______,
X_______,
________}
/* Q */
,{
_XXX____,
X___X___,
X___X___,
X___X___,
X_X_X___,
X__X____,
_XX_X___,
________}
/* R */
,{
XXXX____,
X___X___,
X___X___,
XXXX____,
X_X_____,
X__X____,
X___X___,
________}
/* S */
,{
_XXX____,
X___X___,
X_______,
_XXX____,
____X___,
X___X___,
_XXX____,
________}
/* T */
,{
XXXXX___,
__X_____,
__X_____,
__X_____,
__X_____,
__X_____,
__X_____,
________}
/* U */
,{
X___X___,
X___X___,
X___X___,
X___X___,
X___X___,
X___X___,
_XXX____,
________}
/* V */
,{
X___X___,
X___X___,
X___X___,
X___X___,
X___X___,
_X_X____,
__X_____,
________}
/* W */
,{
X___X___,
X___X___,
X___X___,
X_X_X___,
X_X_X___,
X_X_X___,
_X_X____,
________}
/* X */
,{
X___X___,
X___X___,
_X_X____,
__X_____,
_X_X____,
X___X___,
X___X___,
________}
/* Y */
,{
X___X___,
X___X___,
_X_X____,
__X_____,
__X_____,
__X_____,
__X_____,
________}
/* Z */
,{
XXXXX___,
____X___,
___X____,
__X_____,
_X______,
X_______,
XXXXX___,
________}
/* 5b */
,{
XXX_____,
X_______,
X_______,
X_______,
X_______,
X_______,
XXX_____,
________}
/* 5c */
,{
________,
X_______,
_X______,
__X_____,
___X____,
____X___,
________,
________}
/* 5d */
,{
XXX_____,
__X_____,
__X_____,
__X_____,
__X_____,
__X_____,
XXX_____,
________}
/* 5e */
,{
__X_____,
_X_X____,
X___X___,
________,
________,
________,
________,
________}
/* 5f */
,{
________,
________,
________,
________,
________,
________,
________,
XXXXX___}
/* 60 */
,{
X_______,
_X______,
__X_____,
________,
________,
________,
________,
________}
/* a */
,{
________,
________,
_XXX____,
____X___,
_XXXX___,
X___X___,
_XXXX___,
________}
/* b */
,{
X_______,
X_______,
X_XX____,
XX__X___,
X___X___,
X___X___,
XXXX____,
________}
/* c */
,{
________,
________,
_XX_____,
X__X____,
X_______,
X__X____,
_XX_____,
________}
/* d */
,{
____X___,
____X___,
_XX_X___,
X__XX___,
X___X___,
X___X___,
_XXXX___,
________}
/* e */
,{
________,
________,
_XXX____,
X___X___,
XXXXX___,
X_______,
_XXX____,
________}
/* f */
,{
__X_____,
_X_X____,
_X______,
XXX_____,
_X______,
_X______,
_X______,
________}
/* g */
,{
________,
________,
_XXXX___,
X___X___,
X___X___,
_XXXX___,
____X___,
_XXX____}
/* h */
,{
X_______,
X_______,
X_XX____,
XX__X___,
X___X___,
X___X___,
X___X___,
________}
/* i */
,{
_X______,
________,
_X______,
_X______,
_X______,
_X______,
_X______,
________}
/* j */
,{
__X_____,
________,
_XX_____,
__X_____,
__X_____,
__X_____,
__X_____,
XX______}
/* k */
,{
X_______,
X_______,
X__X____,
X_X_____,
XX______,
X_X_____,
X__X____,
________}
/* l */
,{
XX______,
_X______,
_X______,
_X______,
_X______,
_X______,
XXX_____,
________}
/* m */
,{
________,
________,
XX_X____,
X_X_X___,
X_X_X___,
X___X___,
X___X___,
________}
/* n */
,{
________,
________,
X_XX____,
XX_X____,
X__X____,
X__X____,
X__X____,
________}
/* o */
,{
________,
________,
_XX_____,
X__X____,
X__X____,
X__X____,
_XX_____,
________}
/* p */
,{
________,
________,
XXX_____,
X__X____,
X__X____,
XXX_____,
X_______,
X_______}
/* q */
,{
________,
________,
_XXX____,
X__X____,
X__X____,
_XXX____,
___X____,
___X____}
/* r */
,{
________,
________,
_X_X____,
_XX_____,
_X______,
_X______,
_X______,
________}
/* s */
,{
________,
________,
_XXX____,
X_______,
_XX_____,
___X____,
XXX_____,
________}
/* t */
,{
_X______,
_X______,
XXX_____,
_X______,
_X______,
_X______,
_XX_____,
________}
/* u */
,{
________,
________,
X__X____,
X__X____,
X__X____,
X__X____,
_XXX____,
________}
/* v */
,{
________,
________,
X___X___,
X___X___,
X___X___,
_X_X____,
__X_____,
________}
/* w */
,{
________,
________,
X___X___,
X___X___,
X_X_X___,
X_X_X___,
_X_X____,
________}
/* X */
,{
________,
________,
X___X___,
_X_X____,
__X_____,
_X_X____,
X___X___,
________}
/* y */
,{
________,
________,
X__X____,
X__X____,
X__X____,
_XXX____,
___X____,
_XX_____}
/* z */
,{
________,
________,
XXXXX___,
___X____,
__X_____,
_X______,
XXXXX___,
________}
/* 0x7b */
,{
__X_____,
_X______,
_X______,
X_______,
_X______,
_X______,
__X_____,
________}
/* 0x7c */
,{
_X______,
_X______,
_X______,
_X______,
_X______,
_X______,
_X______,
________}
/* 0x7d */
,{
X_______,
_X______,
_X______,
__X_____,
_X______,
_X______,
X_______,
________}
/* 0x7e */
,{
_XX_X___,
X__X____,
________,
________,
________,
________,
________,
________}
/* 0x7f */
,{
XXXXX___,
XXXXX___,
XXXXX___,
XXXXX___,
XXXXX___,
XXXXX___,
XXXXX___,
________}
};
/****************************************************************************
* 名称:GUI_PutChar()
* 功能:显示ASCII码,显示值为20H-7FH(若为其它值,则显示' ')。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* ch 要显示的ASCII码值。
* 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
* 说明:操作失败原因是指定地址超出有效范围。(显示格式为6*8)
****************************************************************************/
uint8 GUI_PutChar(uint32 x, uint32 y, uint8 ch)
{ uint8 font_dat;
uint8 i, j;
TCOLOR bakc;
/* 参数过滤 */
if( x>(GUI_LCM_XMAX-8) ) return(0);
if( y>(GUI_LCM_YMAX-8) ) return(0);
if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
ch -= 0x20;
for(i=0; i<8; i++)
{ /* 读取点阵数据 */
font_dat = FONT5x7ASCII[ch][i];
for(j=0; j<6; j++)
{ /* 设置相应的点为color或为back_color */
if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color);
else GUI_CopyColor(&bakc, disp_color);
GUI_Point(x, y, bakc);
x++;
}
y++; // 指向下一行
x -= 6; // 恢复x值
}
return(1);
}
/****************************************************************************
* 名称:GUI_PutString()
* 功能:输出显示字符串(没有自动换行功能)。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* str 要显示的ASCII码字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void GUI_PutString(uint32 x, uint32 y, char *str)
{ while(1)
{ if( (*str)=='\0' ) break;
if( GUI_PutChar(x, y, *str++)==0 ) break;
x += 6; // 下一个字符显示位置,y不变(即不换行)
}
}
/****************************************************************************
* 名称:GUI_PutNoStr()
* 功能:输出显示字符串(没有自动换行功能),若显示的字符个数大于指定个数,则直接退出。
* 入口参数: x 指定显示位置,x坐标
* y 指定显示位置,y坐标
* str 要显示的ASCII码字符串。
* no 最大显示字符的个数
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void GUI_PutNoStr(uint32 x, uint32 y, char *str, uint8 no)
{ if(no==0) return;
for(; no>0; no--)
{ if( (*str)=='\0' ) break;
if( GUI_PutChar(x, y, *str++)==0 ) break;
x += 6; // 下一个字符显示位置,y不变(即不换行)
}
}
#endif