4431|3

483

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

MDK 5编译环境下,汉字,英文混合显示的问题的讨论结果 [复制链接]

前天在这个坛子里面发了个帖子,讨论了下MDK5里面要编写一个函数在TFT屏幕上显示一种比较复杂的字符串的方法

比如

LCD_SHOWSTRING("aa我我");要显示这个字符串,在读取FLASH里面字库点阵的时候,出现混乱,因为我下载的字库只包括GB2312里面的中文,不包括英文,标点,越南文什么的(也不好找这种,当然也没必要浪费空间)。出现混乱的原因是在MDK编译环境下面,这个字符串“aa我我”的编译结果是按照,a按照ask码对应过来(一个char),我我是按照GB2312里面的索引对应过来(两个char)

我是通过编写了一个小函数来验证了这个问题的。在图片中我们可以看到字符串“aa我我”的实际值是 0x61 0x61 0xCE 0xD2 0xCE 0xD2

也就是说,在这个环境下字符串中a的值不是GB2312里面的 0xA3 0XE1,而是0x61(这是ask码对应的值)也不是0x00 0x61

因此,结论就是

在MDK环境下,要编写一个显示包含中文和英文或者标点符号的函数,只能通过判断字符串值来确定是ask码还是汉字,因为ask码的值是肯定小于0x80的。

函数的大概逻辑就出来了

显示字符串的函数

{

do

{

1,判断指针指向的这个字符串的值得大小,

2,如果大于0x80,肯定是汉字了,就按两个char确定一个汉字的逻辑来读取flash里面的点阵数据 ,即要P+2

3,如果小于0x80,肯定是ask码里面的英文,标点什么的了,所以就按一个char确定点阵的位置  这是只需P++就可以了

}

while(*p!=0);

}

然后接着前一个帖子的问题,我烧写了一个GB2312汉字字库以后,在flash的后面接着又烧写了一个ASK码的字库,所以在软件里面判断一下这个点阵起始位置就可以了。

好了,感觉说的比较乱,如果下次有人同样遇到这个问题,希望可以百度到我的帖子。

123.jpg (56.91 KB, 下载次数: 0)

MDK环境下的字符串实际值

MDK环境下的字符串实际值

124.jpg (19.94 KB, 下载次数: 0)

字母a在GB2312总的索引值

字母a在GB2312总的索引值
此帖出自stm32/stm8论坛

最新回复

汉字与英文通过ASC大小判断是很方便解决的。  详情 回复 发表于 2015-3-18 10:04

赞赏

1

查看全部赞赏

点赞 关注
 

回复
举报

1万

帖子

24

TA的资源

版主

沙发
 
是ASC,不是ASK吧。
此帖出自stm32/stm8论坛
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

板凳
 
汉字与英文通过ASC大小判断是很方便解决的。
此帖出自stm32/stm8论坛

点评

恩,就是,已经解决这个问题了。谢谢大家的提示  详情 回复 发表于 2015-3-18 11:56
 
个人签名我的博客
 

回复

483

帖子

0

TA的资源

纯净的硅(初级)

4
 
zhaojun_xf 发表于 2015-3-18 10:04
汉字与英文通过ASC大小判断是很方便解决的。



恩,就是,已经解决这个问题了。谢谢大家的提示
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表