最近整理旧物时,翻到了5年前的毕业设计,翻翻觉得还有些用,写个博客吧。
在一般的单片机汉显系统中,都会用到GB2312字库,也有少数的需要GBK字库。
“机内码”:英文字符在PC机中以单字节表示,汉子以最高位为1的双字节表示,可以用以下C程序来验证机内码(TC中执行):
main()
{ unsigned char * s,*e="ABcd",*c="你好";
clrscr();
printf("English char=");
s=e;
while(*s!=0)
{
printf("%3d,",*s); s++;
}
printf("/nChinese char=");
s=c;
while(*s!=0)
{
printf("%3d,",*s);
s++;
}
getch();
}
GB2312码是国家标准汉子信息交换用编码,根据机内码将汉子分为94个区,对应第一字节的低7位,每个区94个位,对应第二字节的低7位,并且在机内码的基础上减去0x20,即每个汉子的机内码两个字节分别减去0xa0即得到区位码,见下表。
GBK编码向下与GB2312编码兼容,向上支持ISO10646.1国际标准
汉子点阵字库:现在用得最多的点阵字库为16*16(对应Asc为16*8)、32*32(对应Asc为32*16),取点的方式有多种,大致有:
顺序行列式
逆序行列式
顺序列行式
逆序列行式
顺序逐行式
逆序逐行式
顺序逐列式
逆序逐列式
比较常用的是顺序行列式(UCDOS中采用的模式)
字摸入口计算公式:
GB2312:
CharPos := (高8bit - 0xA1)*94 + (低8bit - 0xA1)) :* 32
GBK:
CharPos := ((高8bit - 0x81)*191 + (低8bit - 0x40)) * 32
ASC:
(ASCII码 - 0x20) * 16; 8x16点阵的(如果是全ASC点阵不要减0x20)
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A1A0 、 。 · ˉ ˇ ¨ 〃 々 — ~ ‖ … ‘ ’
A1B0 “ ” 〔 〕 〈 〉 《 》 「 」 『 』 〖 〗 【 】
A1C0 ± × ÷ ∶ ∧ ∨ ∑ ∏ ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠
A1D0 ⌒ ⊙ ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯ ≤ ≥ ∞ ∵
A1E0 ∴ ♂ ♀ ° ′ ″ ℃ $ ¤ ¢ £ ‰ § № ☆ ★
A1F0 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※ → ← ↑ ↓ 〓
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A2A0 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ
A2B0 ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖
A2C0 ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾
A2D0 ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③ ④ ⑤ ⑥ ⑦
A2E0 ⑧ ⑨ ⑩ ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩
A2F0 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A3A0 ! " # ¥ % & ' ( ) * + , - . /
A3B0 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
A3C0 @ A B C D E F G H I J K L M N O
A3D0 P Q R S T U V W X Y Z [ \ ] ^ _
A3E0 ` a b c d e f g h i j k l m n o
A3F0 p q r s t u v w x y z { | }  ̄
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A4A0 ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く
A4B0 ぐ け げ こ ご さ ざ し じ す ず せ ぜ そ ぞ た
A4C0 だ ち ぢ っ つ づ て で と ど な に ぬ ね の は
A4D0 ば ぱ ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ ぼ ぽ ま み
A4E0 む め も ゃ や ゅ ゆ ょ よ ら り る れ ろ ゎ わ
A4F0 ゐ ゑ を ん
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A5A0 ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク
A5B0 グ ケ ゲ コ ゴ サ ザ シ ジ ス ズ セ ゼ ソ ゾ タ
A5C0 ダ チ ヂ ッ ツ ヅ テ デ ト ド ナ ニ ヌ ネ ノ ハ
A5D0 バ パ ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ ボ ポ マ ミ
A5E0 ム メ モ ャ ヤ ュ ユ ョ ヨ ラ リ ル レ ロ ヮ ワ
A5F0 ヰ ヱ ヲ ン ヴ ヵ ヶ
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A6A0 Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο
A6B0 Π Ρ Σ Τ Υ Φ Χ Ψ Ω
A6C0 α β γ δ ε ζ η θ ι κ λ μ ν ξ ο
A6D0 π ρ σ τ υ φ χ ψ ω
A6E0 ︵ ︶ ︹ ︺ ︿ ﹀ ︽ ︾ ﹁ ﹂ ﹃ ﹄ ︻ ︼
A6F0 ︷ ︸ ︱ ︳ ︴
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A7A0 А Б В Г Д Е Ё Ж З И Й К Л М Н
A7B0 О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э
A7C0 Ю Я
A7D0 а б в г д е ё ж з и й к л м н
A7E0 о п р с т у ф х ц ч ш щ ъ ы ь э
A7F0 ю я
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A8A0 ā á ǎ à ē é ě è ī í ǐ ì ō ó ǒ
A8B0 ò ū ú ǔ ù ǖ ǘ ǚ ǜ ü ê ɑ ń ň
A8C0 ɡ ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ
A8D0 ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ ㄜ ㄝ ㄞ ㄟ
A8E0 ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ ㄦ ㄧ ㄨ ㄩ
A8F0
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
A9A0 ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋
A9B0 ┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛
A9C0 ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫
A9D0 ┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻
A9E0 ┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋
A9F0
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
AAA0
AAB0
AAC0
AAD0
AAE0
AAF0
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
ABA0
ABB0
ABC0
ABD0
ABE0
ABF0
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
ACA0
ACB0
ACC0
ACD0
ACE0
ACF0
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
ADA0
ADB0
ADC0
ADD0
ADE0
ADF0
code +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
AEA0
AEB0
AEC0
AED0
AEE0
AEF0
code +0 +1 +2 +3 +4 +5