极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14047|回复: 4

为什么arduino不支持字库版的lcd?

[复制链接]
发表于 2015-12-31 12:20:29 | 显示全部楼层 |阅读模式
字库芯片16s1y,配合lcd可以很方便的直接显示中文而不用取模,但是淘宝问了好多卖家,都说不支持arduino,说是因为arduino的ide不支持中文,中文烧录上去本身就是乱码,是这样吗?
回复

使用道具 举报

发表于 2015-12-31 12:32:53 | 显示全部楼层
Arduino IDE 不支援, 但其他 IDE 是可以輸入的.
問題並不是你輸入了就可以顯示, 在 IDE 上的中文字只是兩個 byte 的組合, 如何在 LCD 中演譯成中文字, 還需要有庫的支援.  如果你有時間, 自己寫個庫的話就可以了.
回复 支持 反对

使用道具 举报

发表于 2015-12-31 13:48:19 | 显示全部楼层
你遇到的应该是国标和 unicode不兼容的问题

主要是目前windows用的都是后者,所以没有办法直接用了

需要有一个区位码的转换过程了
回复 支持 反对

使用道具 举报

发表于 2015-12-31 13:52:53 | 显示全部楼层
是的,ARDUINO的IDE不支持中文
回复 支持 反对

使用道具 举报

发表于 2016-1-2 03:13:26 | 显示全部楼层
这个问题比较复杂,不能简单的说 支持不支持。

如果简单的 单纯从 IDE 上来说,Arduino 确实不支持,(其实 按照我们不支持汉字的思维来说,所有的 IDE 都不支持,不仅不支持汉字,就连英文字母和数字都不支持)因为他对 字符的 定义是 1 个字节,就是 字符类型数据 (char )是 1 个字节,8 个 BIT ,  其值 是 0 -- 127。这仅仅是一个数,而不是字符,但是其中的某些数 对应着 字符库中的 某些 字符图形数据。这个图形数据在屏幕上呈献给我们的是一个字符图形,这就是 ASCII 的方式。

也是为什么千万不要认为其中的某个值就是对应一个 特定的 字符 的原因,因为我们在屏幕上看到的是对应于这个字符的图形, 而图形是对应屏幕上 一个 特定区域 里 的 像素的集合,也就是说 你看到的是 这个字符是一个 图形,而表示这个图形的数据通常是一个 字符类型 数组。

不信的话,把你的程序里 所包含的 字符库 去掉 试试,肯定会报错,因为这个 你要 显示的字符 IDE 要把他翻译成 一个具体的数字,然后到字库里去找对应的字符数组,并且在这个数组里去找对应的字符图形数据,一旦你把这个字符库去掉了,那他到哪去找呢?

由于 英文字母包括大小写 再 加上数字和一些简单图形 总数也没有 127 个,用 1 个 字节的数就可以表示完,所以 字符类型数据 (char)在内存中只占 1 个字节,我们的键盘最多也就是 102 个键,每个键代表一个确定的 小于 127 的值,ASCII 码字符集用最少的键,最少的空间,满足了计算机的要求。

英文字符数量比较少,把他们都转换成字符数组数据,也不会占用太多内存,为了方便,可以把这些字符数组数据全部放入内存,可是,计算机真是一个好东西,在全世界普及太快,全世界的人都要用自己的文字使用计算机,1 比特的数就不够用了,于是就出现了扩展字符集。他使用 2 个比特来代表一个 字,2 个比特的值是  0 ---- 65 535 个数,6 万多个数足以代表全世界所有文字了,看起来 2 个字节也不多呀,可是不要忘记上面所说的,每一个数值是要对应于一个文字的图形的,而每一个文字的图形就数汉字最复杂,要清晰显示就需要更多的像素,他需要的字符数组数据也更多,不仅如此,汉字里面还有大量我们一辈子都不会使用的字,那么把我们常用的 3000 多个汉字图形数据装入内存行不行,看起来 行,可是需要更大的内存,对于单片机来说,还是不合算,如果你的程序里没有记事的功能,完全可以用什么字,就装什么字符数据,所以就有了不带字库的显示屏也能显示汉字的方法,就是把汉字当做图形来对待,把显示汉字字符的语句换成显示图形的语句,本质上一样的。

那么有了带字库的显示屏我们不用,岂不是太可惜,是!但是要用也要区别对待。

如果我们要像使用电脑那样,就必须有一个中文输入法,虽然可以编个库文件,但是占用内存太多,不适合 单片机。

如果我们仅仅是输出一些文字提示信息,那就比较可行了,只需要在程序中计算那个文字的编码,到字库芯片里去找这个字的位置,也就是地址,把他的数据读出来,由于他的数据是图形数组数据,就存在一个图形数组数据排列问题,也就是数据是横排还是竖排,是正序还是倒序,是先读高位字节还是先读低位字节,这要查字库芯片手册,除此之外,还要考虑屏幕对输入的要求,一般是从上到下一行一行的要数据,但是 是正序还是倒序,是先要高位字节还是先要低位字节,这都需要在程序里 解决,一般来说,字库芯片手册里都有一段 读取字库的 C 程序,可以试试。

说了很多,看起来很复杂,可别吓着大家,只要我们知道了原理,就有了解决问题的方法,大胆尝试,一定会成功。

我的胆太小,手里有一块带字库的屏,一直没有试。那个字库芯片一直在睡觉。







回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 07:16 , Processed in 0.069221 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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