這里主要講PCtoLCD這個軟件,它可以生成中英文數字混合的字符串的字模數據,可選擇字體,大小,并且可獨立調整文字的長和寬,生成任意形狀的字符。
界面截圖如下:
我們來了解下PCtoLCD這個軟件,可以生成中英文數字混合的字符串的字模數據,可選擇字體,大小,并且可獨立調整文字的長和寬,生成任意形狀的字符。
界面截圖如下:

使用方法介紹:
0.生成自定義的小字庫:
0.使用PCTOLCD的各種調整功能調整出您需要的文字樣式,如字體,字樣(下劃,傾斜,加粗),大小(各種點陣大小的字體,可鎖定點陣本身大小(如16*16),然后在這個固定的點陣大小內調節文字的大小(例如在16*16的點陣中居中顯示12*12大小的漢字),各項配置大概如下圖,具體的要根據自己的需要修改:
字模選項配置如下圖:
1.將您需要的漢字和符號集中形成一個文本文件
2.使用“導入文本”的按鈕
3.建議選中"生成索引文件"
4.點“開始生成”按鈕,選擇生成的字庫文件名
5.然后耐心等待一段時間(與處理文本大小有關),在此期間建議不要動鍵盤和鼠標。
6.字庫生成完畢.
生成的索引文件,如下圖:
生成國標一二級漢字庫(生成的文件,包含了日常需要的所有字符、漢字,生成的文件大概1.3MB)
0.使用PCTOLCD的各種調整功能調整出您需要的文字樣式,如字體,字樣(下劃,傾斜,加粗),大小(各種點陣大小的字體,可鎖定點陣本身大小(如16*16),然后在這個固定的點陣大小內調節文字的大小(例如在16*16的點陣中居中顯示12*12大小的漢字).
1.使用“導入文本”的按鈕
2.點右下角"生成國標漢字庫"按鈕.
3.選擇字庫文件名后單擊確定
4.耐心等待一段時間后既得到生成的漢字庫(時間視具體機器而定).
重要提示:
生成漢字庫結構介紹
本軟件使用的漢字庫采用與HZK16相近似的結構,即按照輸入漢字的順序依次排列各漢字的點陣數據,以生成的16*16點陣漢字庫舉例介紹
16*16點陣漢字庫
點陣大小16*16,所以每個漢字點陣數據占用32個字節.用戶要使用生成的16*16點陣小字庫中的點陣數據,可以在程序中采用如下算法:
0.在生成的字庫漢字列表中得到該漢字的偏移量,也就是漢字的記錄號HzNum
1.將其*32(HzNum*32)即可得出該漢字點陣在字庫中的偏移地址.
3.以這個偏移地址為起點,連續讀取文件中的32個字節,既為該漢字的點陣信息.
實際上,對于本軟件生成的16*16點陣的國標漢字庫是采用區位碼排列的,所以與標準的HZK16結構是一樣的,完全可以互換使用.
例如生成一個24*48點陣,楷體,傾斜的漢字庫,
0.由于每個漢字占用24*48/8= 144個字節,所以用戶可先讀取生成的索引列表找到該漢字的記錄號.
1.將記錄號*144即得到該漢字在字庫中的偏移地址.
2.以這個偏移地址為起點,在字庫文件中連續讀取144個字節,即為該漢字的點陣信息.
知道了以上信息,可以在檢索字模時知道如何編程了。最后如何將字模文件用到頭文件里,如下:
同時,在編程檢索該字模文件時,編程如下:
#include "GB1616.h" //16*16漢字字模
void PutGB1616(unsigned short x, unsigned short y, unsigned char c[2], unsigned int f,unsigned int b)
{
unsigned int i,j,k;
LCD_SetArea(x, y, x+16-1, y+16-1);
for (k=0;k<22;k++) {
if ((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])){
for(i=0;i<32;i++) {
unsigned short m=codeGB_16[k].Msk[ i];
for(j=0;j<8;j++) {
if((m&0x80)==0x80) {
LCD_Write_Data(f>>8);
LCD_Write_Data(f);
}
else {
LCD_Write_Data(b>>8);
LCD_Write_Data(b);
}
m<<=1;
}
}
}
}
}
同樣的英文字符,跟上述方法一樣。以上的過程大概就是使用PCtoLCD軟件設計字模,并將字模用到程序中,同時檢索字模的程序該如何編寫都有了。
|