OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 1902|回复: 7

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

[复制链接]

  离线 

23

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-20
在线时间
34 小时
发表于 2016-3-28 22:38:06 | 显示全部楼层 |阅读模式
正点原子公众号
如下是我改的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的时候汉字显示也没弄好  谢谢各位了  麻烦给我详细的解释一下。
回复

使用道具 举报

  离线 

8

主题

95

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1687
金钱
1687
注册时间
2014-3-30
在线时间
267 小时
发表于 2016-3-29 16:53:33 | 显示全部楼层
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
从不在失败面前说不,你就会成为人们眼中的大神!!
回复 支持 反对

使用道具 举报

  离线 

23

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-20
在线时间
34 小时
 楼主| 发表于 2016-3-29 20:11:24 | 显示全部楼层
jiayubao12 发表于 2016-3-29 16:53
u8 csize=(size/8+((size%8)?1:0))*(size/2);
首先你要看懂((size%8)?1:0))这个是三目运算符这句等价于先 ...

还有其余的问题呢。。。。。
回复 支持 反对

使用道具 举报

  离线 

8

主题

95

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1687
金钱
1687
注册时间
2014-3-30
在线时间
267 小时
发表于 2016-3-30 11:45:44 | 显示全部楼层
如果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试试。
从不在失败面前说不,你就会成为人们眼中的大神!!
回复 支持 反对

使用道具 举报

  离线 

23

主题

93

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2016-1-20
在线时间
34 小时
 楼主| 发表于 2016-3-30 20:57:26 | 显示全部楼层
jiayubao12 发表于 2016-3-30 11:45
如果size=24,则算出csize=36;但是你的“const unsigned char ASC2_1206[1][24]={
{0x08,0x40,0x48,0x40,0 ...

是不是因为数字扫描是扫描ASC码 跟汉字扫描不一样的原因。
回复 支持 反对

使用道具 举报

  离线 

12

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
337
金钱
337
注册时间
2016-7-24
在线时间
74 小时
发表于 2016-8-5 12:32:51 | 显示全部楼层
某某某某某某丶 发表于 2016-3-30 20:57
是不是因为数字扫描是扫描ASC码 跟汉字扫描不一样的原因。

不是,你可以把asc码换成显示汉字的数组,只换顺序,可懂?
回复 支持 反对

使用道具 举报

  离线 

21

主题

118

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
363
金钱
363
注册时间
2016-8-23
在线时间
45 小时
发表于 2017-3-29 19:58:49 | 显示全部楼层
你这个问题解决了吗?我最近也在琢磨这个,请教你一下
回复 支持 反对

使用道具 举报

  离线 

1

主题

4

帖子

0

精华

新手上路

Rank: 1

积分
28
金钱
28
注册时间
2017-11-5
在线时间
5 小时
发表于 5 天前 | 显示全部楼层
fanhuayishi 发表于 2016-8-5 12:32
不是,你可以把asc码换成显示汉字的数组,只换顺序,可懂?

这个只换顺序是什么意思
回复 支持 反对

使用道具 举报

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

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-19 16:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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