lcd显示粗体字的方法

how to display bold character in lcd

我正在做一个需要在液晶显示器上显示一些字符串的项目。

我创建了二维数组,其十六进制值对应于每个工作正常的字符。但我无法弄清楚如何以粗体显示某些字符。

char pixel[10][5] = { 
  {0x7E, 0x11, 0x11, 0x11, 0x7E},  // hex values to display A
  {0x7F, 0x49, 0x49, 0x49, 0x36}   //hex values to display B
};

使用这些十六进制值,我在液晶显示屏上得到了 A 和 B。 但我需要显示 A 和 B(粗体)。

您的像素数组似乎包含 5x7 或 5x8 字符矩阵的像素列,最低位在顶行,左列在前。

这两行似乎产生了

.XXX. = bit x1
X...X = bit x2
X...X = bit x4
X...X = bit x8
XXXXX = bit 1x
X...X = bit 2x
X...X = bit 4x
..... = bit 8x

XXXX.
X...X
X...X
XXXX.
X...X
X...X
XXXX.
.....

要获得粗体字符,您必须考虑如何显示这些字符。在 5x7 矩阵中,可能无法以粗体显示所有字母,例如M。对于 A 和 B,您可以尝试将 patterns/numbers 用于这样的模式:

.XXX.
XX.XX
XX.XX
XX.XX
XXXXX
XX.XX
XX.XX
.....

{0x7E, 0x7F, 0x11, 0x7F, 0x7E}

XXXX.
XX.XX
XX.XX
XXXX.
XX.XX
XX.XX
XXXX.
.....

{0x7F, 0x7F, 0x49, 0x7F, 0x36}

自动生成粗体字

如果字符像素之间有足够的背景像素,通过将点向右移动一位并使用原始和移位的组合,可以从常规字体自动生成粗体字符的字体(字符生成器)按位 or.

的值

固定宽度字符的自动生成对于具有 3 条垂直线的字符来说可能很困难,因为您需要 9 个像素才能使字符间有 1 列 space。如果你想有 8 像素的宽度,一个简单的算法可以清除最右边的列,但手动修改可能会产生更好的结果。

示例M常规

X.....X..
XX...XX..
X.X.X.X..
X..X..X..
X..X..X..
X..X..X..
X..X..X..

M 右移

.X.....X.
.XX...XX.
.X.X.X.X.
.X..X..X.
.X..X..X.
.X..X..X.
.X..X..X.

M 按位或

XX....XX.
XXX..XXX.
XXXXXXXX.
XX.XX.XX.
XX.XX.XX.
XX.XX.XX.
XX.XX.XX.
.........

M 按位或,清除最后一列

XX....X.
XXX..XX.
XXXXXXX.
XX.XX.X.
XX.XX.X.
XX.XX.X.
XX.XX.X.
........

8x8 的手工校正看起来更好

XX...XX.
XXX.XXX.
XXXXXXX.
XX.X.XX.
XX.X.XX.
XX.X.XX.
XX.X.XX.
........

LCD 的库可能包含字体 table。也许已经存在支持粗体字符的库。

搜索 "arduino lcd bold" 得到了这个最高结果:https://forum.arduino.cc/index.php?topic=458712.0