野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12990|回复: 9

mini版不用SD卡显示汉字求助

[复制链接]
发表于 2016-7-19 17:16:36 | 显示全部楼层 |阅读模式
我在 FSMC-液晶显示-英文的案例中的ASCII文件里面添加了16*16的汉字字模
const unsigned char  FindChineseFont[]=
{"源直流电子负载设置输入调整率压恒模式移动下划线开关加减状态启闭复位双向变换器充电"};
/****************************取模时顺时针旋转90度*************************/
const unsigned char Chinese_16016[][32]=
{
{0x20,0x20,0x7E,0x82,0x0C,0xF0,0x04,0xC8,0x92,0x81,0xFE,0x80,0x90,0xC8,0x04,0x00,
0x08,0x06,0x40,0x31,0x00,0x7F,0x40,0x4F,0x4A,0x5A,0x6A,0x4A,0x4A,0x4F,0x40,0x00},/*"源",0*/
/* (16 X 16 , 宋体 )*/
{0x02,0x02,0x02,0xFE,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0xFE,0x02,0x02,0x02,0x00,
0x00,0x20,0x20,0x2F,0x29,0x29,0x29,0xF9,0x29,0x29,0x29,0x2F,0x20,0x20,0x00,0x00},/*"直",0*/
/* (16 X 16 , 宋体 )*/
{0x20,0x20,0x7E,0x80,0x01,0x02,0x7C,0x00,0x00,0x7F,0x00,0x00,0x7E,0x01,0x07,0x00,
0x08,0x06,0x40,0x31,0x00,0x22,0x26,0x2A,0xB2,0x62,0x22,0x2A,0x26,0x23,0x20,0x00},/*"流",1*/
/* (16 X 16 , 宋体 )*/
·
·
·
省略
} ;
因为没有很多汉字要写,所以不打算用SD卡 只需要简单显示几个汉字就好。
看了F1版块 同样问题帖子里面都没有详细的解释一下汉字的调用。
求一个能在板子上显示汉字的函数 写了一整天了,就是调试不出来,我的是mini板。


回复

使用道具 举报

发表于 2016-7-19 17:59:13 | 显示全部楼层
《零死角》 文档里有介绍啊,其实只是字库数据以数组形式放到stm32里
例程里的sd卡字库最终也是读取成数组的,你只要把这些改了就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-19 19:17:57 | 显示全部楼层
flyleaf 发表于 2016-7-19 17:59
《零死角》 文档里有介绍啊,其实只是字库数据以数组形式放到stm32里
例程里的sd卡字库最终也是读取成数组 ...

我看是看过了,调试一直有问题,我再改改代码,实在不行在求教吧,谢谢啦
回复 支持 反对

使用道具 举报

发表于 2016-7-19 19:26:54 | 显示全部楼层
森井 发表于 2016-7-19 19:17
我看是看过了,调试一直有问题,我再改改代码,实在不行在求教吧,谢谢啦

可以看看F4的视频,基本原理是一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-19 20:17:13 | 显示全部楼层
flyleaf 发表于 2016-7-19 19:26
可以看看F4的视频,基本原理是一样的

是真的不会写了,我和室友都要哭了
回复 支持 反对

使用道具 举报

发表于 2016-7-20 08:52:10 | 显示全部楼层
森井 发表于 2016-7-19 20:17
是真的不会写了,我和室友都要哭了

看F429的视频,有演示的啊啊啊啊,这不是三两句能在帖子里解析完的。
视频里还演示了用串口利用字模打印汉字来说明原理。

慢慢来,不要急
回复 支持 反对

使用道具 举报

发表于 2016-7-21 18:44:15 | 显示全部楼层
好像有配套例程的
回复 支持 反对

使用道具 举报

发表于 2016-7-21 21:07:59 | 显示全部楼层
建立一个结构体数组,包含汉字字符索引和 字模    匹配汉字显示字模即可
回复 支持 反对

使用道具 举报

发表于 2016-7-21 21:09:52 | 显示全部楼层
代码内带字库
***************************************************************/
#if FONT_HZ_TYPE==FONT_HZ_TYPE_CODE
const HZ_CODE16 Hz_Code16[]=
{        "接",
    0x08,0x01,0x08,0x02,0xC8,0x3F,0x08,0x00,0xBF,0x10,0x08,0x09,0xE8,0x7F,0x08,0x02,
        0x18,0x02,0xEC,0x7F,0x0B,0x11,0x88,0x10,0x08,0x09,0x08,0x06,0x8A,0x19,0x64,0x20,/*"接",0*/
        "收",
        0x10,0x02,0x10,0x02,0x12,0x02,0x12,0x01,0x12,0x7F,0x92,0x10,0x52,0x11,0x12,0x11,
        0x12,0x11,0x1A,0x0A,0x16,0x0A,0x12,0x04,0x10,0x0A,0x10,0x11,0x90,0x20,0x50,0x40,/*"收",1*/
        "到",
        0x00,0x20,0xFF,0x21,0x10,0x20,0x08,0x24,0x44,0x24,0x82,0x24,0xFF,0x25,0x10,0x25,
        0x10,0x24,0x10,0x24,0xFE,0x24,0x10,0x24,0x10,0x20,0xF0,0x21,0x1F,0x28,0x02,0x10,/*"到",2*/
        "的",
        0x08,0x02,0x08,0x02,0x04,0x02,0x7E,0x3E,0x42,0x21,0x42,0x21,0xC2,0x20,0x42,0x22,
        0x7E,0x24,0x42,0x24,0x42,0x20,0x42,0x20,0x42,0x20,0x7E,0x20,0x42,0x14,0x00,0x08,/*"的",3*/
        "遥",
        0x00,0x3C,0xC4,0x03,0x08,0x20,0x48,0x22,0x80,0x14,0x80,0x3F,0x4F,0x04,0x08,0x04,
        0xC8,0x7F,0x08,0x04,0x88,0x24,0x88,0x24,0x88,0x24,0x88,0x3F,0x14,0x00,0xE2,0x7F,/*"遥",4*/

void TFTShowStrGBK(LOC_X x,LOC_Y y,u8 nHz,u8 *pStr,COLOR color,COLOR bkColor)
{
    u8 i=0,j=0,k=0;
        u16 temp;
        u16 *pCode;
        while(nHz--)
        {
            i=0;
            while(0xff!=Hz_Code16[i].Hz_Index[0]) //
                {
                    if(*pStr==Hz_Code16[i].Hz_Index[0]
                           &&*(pStr+1)==Hz_Code16[i].Hz_Index[1])          //
                        {
                            pCode= (u16*)(&Hz_Code16[i].Code[0]);
                            for(j=0;j<16;j++)          //16行
                                {  
                                    TFTSetXY(x,y);
                                    temp=*pCode++;
                                    for(k=16;k>0;k--)  //一行 16bit
                                        {
                                            if(temp        & 0x01)
                                                {
                                                    _TFTPoint(color);        //写有效点
                                                }
                                            else
                                                {
                                                        if (bkColor)
                                                                _TFTPoint(bkColor);//写底色
                                                        else
                                                                TFTSetXY(x+k+1,y);        //偏移一个点
                                                }
                                                temp>>=1;
                                        }
                                        y++;//换行
                                }
                                x+=16; y-=16;
                                break;
                    } // end of if(*pStr==Hz_Code[i].Hz_Index[0]...
                        i++;
                }
                pStr+=2;
        }
}
要显示的地方调用
TFTShowStrGBK(5,50,14,"接收到的遥控信息:你好中国人",RED,WHITE);
回复 支持 反对

使用道具 举报

发表于 2016-7-21 21:10:38 | 显示全部楼层
领悟了否
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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