原子哥,最近想在7寸屏上显示大点字体,用木易雨软件的纵向取模方式二制作了GBK24.FON、GBK32.FON并拷入SD卡制定目录下。
为此,将MiniSTM32上的25X16已换成25X64,以满足内存空间。
接下来在7寸屏附带的源码基础上修改代码:(修改导入部分和读取部分)
1)修改导入目录文件
//在sd卡中的路径
const u8 *GBK32_SDPATH="0:/SYSTEM/FONT/GBK32.FON"; //GBK32的存放位置
const u8 *GBK24_SDPATH="0:/SYSTEM/FONT/GBK24.FON"; //GBK24的存放位置
const u8 *GBK16_SDPATH="0:/SYSTEM/FONT/GBK16.FON"; //GBK16的存放位置
const u8 *GBK12_SDPATH="0:/SYSTEM/FONT/GBK12.FON"; //GBK12的存放位置
const u8 *UNIGBK_SDPATH="0:/SYSTEM/FONT/UNIGBK.BIN"; //UNIGBK.BIN的存放位置
2)修改字库更新程序
}else if(fx==3) //GBK24
{
ftinfo.f24addr=ftinfo.f16addr+ftinfo.gbk16size; //GBK16之后,紧跟GBK24字库
ftinfo.gbk24size=fftemp->fsize; //GBK24字库大小
flashaddr=ftinfo.f24addr; //GBK24的起始地址
}else if(fx==4) //GBK32
{
ftinfo.f32addr=ftinfo.f24addr+ftinfo.gbk24size; //GBK24之后,紧跟GBK32字库
ftinfo.gbk32size=fftemp->fsize; //GBK32字库大小
flashaddr=ftinfo.f32addr; //GBK32的起始地址
}
。。。。
if(res)return 3;
LCD_ShowString(x,y,240,320,size,"Updating GBK24.BIN ");
res=updata_fontx(x+20*size/2,y,size,gbk24_path,3); //更新GBK24.FON
if(res)return 4;
LCD_ShowString(x,y,240,320,size,"Updating GBK32.BIN ");
res=updata_fontx(x+20*size/2,y,size,gbk32_path,4); //更新GBK32.FON
if(res)return 5;
//全部更新好了
3)修改字节偏移量及读取
if(ql<0x7f)ql-=0x40;//注意!
else ql-=0x41;
qh-=0x81;
if(size==12||size==16) foffset=((unsigned long)190*qh+ql)*(size*2); //得到字库中的字节偏移量
else foffset=((unsigned long)190*qh+ql)*(size*2)*2; //得到字库中的字节偏移量
if(size==12)SPI_Flash_Read(mat,foffset+ftinfo.f12addr,24);
if(size==16)SPI_Flash_Read(mat,foffset+ftinfo.f16addr,32);
if(size==24)SPI_Flash_Read(mat,foffset+ftinfo.f24addr,48);
if(size==32)SPI_Flash_Read(mat,foffset+ftinfo.f32addr,64);
4)修改显示一个汉字程序的支持字体和增加后半字显示
if(size!=12&&size!=16&&size!=24&&size!=32)return;//不支持的size
Get_HzMat(font,dzk,size);//得到相应大小的点阵数据
。
。
。
if(size!=24&&size!=32)return;//不支持的size
if(mode==0)//正常显示
5)主程序调用显示
LCD_Clear(RED);
Show_Str(250,80,lcddev.width,12,"系统启动中。。。",12,0);
Show_Str(250,150,lcddev.width,16,"系统启动中。。。",16,0);
Show_Str(250,200,lcddev.width,24,"啊",24,0);
Show_Str(250,250,lcddev.width,32,"组统",32,0);
经过以上修改后,编译下载后,显示的为乱码,任我怎么改变24X24或32X32字体的字,都显示一样的乱码!
这是为什么呢?盼回复!谢谢!
|