|
这是一个现实数字和英文字母的函数,我觉得他给你字模显示出的字太小,所以想自己重新做字模。我的一个字大小是32字节,不知道应该怎么改程序啊?
void PrintASCII(WORD x,WORD y, BOOL asciicode)
// 坐标X为像素列块0-79列块,3像素点数据/列块
// 坐标Y为像素点行数0-159
// asciicode为西文字符代码,对应字库为ASCIITAB
// 写入字符前,要先设置显示前景色和背景色
{ Fgcolor=0x00;Bgcolor=0xf8;
WORD p;
WORD i,j,k,Ddata;
SdCmd(0x30); // 选择ext0指令集
SdCmd(0x15); SdData(x); SdData(x+1);// 列地址区域设置(6点列)
SdCmd(0x75); SdData(y); SdData(y+7);// 行地址区域设置 (8点行)
SdCmd(0x5c); // 数据写入模式
p=asciicode*16; // 计算字模数据起始地址
for(i=0;i<8;i++) // 循环8行像素写入
{
for (j=0;j<6;j++) // 循环6列像素写入
{
k=ASCIITAB[p+j]; // 取字模数据
k=k>>i; // 字模数据移位
if((k&0x01)==0x00) // 根据数据位值设置显示色数据
{
Ddata=Bgcolor; // 数据为0,选择背景色数据
}
else
{
Ddata=Fgcolor; // 数据为1,选择前景色数据
}
SdData(Ddata); // 数据写入
}
}
}
这两行不明白是啥意思,我把16改成32显示的不对。
SdCmd(0x15); SdData(x); SdData(x+1);// 列地址区域设置(6点列)
SdCmd(0x75); SdData(y); SdData(y+7);// 行地址区域设置 (8点行)
谢谢大家。
|
|