lpc1788显示24位的bmp图片,屏幕大小为272*480.
试验时,我将图片转换成C语言数组存放,读显能正确显示:
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR;
pBmp8 = (uint8_t *)ac480x272Pic01; //数组转换成指针,并把高低位组合
for(i=0;i<(C_GLCD_H_SIZE * C_GLCD_V_SIZE);i++)
{
*pDst16 =*pBmp8++<<16;
*pDst16 +=*pBmp8++<<8;
*pDst16 +=*pBmp8++;
*pDst16++;
}
把图片放在SD卡上,用文件系统读图片的数据,则显示部正常:
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR; //得到LCD显存的SRAM位置
for (i=0;i<480*272;i++)
{
pDst16 = (unsigned long *)LCD_VRAM_BASE_ADDR;
f_read(&bmpfsrc,&pColorData,3,&read_num); // 每次读取三个像素
pBmp8 = (uint8_t *)pColorData; // 数组转换成指针
*pDst16 =*pBmp8++<<16;
*pDst16 +=*pBmp8++<<8;
*pDst16 +=*pBmp8++; // 三个像素高低位组合,映射到LCD地址上
*pDst16++;
}
第二段代码显示不对,但是我将pDst16通过串口输出时,其形式和ac480x272Pic01[]数组的三个像素值合并的一样。证明读取数据没错,应当是显示的问题。请问各位这种情况怎么处理。
此帖出自
小平头技术问答
一周热门 更多>