初中生
最后登录1970-1-1
在线时间 小时
注册时间2013-5-15
|
在学LCD时,遇到的问题,资料里面自带的字模是16*16的,感觉字太小了,自己想改成大点的字体,
比如48*62的,字模通过字模软件生成了,可下面这两个函数,怎么改都显示不出啦,希望火哥帮忙改下下面两个函数,
使其能够实现比如48*62大小的字。
/********************************************************************
* 函数名:LCD_Char_CH
* 描述 :显示单个汉字字符
* 输入 : x: 0~(319-16)
* y: 0~(239-16)
* str: 中文字符串首址
* Color: 字符颜色
* bkColor: 背景颜色
* 输出 :无
* 举例 : LCD_Char_CH(200,100,"好",0,0);
* 注意 :如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
************************************************************************/
void LCD_Char_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
#ifndef NO_CHNISEST_DISPLAY /*如果汉字显示功能没有关闭*/
u8 i,j;
u8 buffer[32];
u16 tmp_char=0;
GetGBKCode_from_sd(buffer,str); /* 取字模数据 */
for (i=0;i<16;i++)
{
tmp_char=buffer[i*2];
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*i+1];
for (j=0;j<16;j++)
{
if ( (tmp_char >> 15-j) & 0x01 == 0x01)
{
LCD_ColorPoint(x+j,y+i,Color);
}
else
{
LCD_ColorPoint(x+j,y+i,bkColor);
}
}
}
#endif
}
/*************************************************************************** * 函数名:LCD_Str_CH * 描述 :在指定坐标处显示16*16大小的指定颜色汉字字符串 * 输入 : - x: 显示位置横向坐标 * - y: 显示位置纵向坐标 * - str: 显示的中文字符串 * - Color: 字符颜色 * - bkColor: 背景颜色 * 输出 :无 * 举例 : LCD_Str_CH(0,0,"阿莫论坛野火专区",0,0xffff); LCD_Str_CH(50,100,"阿莫论坛野火专区",0,0xffff); LCD_Str_CH(320-16*8,240-16,"阿莫论坛野火专区",0,0xffff); * 注意 : 字符串显示方向为横向 已测试******************************************************************************/
void LCD_Str_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
Set_direction(0);
while(*str != '\0')
{
if(x>(320-16))
{
/*换行*/
x =0;
y +=16;
}
if(y >(240-16))
{
/*重新归零*/
y =0;
x =0;
}
LCD_Char_CH(x,y,str,Color,bkColor);
str += 2 ;
x += 16 ;
}
}
|
| 相关帖子
| | 回复 编辑
| | |
| 沙发
发表于 3 天前 |只看该作者
对了,还有这个函数
int GetGBKCode_from_sd(unsigned char* pBuffer,const unsigned char * c)
{
unsigned char High8bit,Low8bit;
unsigned int pos;
High8bit=*c; /* 取高8位数据 */
Low8bit=*(c+1); /* 取低8位数据 */
pos = ((High8bit-0xb0)*94+Low8bit-0xa1)*2*16 ;
f_mount(0, &myfs[0]);
myres = f_open(&myfsrc , "0:/HZLIB.bin", FA_OPEN_EXISTING | FA_READ);
if ( myres == FR_OK )
{
f_lseek (&myfsrc, pos); //指针偏移
myres = f_read( &myfsrc, pBuffer, 32, &mybr ); //16*16大小的汉字 其字模 占用16*2个字节
f_close(&myfsrc);
return 0;
}
else
return -1;
} |
|
|
|