查看: 3812|回复: 8

请教各位:汉字硬字库 在ARDUINO IDE里能不能这样用?

[复制链接]

该用户从未签到

发表于 2019-3-19 00:35 | 显示全部楼层 |阅读模式
如题,
比如在一个.ino文件里,象这样:


void setup(){
   
        // 字库初始化
        // LCD初始化
        // 其它。。。略。。

}

void loop(){

        //前面省略N行
        //想要下面这样的效果

         lcd_write(1 , 1 , "测试汉字") ;                    // xy坐标,显示“测试汉字”4个字
         lcd_write(1 , 5 , "随意显示汉字") ;             // xy坐标,显示“随意显示汉字”6个字

}



能不能实现? 即代码中想要显示汉字时,直接把中文字串填在参数上

我担心字库买来后却无法在ARDUINO IDE下这样自然地使用汉字,

哪位TX能确切地告诉我  谢谢!  







近日一直在琢磨汉字显示,详见求助帖:
https://www.arduino.cn/thread-84803-1-1.html


目前我是建了一个软字库,英文字符 可以象这样在LCD指定坐标显示字符串:

    lcd_write(27,9,"Arduino UNO");

    lcd_write(3,100,"Arduino chipKit library support for Nokia 5110 compatible LCDs");

很随意自然,也希望汉字显示能这样实现

但汉字带来问题太多,就我菜鸟一个来说实在搞不定,正准备放弃折腾  想买些字库用用算了,忽然又想
会不会即使买回来了 但在
ARDUINO IDE里  还是不能以这样的方式使用?   而我又想继续使用 ARDUINO IDE

唉!不知道还有没有解决办法

请大师们出手相救!  


























该用户从未签到

发表于 2019-3-23 10:07 | 显示全部楼层
你上一个贴大家已经明明白白的告诉你原因了,你欠缺的是基础,而不是ide的问题,写ide的比你厉害多了。
arduino ide文件编码默认使用的是utf8编码的,填写的汉字,传进参数里也utf8编码的汉字,即

  1. void print_utf8_zh_code(unsigned char *words)
  2. {
  3.         char temp[3];
  4.         for (int i = 0; i < strlen(words); i++) {
  5.                 sprintf(temp,"%02X ",words[i]);
  6.                 Serial.print(temp);
  7.         }
  8.         Serial.println();
  9. }

  10. void setup()
  11. {
  12.         Serial.begin(9600);
  13.         print_utf8_zh_code("中文");
  14. }

  15. void loop()
  16. {
  17. }
复制代码

  1. //得到utf8编码汉字内码
  2. E4 B8 AD E6 96 87
复制代码

这样我们可以得到utf8编码的汉字内码,相当于在字库中的坐标,可以在字库的对应位置找到它的字模,要显示汉字的话在字模文件中对应位置提取到字模然后吧字模显示出来,当然前提是有utf8编码的字模字库,字模字库就是每个汉字的点阵数据,需要显示的这个汉字的每个像素点的状态。
生成字模的软件网上很多,不过大多都是生成GBK和unicode编码的,你可以生成个unicode编码的,uft8和unicode可以互转网上有很多教程
https://www.cnblogs.com/lxjshuju/p/6812387.html
这种可以得到汉字的unicode内码,然后去unicode字模库查找字模数据,显示字模点阵数据就能实现显示中文了。
网上卖的字库芯片就是一片存储了这个字模数据的内存芯片,使用的时候根据汉字内码去偏移地址读取芯片里的字模数据。
至于自带的函数为何不能直接显示中文呢,因为他没有自带中文字模,中文字模字库很大的,英文就26字母+符号,中文几万个汉字,字模字库也有几百Kb,arduino uno也存不下,需要外接储存器。

该用户从未签到

 楼主| 发表于 2019-3-23 13:03 | 显示全部楼层
跑龙套的保 发表于 2019-3-23 10:07
你上一个贴大家已经明明白白的告诉你原因了,你欠缺的是基础,而不是ide的问题,写ide的比你厉害多了。
ard ...

感谢班长耐心细致的指导!


我确实是没有基础,以至于求助的问题可能比较白了些,请见谅



示例里有些还理解不了,请解答为盼:

                     例程里temp[3]的设计思想   这个大小根据什么来确定? 在UTF8里每个汉字都不超过3个字节?

                     例程里模拟了2个汉字“中文”的传递,得到内码信息 E4 B8 AD E6 96 87 怎么使用?


网上很多在线工具 查询/转换编码的,查询“中文”这两个字转UTF-8 得到的是UTF8编码是: 4E2D 6587
通过 UTF8编码查汉字      E4 B8 AD E6 96 87 解不到“中文”这两个字
是需要先作其它转换?



取模软件我手头只有zimo和PCtoLCD2002,将就能用
英文字符收集了90多个在用,目前仅小字号
汉字只少量取了几个字 用于测试,正如您所说 汉字点阵库很占空间




该用户从未签到

发表于 2019-3-23 15:01 | 显示全部楼层
greatduino 发表于 2019-3-23 13:03
感谢班长耐心细致的指导!

4E2D 6587是"中文"的unicode内码

点评

谢谢! 是我粗心了  发表于 2019-3-23 21:45

该用户从未签到

发表于 2019-9-23 21:05 | 显示全部楼层
本人有ESP32 ESP8266 使用汉字字库的方法,而且是任意的软件字库,不需要使用带硬件字库的屏,也不是串口屏,注意是任意字库。任意汉字直接输出到屏,不需要转码。经过长期摸索找到的方法,而且很实现非常简单。 微信图片_20190923210242.jpg

该用户从未签到

 楼主| 发表于 2019-11-25 02:33 | 显示全部楼层
yaoxing050 发表于 2019-9-23 21:05
本人有ESP32 ESP8266 使用汉字字库的方法,而且是任意的软件字库,不需要使用带硬件字库的屏,也不是串口屏 ...

ESP32 ESP8266 我没有,只有UNO、NANO、MINI 这些
硬件环境相差很大  你的情况不一定适用别人,这个图片说明不了什么    或者发些代码上来让大家看看,

该用户从未签到

 楼主| 发表于 2020-10-15 21:13 | 显示全部楼层
yaoxing050 发表于 2019-9-23 21:05
本人有ESP32 ESP8266 使用汉字字库的方法,而且是任意的软件字库,不需要使用带硬件字库的屏,也不是串口屏 ...

撸了1片8266 还没开始用,不过现在明白了esp的东东 内存很大 性能比328强不少  这大概是可以轻松使用软字库的原因

希望能看到你分享些经验心得  

该用户从未签到

发表于 2021-11-25 22:00 | 显示全部楼层
yaoxing050 发表于 2019-9-23 21:05
本人有ESP32 ESP8266 使用汉字字库的方法,而且是任意的软件字库,不需要使用带硬件字库的屏,也不是串口屏 ...

大哥能分享一下么~~~~~?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Arduino数字与字母字体应该如何设置?
Arduino数字与字母字体应
尝试用Arduino uno 做了个小工具,用来控制电脑水冷的运行。 洞洞板已经测试成功,完
WEMOS LOLIN32Lite(ESP32v1.0.0Rev1)入手+引脚图
WEMOS LOLIN32Lite(ESP32v
突发奇想做个精致的蓝牙遥控平衡小车(大学时做过一次,比较笨,用洞洞板焊电路做的比
【Arduino】168种传感器模块系列实验(129)---BH1750光照传感器
【Arduino】168种传感器模
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
16度双足机器人舵机驱动板pca9685连接舵机,舵机没反应
16度双足机器人舵机驱动板
各位同为arduino爱好者的大佬们大家好!想请教一下大家有关舵机驱动板pca9685
pca9685+arduino驱动舵机失败
pca9685+arduino驱动舵机
我网上别人的代码,编译通过且上传,但舵机不转,怎么解决?Arduino uno使用PCA9685模
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表