/**************************************************************************************** * 文件名:FONT5_7.C * 功能:5*7 ASCII码字体及显示函数。 * 作者:黄绍斌 * 日期:2004.02.26 * 备注:使用GUI_SetColor()函数设置前景颜色及背景色。 ****************************************************************************************/ #include "FONT_MACRO.H" #define FONT5x7_EN 1 #define GUI_LCM_XMAX 160 #define GUI_LCM_YMAX 160 typedef unsigned char INT8U; // 无符号8位整型变量 // typedef signed char INT8S; // 有符号8位整型变量 // typedef unsigned int INT16U; // 无符号16位整型变量 // typedef signed int INT16S; // 有符号16位整型变量 // #if FONT5x7_EN==1 /* 5*7字体定义 */ unsigned char 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___, ________} }; extern void DrawDots(INT8U x, INT8U y, INT8U color); //x,y为点坐标 写单点 INT8U DCB_HEX_TAB[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; #define back_color 0 #define disp_color 31 /**************************************************************************** * 名称:GUI_PutChar() * 功能:显示ASCII码,显示值为20H-7FH(若为其它值,则显示' ')。 * 入口参数: x 指定显示位置,x坐标 * y 指定显示位置,y坐标 * ch 要显示的ASCII码值。 * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。 * 说明:操作失败原因是指定地址超出有效范围。(显示格式为6*8) ****************************************************************************/ unsigned char GUI_PutChar(unsigned int x, unsigned int y, unsigned char ch) { unsigned char font_dat; unsigned char i, j; /* 参数过滤 */ 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&DCB_HEX_TAB[j])==0 ) DrawDots(x,y, back_color); else DrawDots(x,y,disp_color); x++; } y++; // 指向下一行 x -= 6; // 恢复x值 } return(1); } /**************************************************************************** * 名称:GUI_PutHex() * 功能:显示HEX码,显示值为00H-FFH(若为其它值,则显示' ')。 * 入口参数: x 指定显示位置,x坐标 * y 指定显示位置,y坐标 * v 要显示的HEX。 *出口参数:无 ****************************************************************************/ extern void GUI_PutHex(unsigned char x, unsigned char y,unsigned char v) { unsigned char i; unsigned char HexData; #define LEN 2 for(i = 0; i < LEN; i++){ HexData = v&0x0F; v = v >>4; if(HexData < 0x0A){ GUI_PutChar(x+6*(LEN-1-i),y,HexData+'0'); }else{ GUI_PutChar(x+6*(LEN-1-i),y,HexData-0x0A+'A'); } } } /**************************************************************************** * 名称:GUI_PutString() * 功能:输出显示字符串(没有自动换行功能)。 * 入口参数: x 指定显示位置,x坐标 * y 指定显示位置,y坐标 * str 要显示的ASCII码字符串 * 出口参数:无 * 说明:操作失败原因是指定地址超出有效范围。 ****************************************************************************/ void GUI_PutString(unsigned int x, unsigned int 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(unsigned int x, unsigned int y, char *str, unsigned char 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