搜索
bottom↓
回复: 15

分享一段汉字寻址示范程序

[复制链接]

出0入0汤圆

发表于 2019-9-18 20:54:12 | 显示全部楼层 |阅读模式
struct typFNT_GB162
{
    unsigned char Index[3];
    char Msk[32];
};

#define hz16_num  3
const struct typFNT_GB162 hz16[] =
{
#if USE_ONCHIP_FLASH_FONT
    "电", 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x7F, 0xF0, 0x42, 0x10, 0x42, 0x10, 0x7F, 0xF0, 0x42, 0x10, 0x42, 0x10, 0x7F, 0xF0, 0x42, 0x00, 0x02, 0x08, 0x02, 0x08, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00,
    "子", 0x7F, 0xF0, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0xFF, 0xF8, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00,
    "全", 0x01, 0x00, 0x01, 0x00, 0x02, 0x80, 0x04, 0x40, 0x08, 0x20, 0x10, 0x10, 0x2F, 0xE8, 0xC1, 0x06, 0x01, 0x00, 0x01, 0x00, 0x1F, 0xF0, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0xFC, 0x00, 0x00,
#endif
}
void show_One_Chinese(u8 x,u8 y,char *HZ)
{                                  
        u8 t;
        u16 HZK_POS,i=0;
        while((*HZ++!=hz16[i].Index[0])||(*HZ!=hz16[i].Index[1])&& i<hz16_num  ){
                i++;
        }
        HZK_POS = i;
        set_pos(x,y);       
    for(t=0;t<16;t++)
    {
        write_data(hz16[HZK_POS].Msk[t]);
     }       
    set_pos(x,y+1);       
    for(t=0;t<16;t++)
    {       
        write_data(hz16[HZK_POS].Msk[t+16]);
    }                                       
}
show_One_Chinese(0,0,"电")

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2019-9-18 21:01:17 | 显示全部楼层
好办法,学习了。
我以前是用的宏定义来指定汉字序号,就没办法直接写中文字符串。

出0入4汤圆

发表于 2019-9-18 21:26:42 | 显示全部楼层
good idea,当字库数量较大时,无序查表较慢,需改进一下,将汉字编码整成16位数,定义字库时,按汉字编码大小排好序,
这样查表时会快一些,当字库数量更大时,可以将汉字编码分成几个区域,每个区域映射到对应字库,这样平均查找速度会更快一些,
或者开辟一块临时缓冲区,每次先检查缓冲区是否命中

出0入0汤圆

发表于 2019-9-18 21:56:18 来自手机 | 显示全部楼层
不错,标记一下

出0入0汤圆

发表于 2019-9-18 21:59:51 | 显示全部楼层
mark一下,很不错的

出0入10汤圆

发表于 2019-9-18 22:36:39 | 显示全部楼层
本帖最后由 bias 于 2019-9-18 22:39 编辑

第一次看到这种寻址方式好像还是05年看xiaoqi 晓奇写的1335驱动320x240单色屏程序的时候
还有人知道xiaoqi这个id 么


编辑补充:xiaoqi还专门做了一个取模软件,导入.c程序,直接获取里面所有汉字,然后生成这样的格式,到现在还保留再用.

出0入0汤圆

发表于 2019-9-18 23:08:32 | 显示全部楼层
bias 发表于 2019-9-18 22:36
第一次看到这种寻址方式好像还是05年看xiaoqi 晓奇写的1335驱动320x240单色屏程序的时候
还有人知道xiaoqi ...

貌似还用过。不过用的时候是12年~

出0入0汤圆

发表于 2019-9-18 23:16:13 | 显示全部楼层
bias 发表于 2019-9-18 22:36
第一次看到这种寻址方式好像还是05年看xiaoqi 晓奇写的1335驱动320x240单色屏程序的时候
还有人知道xiaoqi ...

握手,同样再用

出0入42汤圆

发表于 2019-9-19 09:21:18 | 显示全部楼层
楼主你好,有个地方不是特别明白,结构体typFNT_GB162里面的Index[3],为什么要定义3个空间,在后面的使用里,只用了2个 while((*HZ++!=hz16[i].Index[0])||(*HZ!=hz16[i].Index[1])&& i<hz16_num  ){

出0入0汤圆

发表于 2019-9-19 13:36:16 | 显示全部楼层
可以这样吗?show_One_Chinese(0,0,"电子")

出0入0汤圆

发表于 2019-9-19 14:47:38 | 显示全部楼层
我是一个大白菜 发表于 2019-9-19 09:21
楼主你好,有个地方不是特别明白,结构体typFNT_GB162里面的Index[3],为什么要定义3个空间,在后面的使用 ...

字符串结尾NULL

出0入42汤圆

发表于 2019-9-19 15:00:04 | 显示全部楼层

哦,明白了,谢谢分享

出0入0汤圆

发表于 2019-9-19 16:19:21 来自手机 | 显示全部楼层
我是直接查表…我发我的…

出0入0汤圆

发表于 2019-9-19 16:50:17 | 显示全部楼层
我是一个大白菜 发表于 2019-9-19 09:21
楼主你好,有个地方不是特别明白,结构体typFNT_GB162里面的Index[3],为什么要定义3个空间,在后面的使用 ...

其实小琦工作室字模软件生成的代码就是Index[2]
// ------------------  汉字字模的数据结构定义 ------------------------ //
typedef struct typFNT_GB16                 // 汉字字模数据结构
{
       signed char Index[2];               // 汉字内码索引
       char Msk[32];                       // 点阵码数据
};

出0入42汤圆

发表于 2019-9-19 17:33:45 | 显示全部楼层
WillFeng 发表于 2019-9-19 16:50
其实小琦工作室字模软件生成的代码就是Index[2]
// ------------------  汉字字模的数据结构定义 ------- ...

谢谢提示,我找找看这个软件

出0入0汤圆

 楼主| 发表于 2019-9-19 17:58:31 | 显示全部楼层
gliet_su 发表于 2019-9-19 13:36
可以这样吗?show_One_Chinese(0,0,"电子")

你这个用法不行,我理解的是显示多个汉字需要写个函数用来逐个判断汉字,然后调用单个汉字显示程序。如果汉字中夹杂着字符,还得判断是汉字还是字符,然后分别调用单个汉字显示函数和单个字符显示程序
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 12:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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