找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3881|回復(fù): 5
收起左側(cè)

單片機(jī)讀取25Q64內(nèi)的圖片數(shù)據(jù)在2.4寸彩屏上顯示 匯編源程序

[復(fù)制鏈接]
ID:261025 發(fā)表于 2022-1-23 18:13 | 顯示全部樓層 |閱讀模式
1,制作燒錄到25Q64 FLASH存儲(chǔ)器內(nèi)的字庫(kù)文件 hex格式 用單片機(jī)編程軟件就可以  只是有行數(shù)限制 如圖(有沒有不受行數(shù)限制的編譯器)
51hei截圖20220123172756.jpg 51hei截圖20220123172816.jpg

2,用編程器把hex文件燒錄到25Q64 FLASH存儲(chǔ)器內(nèi)  如果只是一個(gè)圖片 就不用查看要讀取的內(nèi)存地址 從0開始讀就可以
   如果是多個(gè)圖片就麻煩了 先用編程打開只有一個(gè)圖片的文件 下拉找到圖片最后一行記住內(nèi)存地址
   在打開有兩個(gè)圖片的文件 下拉找到第一個(gè)圖片最后一行內(nèi)存地址 下一行就是第二個(gè)圖片的開頭 記住這個(gè)地址 在程序里面需要填寫
   如果有多個(gè)圖片方法一樣  (有點(diǎn)麻煩 有沒有簡(jiǎn)單的方法)
   下圖里的00009910是第一個(gè)圖片的結(jié)尾一行  00009920是第二個(gè)圖片的開頭一行  只需記住后六位 009920  (前面兩位應(yīng)該是命令位)

51hei截圖20220123174027.jpg

由于編程器有行數(shù)限制  所以第二個(gè)圖片顯示的不全  后面的白色是25Q64內(nèi)的空白區(qū)域  顏色里兩個(gè)FF就是白色#0FFFFH
51hei截圖20220123170419.jpg   
這是我用的編程器
51hei截圖20220123173159.jpg

單片機(jī)匯編語(yǔ)言源程序如下:

  1. // 240*320 8位并口             ILI9341 RM68090
  2. // 用12C5A60S2 12M測(cè)試

  3.                                      AT25F_SCK  BIT P1.7 ;          25Q64
  4.                      AT25F_SI   BIT P1.6 ;
  5.                      AT25F_SO   BIT P1.5 ;
  6.                      AT25F_CS   BIT P1.4

  7.                                    TFT_CS      BIT   P1.3;                //片選        
  8.                    TFT_RS      BIT   P1.2;      //數(shù)據(jù)/命令切換
  9.                    TFT_WR      BIT   P1.1;                //寫控制
  10.                    TFT_RD      BIT   P1.0;                //讀控制
  11.                    RESET       BIT   P3.3;                 //復(fù)位

  12.                                    DAT_X_H_A   EQU      21H;           //     高8位   起始位   
  13.                                    DAT_X_L_A   EQU      22H;           //     低8位          起始位
  14.                                    DAT_X_H_B   EQU      23H;           //     高8位   結(jié)束位
  15.                                    DAT_X_L_B   EQU      24H;           //     低8位          結(jié)束位

  16.                                    DAT_Y_H_A   EQU      25H;           //     高8位   起始位   
  17.                                    DAT_Y_L_A   EQU      26H;           //     低8位          起始位
  18.                                    DAT_Y_H_B   EQU      27H;           //     高8位   結(jié)束位
  19.                                    DAT_Y_L_B   EQU      28H;           //     低8位          結(jié)束位

  20.                                    FLASH_1     EQU      29H;           //          FLASH 6位地址
  21.                                    FLASH_2     EQU      2AH;           //          地址格式 #000000H
  22.                                    FLASH_3     EQU      2BH;

  23.                                    DIP_VH           EQU      2DH;                橫屏 豎屏
  24.                                    FLAG        EQU      2EH;

  25.                                     DAT_H       EQU      42H;                高8位
  26.                                    DAT_L       EQU      43H;                低8位
  27. //-------------------------------------------------------------------------
  28.                    ORG 0000H;
  29.                    LJMP START;
  30.                    ORG 0100H;
  31. //-------------------------------------------------------------------------
  32. START:                            SETB FLAG
  33.                    LCALL REGISTER_SETTINGS;        配置屏幕  寫入預(yù)置數(shù)據(jù)
  34. //--------------------------------------------------------------------
  35. MAIN:                 
  36.                                    LCALL AT25F_SPIINIT
  37.                                 
  38.                                    MOV DAT_X_H_A,#00H               //     高8位   起始位          豎屏        寬   起始位+圖像寬-1=結(jié)束位
  39.                                    MOV DAT_X_L_A,#33H         //51   低8位
  40.                                    MOV DAT_X_H_B,#00H               //     高8位   結(jié)束位  
  41.                                    MOV DAT_X_L_B,#0BEH         //190   低8位

  42.                                    MOV DAT_Y_H_A,#00H         //     高8位   起始位          豎屏         高   起始位+圖像高-1=結(jié)束位
  43.                                    MOV DAT_Y_L_A,#0B4H         //180   低8位
  44.                                    MOV DAT_Y_H_B,#01H         //     高8位   結(jié)束位
  45.                                    MOV DAT_Y_L_B,#3FH         //319   低8位

  46.                    LCALL LCD_Set_X_Y; 設(shè)置區(qū)域
  47.                                    MOV FLASH_1,#00H;                                   
  48.                                    MOV FLASH_2,#00H;                                 
  49.                                    MOV FLASH_3,#00H;              地址#000000H;         
  50.                                    LCALL AT25F_SPI_READ
  51. //---------------------------------------------
  52.                                    MOV DAT_X_H_A,#00H               //     高8位   起始位          豎屏        寬   起始位+圖像寬-1=結(jié)束位
  53.                                    MOV DAT_X_L_A,#33H         //51   低8位
  54.                                    MOV DAT_X_H_B,#00H               //     高8位   結(jié)束位  
  55.                                    MOV DAT_X_L_B,#0BEH         //190   低8位

  56.                                    MOV DAT_Y_H_A,#00H         //     高8位   起始位          豎屏         高   起始位+圖像高-1=結(jié)束位
  57.                                    MOV DAT_Y_L_A,#0AH         //10   低8位
  58.                                    MOV DAT_Y_H_B,#00H         //     高8位   結(jié)束位
  59.                                    MOV DAT_Y_L_B,#95H         //149   低8位

  60.                    LCALL LCD_Set_X_Y; 設(shè)置區(qū)域
  61.                                    MOV FLASH_1,#00H;
  62.                                    MOV FLASH_2,#99H;                                 
  63.                                    MOV FLASH_3,#20H;              地址#009920H;   
  64.                                    LCALL AT25F_SPI_READ

  65.                    LJMP $;                                                                                   
  66. //--------------------------------------------------------------------
  67. AT25F_SPIINIT: ;初始化25T. SPI模式
  68.                      SETB  AT25F_CS
  69.                      CLR AT25F_SCK  ;必須要
  70. ;                     SETB AT25F_WP
  71. ;                     SETB AT25F_HOLD
  72.                      SETB AT25F_SO
  73.                      SETB AT25F_SI
  74.                      RET
  75. //--------------------------------------------------------------------
  76. AT25F_SPI_READ: ;連續(xù)讀25T存儲(chǔ)器
  77.                      CLR AT25F_CS

  78.                      MOV A,#03H ;    讀數(shù)據(jù)命令                  
  79.                      LCALL SPI_W1B;  寫入命令

  80.                                          MOV A,FLASH_1;
  81.                                          LCALL SPI_W1B;  寫入要讀取的地址
  82.                                          MOV A,FLASH_2;
  83.                                          LCALL SPI_W1B;  寫入要讀取的地址
  84.                                          MOV A,FLASH_3;
  85.                                          LCALL SPI_W1B;  寫入要讀取的地址

  86.                                          MOV R5,#140;              圖片高
  87. AT25F_SPI_READ_2:    MOV R6,#140;                   圖片寬
  88. AT25F_SPI_READ_1:         LCALL SPI_R1B;            讀數(shù)據(jù)
  89.                      MOV DAT_H,A;              暫存高8位
  90.                      LCALL SPI_R1B;            讀數(shù)據(jù)
  91.                      MOV DAT_L,A;              暫存低8位        
  92.                                              
  93.                      LCALL LCD_WR_DATA_16Bit;  寫入屏幕  

  94.                      DJNZ R6,AT25F_SPI_READ_1
  95.                      DJNZ R5,AT25F_SPI_READ_2
  96.                      SETB AT25F_CS
  97.                      RET
  98. //-----------------------------------------------------
  99. SPI_W1B: ;寫1字節(jié)                        
  100.                      MOV R4,#8
  101.                      CLR AT25F_SCK
  102. SPI_W1B_1:                         RLC A
  103.                      MOV AT25F_SI,C
  104.                      CLR AT25F_SCK   
  105.                      SETB AT25F_SCK
  106.                      DJNZ R4,SPI_W1B_1
  107.                      RET
  108. //-----------------------------------------------------
  109. SPI_R1B: ;讀1字節(jié)
  110.                      SETB AT25F_SI
  111.                      SETB AT25F_SO
  112.                      MOV R4,#8
  113. SPI_R1B_1:                     SETB AT25F_SCK         
  114.                      CLR AT25F_SCK
  115.                      MOV C,AT25F_SO
  116.                      RLC A
  117.                      DJNZ R4,SPI_R1B_1
  118.                      CLR AT25F_SCK
  119.                      RET
  120. //------------------------------------------------------------------------
  121. //------------------------------------------------------------------------
  122. //--------------------------------------------------------------------
  123. //全屏顯示顏色
  124. DISPLAY:           MOV R3,#00H;           寬清零
  125.                    MOV R2,#00H;           寬清零
  126. DISPLAY01:         MOV R4,#0F0H;          240
  127. DISPLAY02:              LCALL LCD_WR_DATA_16Bit;寫雙字節(jié)顯示數(shù)據(jù)
  128.                            DJNZ R4,DISPLAY02;        240列
  129.                            INC R3;
  130.                            CJNE R3,#00H,DISPLAY03;
  131.                            INC R2;
  132. DISPLAY03:         CJNE R2,#01H,DISPLAY01;                    高8位
  133.                    CJNE R3,#40H,DISPLAY01; 320行   低8位
  134.                    RET;         
  135. //--------------------------------------------------------------------
  136. DELAY1MS:   ;誤差 0us
  137.                    MOV R7,#01H
  138. DL1:                           MOV R6,#0DEH
  139. DL0:                           MOV R5,#0CH
  140.                    DJNZ R5,$
  141.                    DJNZ R6,DL0
  142.                    DJNZ R7,DL1
  143.                    RET
  144. DELAY10MS:   ;誤差 -0.000000000001us
  145.                    MOV R7,#07H
  146. DL3:                           MOV R6,#0A8H
  147. DL2:                           MOV R5,#18H
  148.                    DJNZ R5,$
  149.                    DJNZ R6,DL2
  150.                    DJNZ R7,DL3
  151.                    RET
  152. DELAY120MS:   ;誤差 -0.000000000007us
  153.                    MOV R7,#42H
  154. DL5:                           MOV R6,#52H
  155. DL4:                           MOV R5,#41H
  156.                    DJNZ R5,$
  157.                    DJNZ R6,DL4
  158.                    DJNZ R7,DL5
  159.                    MOV R5,#02H
  160.                    DJNZ R5,$
  161.                    NOP
  162.                    RET
  163. DELAY1S:   ;誤差 -0.000000000056us
  164.                    MOV R7,#47H
  165. DL7:                           MOV R6,#0A8H
  166. DL6:                           MOV R5,#0FAH
  167.                                DJNZ R5,$
  168.                                DJNZ R6,DL6
  169.                                DJNZ R7,DL7
  170.                                RET




  171. $INCLUDE (DIP_INIT.ASM)



  172.                                    END;
復(fù)制代碼
51hei.png

匯編語(yǔ)言程序: 讀25Q64內(nèi)圖片數(shù)據(jù) 2.4寸彩屏顯示 - 匯編.rar (33.14 KB, 下載次數(shù): 19)

評(píng)分

參與人數(shù) 2黑幣 +45 收起 理由
xianming + 5
admin + 40 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:983641 發(fā)表于 2022-2-18 12:29 | 顯示全部樓層
顯示速度如何?
回復(fù)

使用道具 舉報(bào)

ID:126422 發(fā)表于 2022-10-2 12:08 | 顯示全部樓層
請(qǐng)教樓主:
3.3V 電壓的25Q64怎樣與5V單片機(jī)管腳連接,(電平不一致),謝謝!
回復(fù)

使用道具 舉報(bào)

ID:261025 發(fā)表于 2022-10-2 13:26 | 顯示全部樓層
lijn 發(fā)表于 2022-10-2 12:08
請(qǐng)教樓主:
3.3V 電壓的25Q64怎樣與5V單片機(jī)管腳連接,(電平不一致),謝謝!

用100Ω電阻連接
回復(fù)

使用道具 舉報(bào)

ID:126422 發(fā)表于 2022-10-9 22:47 | 顯示全部樓層
請(qǐng)教樓主:
怎樣把一張240*320的圖片,寫入25Q64里面,用什么方式,或者軟件,謝謝!
回復(fù)

使用道具 舉報(bào)

ID:126422 發(fā)表于 2022-10-13 10:56 | 顯示全部樓層
經(jīng)過(guò)幾天的測(cè)試,1)用土豪金CH341A可以寫入25Q64,但只能一次性寫入,卻不能
寫入第二張圖片。2)用單片機(jī)編譯程序后,一張圖片代碼分幾次寫入。但需要人工計(jì)算好地址。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表