• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : LCD 裸奔程序显示不完全,求高手指点 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 19677
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-04-22
最后登录: 2017-09-13
楼主  发表于: 2010-04-26 14:32

 LCD 裸奔程序显示不完全,求高手指点

在网上下了个LCD程序,编译运行没问题。
然后我修改了下,做了一个LCD显示图片的程序
主要显示程序如下
void Test_Lcd_Tft_16Bit_240320(void)
{
    printf("[TFT 64K COLOR(16bpp) LCD TEST]\n");
    Paint_Bmp(flower);
    getc();
    Paint_Bmp(Bliss);
    getc();
    Paint_Bmp(paint);
    getc();
}
其他初始化之类在别的文件
我的问题是程序启动后,第一幅图片没有显示,LCD为白色,第二幅图片只有一部分显示,LCD下边为白色,第三幅图片显示完全
之后我把第一个Paint_Bmp的图片换成第三幅,结果程序显示为第一三幅图片显示完全正确,第二幅症状和上次一样
三幅图片的数据放在同一个.h文件中,顺序如下
unsigned char flower[] = {...};
unsigned char Bliss[]  = {...};
unsigned char paint[]  = {...};
这三个图片的数据本身没有问题,另外我通过反汇编发现三个图片数组在data段中存放位置与上面的定义顺序相反
请问高手这个现象具体症状在哪,在下不甚感激
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
贡献值: 0 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
1楼  发表于: 2010-04-26 14:52
可能你需要先做清屏处理
级别: 新手上路
UID: 19677
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-04-22
最后登录: 2017-09-13
2楼  发表于: 2010-04-26 15:02
那为什么能显示第一幅和第三幅,第二幅显示不完全啊,如果要清屏的话
no z no d
级别: 侠客
UID: 12281
精华: 1
发帖: 68
金钱: 750 两
威望: 79 点
贡献值: 1 点
综合积分: 156 分
注册时间: 2010-01-03
最后登录: 2015-08-09
3楼  发表于: 2010-04-26 17:16
三幅图片的数据分成3个头文件 再试试,另外每幅图片显示之前加个延时看看,把Paint_Bmp(unsigned);函数贴出来看看。
嵌入式博大精深
级别: 新手上路
UID: 19677
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-04-22
最后登录: 2017-09-13
4楼  发表于: 2010-04-26 18:47
回楼上的
我把几幅图片分别放在不同的图文件里,结果前面的一样,还是LCD显示白色,后面的LCD显示倒是有,但是却是花的,感觉被滤波了
Paint_Bmp的程序如下
void Paint_Bmp(unsigned char bmp[])
{
    unsigned short c;
    int x,y;
    int p = 0;
    unsigned short * addr;
    addr=(unsigned short *)LCDFRAMEBUFFER;
    
    for( y = 0 ; y < 240 ; y++ )
    {
        for( x = 0 ; x < 320 ; x++ )
        {
              c = (unsigned short)(bmp[p+1] |(( (short)bmp[p]) <<8)) ;
              if ( ( x < 320) && ( y < 240) )
                      *(addr+x+y*320) = c ;
              p = p + 2 ;
        }
    }
}
级别: 新手上路
UID: 19677
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-04-22
最后登录: 2017-09-13
5楼  发表于: 2010-04-26 18:48
另外我发现不烧进flash 直接在sdram中运行 效果要好些,但第一幅图片依然不理想
级别: 新手上路
UID: 19677
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-04-22
最后登录: 2017-09-13
6楼  发表于: 2010-05-01 09:21
有人吗
no z no d
级别: 侠客
UID: 12281
精华: 1
发帖: 68
金钱: 750 两
威望: 79 点
贡献值: 1 点
综合积分: 156 分
注册时间: 2010-01-03
最后登录: 2015-08-09
7楼  发表于: 2010-05-03 09:47
引用第4楼laoshizhuce于2010-04-26 18:47发表的  :
回楼上的
我把几幅图片分别放在不同的图文件里,结果前面的一样,还是LCD显示白色,后面的LCD显示倒是有,但是却是花的,感觉被滤波了
Paint_Bmp的程序如下
void Paint_Bmp(unsigned char bmp[])
{
.......

你的屏是240*320,还是320*240;lcd函数中,那个#define HWSWP 是1还是0 ; 看不清楼主的问题所在,信息太少了。。。光让别人来猜测,怎么行呢; 光盘里的2440test文件夹里,有lcd的代码,可以仔细琢磨下
嵌入式博大精深
级别: 新手上路
UID: 19677
精华: 0
发帖: 9
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 18 分
注册时间: 2010-04-22
最后登录: 2017-09-13
8楼  发表于: 2010-05-03 13:56
回楼上的
我觉得我说的很清楚了吧
我觉得你没有看懂我的问题
你说的什么 HWSWP 这个在初始化中做的 ,因为我后面能显示图片 肯定跟这个无关啊
如果初始化不对,一幅图片肯定都无法显示
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2010-05-03 14:47

 回 8楼(laoshizhuce) 的帖子

哦,是吗?如果真是那样的话,这个帖子就不会一个多星期了还一点有用的讨论都没有。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go