还是在TFT彩屏上显示大尺寸字符的问题

2019-07-21 02:48发布

本帖最后由 rjx007 于 2018-2-13 13:16 编辑

用原子提供的字符显示函数,可以显示到32*16,48*24。但弄到64*32的就是显示不出来了,搞了几天都不行,字模是自己取的,48*24也是自己取的,就可以正常显示。
请高手指点。



//在指定位置显示一个字符
//x,y:起始坐标
//num:要显示的字符:" "--->"~"
//size:字体大小 12/16/24
//mode:叠加方式(1)还是非叠加方式(0)
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{                                                            
    u8 temp,t1,t;
        u16 y0=y;
        u8 csize=(size/8+((size%8)?1:0))*(size/2);                //得到字体一个字符对应点阵集所占的字节数        
         num=num-' ';    //得到偏移后的值(ASCII字库是从空格开始取模,所以-' '就是对应字符的字库)
        for(t=0;t<csize;t++)
        {   
                if(size==12)     temp=ascii_1206[num][t];                //调用1206字体
                else if(size==16)temp=ascii_1608[num][t];               //调用1608字体
                else if(size==24)temp=ascii_2412[num][t];               //调用2412字体
                else if(size==48)temp=ascii_4824[num][t];              //可以正常显示
                else if(size==64)temp=ascii_6432[num][t];              //没有显示,不知为什么?
                else return;                                                        //没有的字库
                for(t1=0;t1<8;t1++)
                {                           
                        if(temp&0x80)LCD_DrawFRONT_COLOR(x,y,FRONT_COLOR);
                        else if(mode==0)LCD_DrawFRONT_COLOR(x,y,BACK_COLOR);
                        temp<<=1;
                        y++;
                        if(y>=tftlcd_data.height)return;                //超区域了
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                if(x>=tftlcd_data.width)return;        //超区域了
                                break;
                        }
                }           
        }                                            
}   





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。