STM32
直播中

曹玥

8年用户 168经验值
私信 关注
[问答]

请问Ministm32开发板中库函数LCD例程的红色字体是什么意思?

小弟初学STM32,用的原子哥的开发板,在库函数例程TFTLCD中的显示程序有点没有看明白,还请原子哥指点下。
//在指定位置显示一个字符
//x:0~234
//y:0~308
//num:要显示的字符:" "--->"~"
//size:字体大小 12/16
//mode:叠加方式(1)还是非叠加方式(0)
void LCD_ShowChar(u8 x,u16 y,u8 num,u8 size,u8 mode)
{      
#define MAX_CHAR_POSX 232
#define MAX_CHAR_POSY 304
u8 temp;
u8 pos,t;      
if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)return;     
//设置窗口         
LCD_WriteReg(R80,x);           //水平方向GRAM起始地址
LCD_WriteReg(R81,x+(size/2-1));//水平方向GRAM结束地址
LCD_WriteReg(R82,y);           //垂直方向GRAM起始地址
LCD_WriteReg(R83,y+size-1);    //垂直方向GRAM结束地址
LCD_SetCursor(x,y);            //设置光标位置  
LCD_WriteRAM_Prepare();        //开始写入GRAM   
num=num-' ';//得到偏移后的值
if(!mode) //非叠加方式
  {
  for(pos=0;pos    {
   if(size==12)temp=asc2_1206[num][pos];//调用1206字体
   else temp=asc2_1608[num][pos];   //调用1608字体
   for(t=0;t     {                 
    if(temp&0x01)
     {
     LCD_WR_DATA(POINT_COLOR);
     }else LCD_WR_DATA(BACK_COLOR);         
     temp>>=1;
    }
   }
  }
else//叠加方式
  {
  for(pos=0;pos    {
   if(size==12)temp=asc2_1206[num][pos];//调用1206字体
   else temp=asc2_1608[num][pos];   //调用1608字体
   for(t=0;t     {                 
    if(temp&0x01)LCD_DrawPoint(x+t,y+pos);//画一个点     
    temp>>=1;
    }
   }
  }
程序中的红色字体看的都不太明白,还请原子哥能解说下,谢谢了

回帖(6)

h1654155275.5753

2019-10-8 06:38:36
假如让你写一个在LCD上显示字符的函数,你怎么写?
举报

陈勇

2019-10-8 06:49:09
请问原子哥,那个return,是啥意思?返回到X Y都等于0?为什么?
举报

刘刚

2019-10-8 07:07:15
非法输入,直接退出。
return就是不让执行后面的代码了,直接返回去。
举报

周必镜

2019-10-8 07:25:16
谢谢原子哥,我这段程序看了2天,又在坛里查了些资料,现在终于理解了一部分,但是对下面这段程序还是不太明白。
 for(t=0;t     {                 
    if(temp&0x01)
     {
     LCD_WR_DATA(POINT_COLOR);
     }else LCD_WR_DATA(BACK_COLOR);         
     temp>>=1; 
    }
   }
为什么是t
举报

张艳

2019-10-8 07:32:45
字符是汉字的一半宽度,这个你懂吧?不信你在电脑上输入以下用尺子量一下,你就知道了.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分