野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 36622|回复: 6

希望火哥尽快帮忙下

[复制链接]
发表于 2013-5-15 16:50:40 | 显示全部楼层 |阅读模式
在学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 ;       
    }
}


回复

使用道具 举报

 楼主| 发表于 2013-5-15 17:09:47 | 显示全部楼层
对了,还有这个函数
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;   
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-18 10:24:42 | 显示全部楼层
....
没人回答我,好吧,自己搞。。。。
回复 支持 反对

使用道具 举报

发表于 2013-5-18 10:45:31 | 显示全部楼层
你想实现 各种功能,没人会那么有空 帮你完成的。都是要自己动手,丰衣足食
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-18 11:51:44 | 显示全部楼层
只不过想要把字体改大点都这么难吗?难道要我bs野火。
回复 支持 反对

使用道具 举报

发表于 2013-5-20 12:38:27 | 显示全部楼层
想要实现各种lcd显示效果,最简单的方法是移植uGUI,非常方便
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-5-20 17:30:41 | 显示全部楼层
.......基本的都还不太会,哪里会懂得移植。。。。唉。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 11:10 , Processed in 0.027302 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表