OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9681|回复: 11

如何显示24*24大小的ascii码字符?

[复制链接]

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2013-10-11
在线时间
24 小时
发表于 2013-10-25 10:13:31 | 显示全部楼层 |阅读模式
我用战舰版的开发板上3.5tft-lcd显示字符,我不想只显示例子中的两种大小的字符.用pcto2002lcd软件生成24*24的字模库.有36个字节数据,但调入程序后却不能正常显示.在font.h中,修改:数组名
  • [36].然后在LCD_ShowString(30,240,200,36,36,"******");
  • 正点原子逻辑分析仪DL16劲爆上市
    回复

    使用道具 举报

    9

    主题

    32

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    157
    金钱
    157
    注册时间
    2013-10-11
    在线时间
    24 小时
     楼主| 发表于 2013-10-25 16:27:31 | 显示全部楼层
    我在LCD_ShowChar()函数中修改了代码为:
    if(size==12)temp=asc2_1206[num][t];  //调用1206字体
    else if(size==16) temp=asc2_1608[num][t];  //调用1608字体
    else if(size==36) temp=asc3_20[num][t];
     没成功.
    回复 支持 1 反对 0

    使用道具 举报

    530

    主题

    11万

    帖子

    34

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    165540
    金钱
    165540
    注册时间
    2010-12-1
    在线时间
    2117 小时
    发表于 2013-10-25 10:24:50 | 显示全部楼层
    还要修改底层代码的,比如单个字符的显示代码。
    我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
    正点原子STM32开发板购买店铺http://openedv.taobao.com
    正点原子官方微信公众平台,点击这里关注“正点原子”
    回复 支持 反对

    使用道具 举报

    9

    主题

    32

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    157
    金钱
    157
    注册时间
    2013-10-11
    在线时间
    24 小时
     楼主| 发表于 2013-10-25 10:36:14 | 显示全部楼层
    那如何修改?又能兼容已有的字库.
    回复 支持 反对

    使用道具 举报

    9

    主题

    32

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    157
    金钱
    157
    注册时间
    2013-10-11
    在线时间
    24 小时
     楼主| 发表于 2013-10-25 10:37:24 | 显示全部楼层
    我是新手,请站长多多指教!
    回复 支持 反对

    使用道具 举报

    120

    主题

    7878

    帖子

    13

    精华

    资深版主

    Rank: 8Rank: 8

    积分
    12012
    金钱
    12012
    注册时间
    2013-9-10
    在线时间
    427 小时
    发表于 2013-10-25 12:30:59 | 显示全部楼层
    回复【4楼】softerchang:
    ---------------------------------
    增加形参判断你要显示的字体大小,比如8*16、16*16之类的条件,底层代码判断显示就行了
    现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
    回复 支持 反对

    使用道具 举报

    9

    主题

    32

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    157
    金钱
    157
    注册时间
    2013-10-11
    在线时间
    24 小时
     楼主| 发表于 2013-10-26 10:49:59 | 显示全部楼层
    请各位大神支支招吧!
    回复 支持 反对

    使用道具 举报

    32

    主题

    190

    帖子

    1

    精华

    金牌会员

    Rank: 6Rank: 6

    积分
    1184
    金钱
    1184
    注册时间
    2013-4-3
    在线时间
    222 小时
    发表于 2013-10-27 16:14:35 | 显示全部楼层
    自己重新写单个字符显示的函数 横着打24个点竖着打24个点
    回复 支持 反对

    使用道具 举报

    9

    主题

    32

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    157
    金钱
    157
    注册时间
    2013-10-11
    在线时间
    24 小时
     楼主| 发表于 2013-10-29 15:44:30 | 显示全部楼层
    显示几个自定大小的ascii字符 修改程序如下,在开发板上显示失败,请指点!
    void LCD_ShowChar24(u16 x,u16 y,u8 num,u8 size,u8 mode)
    {     
        u8 temp,t1,t;
    // u16 y0=y;
    u16 colortemp=POINT_COLOR;            
    //设置窗口    
    num=num-' ';//得到偏移后的值
    if(!mode) //非叠加方式
    {
        for(t=0;t<size;t++)
        {   
     temp=asc3_20[num][t];                          
            for(t1=0;t1<8;t1++)
    {     
            if(temp&0x80)POINT_COLOR=colortemp;
    else OINT_COLOR=BACK_COLOR;
    LCD_DrawPoint(x,y);
    temp><<=1;
    // if(x>=lcddev.width){POINT_COLOR=colortemp;return;}//超区域了
    }    
        }    
    }else//叠加方式
    {
        for(t=0;t<size;t++)
        {   
       temp=asc3_20[num][t];                       
            for(t1=0;t1<8;t1++)
    {     
            if(temp&0x80)LCD_DrawPoint(x,y); 
    temp><<=1;
    y++;
    // if(x>=lcddev.height){POINT_COLOR=colortemp;return;}//超区域了

    }    
        }     
    }
    POINT_COLOR=colortemp;              
    }

    void LCD_ShowString24(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p)
    {         
    // u8 x0=x;
    // width+=x;
    // height+=y;
        while(*p!='\0')//判断是不是非法字符!
        {              
            LCD_ShowChar24(x,y,*p,size,0);
    x+=12;
            p++;
        }  
    }
    回复 支持 反对

    使用道具 举报

    6

    主题

    18

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    73
    金钱
    73
    注册时间
    2014-11-6
    在线时间
    4 小时
    发表于 2015-2-2 16:44:11 | 显示全部楼层
    temp><<=1;有没有做出来,怎么解决的,我也遇到同样的问题。只是我想把字体调到36号
    回复 支持 反对

    使用道具 举报

    6

    主题

    18

    帖子

    0

    精华

    初级会员

    Rank: 2

    积分
    73
    金钱
    73
    注册时间
    2014-11-6
    在线时间
    4 小时
    发表于 2015-2-2 16:52:22 | 显示全部楼层
    ..\HARDWARE\LCD\font.h(204): error:  #146: too many initializer values,出现这样的错误是什么原因导致的,拜托高手指点!
    回复 支持 反对

    使用道具 举报

    3

    主题

    2178

    帖子

    2

    精华

    论坛大神

    Rank: 7Rank: 7Rank: 7

    积分
    3323
    金钱
    3323
    注册时间
    2013-7-19
    在线时间
    195 小时
    发表于 2015-2-2 17:09:00 | 显示全部楼层
    额 兼容已有字库是不可能的,你必须自行取24*24字模,然后对一般字符显示进行修改
    回复 支持 反对

    使用道具 举报

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

    本版积分规则



    关闭

    原子哥极力推荐上一条 /2 下一条

    正点原子公众号

    QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

    GMT+8, 2025-6-26 04:18

    Powered by OpenEdv-开源电子网

    © 2001-2030 OpenEdv-开源电子网

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