@安小芯
尝试使用0.96inch的LCD显示万花筒。
如图
经过一副折腾,转换为bmp,发现有179张bmp.
一张图像素为80x80=6400个,彩色屏显示(黑,白)为(0,0xffff)二值模式,不是(0,1)二进制模式。
即一个像素一个int型,一张bmp需要6400*2=12800byte,179张bmp=12800*179=2.2Mbytes。单片机空间
远远不够的。
所以想了个办法,用先用0xff保存白色,然后显示时处理,一张图只要6400bytes。179张图需要1.1Mbyte字节。
根据上面的想法,再用1保存白色像素,一个字节由8个像素合成,一张图只要800bytes。179张需要140Kbytes。
虽然mcu空间还是不够,但是可以显示72张bmp。
软件处理部分
#define BIT(x) ((unsigned int)((unsigned int)1<<x))
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
//画图
void LCD_DrawPic_ZZZ(u8 index, u16 x, u16 y,const unsigned char *p)
{
u8 n;
u16 i;
u16 picX;
u16 temp;
LCD_SetWindows(x,y,x+80-1,y+80-1);
i = index*800; //bmp1 = 800 bytes
for(; i<800+index*800; i++)
{
picX = *(p+i);
for(n=0,temp=0; n<8; n++)
{
temp = (picX & BIT((7-n))) >> (7-n);
if(temp>0) temp=0xffff;
Lcd_WriteData_16Bit(temp);
}
}
//LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);
}
效果如图
不知道大佬们有没有好的办法。
最后附上代码
N32G430C8L7-STB-v1.3.zip
(68.12 KB)
|