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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5308|回復: 2
收起左側

ili9341 LCD軟件處理圖片數據,以少量圖片(減少內存占用)實現動態背景和動態字體

[復制鏈接]
ID:209947 發表于 2018-7-15 10:34 | 顯示全部樓層 |閱讀模式

本次工程基于stm32vet5,LCD是ili9341,在LCD的基礎驅動上改編的代碼。

工作中需要實現動態背景和動態字體。直接用截圖來覆蓋原有的圖需要flash中保存截圖,占用太大空間,所以需要盡可以的用軟件來處理圖片實現動態。我編寫了實現透明圖片,移動圖片,嵌入圖片,截圖保存(flash中的)等函數來完成動態。這里帶上視頻和圖片。

嵌入圖片是去掉黑色部分,只顯示其他顏色部分,即是把黑色當做了透明色。嵌入的圖片最好是簡單些的方便自己PS處理的圖片。

視頻:https://v.youku.com/v_show/id_XMzY0NzU3NjkzMg==.html

單片機源程序如下:
  1. /*
  2. * STM32F103VET6   
  3. * 內置flash      512K              緩存      64K
  4. * 已用flash 347.34K      已用緩存 34.89K
  5. */
  6. #include "led.h"
  7. #include "delay.h"
  8. #include <stdbool.h>
  9. #include <math.h>
  10. #include "sys.h"
  11. #include "stm32f10x.h"
  12. #include "Tim.h"
  13. #include "usart.h"
  14. #include "ili9341_lcd.h"
  15. #include "string.h"


  16. //圖像
  17. extern const unsigned char Street[153600] ;
  18. extern const unsigned char Smoke[12][6264];
  19. extern const unsigned char Ear[2][1972];
  20. extern const unsigned char Bread[12][2310];
  21. extern const unsigned char Ping[12][3696];
  22. extern const unsigned char Fire[3][1156];
  23. extern const unsigned char NUM[10][560];
  24. extern const unsigned char Change9_8[9][560];
  25. extern const unsigned char Change8_7[9][560];

  26. extern const unsigned char BIG_CHAR[8][720];
  27. extern const unsigned char CubicM[720];
  28. extern const unsigned char FenHao[320];
  29. extern const unsigned char BaiFenHao[720];
  30. extern const unsigned char UG[720];
  31. extern const unsigned char SheShiDu[720];

  32. unsigned char save[1120];
  33. u8 data_wei = 0;

  34. u8 lu_wei = 0;
  35. u8 turnarround = 0;
  36. //硬盤
  37. #define countof(a)      (sizeof(a) / sizeof(*(a)))
  38. #define  BufferSize (countof(Tx_Buffer)-1)
  39. uint32_t count_i = 0;
  40. uint32_t   count_t;
  41. u8 count_k = 0;
  42. uint8_t Tx_Buffer[480] ;
  43. uint8_t Rx_Buffer[100];
  44. uint8_t Picture_Rx_Buffer[24000] ;//6分之一張圖片大小
  45. //uint32_t Picture_F2D_Buffer[6000];//DMA從flash讀取數據
  46. uint8_t Receive_Buffer; //串口接收圖片數據的buff

  47. void LCD_Test(void)
  48. {
  49.         LCD_SetColors(WHITE,BLACK );
  50.         ILI9341_Clear(0,0,LCD_X_LENGTH,LCD_Y_LENGTH);
  51.         Disd(0,0, 240, 320,Street);
  52. }

  53. int main(void)
  54. {
  55.         delay_init();
  56.         ILI9341_Init ();                                                //LCD屏幕初始化
  57.         ILI9341_GramScan ( 6 );                               //LCD背景色設置
  58.         LCD_LightDegree();
  59.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級

  60.         USART_Config();
  61.         LCD_Test();                                                       //LCD初始化
  62.         
  63. while(1)        //浮動字體&動圖&字體移動
  64. {
  65.         int cnt = 0,cnt2;
  66.         for(cnt = 11,cnt2 = 0;cnt >= 0;cnt2 ++,cnt --)
  67.         {
  68.                 Disd(58,61, 54, 58,Smoke[cnt2]);
  69.                 if(cnt2 == 5)Disd(49,127, 34, 29,Ear[1]);        
  70.                 else if(cnt2== 7)Disd(49,127, 34, 29,Ear[0]);
  71.                 else;//Ear
  72.                 Disd(86,157, 33, 35,Bread[cnt2]);
  73.                 Disd(152,121, 44, 42,Ping[cnt2]);
  74.                 if(cnt2 == 11)cnt2 = 0;
  75.                 //清理上次移動顯示的殘影
  76.                 ScreenShots( 30, 200, 18, 20,Street, 30, 200,240,320);
  77.                 ScreenShots( 48, 200, 18, 20,Street, 48, 200,240,320);
  78.                 ScreenShots( 68, 200, 18, 20,Street, 68, 200,240,320);
  79. //                ScreenShots( 30, 230, 18, 20,Street, 30, 230,240,320);
  80. //                ScreenShots( 48, 230, 18, 20,Street, 48, 230,240,320);
  81. //                ScreenShots( 68, 230, 18, 20,Street, 68, 230,240,320);
  82.                
  83.                 ScreenShotsSave(  18, 20,Street,30+10*cnt, 200,240,320,save);//截圖保存
  84.                 ScreenShots( 40+10*cnt, 200, 18, 20,Street, 40+10*cnt, 200,240,320);
  85.                 FloatPictureStatic( 30+10*cnt,200, 18, 20,CHAR_T,cnt,save);
  86.                 ScreenShotsSave(  18, 20,Street,48+10*cnt, 200,240,320,save);//截圖保存
  87.                 ScreenShots( 58+10*cnt, 200, 18, 20,Street, 58+10*cnt, 200,240,320);
  88.                 FloatPictureStatic( 48+10*cnt, 200, 18, 20,CHAR_E,cnt,save);
  89.                 ScreenShotsSave(  18, 20,Street,68+10*cnt, 200,240,320,save);//截圖保存
  90.                 ScreenShots( 78+10*cnt, 200, 18, 20,Street, 78+10*cnt, 200,240,320);
  91.                 FloatPictureStatic( 68+10*cnt, 200, 18, 20,CHAR_M,cnt,save);
  92.                
  93.                
  94. //                ScreenShotsSave(  18, 20,Street,30+10*cnt, 230,240,320,save);//截圖保存
  95. //                ScreenShots( 40+10*cnt, 230, 18, 20,Street, 40+10*cnt, 230,240,320);
  96. //                FloatPictureStatic( 30+10*cnt,230, 18, 20,CHAR_H,cnt,save);
  97. //                ScreenShotsSave(  18, 20,Street,48+10*cnt, 230,240,320,save);//截圖保存
  98. //                ScreenShots( 58+10*cnt, 230, 18, 20,Street, 58+10*cnt, 230,240,320);
  99. //                FloatPictureStatic( 48+10*cnt, 230, 18, 20,CHAR_U,cnt,save);
  100. //                ScreenShotsSave(  18, 20,Street,68+10*cnt, 230,240,320,save);//截圖保存
  101. //                ScreenShots( 78+10*cnt, 230, 18, 20,Street, 78+10*cnt, 230,240,320);
  102. //                FloatPictureStatic( 68+10*cnt, 230, 18, 20,CHAR_M,cnt,save);
  103.                 ScreenShotsSave(18, 20,Street,30, 230,240,320,save);//截圖保存
  104.                 FloatPictureStatic( 30,230, 18, 20,CHAR_H,cnt,save);
  105.                 ScreenShotsSave(  18, 20,Street,48, 230,240,320,save);//截圖保存
  106.                 FloatPictureStatic( 48, 230, 18, 20,CHAR_U,cnt,save);
  107.                 ScreenShotsSave(18, 20,Street,68, 230,240,320,save);//截圖保存
  108.                 FloatPictureStatic( 68, 230, 18, 20,CHAR_M,cnt,save);
  109.                
  110.                 delay_ms(80);        
  111.         }

  112.         for(cnt = 11,cnt2 = 0;cnt >= 0;cnt2 ++,cnt --)
  113.         {
  114.                 Disd(58,61, 54, 58,Smoke[cnt2]);
  115.                 if(cnt2 == 5)Disd(49,127, 34, 29,Ear[1]);        
  116.                 else if(cnt2 == 7)Disd(49,127, 34, 29,Ear[0]);
  117.                 else;//Ear
  118.                 Disd(86,157, 33, 35,Bread[cnt2]);
  119.                 Disd(152,121, 44, 42,Ping[cnt2]);
  120.                 if(cnt2 == 11)cnt2 = 0;
  121.                
  122.                 ScreenShotsSave(  18, 20,Street,30, 200,240,320,save);//截圖保存
  123.                 FloatPicture( 30,200, 18, 20,save,cnt);        
  124.                 ScreenShotsSave(  18, 20,Street,48, 200,240,320,save);//截圖保存
  125.                 FloatPicture( 48, 200, 18, 20,save,cnt);
  126.                 ScreenShotsSave(  18, 20,Street,68, 200,240,320,save);//截圖保存
  127.                 FloatPicture( 68, 200, 18, 20,save,cnt);
  128.                
  129.                 ScreenShotsSave( 18, 20,Street,30, 230,240,320,save);//截圖保存
  130.                 FloatPicture( 30,230, 18, 20,save,cnt);
  131.                 ScreenShotsSave( 18, 20,Street,48, 230,240,320,save);//截圖保存
  132.                 FloatPicture( 48, 230, 18, 20,save,cnt);
  133.                 ScreenShotsSave(  18, 20,Street,68, 230,240,320,save);//截圖保存
  134.                 FloatPicture( 68, 230, 18, 20,save,cnt);
  135.                
  136.                 delay_ms(80);        
  137.         }
  138. }


  139. while(1)        //浮動字體&動圖
  140. {
  141.         int cnt = 0;
  142.         for(cnt = 11;cnt >= 0;cnt --)
  143.         {
  144.                 Disd(58,61, 54, 58,Smoke[cnt]);
  145.                 if(cnt == 5)Disd(49,127, 34, 29,Ear[1]);        
  146.                 else if(cnt== 7)Disd(49,127, 34, 29,Ear[0]);
  147.                 else;//Ear
  148.                 Disd(86,157, 33, 35,Bread[cnt]);
  149.                 Disd(152,121, 44, 42,Ping[cnt]);
  150.                         
  151.                 ScreenShotsSave( 18, 20,Street,30, 200,240,320,save);//截圖保存
  152.                 FloatPictureStatic( 30,200, 18, 20,CHAR_T,cnt,save);
  153.                 ScreenShotsSave(18, 20,Street,48, 200,240,320,save);//截圖保存
  154.                 FloatPictureStatic( 48, 200, 18, 20,CHAR_E,cnt,save);
  155.                 ScreenShotsSave( 18, 20,Street,68, 200,240,320,save);//截圖保存
  156.                 FloatPictureStatic( 68, 200, 18, 20,CHAR_M,cnt,save);
  157.                
  158.                 ScreenShotsSave(18, 20,Street,30, 230,240,320,save);//截圖保存
  159.                 FloatPictureStatic( 30,230, 18, 20,CHAR_H,cnt,save);
  160.                 ScreenShotsSave(  18, 20,Street,48, 230,240,320,save);//截圖保存
  161.                 FloatPictureStatic( 48, 230, 18, 20,CHAR_U,cnt,save);
  162.                 ScreenShotsSave(18, 20,Street,68, 230,240,320,save);//截圖保存
  163.                 FloatPictureStatic( 68, 230, 18, 20,CHAR_M,cnt,save);
  164.                
  165.                 delay_ms(100);        
  166.         }
  167.         for(cnt = 11;cnt >= 0;cnt --)
  168.         {
  169.                 Disd(58,61, 54, 58,Smoke[cnt]);
  170.                 if(cnt == 5)Disd(49,127, 34, 29,Ear[1]);        
  171.                 else if(cnt == 7)Disd(49,127, 34, 29,Ear[0]);
  172.                 else;//Ear
  173.                 Disd(86,157, 33, 35,Bread[cnt]);
  174.                 Disd(152,121, 44, 42,Ping[cnt]);
  175.                
  176.                 ScreenShotsSave(  18, 20,Street,30, 200,240,320,save);//截圖保存
  177.                 FloatPicture( 30,200, 18, 20,save,cnt);        
  178.                 ScreenShotsSave( 18, 20,Street,48, 200,240,320,save);//截圖保存
  179.                 FloatPicture( 48, 200, 18, 20,save,cnt);
  180.                 ScreenShotsSave( 218, 20,Street,68, 200,240,320,save);//截圖保存
  181.                 FloatPicture( 68, 200, 18, 20,save,cnt);
  182.                
  183.                 ScreenShotsSave(  18, 20,Street,30, 230,240,320,save);//截圖保存
  184.                 FloatPicture( 30,230, 18, 20,save,cnt);
  185.                 ScreenShotsSave(  18, 20,Street,48, 230,240,320,save);//截圖保存
  186.                 FloatPicture( 48, 230, 18, 20,save,cnt);
  187.                 ScreenShotsSave(  18, 20,Street,68, 230,240,320,save);//截圖保存
  188.                 FloatPicture( 68, 230, 18, 20,save,cnt);
  189.                
  190.                 delay_ms(100);        
  191.         }
  192. }




  193. while(1)//動圖
  194. {
  195.         u8 j = 0;
  196.         for(count_i = 0;count_i < 12;count_i ++)
  197.         {
  198.                 delay_ms(100);        
  199.                 Disd(58,61, 54, 58,Smoke[count_i]);
  200.                 if(count_i == 5)Disd(49,127, 34, 29,Ear[1]);        
  201.                 else if(count_i == 7)Disd(49,127, 34, 29,Ear[0]);
  202.                 else;//Ear
  203.                 Disd(86,157, 33, 35,Bread[count_i]);
  204.                 Disd(152,121, 44, 42,Ping[count_i]);
  205. //                if(count_i == 1 || count_i == 8 )Disd(70,208, 17, 34,Fire[1]);        
  206. //                else if(count_i == 3  || count_i == 5  || count_i == 10)Disd(70,208, 17, 34,Fire[2]);               
  207. //                else Disd(70,208, 17, 34,Fire[0]);//Fire
  208.         }
  209. }
  210. }//main函數
復制代碼

所有資料51hei提供下載:
自己的函數 LCD嵌入透明截圖合成單圖等函數.rar (2.91 MB, 下載次數: 61)

回復

使用道具 舉報

ID:454393 發表于 2020-4-13 14:18 | 顯示全部樓層
視頻為啥是足球
回復

使用道具 舉報

ID:429780 發表于 2021-6-1 11:25 | 顯示全部樓層
可能這兄弟半夜寫完程序后,看世界杯,然后分享時把世界杯的鏈接當成設計視頻發上去了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人性生交大片免费看r链接 | jizz视频| 精品国产99| 久久精品一区二区 | www.色.com| 色婷婷久久 | 性高湖久久久久久久久aaaaa | 不卡的av一区 | 黑人中文字幕一区二区三区 | 久久精品国产一区二区电影 | av在线播放国产 | 午夜影视免费片在线观看 | 国内精品视频在线观看 | 免费激情网站 | 视频一二区 | 古装人性做爰av网站 | 日韩欧美高清 | 91麻豆精品国产91久久久久久久久 | 久草综合在线 | 国产精品久久久久久久久久 | 免费天天干 | 欧美日韩淫片 | 一区二区三区国产 | 国产特级毛片 | 青青草华人在线视频 | 久久久91| 91色视频在线观看 | 免费黄色的视频 | 艹逼网 | 国产欧美一区二区三区在线看 | 成人做爰www免费看 午夜精品久久久久久久久久久久 | 久久爱综合 | 亚洲一区二区电影网 | 国产精品久久久久久久久免费丝袜 | 国产精品成人一区二区三区 | 国产 亚洲 网红 主播 | 久久青青 | 欧美成人一区二区三区片免费 | 国产成人免费视频网站视频社区 | 久久精品国产一区 | 久久久久久国产精品三区 |