久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3289|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

stm32f407串口下載bmp圖片到外擴內(nèi)存,再顯示到lcd的源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:235520 發(fā)表于 2018-11-13 09:46 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

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)位置。

單片機源程序如下:
  1. #include "led.h"
  2. #include "key.h"
  3. #include "beep.h"
  4. #include "lcd.h"
  5. #include "usart.h"
  6. #include "sram.h"
  7. #include "ds18b20.h"
  8. #include "ff.h"
  9. #include "malloc.h"
  10. #include "sdio_sdcard.h"   


  11. void show_sdcard_info(void)
  12. {
  13.         switch(SDCardInfo.CardType)
  14.         {
  15.                 case SDIO_STD_CAPACITY_SD_CARD_V1_1:printf("Card Type:SDSC V1.1\r\n");break;
  16.                 case SDIO_STD_CAPACITY_SD_CARD_V2_0:printf("Card Type:SDSC V2.0\r\n");break;
  17.                 case SDIO_HIGH_CAPACITY_SD_CARD:printf("Card Type:SDHC V2.0\r\n");break;
  18.                 case SDIO_MULTIMEDIA_CARD:printf("Card Type:MMC Card\r\n");break;
  19.         }       
  20.   printf("Card ManufacturerID:%d\r\n",SDCardInfo.SD_cid.ManufacturerID);
  21.         printf("Card RCA:%d\r\n",SDCardInfo.RCA);                                               
  22.         printf("Card Capacity:%d MB\r\n",(u32)(SDCardInfo.CardCapacity>>20));
  23.         printf("Card BlockSize:%d\r\n\r\n",SDCardInfo.CardBlockSize);       
  24. }
  25.    
  26. void fsmc_sram_test(u16 x,u16 y)
  27. {  
  28.         u32 i=0;            
  29.         u8 temp=0;          
  30.         u8 sval=0;                                    
  31.   LCD_DisplayString(x,y,16,"Ex Memory Test:   0KB");

  32.         for(i=0;i<1024*1024;i+=4096)
  33.         {
  34.                 FSMC_SRAM_WriteBuffer(&temp,i,1);
  35.                 temp++;
  36.         }
  37.         for(i=0;i<1024*1024;i+=4096)
  38.         {
  39.                 FSMC_SRAM_ReadBuffer(&temp,i,1);
  40.                 if(i==0)sval=temp;
  41.                 else if(temp<=sval)break;   
  42.                 LCD_DisplayNum(x+15*8,y,(u16)(temp-sval+1)*4,4,16,0);
  43.         }                                         
  44. }


  45. int main(void)
  46. {                        
  47.         delay_init();                  //初始化延時函數(shù)
  48.         LED_Init();                    //初始化LED端口
  49.         KEY_Init();                    //初始化KEY端口
  50.         BEEP_Init();                    //初始化BEEP端口
  51.        
  52.         beep(3);
  53.        
  54.         FSMC_SRAM_Init();
  55.         USART1_Config();
  56.        
  57.         LCD_Init();           
  58.         BRUSH_COLOR=RED;               
  59.        
  60.         /*
  61.         LCD_DisplayString(30,50,16,"Explorer STM32F4");       
  62.         LCD_DisplayString(30,70,16,"SD CARD TEST");       
  63.         LCD_DisplayString(30,90,16,"ATOM@ALIENTEK");
  64.         LCD_DisplayString(30,110,16,"2014/5/15");   
  65.         LCD_DisplayString(30,130,16,"KEY0:Read Sector 0");       
  66.        
  67.         my_mem_init(SRAMIN);
  68.         my_mem_init(SRAMCCM);
  69.        
  70.         */
  71.        
  72.         //LCD_DisplayString(30,130,16,"DS18B20 OK");
  73.        
  74.         /*
  75.         res_sd = f_mount(&fs,"0:",1);
  76.         if(res_sd != FR_OK){
  77.                 printf("\r\nPlease insert a SD card formatted by fat32!\r\n");
  78.         }
  79.         */
  80.         //jpgDisplay("0:/1.jpg");
  81.         delay_us(4000);
  82.           
  83.         /*
  84.         while(SD_Init())
  85.         {
  86.                 LCD_DisplayString(30,150,16,"SD Card Error!");
  87.                 delay_ms(500);                                       
  88.                 LCD_DisplayString(30,150,16,"Please Check! ");
  89.                 delay_ms(500);
  90.                 LED0=!LED0;//DS0??
  91.         }
  92.         show_sdcard_info();
  93.        
  94.         BRUSH_COLOR=BLUE;
  95.                                                                     
  96.         LCD_DisplayString(30,150,16,"SD Card OK    ");
  97.         LCD_DisplayString(30,170,16,"SD Card Size:     MB");
  98.         LCD_DisplayNum(30+13*8,170,SDCardInfo.CardCapacity>>20,5,16,0);
  99.         */
  100.        
  101.         //fsmc_sram_test(10, 10);
  102.        
  103.   while(1)
  104.         {
  105.                
  106.                
  107.         }
  108. }
復(fù)制代碼

所有資料51hei提供下載:
串口發(fā)bmp到sram再顯示到lcd.rar (1.03 MB, 下載次數(shù): 39)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:263750 發(fā)表于 2019-6-20 08:47 | 只看該作者
感謝分享
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲日日夜夜 | 国产精品久久免费观看 | 日韩精品久久久久 | 成人精品视频在线观看 | 国产激情一区二区三区 | 国产精品theporn| 91亚洲国产精品 | a级在线| 欧美精品在线一区 | 日韩和的一区二在线 | 国产免国产免费 | 日韩高清av| 成人精品国产免费网站 | 国产一区二区视频在线观看 | 成人av资源在线 | 久久精品毛片 | 99精品观看 | 国产精品无码专区在线观看 | 久久日韩精品一区二区三区 | 成人在线国产 | 天天射影院 | 国产一区二区三区免费观看视频 | 国产一区视频在线 | 91精品久久久久久久 | 日韩视频观看 | www.日韩在线 | 欧美日本一区 | 亚洲高清中文字幕 | 国产精品中文字幕一区二区三区 | www.嫩草| 亚洲v区 | 日韩电影免费观看中文字幕 | 亚洲交性 | 精品美女 | 韩国毛片一区二区三区 | 中文字幕三区 | 国产91网址 | 国产欧美一区二区三区另类精品 | 日韩精品一区二区三区第95 | 久久久久久国产精品免费免费男同 | 午夜影院在线观看 |