OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14413|回复: 21

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

[复制链接]

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
发表于 2018-2-23 15:28:19 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 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位数组,十六位真彩色图像生成为高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;
      }

}


图片取模.png

最佳答案

查看完整内容[请看2#楼]

嫌原子的比较麻烦的话,看这个,这个是内部FLASH显示图片,简单一点;http://www.openedv.com/forum.php?mod=viewthread&tid=51592
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-2-23 15:28:20 | 显示全部楼层
嫌原子的比较麻烦的话,看这个,这个是内部FLASH显示图片,简单一点;http://www.openedv.com/forum.php?mod=viewthread&tid=51592
回复

使用道具 举报

4

主题

103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3299
金钱
3299
注册时间
2016-7-23
在线时间
269 小时
发表于 2018-2-23 16:03:36 | 显示全部楼层
你先显示一部分看看,因为STM32F1的内存太小了,最好还是从SD卡读
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2018-2-24 14:46:04 | 显示全部楼层
继续求解。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-2-25 01:44:12 | 显示全部楼层
1,先搞个小图片验证,比如只有10*10像素的,这样方便找问题。
2,要学会仿真,找bug
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2018-2-25 14:17:31 | 显示全部楼层
还是搞不出来,很沮丧。求帮助!!!
回复

使用道具 举报

32

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2012-3-30
在线时间
321 小时
发表于 2018-2-25 18:59:17 | 显示全部楼层
本帖最后由 czhaii 于 2018-2-25 20:09 编辑

先画一小块,显示函数加延时,便于观察显示位置与内容和运行变量是否吻合。
原来的帖子我的回复就是写汉字的过程,放慢速度观察一下就明白了。
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2018-2-26 09:47:18 | 显示全部楼层
本帖最后由 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



tu1.jpg
tu3.jpg
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-2-26 18:58:41 | 显示全部楼层
显示单色图片,我有现成的成功的代码。最近正在玩7寸显示屏;用Image2Lcd软件生成的数组前面会多余几个数据,算好自己的方框大小后注释掉前面几个就好了
回复

使用道具 举报

6

主题

153

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1323
金钱
1323
注册时间
2016-12-27
在线时间
156 小时
发表于 2018-2-26 18:59:52 | 显示全部楼层
楼主你那个彩色点阵显示例程是可用的吗?哪里来的?
回复

使用道具 举报

32

主题

300

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2012-3-30
在线时间
321 小时
发表于 2018-2-26 20:20:02 | 显示全部楼层
本帖最后由 czhaii 于 2018-2-27 07:02 编辑

XY 区域画位置正常,取代码错了。
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2018-2-27 08:57:40 | 显示全部楼层
大瓶子凌凌漆 发表于 2018-2-26 18:59
楼主你那个彩色点阵显示例程是可用的吗?哪里来的?

是普中科技的开发板和屏,例程也是他们的。
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2018-3-2 16:44:03 | 显示全部楼层
本帖最后由 rjx007 于 2018-3-3 09:31 编辑

搞定了,图像取模的方式要搞对,形成的的头文件要在main.c的文件包含进去。
IMG_20180303_092639R.jpg
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2018-3-8
在线时间
8 小时
发表于 2018-3-8 20:07:52 | 显示全部楼层
不行啊,那个tftlcd一直卡在THE picture is too large这个界面
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2018-3-8
在线时间
8 小时
发表于 2018-3-8 20:13:19 | 显示全部楼层
战舰版本的flash只有512k,可能没办法显示,lz的真彩图片怎么显示的,可以借鉴一下源程序吗,谢谢
回复

使用道具 举报

64

主题

249

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1073
金钱
1073
注册时间
2017-6-10
在线时间
279 小时
 楼主| 发表于 2018-3-8 21:18:14 | 显示全部楼层
本帖最后由 rjx007 于 2018-3-8 21:19 编辑

以下是我的音乐频谱程序,里面有我实验图片显示的部分。

MY_FFT_LCD.rar

5.07 MB, 下载次数: 2199

回复

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-8-9
在线时间
11 小时
发表于 2018-3-10 11:00:33 | 显示全部楼层
czhaii 发表于 2018-2-25 18:59
先画一小块,显示函数加延时,便于观察显示位置与内容和运行变量是否吻合。
原来的帖子我的回复就是写汉字 ...

很赞。。。。。
回复

使用道具 举报

3

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2018-3-8
在线时间
8 小时
发表于 2018-3-21 10:02:12 | 显示全部楼层
可以显示了,原来是主函数的判断语句有问题,还有就是,为什么图形显示函数会覆盖开窗函数,导致只能显示已240为行的图片
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2019-4-26
在线时间
1 小时
发表于 2019-4-26 10:58:28 | 显示全部楼层
楼主大佬,求联系方式,您共享的音乐频谱程序下载出现bug了,跪求。
回复

使用道具 举报

0

主题

16

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2019-12-10
在线时间
55 小时
发表于 2020-1-9 17:17:53 | 显示全部楼层
cfoundation 发表于 2018-3-8 20:07
不行啊,那个tftlcd一直卡在THE picture is too large这个界面

我直接把这点东西注释了,反而好了
回复

使用道具 举报

2

主题

11

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2011-3-24
在线时间
35 小时
发表于 2020-1-10 10:45:24 | 显示全部楼层
rjx007 发表于 2018-3-8 21:18
以下是我的音乐频谱程序,里面有我实验图片显示的部分。

学习彩色液晶编程,谢谢分享!
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-10-28
在线时间
0 小时
发表于 2020-10-29 22:27:40 | 显示全部楼层
太棒了!很有帮助!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 05:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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