?? readme.txt
字號:
?
+
14*14點陣,調整為14×16 的。
縱向取模,字節倒序。
先取上面的14字節,
在取下面的14字節。
new1zk+idx.bin
是14×14的字庫加入了拼音的索引。并且索引的漢字部分做了簡單的劃分,避免一個拼音對應的漢字分在2個區中
原拼音索引格式是
0-0xd4f 拼音索引 8個字節一個記錄,前面6個字節是拼音,后面2個字節是漢字所在的地址。(高字節在后,低字節在前)
映射在本字庫的7B00-884F區
0x1000—0x2167 漢字區 映射在8880-99e7
0x2168—0x468f 漢字區 映射在3da50-3ffff
在【拼音程序】里面有關于上面14×16字庫中的拼音索引的讀取程序,
在【顯示程序】里面有關于上面14×16字庫中的讀取程序,
/*
************************************************************************************************
* Name :
* Describe : 從字庫中讀出指定個數據。主要是分頁方面的考慮
* Input : 漢字機內碼,點陣緩沖。
* Output :
* Create by : xuyong Date:2003年11月26日 星期三 20:49:52
* Moid by : Date:
************************************************************************************************
*/
bit ZkRdMem(uchar Page,uint Addr,uchar xdata *Dst,uchar Cnt)
{
uchar i;
Page<<=1;
if (Addr >=0x8000)
{
Page ++;
}
else
{
Addr|=0x8000;
}
SelectZKROM(Page);
for(i=0; i<Cnt ; i++)
{
Dst[i] = XBYTE[Addr++];
if ((Addr/256)==0)
{
Page++;
if (!SelectZKROM(Page))//未選中頁則返回
{
return 0;
}
Addr|= 0x8000;
}
}
return 1;
}
/*
************************************************************************************************
Name : void OzkGetHzDoint(uint HzCode,uchar xdata *mychinese)
Describe : 得到漢字點陣。14×16縱向取模的點陣。字節倒序
上面14個字節在前,下面14字節在后。
Input : 漢字機內碼,點陣緩沖。
Output : void
Create by : xuyong Date:2003年01月05日 星期日 00:49:25
Moid by : Date:
************************************************************************************************
*/
void OzkGetHzDoint(uint HzCode,uchar xdata *mychinese)
{
uchar idata HighCode;
uchar idata LowCode;
// uchar xdata *data RDMODE;
// uchar xdata *data Ptr;
// uchar idata ct;
uint i;
uchar idata addrBuf[3];
//uchar xdata temp[28];
idata union hzk1
{
ulong HZKADRA;
struct hzk2
{
uchar HZKADRH;
uchar HZKADRM;
uint HZKADRL;
}HZKADR;
}HZKADRS;
HighCode=(uchar)(HzCode/0x100);
LowCode=(uchar)(HzCode%0x100);
HZKADRS.HZKADRA=((HighCode-0xa1)*94+(LowCode-0xa1))*28L; //得到數據起始地址。(由區位碼*32字節/漢字)。
/*LowCode =0x40+HZKADRS.HZKADR.HZKADRM*2; //計算頁面
if (HZKADRS.HZKADR.HZKADRL>=0x8000)
{
LowCode++;
}
XBYTE[ADDR_EX]=LowCode; //選擇頁面
RDMODE=HZKADRS.HZKADR.HZKADRL|0x8000; //地址
//Ptr*/
addrBuf[0]=(HZKADRS.HZKADRA/0x10000)%256;
addrBuf[1]=(HZKADRS.HZKADRA%0x10000)/256;
addrBuf[2]=HZKADRS.HZKADRA%256;
i= addrBuf[1]*256+addrBuf[2];
ZkRdMem(addrBuf[0],i,mychinese,14);
*(mychinese+14)=0;
*(mychinese+15)=0;
ZkRdMem(addrBuf[0],i+14,mychinese+16,14);
*(mychinese+30)=0;
*(mychinese+31)=0;
SelectRAM0();//XBYTE[ADDR_EX]=0;
}
顯示程序如下:
/*
************************************************************************************************
Name : uchar LCMDisp1Chinese(uchar x,uchar y,uint Chinese,bit Type)
Describe : 在指定位置顯示一個漢字,
Input : 位置坐標,漢字機內碼。
Output : 1--》顯示正確, 0---》顯示錯誤或坐標錯誤。
Create by : xuyong Date:2003年01月14日 星期二 16:50:31
Moid by : Date:
************************************************************************************************
*/
uchar LCMDisp1Chinese(uchar x,uchar y,uint Chinese,bit Type)
{
uchar idata temp;
uchar idata i;
uchar idata j,k;
uchar idata ch;
uchar xdata rdhzk[32];
uchar xdata *Ptr = rdhzk;
if ((x>23)||(y>7))
{
return 0;
}
OzkGetHzDoint(Chinese,rdhzk);
x*=2 ;
temp = x;
LCMSetXY(x,y);
for (i=0;i<2;i++)
{
/*for(j=0;j<16;j++)
{
ch = *Ptr++;
if (Type==1)
{
ch = ~ch;
}
LCMWriteCD(1,ch);
if ((j&7) ==7)
{
x++;
LCMSetXY(x,y);
}
}*/
for(k=0;k<4;k++)
{
for(j=0;j<4;j++)
{
ch = *Ptr++;
if (Type==1)
{
ch = ~ch;
}
LCMWriteCD(1,ch);
}
x++;
LCMSetXY(x,y);
}
x = temp;
y++;
LCMSetXY(x,y);
}
/*
LCMSetXY(x,y);
for(j=0;j<16;j++) //顯示上面半個漢字
{
//for(i=0;i<8;i++)
{
LCMWriteCD(1,*Ptr++);//rdhzk//rdhzk[i+j*8]
}
if (j ==7)
{
LCMSetXY(x+1,y);
}
}
LCMSetXY(x,y);
LCMWriteCD(0,0xb8+y*2+1);
for(j=0;j<16;j++) //顯示下面半個漢字
{
//for(i=0;i<8;i++)
{
LCMWriteCD(1,*Ptr++);//rdhzk//rdhzk[i+j*8]
}
if (j ==7)
{
LCMSetXY(x+1,y);
LCMWriteCD(0,0xb8+y*2+1);
}
}
*/
return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -