搜索
bottom↓
回复: 30

请教,要把液晶的中文显示做成多国语言的,怎么搞啊

[复制链接]

出0入0汤圆

发表于 2014-11-17 15:24:23 | 显示全部楼层 |阅读模式
没有头绪啊,液晶是没有字库的。

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2014-11-17 15:25:52 | 显示全部楼层
自已取模,想用什么什么字体就用什么字体,方便的很

出0入0汤圆

发表于 2014-11-17 15:35:47 | 显示全部楼层
外文的好弄啊就26个字母做成库即可

出0入0汤圆

发表于 2014-11-17 15:36:28 | 显示全部楼层
外文的好弄啊就26个字母做成库即可

出0入0汤圆

发表于 2014-11-17 15:45:43 | 显示全部楼层
用指针的指针这方面知识,也就是二维数组。你可以查查这方面的资料,从这入手。

出0入96汤圆

发表于 2014-11-17 16:46:11 | 显示全部楼层
本帖最后由 gallle 于 2014-11-17 16:47 编辑

定义自用字库,用几国语言做几个,定义菜单短语数组,根据不同语言取不同的字库内容显示。例如,中文,英文的,先定义短语数组disp[10][10]={"开机",“Open”,"关机","Close"};
偶数是中文,基数是英文。然后根据中英文分别到字库取模就OK;

出0入0汤圆

发表于 2014-11-17 17:01:39 | 显示全部楼层
使用unicode字库

出0入0汤圆

 楼主| 发表于 2014-11-17 17:31:30 | 显示全部楼层
gallle 发表于 2014-11-17 16:46
定义自用字库,用几国语言做几个,定义菜单短语数组,根据不同语言取不同的字库内容显示。例如,中文,英文 ...

像这样的汉字会被直接转成和字库对应的地址,这个地址怎样转成自己定义的点阵的地址呢?

出0入0汤圆

发表于 2014-11-17 17:58:48 | 显示全部楼层
关键是排版不好整,中文的字和英文字长度不一,很容易就对不上聊。

出0入0汤圆

发表于 2014-11-17 18:13:05 | 显示全部楼层
快速的一条路就是自己取模。做过法文,意大利文。。都是这么干的。

出0入0汤圆

发表于 2014-11-17 18:51:29 | 显示全部楼层
自己做字库

出0入0汤圆

发表于 2014-11-17 19:18:29 | 显示全部楼层
自己做字库,但每种语言表达长度不一,要一句一句调整。

出0入0汤圆

发表于 2014-11-17 21:39:25 | 显示全部楼层
黄阿狗 发表于 2014-11-17 17:58
关键是排版不好整,中文的字和英文字长度不一,很容易就对不上聊。

用指针的指针可以解决这个问题。

出0入0汤圆

发表于 2014-11-18 06:53:53 来自手机 | 显示全部楼层
把菜单都做成表,中文一个,英文一个

出0入0汤圆

 楼主| 发表于 2014-11-18 07:43:22 | 显示全部楼层
linjunxiong 发表于 2014-11-18 06:53
把菜单都做成表,中文一个,英文一个

目前是这样做的,把自定义的能用到的那些汉字做成点阵,然后自己做个表,里面就是点阵中的位置。这样调用的时候比较麻烦,而且更改的时候也很麻烦。做表的时候也很麻烦。
在想能否利用define什么的,不太懂啊。

出0入96汤圆

发表于 2014-11-18 07:53:19 | 显示全部楼层
取模直接就用内码做索引了,不要用固定序号的方式啊。

出0入96汤圆

发表于 2014-11-18 07:57:03 | 显示全部楼层

  1. typedef struct typFNT_GB16 // 汉字字模显示数据结构
  2. {
  3.         char Index[2];
  4.         char Msk[32];
  5. };
  6. #define         CHIN_NUM 102
  7. #pragma data:code
  8. const struct typFNT_GB16  GB_16[] = {
  9. "北", 0x00, 0x020, 0x020, 0x020, 0x020, 0x0FF, 0x00, 0x00, 0x00, 0x0FF, 0x040, 0x020, 0x030, 0x018, 0x010, 0x00, 0x010, 0x030, 0x018, 0x08, 0x04, 0x07F, 0x00, 0x00, 0x00, 0x03F, 0x040, 0x040, 0x040, 0x040, 0x078, 0x00,
  10. "京", 0x00, 0x04, 0x04, 0x0E4, 0x024, 0x024, 0x025, 0x026, 0x024, 0x024, 0x024, 0x0E4, 0x06, 0x04, 0x00, 0x00, 0x00, 0x020, 0x010, 0x019, 0x0D, 0x041, 0x081, 0x07F, 0x01, 0x01, 0x05, 0x0D, 0x038, 0x010, 0x00, 0x00,
复制代码

类似这样的定义,在你要显示的地方直接写汉字就OK了

出0入96汤圆

发表于 2014-11-18 07:59:33 | 显示全部楼层

  1. const unsigned char asc[][16]={
  2. /* */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  3. /*!*/ 0x00, 0x00, 0x00, 0x0F8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x033, 0x030, 0x00, 0x00, 0x00,
  4. /*"*/ 0x00, 0x010, 0x0C, 0x06, 0x010, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  5. /*#*/ 0x040, 0x0C0, 0x078, 0x040, 0x0C0, 0x078, 0x040, 0x00, 0x04, 0x03F, 0x04, 0x04, 0x03F, 0x04, 0x04, 0x00,
  6. /*$*/ 0x00, 0x070, 0x088, 0x0FC, 0x08, 0x030, 0x00, 0x00, 0x00, 0x018, 0x020, 0x0FF, 0x021, 0x01E, 0x00, 0x00,
  7. /*%*/ 0x0F0, 0x08, 0x0F0, 0x00, 0x0E0, 0x018, 0x00, 0x00, 0x00, 0x021, 0x01C, 0x03, 0x01E, 0x021, 0x01E, 0x00,
  8. /*&*/ 0x00, 0x0F0, 0x08, 0x088, 0x070, 0x00, 0x00, 0x00, 0x01E, 0x021, 0x023, 0x024, 0x019, 0x027, 0x021, 0x010,
  9. /*'*/ 0x010, 0x016, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  10. /*(*/ 0x00, 0x00, 0x00, 0x0E0, 0x018, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x018, 0x020, 0x040, 0x00,
  11. /*)*/ 0x00, 0x02, 0x04, 0x018, 0x0E0, 0x00, 0x00, 0x00, 0x00, 0x040, 0x020, 0x018, 0x07, 0x00, 0x00, 0x00,
  12. /***/ 0x040, 0x040, 0x080, 0x0F0, 0x080, 0x040, 0x040, 0x00, 0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00,
  13. /*+*/ 0x00, 0x00, 0x00, 0x0F0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01F, 0x01, 0x01, 0x01, 0x00,
  14. /*,*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x080, 0x0B0, 0x070, 0x00, 0x00, 0x00, 0x00, 0x00,
  15. /*-*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
  16. /*.*/ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x030, 0x030, 0x00, 0x00, 0x00, 0x00, 0x00,
  17. /*/*/ 0x00, 0x00, 0x00, 0x00, 0x080, 0x060, 0x018, 0x04, 0x00, 0x060, 0x018, 0x06, 0x01, 0x00, 0x00, 0x00,
  18. /*0*/ 0x00, 0x0E0, 0x010, 0x08, 0x08, 0x010, 0x0E0, 0x00, 0x00, 0x0F, 0x010, 0x020, 0x020, 0x010, 0x0F, 0x00,
  19. /*1*/ 0x00, 0x010, 0x010, 0x0F8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x020, 0x020, 0x03F, 0x020, 0x020, 0x00, 0x00,
  20. /*2*/ 0x00, 0x070, 0x08, 0x08, 0x08, 0x088, 0x070, 0x00, 0x00, 0x030, 0x028, 0x024, 0x022, 0x021, 0x030, 0x00,
  21. /*3*/ 0x00, 0x030, 0x08, 0x088, 0x088, 0x048, 0x030, 0x00, 0x00, 0x018, 0x020, 0x020, 0x020, 0x011, 0x0E, 0x00,
  22. /*4*/ 0x00, 0x00, 0x0C0, 0x020, 0x010, 0x0F8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x024, 0x024, 0x03F, 0x024, 0x00,
  23. /*5*/ 0x00, 0x0F8, 0x08, 0x088, 0x088, 0x08, 0x08, 0x00, 0x00, 0x019, 0x021, 0x020, 0x020, 0x011, 0x0E, 0x00,
  24. /*6*/ 0x00, 0x0E0, 0x010, 0x088, 0x088, 0x018, 0x00, 0x00, 0x00, 0x0F, 0x011, 0x020, 0x020, 0x011, 0x0E, 0x00,
  25. /*7*/ 0x00, 0x038, 0x08, 0x08, 0x0C8, 0x038, 0x08, 0x00, 0x00, 0x00, 0x00, 0x03F, 0x00, 0x00, 0x00, 0x00,
  26. /*8*/ 0x00, 0x070, 0x088, 0x08, 0x08, 0x088, 0x070, 0x00, 0x00, 0x01C, 0x022, 0x021, 0x021, 0x022, 0x01C, 0x00,
  27. /*9*/ 0x00, 0x0E0, 0x010, 0x08, 0x08, 0x010, 0x0E0, 0x00, 0x00, 0x00, 0x031, 0x022, 0x022, 0x011, 0x0F, 0x00,
  28. /*:*/ 0x00, 0x00, 0x00, 0x0C0, 0x0C0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x030, 0x030, 0x00, 0x00, 0x00,
  29. /*;*/ 0x00, 0x00, 0x00, 0x080, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x080, 0x060, 0x00, 0x00, 0x00, 0x00,
  30. /*<*/ 0x00, 0x00, 0x080, 0x040, 0x020, 0x010, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x010, 0x020, 0x00,
  31. /*=*/ 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x040, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00,
  32. /*>*/ 0x00, 0x08, 0x010, 0x020, 0x040, 0x080, 0x00, 0x00, 0x00, 0x020, 0x010, 0x08, 0x04, 0x02, 0x01, 0x00,
  33. /*?*/ 0x00, 0x070, 0x048, 0x08, 0x08, 0x08, 0x0F0, 0x00, 0x00, 0x00, 0x00, 0x030, 0x036, 0x01, 0x00, 0x00,
  34. /*@*/ 0x0C0, 0x030, 0x0C8, 0x028, 0x0E8, 0x010, 0x0E0, 0x00, 0x07, 0x018, 0x027, 0x024, 0x023, 0x014, 0x0B, 0x00,
  35. /*A*/ 0x00, 0x00, 0x0C0, 0x038, 0x0E0, 0x00, 0x00, 0x00, 0x020, 0x03C, 0x023, 0x02, 0x02, 0x027, 0x038, 0x020,
  36. /*B*/ 0x08, 0x0F8, 0x088, 0x088, 0x088, 0x070, 0x00, 0x00, 0x020, 0x03F, 0x020, 0x020, 0x020, 0x011, 0x0E, 0x00,
  37. /*C*/ 0x0C0, 0x030, 0x08, 0x08, 0x08, 0x08, 0x038, 0x00, 0x07, 0x018, 0x020, 0x020, 0x020, 0x010, 0x08, 0x00,
  38. };
复制代码

英文部分我没有用太多,所以缩减了点阵

出0入96汤圆

发表于 2014-11-18 08:03:58 | 显示全部楼层

  1. uchar dprintf(uchar x,uchar y,char *theStr,uchar mod)
  2. {
  3.         uchar ii,jj,theCode;uchar len;
  4.         set_pos(x,y);
  5.          ii = 0 ;
  6.          len=strlen(theStr);
  7.         while(ii<len)         {
  8.                 if ( theStr[ii] < 0x7f)   {
  9.                         Putedot(theStr[ii]-0x20,mod);//显示英文的函数
  10.                         ii++;
  11.                 }
  12.                 //  中文           
  13.                 else {
  14.                         jj=0 ;
  15.                         while( !( (theStr[ii] == GB_16[jj].Index[0]) && ( theStr[ii+1] == GB_16[jj].Index[1])) && (jj < CHIN_NUM) ) {
  16.                         jj++ ;
  17.                         }
  18.                         if( jj < CHIN_NUM ) theCode=jj;                        //  查找汉字     
  19.                         else theCode = 0 ;
  20.                         Putcdot(theCode,mod);//显示汉字的函数
  21.                         ii+=2;
  22.                 }
  23.         }
  24.         return len;
  25. }
复制代码

用的时候直接输出就OK了
dprintf(2,2,"北京:",1);//中文
dprintf(2,2,"B010:",1);//英文

出0入50汤圆

发表于 2014-11-18 08:19:15 | 显示全部楼层
最关键的楼上已经说了,同一个意思,不同语言的长度不一样,是最头大的问题,给排版带来难题。

出0入0汤圆

 楼主| 发表于 2014-11-18 08:22:52 | 显示全部楼层
gallle 发表于 2014-11-18 08:03
用的时候直接输出就OK了
dprintf(2,2,"北京:",1);//中文
dprintf(2,2,"B010:",1);//英文

英文的这样直接是可以用的
中文的可以这样写?像自摸3的那样的软件,怎么不直接生成这种格式?
有空试试好使不。

出0入0汤圆

 楼主| 发表于 2014-11-18 08:23:38 | 显示全部楼层
ilikemcu 发表于 2014-11-18 08:19
最关键的楼上已经说了,同一个意思,不同语言的长度不一样,是最头大的问题,给排版带来难题。 ...

是啊,这个也挺麻烦的。

出0入0汤圆

发表于 2014-11-18 08:33:36 | 显示全部楼层
標準字庫啊,GB2312轉unicode

出0入0汤圆

发表于 2014-11-18 08:33:42 来自手机 | 显示全部楼层
把菜单中包含的字符都取模。

出0入96汤圆

发表于 2014-11-18 08:42:44 | 显示全部楼层
xiaobendan 发表于 2014-11-18 08:22
英文的这样直接是可以用的
中文的可以这样写?像自摸3的那样的软件,怎么不直接生成这种格式?
有空试试 ...

其他的语言可以按照英文那样改一下啊,dprintf文件写成单独的就OK了

出0入0汤圆

 楼主| 发表于 2014-11-18 08:46:10 | 显示全部楼层
gallle 发表于 2014-11-18 08:03
用的时候直接输出就OK了
dprintf(2,2,"北京:",1);//中文
dprintf(2,2,"B010:",1);//英文

仔细看了下,还真不错,谢谢指导,

出0入0汤圆

发表于 2015-2-17 10:24:35 | 显示全部楼层
学习了

出0入0汤圆

发表于 2015-2-17 12:32:21 | 显示全部楼层
多维数组+宏

出0入0汤圆

发表于 2015-2-17 12:49:07 | 显示全部楼层
自己做字库~~~~~~~~~~~~~~~~~

出0入0汤圆

发表于 2015-2-19 02:34:24 | 显示全部楼层
慢慢取模吧,一个字一个字弄。

出0入0汤圆

发表于 2015-6-3 13:18:53 | 显示全部楼层
上海朗睿有带字库的液晶,可以看看。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 08:15

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

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