簡體   English   中英

如何在液晶顯示器中顯示粗體字符

[英]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
};

使用這些十六進制值,我在 lcd 顯示器上得到 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,您可以嘗試將模式/數字用於這樣的模式:

.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 列。 如果您想要 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 的庫可能包含一個字體表。 也許已經存在支持粗體字符的庫。

搜索“arduino lcd bold”帶來了這個最高結果: https : //forum.arduino.cc/index.php?topic=458712.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM