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

2019-07-21 05:15发布

1、  LCD的程序都看了 最后主程序显示感觉16的字体有点小,不知道在哪地方可以进行调整,或者哪个子程序是关于调节大小的,我照了好久没找到哪部分写道字体大小的,16的就是最大了吗求指教
2、另外还有一个请教 是不是显示的字符 都是根据font.h内有的才能显示,因为我发现输入汉字显示不了,想求教是不是这个原因
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
beisiqiu
1楼-- · 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不行,想拜托师兄,如果有时间帮忙指正一下。 万分感激。
正点原子
2楼-- · 2019-07-23 04:35
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-23 08:09
//在指定位置 显示1个24*24的汉字
//(x,y):汉字显示的位置
//index:tfont数组里面的第几个汉字
//color:这个汉字的颜 {MOD}
void Test_Show_CH_Font24(u16 x,u16 y,u8 index,u16 color)
{        
u8 temp,t,t1;
u16 y0=y;    
    for(t=0;t<72;t++)//每个24*24的汉字点阵 有72个字节
    {   
if(t<24)temp=tfont24[index*3][t];           //前24个字节
else if(t<48)temp=tfont24[index*3+1][t-24]; //中24个字节                           
        else temp=tfont24[index*3+2][t-48];         //后24个字节
    for(t1=0;t1<8;t1++)
{
if(temp&0x80)LCD_Draw_Point(x,y,color);//画实心点
else LCD_Draw_Point(x,y,BACK_COLOR);   //画空白点(使用背景 {MOD})
temp<<=1;
y++;
if((y-y0)==24)
{
y=y0;
x++;
break;
}
}    
    }          
}
beisiqiu
4楼-- · 2019-07-23 11:43
回复【16楼】正点原子:
---------------------------------
嗯 谢谢师兄 师兄有个小请求  我在修改18*18字体时 LCD显示都是同种状态 我想您是否可以帮我看一下我写得代码 看看我哪里逻辑错误了 因为只有我自己学 没人可以请教 希望您能帮我
正点原子
5楼-- · 2019-07-23 12:52
没时间看代码,自己仿真调试吧.
beisiqiu
6楼-- · 2019-07-23 17:29
嘿嘿 好用了 重新下载了一下 这个代码是对的 不知道那天是咋搞的 谢谢原子师兄 

一周热门 更多>