TFTLCD显示汉字的问题。求大牛详解

2019-07-20 11:00发布

如下是我改的LCD_ShowChar的函数
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-' ';(我自己创的数组开始没有空格 数组在下面贴着。)
        for(t=0;t<csize;t++)
        {   
                if(size==12)temp=asc2_1206[num][t];                 
                else if(size==16)temp=asc2_1608[num][t];       
                //else if(size==24)temp=asc2_2412[num][t];        (我自己在这创了一个数组 如下 所有把这行注释掉了。)
                else if(size==24)temp=ASC2_1206[num][t];
                else return;                                                               
                for(t1=0;t1<8;t1++)
                {                            
                        if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
                        else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
                        temp<<=1;
                        y++;
                        if(y>=lcddev.height)return;               
                        if((y-y0)==size)
                        {
                                y=y0;
                                x++;
                                if(x>=lcddev.width)return;       
                                break;
                        }
                }           
        }                                            
}   

const unsigned char ASC2_1206[1][24]={
{0x08,0x40,0x48,0x40,0x48,0x90,0xFF,0xF0,0x89,0x00,0x08,0x20,0xFF,0x40,0x08,0xC0,0x09,0x20,0x4A,0x10,0x28,0x70,0x00,0x00},
};   用取模软件取的是12 12 大小的

main里面        LCD_ShowString(30,70,12,12,24,"我");
请大神帮我看看  我的程序编译没错  下载到板子上之后就乱码了。
当时玩12864的时候汉字显示也没弄好  谢谢各位了  麻烦给我详细的解释一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
jiayubao12
1楼-- · 2019-07-20 12:50
u8 csize=(size/8+((size%8)?1:0))*(size/2);
首先你要看懂((size%8)?1:0))这个是三目运算符这句等价于先定义一个变量int i if(size%8){i=1;else i=0}假如size=16,csize=(2+0)*8=16
某某某某某某丶
2楼-- · 2019-07-20 13:25
 精彩回答 2  元偷偷看……
jiayubao12
3楼-- · 2019-07-20 16:21
如果size=24,则算出csize=36;但是你的“const unsigned char ASC2_1206[1][24]={
{0x08,0x40,0x48,0x40,0x48,0x90,0xFF,0xF0,0x89,0x00,0x08,0x20,0xFF,0x40,0x08,0xC0,0x09,0x20,0x4A,0x10,0x28,0x70,0x00,0x00},
};   用取模软件取的是12 12 大小的”这个数组里面指定义了24个元素,你可以先把 for(t=0;t<csize;t++)这里面的csize改成数字24试试。
某某某某某某丶
4楼-- · 2019-07-20 16:50
jiayubao12 发表于 2016-3-30 11:45
如果size=24,则算出csize=36;但是你的“const unsigned char ASC2_1206[1][24]={
{0x08,0x40,0x48,0x40,0 ...

是不是因为数字扫描是扫描ASC码 跟汉字扫描不一样的原因。
fanhuayishi
5楼-- · 2019-07-20 20:18
 精彩回答 2  元偷偷看……
longshengma
6楼-- · 2019-07-20 22:02
你这个问题解决了吗?我最近也在琢磨这个,请教你一下

一周热门 更多>