我自己想做一种字体大小是14*7的,我也按照不完全手册里面的做法去做的 但是最终显示出来的结果和我设置的字符不一样,下面的这个是我想要显示的结果LCD_ShowString(30,50,"2012.10.12"); 但是显示出来的结果是4234032034 这是为什么 虽然原子大哥提示了一下debug一下看看 但是还是没有想明白,请原子大哥讲解一下谢谢
我在例程上修改的 如下
void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode)
{
#if USE_HORIZONTAL==1
#define MAX_CHAR_POSX 312
#define MAX_CHAR_POSY 232
#else
#define MAX_CHAR_POSX 232
#define MAX_CHAR_POSY 312
#endif
u8 temp;
u8 pos,t;
u16 x0=x;
u16 colortemp=POINT_COLOR;
if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)return;
//设置窗口
num=num-' ';//得到偏移后的值
if(!mode) //非叠加方式
{
for(pos=0;pos<size;pos++)
{
if(size==12)temp=asc2_1206[num][pos];//调用1206字体
else //temp=asc2_1608[num][pos];
temp=asc2_1407[num][pos];
//if(size==16)temp=asc2_1608[num][pos]; //调用1608字体
for(t=0;t<size/2;t++)
{
if(temp&0x01)POINT_COLOR=colortemp;
else POINT_COLOR=BACK_COLOR;
LCD_DrawPoint(x,y);
temp>>=1;
x++;
}
x=x0;
y++;
}
}else//叠加方式
{
for(pos=0;pos<size;pos++)
{
if(size==12)temp=asc2_1206[num][pos];//调用1206字体
else //temp=asc2_1608[num][pos];
temp=asc2_1407[num][pos];
//if(size==16)temp=asc2_1608[num][pos];
//if(size==14)temp=asc2_1407[num][pos]; //调用1608字体
for(t=0;t<size/2;t++)
{
if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点
temp>>=1;
}
}
}
POINT_COLOR=colortemp;
}
void LCD_ShowString(u16 x,u16 y,const u8 *p)
{
while(*p!='\0')
{
if(x>MAX_CHAR_POSX){x=0;y+=16;}
if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}
LCD_ShowChar(x,y,*p,14,0);
x+=8;
p++;
}
}我就改了这两个地方,其他什么也没动
|