LCD显示的字体大小如何调整

2019-07-21 05:15发布

1、  LCD的程序都看了 最后主程序显示感觉16的字体有点小,不知道在哪地方可以进行调整,或者哪个子程序是关于调节大小的,我照了好久没找到哪部分写道字体大小的,16的就是最大了吗求指教
2、另外还有一个请教 是不是显示的字符 都是根据font.h内有的才能显示,因为我发现输入汉字显示不了,想求教是不是这个原因
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
41条回答
beisiqiu
2019-07-23 03:05
回复【13楼】正点原子:
---------------------------------
下面是想做18*18字体的改动,18*18只显示!.调试没成功,想拜托师兄指教,下面的哪改错了,如何修改呢 红 {MOD}为修改部分,请师兄帮忙,不胜感激
const unsigned char asc2_1808[2][36]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*" " 0*/
{0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"!"1*/
};
ILI93xx.c文件改动
void LCD_ShowString(u16 x,u16 y,const u8 *p,u8 size )
{         
while(*p!='')   
      {       
        if(x>MAX_CHAR_POSX){x=0;y+=16;}
        if(y>MAX_CHAR_POSY){y=x=0;LCD_Clear(WHITE);}
        if(size==16) LCD_ShowChar(x,y,*p,16,1);        
        if(size==12) LCD_ShowChar(x,y,*p,12,1);
        if(size==18) LCD_ShowChar(x,y,*p,18,1); 
         x+=8;
         p++;
       }  
}
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,a=0; 
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||size==16) 
             {  
                if(size==12)temp=asc2_1206[num][pos];  //调用1206字体
                if(size==16)temp=asc2_1608[num][pos];  //调用1608字体
                for(t=0;t<size/2;t++)
                   {                 
                    if(temp&0x01)POINT_COLOR=colortemp;
                   else OINT_COLOR=BACK_COLOR;
                   LCD_DrawPoint(x,y);
                   temp>>=1; 
                   x++;
                  }
             } 
         if(size==18)
         { 
    
               temp=asc2_1808[num][a];  
                for(t=0;t<8;t++)
               {    
                            
                if(temp&0x01)POINT_COLOR=colortemp; 
                else OINT_COLOR=BACK_COLOR;
                LCD_DrawPoint(x,y);
                temp>>=1; 
                 x++;
                } 
                a++; 
                 temp=asc2_1808[num][a];  
                for(t=0;t<8;t++)
                {   
                temp=asc2_1808[num][a];             
                if(temp&0x01)POINT_COLOR=colortemp;
               else OINT_COLOR=BACK_COLOR; 
               LCD_DrawPoint(x,y);
               temp>>=1;  
               x++; 
               } 
                 a++; 


         }
x=x0;
y++;
   }
 }          
}  
主函数改动
int main(void)
{
   Stm32_Clock_Init(9);//系统时钟设置 
    delay_init(72); //延时初始化 
    uart_init(72,9600); //串口1初始化   
    LED_Init(); 
    LCD_Init(); 
    OINT_COLOR=YELLOW; 
    LCD_Clear(BLACK);  
     LCD_ShowString(30,110,"11haha#3034",16); 
    LCD_ShowString(30,50,"!",18); 
    LCD_ShowString(30,70,"11haha#3034",12); 
    LED0=!LED0;   
    delay_ms(1000);
    
}
以上的12和16都现显示正常,但是18不行,想拜托师兄,如果有时间帮忙指正一下。 万分感激。

一周热门 更多>