|
bmp顏色序列.png (864.42 KB, 下載次數(shù): 44)
下載附件
2018-11-13 09:47 上傳
bmp圖像已經(jīng)順利讀入外擴sram,對于我上傳的這種真彩bmp來說,從文件的第54字節(jié)開始,之后說顏色數(shù)據(jù),格式RGB888,即每3字節(jié)表示一個像素,共320x240個像素,正好一屏,另由于我們的屏是65535色,lcd驅(qū)動程序中提供的寫像素函數(shù)需要傳入坐標(biāo)和16位色,因此需要大家寫一個把24位色轉(zhuǎn)成16色的函數(shù)。大致過程如下:用串口工具往單片機發(fā)bmp圖片,這樣不需要sd卡或u盤,單片機端邊讀邊存入外擴內(nèi)存,外擴內(nèi)存共1M字節(jié),我給的bmp文件255k字節(jié)。發(fā)送完之后,電腦給單片機端發(fā)送!END!表示傳送結(jié)束。單片機開始從外擴內(nèi)存地址0x68000000的位置,偏移54字節(jié),這54字節(jié)是bmp頭信息,與本次實驗無關(guān),然后開始逐個字節(jié)讀取,讀完3字節(jié),轉(zhuǎn)換為16位色,再依次寫入lcd屏上相應(yīng)位置。
單片機源程序如下:
- #include "led.h"
- #include "key.h"
- #include "beep.h"
- #include "lcd.h"
- #include "usart.h"
- #include "sram.h"
- #include "ds18b20.h"
- #include "ff.h"
- #include "malloc.h"
- #include "sdio_sdcard.h"
- void show_sdcard_info(void)
- {
- switch(SDCardInfo.CardType)
- {
- case SDIO_STD_CAPACITY_SD_CARD_V1_1:printf("Card Type:SDSC V1.1\r\n");break;
- case SDIO_STD_CAPACITY_SD_CARD_V2_0:printf("Card Type:SDSC V2.0\r\n");break;
- case SDIO_HIGH_CAPACITY_SD_CARD:printf("Card Type:SDHC V2.0\r\n");break;
- case SDIO_MULTIMEDIA_CARD:printf("Card Type:MMC Card\r\n");break;
- }
- printf("Card ManufacturerID:%d\r\n",SDCardInfo.SD_cid.ManufacturerID);
- printf("Card RCA:%d\r\n",SDCardInfo.RCA);
- printf("Card Capacity:%d MB\r\n",(u32)(SDCardInfo.CardCapacity>>20));
- printf("Card BlockSize:%d\r\n\r\n",SDCardInfo.CardBlockSize);
- }
-
- void fsmc_sram_test(u16 x,u16 y)
- {
- u32 i=0;
- u8 temp=0;
- u8 sval=0;
- LCD_DisplayString(x,y,16,"Ex Memory Test: 0KB");
- for(i=0;i<1024*1024;i+=4096)
- {
- FSMC_SRAM_WriteBuffer(&temp,i,1);
- temp++;
- }
- for(i=0;i<1024*1024;i+=4096)
- {
- FSMC_SRAM_ReadBuffer(&temp,i,1);
- if(i==0)sval=temp;
- else if(temp<=sval)break;
- LCD_DisplayNum(x+15*8,y,(u16)(temp-sval+1)*4,4,16,0);
- }
- }
- int main(void)
- {
- delay_init(); //初始化延時函數(shù)
- LED_Init(); //初始化LED端口
- KEY_Init(); //初始化KEY端口
- BEEP_Init(); //初始化BEEP端口
-
- beep(3);
-
- FSMC_SRAM_Init();
- USART1_Config();
-
- LCD_Init();
- BRUSH_COLOR=RED;
-
- /*
- LCD_DisplayString(30,50,16,"Explorer STM32F4");
- LCD_DisplayString(30,70,16,"SD CARD TEST");
- LCD_DisplayString(30,90,16,"ATOM@ALIENTEK");
- LCD_DisplayString(30,110,16,"2014/5/15");
- LCD_DisplayString(30,130,16,"KEY0:Read Sector 0");
-
- my_mem_init(SRAMIN);
- my_mem_init(SRAMCCM);
-
- */
-
- //LCD_DisplayString(30,130,16,"DS18B20 OK");
-
- /*
- res_sd = f_mount(&fs,"0:",1);
- if(res_sd != FR_OK){
- printf("\r\nPlease insert a SD card formatted by fat32!\r\n");
- }
- */
- //jpgDisplay("0:/1.jpg");
- delay_us(4000);
-
- /*
- while(SD_Init())
- {
- LCD_DisplayString(30,150,16,"SD Card Error!");
- delay_ms(500);
- LCD_DisplayString(30,150,16,"Please Check! ");
- delay_ms(500);
- LED0=!LED0;//DS0??
- }
- show_sdcard_info();
-
- BRUSH_COLOR=BLUE;
-
- LCD_DisplayString(30,150,16,"SD Card OK ");
- LCD_DisplayString(30,170,16,"SD Card Size: MB");
- LCD_DisplayNum(30+13*8,170,SDCardInfo.CardCapacity>>20,5,16,0);
- */
-
- //fsmc_sram_test(10, 10);
-
- while(1)
- {
-
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
串口發(fā)bmp到sram再顯示到lcd.rar
(1.03 MB, 下載次數(shù): 39)
2018-11-13 14:19 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|