OpenEdv-开源电子网

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

汉字显示,单片机怎么把“你好”对应到GBK码

[复制链接]

54

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2014-3-6
在线时间
41 小时
发表于 2014-8-19 21:39:13 | 显示全部楼层 |阅读模式
5金钱
各位大神,解疑老师,原子大哥,求教汉字显示的问题,怎么从字符串里的汉字信息和GBK码联系,另外GBK16就是整个汉字库对应的点阵数据吗?UNI2GBK什么作用,是把汉子转为GBK码的东西吗,他是怎么工作的啊?ShowStr(20,20,"你好",16);怎么把你好这个东西给Get_HzMat()的*code呢,*code就是GBK码吧!另外ff_convert()在哪里调用了呢?他是把UNICODE和GBK相互转换用的,没看见在哪调用啊!到时再ff。c里的文件函数中找到了,但是感觉没什么用啊,最重要的是单片机怎么把“你好”对应到GBK码呢???

最佳答案

查看完整内容[请看2#楼]

回复【8楼】春和景明: --------------------------------- fatfs毕竟是国外的东西,他们应该是针对于Unicode的,但我们汉字是GBK。 正如楼上所说,Keil编译后是GBK。 因为一般fatfs是应用于操作文件的,比如操作tf卡,SD卡,还有其他的flash,就是要处理这些卡里的文件,这些文件 就有名字,一旦有名字,fatfs读出来是Unicode的,所以还用那个函数进行转换成GBK,这样汉字的内码才会被单片机 识别,从而找到汉字点阵。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-8-19 21:39:14 | 显示全部楼层
回复【8楼】春和景明:
---------------------------------
fatfs毕竟是国外的东西,他们应该是针对于Unicode的,但我们汉字是GBK。 正如楼上所说,Keil编译后是GBK。
因为一般fatfs是应用于操作文件的,比如操作tf卡,SD卡,还有其他的flash,就是要处理这些卡里的文件,这些文件
就有名字,一旦有名字,fatfs读出来是Unicode的,所以还用那个函数进行转换成GBK,这样汉字的内码才会被单片机
识别,从而找到汉字点阵。
我是新人
回复

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2014-8-19 21:51:52 | 显示全部楼层
编译器将“你好“,转为gbk码(实质在代码中是变成2个汉字的地址),接着利用函数在tf卡或flash中,根据那二个地址查找”你好“的点阵数据,tft就可以显示你好了
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-19 23:00:29 | 显示全部楼层
楼主,先从简单的学起吧.
搞懂ASCII的显示,再来问这些问题.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

54

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2014-3-6
在线时间
41 小时
 楼主| 发表于 2014-8-20 07:40:16 | 显示全部楼层
回复【2楼】muniao:
---------------------------------
你的意思是KEIL能把汉字自动转为gbk码?那unicode干嘛用的,ff_convert这个函数(功能uni2gbk)是干嘛用的!!
回复

使用道具 举报

54

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2014-3-6
在线时间
41 小时
 楼主| 发表于 2014-8-20 07:51:47 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
ASCII不就是一些英文的大小写字母和数字加上一些符号,这些都是先判断str<0x80,如果成立,那么用Showchar显示,ascII码的点阵字库在font.h文件里,用到查表就行,查找到点阵字库,就画点就完事儿。但是汉字的话,就要用到Showfont,怎么找gbk码(内码),我知道怎么由内码找对应的点阵字库,那么是不是编译器自动把汉子转换为这个汉字的内码,如果是的话。那uni2gbk码又有什么用,还有你在mycc936里边,改的ff_convert,我也没看见用啊!!
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-8-20 08:15:44 | 显示全部楼层
回复【4楼】春和景明:
---------------------------------
fatfs只识别Unicode 但是我们显示用的是GBK ,所以当然得转换了。如果不显示汉字,这个函数就没用。
我是新人
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-8-20 10:20:21 | 显示全部楼层
樓主 只要在 Keil c裡輸入, 類似這樣子,
WCHAT s[]=L"你好, 大家好";
就可以了
回复

使用道具 举报

54

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2014-3-6
在线时间
41 小时
 楼主| 发表于 2014-8-20 10:25:54 | 显示全部楼层
回复【6楼】般若切:
---------------------------------
但是后来我把FATFs删了(已经更新过字库了),还能正常显示汉字,并且还可以打印汉字的gbk码。那这个ff_convert和Unicode码,是在用打开或关闭或其他操作(STM32操作)一些文件名含有汉字的,或者要处理汉字的时候,才用的?我得猜想对吗?
回复

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2014-8-20 10:44:25 | 显示全部楼层
回复【4楼】春和景明:
---------------------------------
keil是编译后是gbk, unicode是另一种字符编码,假如在你不知道是那种编码的时候,是可以通过判断,判断它到底是那个编码的,假如判断为u8那你就可以用那函数了
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-8-19
在线时间
0 小时
发表于 2014-8-20 11:46:47 | 显示全部楼层
回复【8楼】春和景明:
---------------------------------
如果你单单只是拿stm32显示汉字,那完全可以自己在程序里显示出来啊,不用考虑那几个函数啊
我是新人
回复

使用道具 举报

54

主题

136

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
404
金钱
404
注册时间
2014-3-6
在线时间
41 小时
 楼主| 发表于 2014-8-20 11:59:53 | 显示全部楼层
回复【11楼】般若切:
---------------------------------
谢谢你,大神!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-2 12:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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