论坛元老
 
- 积分
- 12068
- 金钱
- 12068
- 注册时间
- 2013-3-8
- 在线时间
- 1283 小时
|
发表于 2015-4-24 16:09:21
|
显示全部楼层
回复【9楼】秋水仙素:
---------------------------------
/****************************************************************************
* 名 称:void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic)
* 功 能:在指定座标范围显示一副图片
* 入口参数:StartX 行起始座标
* StartY 列起始座标
* EndX 行结束座标
* EndY 列结束座标
pic 图片头指针
* 出口参数:无
* 说 明:图片取模格式为水平扫描,16位颜色模式
* 调用方法:ili9320_DrawPicture(0,0,100,100,(u16*)demo);
* 作 者: www.armjishu.com
****************************************************************************/
void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic)
{
u32 i, total;
u16 *picturepointer = pic;
u16 x,y;
printf("ili9320_DrawPicture StartX %d StartY %d EndX %d EndY %d \n\r", StartX, StartY, EndX, EndY);
x=StartX;
y=StartY;
total = (EndX - StartX + 1)*(EndY - StartY + 1 );
for (i=0;i<total;i++)
{
//// data1 = *picturepointer++;
//// data2 = *picturepointer++;
// data3 = ((data1 >>3)& 0x001f) |((data1>>5) & 0x07E0) | ((data2<<8) & 0xF800);
ili9320_SetPoint(x,y,*picturepointer++);
y++;
if(y > EndY)
{
x++;
y=StartY;
}
// data1 = *picturepointer++;
// data2 = *picturepointer++;
// data3 = ((data1 >>11)& 0x001f) |((data2<<3) & 0x07E0) | ((data2) & 0xF800);
// ili9320_SetPoint(x,y,data3);
// y++;
// if(y > EndY)
// {
// x++;
// y=StartY;
// }
}
}
#if 0
void ili9320_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic)
{
u32 i, total;
u16 data1,data2,data3;
u16 *picturepointer = pic;
//ili9320_SetWindows(StartX,StartY,EndX,EndY);
LCD_WriteReg(0x0003,(1<<12)|(0<<5)|(1<<4) );
ili9320_SetCursor(StartX,StartY);
LCD_WriteRAM_Prepare();
total = (EndX + 1)*(EndY + 1 ) / 2;
for (i=0;i<total;i++)
{
data1 = *picturepointer++;
data2 = *picturepointer++;
data3 = ((data1 >>3)& 0x001f) |((data1>>5) & 0x07E0) | ((data2<<8) & 0xF800);
LCD_WriteRAM(data3);
data1 = data2;
data2 = *picturepointer++;
data3 = ((data1 >>11)& 0x001f) |((data2<<3) & 0x07E0) | ((data2) & 0xF800);
LCD_WriteRAM(data3);
}
LCD_WriteReg(0x0003,(1<<12)|(1<<5)|(1<<4) );
}
#endif
是这两个函数之一,有3,4年了。你参考一下吧! |
|