[英]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.