如何使用字符LCD显示器处理Unicode字符?


8

我想从Arduino购买LCD屏幕以显示来自Web http呼叫的一些结果;Web API返回以UTF-8编码的JSON文本。

我读过ICU是在Arduino的C / C ++程序中处理Unicode的方式。

我的问题:
我可以在这种屏幕上显示UTF-8字符吗?
是否有(价格适中的)字符LCD屏幕能够显示UTF-8字符?


3
我们在谈论图形显示还是分段字符显示?在分段显示中,您显然无法显示任何不适合分段模式的图形。对于“西方”非ascii用法,您可能会退回到基本字符(非重音符号等)。对于其他脚本,您很可能不走运。
drxzcl 2011年

Answers:


6

我对Arduino不太熟悉,但是让我们从LCD的角度来看它。

如今,几乎所有流行的字符LCD都使用HD44780控制器(LiquidCrystal库支持此功能)。该控制器不直接支持UTF-8,每个字符用一个字节表示。

因此,您需要手动将UTF-8转换为8位字符。控制器具有一个内置的字符生成器,​​该字符生成器具有208个5x8和32个5x10字符,以及最多8个用户定义的字符(请参见createChar)。您需要将每个输入字符映射到预定义/自定义字符之一-显然,您只能显示UTF8字符的子集,您需要确定要/可以显示的字符。

转换本身应该非常简单-您只需要遍历UTF8字符串,将每个字符映射到单个字节即可。您很可能希望使用查找表来使其保持简单。让我知道是否需要进一步说明。


谢谢; 您认为这种Tft图形显示可以提供更好的unicode支持吗?
systempuntoout 2011年

1
据我所知,这是一种图形显示,因此可以显示几乎任何您想要的东西。提供的库还提供了绘制文本的功能,但同样它仅支持8位字符。因此,在这种显示方式下,您要么需要进行与上述相同的转换并按原样使用库,要么必须修改库以支持UTF8。请记住,使用图形显示将使您的代码更大-您需要额外的库,字体等。但是至少您可以完全控制可用的字符集-字体是软件的一部分。
Code Painters,

4

Unicode既复杂又庞大,对于Arduino而言,它太大了。在当前版本中,总共有超过100000个字符,包括楔形文字,象形文字,克林贡语,更不用说成千上万的汉字了。

因此,如果您真的想在Arduino上显示一些Unicode字符:

  • 获取图形显示。您提到的是一个字符显示,它只能显示固定的一组256个字符。

  • 定义要处理的一小部分字符。有一些预定义的子集,例如“ 多语言欧洲子集”看起来不错。

  • 获取一些字体并将其剥离为所需的字体。请注意,由于结合了字符,双向写入等,甚至显示也比您从ASCII所显示的要复杂得多。最好的做法是坚持使用拉丁字符而不加任何重音符号。西里尔字母和希腊语也应该没问题,就像任何从左到右的简单字符序列一样。

  • 也许您可以使用一些外部存储器来存储字体。

然后,您可能不需要很多其他主题,例如排序和搜索,请参阅Unicode标准及其附件(很大!)。

忘记ICU,它需要兆字节的内存。


我将不得不尝试将ICU(的一个子集)放在Arduino上。应该很有趣。
史蒂文·R·鲁米斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.