我用的是原子哥的代码,因为没有买SD卡,所以自己搞了一个字库函数,调用后液晶显示屏显示汉字正常,但发送短信,依然只能发送字符,汉字都没了,这是为什么?要在哪里改?
//显示一个指定大小的汉字
//x,y :汉字的坐标
//font:汉字GBK码
//size:字体大小
//mode:0,正常显示,1,叠加显示
void Show_Font(u16 x,u16 y,u8 *str,u8 size,u8 mode)
{
u8 temp,t1,i;
u16 t;
u16 y0=y,x0=x;
u8 dzk[72];
u8 csize=(size/8+((size%8)?1:0))*(size);//得到字体一个字符对应点阵集所占的字节数
if(size!=12&&size!=16&&size!=24)return; //不支持的size
Get_HzMat(str,dzk,size); //得到相应大小的点阵数据
for(t=0;t<3000;t++)
{
//temp=dzk[t]; //得到点阵数据
//调用字库
if ((CnChar16x16[t].Index[0]==*str)
&&(CnChar16x16[t].Index[1]==*(str+1)))
for(i=0; i<32; i++)
{
temp=CnChar16x16[t].Msk;
for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Fast_DrawPoint(x,y,POINT_COLOR);
else if(mode==0)LCD_Fast_DrawPoint(x,y,BACK_COLOR);
temp<<=1;
x++;
if((x-x0)==size)
{
x=x0;
y++;
if((y-y0)==size)
{
y=y0;
//x++;
break;
}
}
}
}
}
}
// ------------------ 汉字字模的数据结构定义 ------------------------ //
struct Cn32CharTypeDef // 汉字字模数据结构
{
unsigned char Index[2]; // 汉字内码索引,一个汉字占两个字节
unsigned char Msk[32]; // 点阵码数据(16*16/8)
};
/////////////////////////////////////////////////////////////////////////
// 汉字字模表,大小为:32*29 //
// 汉字库: 宋体二号,横向取模左高位,数据排列:从左到右从上到下 //
/////////////////////////////////////////////////////////////////////////
struct Cn32CharTypeDef const CnChar16x16[]=
{
/*-- 文字: 服 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
"服",0x00,0x00,0x3E,0xFC,0x22,0x84,0x22,0x84,0x22,0x94,0x3E,0x88,0x22,0x80,0x22,0xFC,
0x22,0xA4,0x3E,0xA4,0x22,0xA8,0x22,0xA8,0x22,0x90,0x42,0xA8,0x4A,0xC4,0x84,0x82,
/*-- 文字: 药 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
"药",0x04,0x40,0x04,0x40,0xFF,0xFE,0x04,0x40,0x10,0x80,0x10,0x80,0x20,0xFC,0x45,0x04,
0xFA,0x04,0x10,0x84,0x20,0x44,0xFC,0x44,0x00,0x04,0x1C,0x04,0xE0,0x28,0x40,0x10,
/*-- 文字: 周 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
"周",0x00,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x2F,0xE8,0x21,0x08,0x21,0x08,0x3F,0xF8,
0x20,0x08,0x27,0xC8,0x24,0x48,0x24,0x48,0x27,0xC8,0x40,0x08,0x40,0x28,0x80,0x10,
/*-- 文字: 期 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
"期",0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x22,0x44,0x3E,0x7C,0x22,0x44,0x22,0x44,
0x3E,0x44,0x22,0x7C,0x22,0x44,0xFF,0x44,0x04,0x84,0x22,0x84,0x41,0x14,0x82,0x08,
。。。。。。。太多了就这些吧
|