hahle 发表于 2012-6-18 13:26:20

【请教】,STC12C5A60S2读16位BMP图片异常

请教,单片机STC12C5A60S2读16位BMP图片,所有颜色都成了蓝色,图像右边部分有重叠,不正常,向各位请教。

主程序程序如下:(程序是参考网上的)

main()
{
unsigned int x,y; //定义液晶屏坐标
unsigned long j;//执行循环需要的临时变量
unsigned int i;
unsigned long AddTemp=262144;//SD卡地址第一个数据物理地址初始值,可以用winhex查看,这里是512扇区,512x512=262144,根据实际SD卡内容更改
       
       lcd_initial();//液晶屏初始化
Write_COM(0x2C);
//dsp_single_colour(0xf800);
TFT_Clr(0xf800        );
delayms(5);
SdInit();         //SD卡初始化
while(1)
{
x=0;
y=0;
for(j=0;j<80;j++)   //80表示一幅图片含有80x512字节的信息
    {
    SdReadBlock(DATA,AddTemp+(j*512),512);//每次读出512字节放到缓冲区
    for(i= 0;i<256;i++)                  //然后写到液晶屏,可以显示256个像素,每个像素16位即2个字节
           {   
              LCD_SetRamAddr(x,x,y,y);
       LCD_DataWrite (DATA);
       LCD_DataWrite ( DATA );
                              
           x++;
           if(x==128)                         //检测是否写到屏的边缘 128x160
             {
             y++;
             x=0;
             if(y==160)
             y=0;
             }
       }
   }
   AddTemp = AddTemp+((j+16)*512);          //写完一幅图片后把SD地址加80x512到下一个图片地址
   while(KEY);                         //等待按键按下继续执行循环显示下一幅图片,如果没有按下则等待
       
}
}


图片扫描方式:

颜靖峰 发表于 2012-6-18 14:05:21

可能是像素太高了。

tlptotop 发表于 2012-6-18 17:42:01

选择16位 ,rgb565格式的,不要选择rgb555.

leicai05 发表于 2012-6-18 17:59:40

rgb565格式需要做下处理,可以参考http://www.amobbs.com/forum.php?mod=viewthread&tid=4209354

faduo2012 发表于 2012-8-17 02:43:05

bmp数据区有个偏移字节,楼主貌似没从那开始吧

unifax001 发表于 2012-8-21 09:01:11

对啊 图像头一定要挑出去的 否则不行的

夏日么么茶 发表于 2012-8-26 19:19:41

主要原因还是rgb565与rgb555的原因

gaoyichuan000 发表于 2012-8-27 10:30:40

RGB565和555要选对 或者做处理 以前论坛有人遇到过这问题

czc818 发表于 2012-12-8 15:24:54

楼主,请问你里面用到的液晶是哪里买的啊

hahle 发表于 2012-12-10 15:40:03

czc818 发表于 2012-12-8 15:24 static/image/common/back.gif
楼主,请问你里面用到的液晶是哪里买的啊

淘宝上搜吧,一大把的。呵呵,SPI驱动。
页: [1]
查看完整版本: 【请教】,STC12C5A60S2读16位BMP图片异常