野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14397|回复: 4

stm32 M3 液晶显示SD卡图片

[复制链接]
发表于 2015-3-11 19:37:40 | 显示全部楼层 |阅读模式
我用资料去下载的M3中的LCD显示文件运行是OK的,但是我建了个文件夹,把其他文件都调过来,就main函数改了下,就调用了Lcd_show_bmp(0, 0,"/pic3.bmp");这个函数。但是就是无法显示图像,我main里的conf也改了,然后编译没错误,就是运行不起来,已经就是背光亮起来了。求大神指导,是不是我哪里忘记修改了!!因为我要写显示SD卡图片加触摸亮灯,但是每次SD卡图片都显示不出来,焦急!!

回复

使用道具 举报

发表于 2015-3-12 09:07:07 | 显示全部楼层
文件路径不对,你打开Lcd_show_bmp函数,里面有记录文件的路径的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-12 14:28:03 | 显示全部楼层
flyleaf 发表于 2015-3-12 09:07
文件路径不对,你打开Lcd_show_bmp函数,里面有记录文件的路径的

我直接在资料里拷过来的。哪里有问题?

void Lcd_show_bmp(unsigned short int x, unsigned short int y,unsigned char *pic_name)
{
    int i, j, k;
    int width, height, l_width;
                  
    BYTE red,green,blue;
    BITMAPFILEHEADER bitHead;
    BITMAPINFOHEADER bitInfoHead;
    WORD fileType;

    unsigned int read_num;
    unsigned char tmp_name[20];
    sprintf((char*)tmp_name,"0:%s",pic_name);
    f_mount(0, &bmpfs[0]);

        BMP_DEBUG_PRINTF("file mount ok \r\n");
   
    bmpres = f_open( &bmpfsrc , (char *)tmp_name, FA_OPEN_EXISTING | FA_READ);
    Set_direction(0);

    if(bmpres == FR_OK)
    {
        BMP_DEBUG_PRINTF("Open file success\r\n");
        
        //读取位图文件头信息        
        f_read(&bmpfsrc,&fileType,sizeof(WORD),&read_num);     
        
        if(fileType != 0x4d42)
        {
            BMP_DEBUG_PRINTF("file is not .bmp file!\r\n");
            return;
        }
        else
        {
            BMP_DEBUG_PRINTF("Ok this is .bmp file\r\n");       
        }        
        
        f_read(&bmpfsrc,&bitHead,sizeof(tagBITMAPFILEHEADER),&read_num);   
        
        showBmpHead(&bitHead);
        BMP_DEBUG_PRINTF("\r\n");
        
        //读取位图信息头信息
        f_read(&bmpfsrc,&bitInfoHead,sizeof(BITMAPINFOHEADER),&read_num);        
        showBmpInforHead(&bitInfoHead);
        BMP_DEBUG_PRINTF("\r\n");
    }   
    else
    {
        BMP_DEBUG_PRINTF("file open fail!\r\n");
        return;
    }   
   
    width = bitInfoHead.biWidth;
    height = bitInfoHead.biHeight;
   
    l_width = WIDTHBYTES(width* bitInfoHead.biBitCount);                //计算位图的实际宽度并确保它为32的倍数            
   
    if(l_width>960)
    {
        BMP_DEBUG_PRINTF("\nSORRY, PIC IS TOO BIG (<=320)\n");
        return;
    }
   
    if(bitInfoHead.biBitCount>=24)
    {

        bmp_lcd(x,240-y-height,width, height);                                                                                                                                        //LCD参数相关设置

        for(i=0;i<height+1; i++)
        {       
            
            for(j=0; j<l_width; j++)                                                                                                                 //将一行数据全部读入
            {
               
                f_read(&bmpfsrc,pColorData+j,1,&read_num);
            }            
            
            for(j=0;j<width;j++)                                                                                                                                 //一行有效信息
            {
                k = j*3;                                                                                                                                                                //一行中第K个像素的起点
                red = pColorData[k+2];
                green = pColorData[k+1];
                blue =         pColorData[k];
                LCD_WR_Data(RGB24TORGB16(red,green,blue));                //写入LCD-GRAM
            }            
        }
        bmp_lcd_reset();                                                                                                                                                                                                         //lcd扫描方向复原                
    }   
    else
    {        
        BMP_DEBUG_PRINTF("SORRY, THIS PIC IS NOT A 24BITS REAL COLOR");
        return ;
    }
   
    f_close(&bmpfsrc);   
}
回复 支持 反对

使用道具 举报

发表于 2015-3-15 22:50:30 | 显示全部楼层
哈哈 发表于 2015-3-12 14:28
我直接在资料里拷过来的。哪里有问题?

void Lcd_show_bmp(unsigned short int x, unsigned short int ...

你找到图片路径的问题了没?我也遇到这种情况了,求指教!
回复 支持 反对

使用道具 举报

发表于 2015-3-20 15:57:44 | 显示全部楼层
请问下你找到那里出错了吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 19:30 , Processed in 0.031554 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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