OpenEdv-开源电子网

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

求助oled显示图片,自己描点的。

[复制链接]

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
发表于 2017-2-7 19:04:25 | 显示全部楼层 |阅读模式
30金钱
本帖最后由 aiyeba 于 2017-2-7 19:23 编辑

RBG是 2个字节描一个点


于是我这么想的  x=0,y=0;

               u16 x0=x;
               u16 y0=y;
                for(pos=0;pos<320;pos++)
                {
                        for(t=0;t<240*2;t++)
                        {
                           temp=gImage[pos*240+t]+gImage[pos*240+t+1]*256;        
                           t++;                                
                           LCD_Fast_DrawPoint(x,y,temp);
                          x++;
                        }
                        x=x0;
                        y++;
                }


但是图片出来差一点点。        

picture1240x3208083433188.jpg
QQ图片20170207191726.png

最佳答案

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

gimage应该是u8的吧,第一行,应该是0-479,第二行gimage是480-959,这样子的。是你对应的调用图像存储错了
自己选择的路,成家前走完。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2017-2-7 19:04:26 | 显示全部楼层
gimage应该是u8的吧,第一行,应该是0-479,第二行gimage是480-959,这样子的。是你对应的调用图像存储错了
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-7 19:24:10 | 显示全部楼层
差一点点了,有没有大神指点一下啊。
自己选择的路,成家前走完。
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2017-2-8 08:14:07 | 显示全部楼层
本帖最后由 Akatsuki_lim 于 2017-2-8 08:16 编辑

为什么是 “   for(t=0;t<240*2;t++)” ?
画320*480个点?
我觉得是
for(t=0;t<240;t++)
{
      temp=gImage[pos*240+2*t]+gImage[pos*240+2*t+1]*256;        
      t++;                                
      LCD_Fast_DrawPoint(x,y,temp);
      x++;
}
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-8 08:48:30 | 显示全部楼层
Akatsuki_lim 发表于 2017-2-8 08:14
为什么是 “   for(t=0;t

temp是u16的,所以我的t++用了俩次。
自己选择的路,成家前走完。
回复

使用道具 举报

12

主题

336

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1576
金钱
1576
注册时间
2015-8-9
在线时间
625 小时
发表于 2017-2-8 08:55:59 | 显示全部楼层
aiyeba 发表于 2017-2-8 08:48
temp是u16的,所以我的t++用了俩次。

这样你的x坐标也会偏移两次
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-8 09:15:00 | 显示全部楼层
怎么都没人啊,这个问题很常见的吧。
自己选择的路,成家前走完。
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-8 09:17:34 | 显示全部楼层
Akatsuki_lim 发表于 2017-2-8 08:55
这样你的x坐标也会偏移两次

不会的,我for循环每次加2,所以最后x++只是执行 了240次
自己选择的路,成家前走完。
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2017-2-8 09:55:42 | 显示全部楼层
这样子,写子程序,自己也不好看,过段时间,估计自己都要理解好久,才能看明白,基本的能不能<<8 啊,*256的,看的吐血。明白你的意思了,一行应该是480个字节,pos*240你一行是240个字节了,下一行,应该是480开始,但是你是240开始的,pos应该也要+2,不是t++
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2017-2-8 09:57:20 | 显示全部楼层
不是pos++,是+2,与那个t一样的道理,
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-8 10:37:06 | 显示全部楼层
hgr211 发表于 2017-2-8 09:57
不是pos++,是+2,与那个t一样的道理,

我的坐标是0,0开始的     pos=0的时候 ,就是第一行    pos=1的时候就是第二行

总共是320行。每一行写入240个点。
自己选择的路,成家前走完。
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2017-2-8 10:48:42 | 显示全部楼层
gImage的,一行应该是480个字节,所以pos你必须是+2,然后小于640,和t的那个参数一样的方式
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2017-2-8 11:07:52 | 显示全部楼层
直接将240改为480,也可以
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-8 11:10:22 | 显示全部楼层
hgr211 发表于 2017-2-8 10:51
gimage应该是u8的吧,第一行,应该是0-479,第二行gimage是480-959,这样子的。是你对应的调用图像存储错了

搞出来了,谢谢你。
最后改成

[mw_shl_code=c,true] for(pos=0;pos<320;pos++)
                {
                        for(t=0;t<240*2;t++)
                        {
                                temp=gImage[pos*480+t]*256+gImage[pos*480+t+1];
                                t++;                                            
                                LCD_WriteRAM(temp);                                 
                        }                                
                }        [/mw_shl_code]
自己选择的路,成家前走完。
回复

使用道具 举报

56

主题

520

帖子

0

精华

高级会员

Rank: 4

积分
964
金钱
964
注册时间
2014-11-18
在线时间
160 小时
 楼主| 发表于 2017-2-8 11:28:55 | 显示全部楼层
hgr211 发表于 2017-2-8 09:55
这样子,写子程序,自己也不好看,过段时间,估计自己都要理解好久,才能看明白,基本的能不能

<<8有时候需要()什么的很麻烦 ,习惯了256也行。
自己选择的路,成家前走完。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-6 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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