管理员
最后登录1970-1-1
在线时间 小时
注册时间2013-3-25
|
发表于 2013-12-9 14:53:36
|
显示全部楼层
PSIR 发表于 2013-12-9 14:43
能否再具体说明一下,例如写段 for 循环的代码解释该如何取资料?谢谢。
具体的使用说明,可以直接看我们的 例程。
例如这个 SD卡显示的(读取代码方式跟 flash 不一样而已,写液晶操作是一样的)- /******************************************************
- * 函数名:Lcd_show_bmp
- * 描述 :LCD显示RGB888位图图片
- * 输入 : x --显示横坐标(0-319)
- y --显示纵坐标(0-239)
- * pic_name --图片名称
- * 输出 :无
- * 举例 :Lcd_show_bmp(0, 0,"/test.bmp");
- * 注意 :图片为24为真彩色位图图片
- 图片宽度不能超过320
- 图片在LCD上的粘贴范围为:纵向: [x,x+图像高度] 横向 [Y,Y+图像宽度]
- 当图片为320*240时--建议X输入0 y输入0
- *********************************************************/
- 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);
- }
复制代码 |
|