想用TFTLCD显示一幅图片,但弄不出来,求指导。

2019-07-21 02:21发布

本帖最后由 rjx007 于 2018-2-23 15:48 编辑

想用TFTLCD显示一幅图片,看了原子等例程,觉得太复杂了,又是读SD卡,又是文件系统什么的,太难了,一下子学不会。我想从最简单的入手,因为只显示一幅简单图片,所以用软件(如Image2lcd)将图片转成点阵数组(像显示文字似的),再用一个图片显示函数显示出来,试了很多次都不成功,屏上是乱的。不知是取模不对还是函数用的不对,劳驾高手能指导一下。

下面取模对吗?图片函数如下: 又问:函数的形参 *pic 是Image2lcd生成的C文件,还是文件中的数组?如何传递这个形参呢?

//图像显示函数,适用Image2Lcd V2.9
void Picture_Draw(u16 S_x,u16 S_y,const unsigned char *pic)
{
   u32 i=8,len;
   u16 temp,x,y,D_x=0,D_y=0;

   x=(uint16_t)((pic[2]<<8)+pic[3])-1; //获取图片的宽度
   y=(uint16_t)((pic[4]<<8)+pic[5])-1; //获取图片的高度

   len=2*x*y; //获取图片像素点数

   while(i<(len+8))  //显示所有像素点
      {
         temp=(uint16_t)((pic<<8)+pic[i+1]);//image2lcd生成的是8位数组,十六位真彩 {MOD}图像生成为高8位和低8位,这儿将其转换成16位数据,
         if(D_x>x) {D_x=0;D_y++;}//逐行显示
         LCD_DrawFRONT_COLOR(S_x+D_x,S_y+D_y,temp); //画点,拼凑图像,调用快速画点函数
         D_x++;
         i=i+2;
      }

}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
rjx007
1楼-- · 2019-07-22 04:34
本帖最后由 rjx007 于 2018-2-26 10:05 编辑

  • 弄了一个非常简单的黑白图片(60x48),用Image2Lcd转成一个C文件,再用图片显示函数:LCD_ShowPicture(10, 10, 100, 100,"tu3");显示,
显示图片的函数:
void LCD_ShowPicture(u16 x, u16 y, u16 wide, u16 high,u8 *pic)
{
        u16 temp = 0;
        long tmp=0,num=0;
        LCD_Set_Window(x, y, x+wide-1, y+high-1);
        num = wide * high*2 ;
        do
        {  
                temp = pic[tmp + 1];
                temp = temp << 8;
                temp = temp | pic[tmp];
                LCD_WriteData_Color(temp);//逐点显示
                tmp += 2;
        }
        while(tmp < num);        
}

显示的图像如下:
原图:tu1.jpg                       显示成这样了:tu3.jpg



大瓶子凌凌漆
2楼-- · 2019-07-22 08:43
显示单 {MOD}图片,我有现成的成功的代码。最近正在玩7寸显示屏;用Image2Lcd软件生成的数组前面会多余几个数据,算好自己的方框大小后注释掉前面几个就好了
大瓶子凌凌漆
3楼-- · 2019-07-22 12:50
 精彩回答 2  元偷偷看……
czhaii
4楼-- · 2019-07-22 16:18
本帖最后由 czhaii 于 2018-2-27 07:02 编辑

XY 区域画位置正常,取代码错了。
rjx007
5楼-- · 2019-07-22 16:34
大瓶子凌凌漆 发表于 2018-2-26 18:59
楼主你那个彩 {MOD}点阵显示例程是可用的吗?哪里来的?

是普中科技的开发板和屏,例程也是他们的。
rjx007
6楼-- · 2019-07-22 20:44
 精彩回答 2  元偷偷看……

一周热门 更多>