Files
DTU-LCD/Drivers/BSP/160160D/FONT5_7.C
2026-01-24 20:03:14 +08:00

1182 lines
15 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/****************************************************************************************
* 文件名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); //xy为点坐标 写单点
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