发 帖  
原厂入驻New
[问答] lcd字体显示出来的结果和设置的字符不一样
79 LCD DEBUG
分享
我自己想做一种字体大小是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++;    }  }我就改了这两个地方,其他什么也没动
0
2020-4-3 03:24:30   评论 分享淘帖 邀请回答
3个回答
你看看你的取模方式和我的是不是一致的.
先显示一个数字看看.不行的话,显示字符串也是不行的.
2020-4-3 09:34:00 评论

举报

原子哥问你个问题,字库文件的后缀应该是FON对吧,为什么用软件生成的字库后缀是DZK?莫非直接改后缀就行了?
2020-4-3 09:40:22 评论

举报

我的就是改后缀的,这个和WINDOWS的不通用的!!!
我只是改了名字。
2020-4-3 09:59:24 评论

举报

只有小组成员才能发言,加入小组>>

61个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表