|
1,制作燒錄到25Q64 FLASH存儲(chǔ)器內(nèi)的字庫(kù)文件 hex格式 用單片機(jī)編程軟件就可以 只是有行數(shù)限制 如圖(有沒有不受行數(shù)限制的編譯器)
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)該是命令位)
由于編程器有行數(shù)限制 所以第二個(gè)圖片顯示的不全 后面的白色是25Q64內(nèi)的空白區(qū)域 顏色里兩個(gè)FF就是白色#0FFFFH
這是我用的編程器
單片機(jī)匯編語(yǔ)言源程序如下:
-
- // 240*320 8位并口 ILI9341 RM68090
- // 用12C5A60S2 12M測(cè)試
- AT25F_SCK BIT P1.7 ; 25Q64
- AT25F_SI BIT P1.6 ;
- AT25F_SO BIT P1.5 ;
- AT25F_CS BIT P1.4
- TFT_CS BIT P1.3; //片選
- TFT_RS BIT P1.2; //數(shù)據(jù)/命令切換
- TFT_WR BIT P1.1; //寫控制
- TFT_RD BIT P1.0; //讀控制
- RESET BIT P3.3; //復(fù)位
- DAT_X_H_A EQU 21H; // 高8位 起始位
- DAT_X_L_A EQU 22H; // 低8位 起始位
- DAT_X_H_B EQU 23H; // 高8位 結(jié)束位
- DAT_X_L_B EQU 24H; // 低8位 結(jié)束位
- DAT_Y_H_A EQU 25H; // 高8位 起始位
- DAT_Y_L_A EQU 26H; // 低8位 起始位
- DAT_Y_H_B EQU 27H; // 高8位 結(jié)束位
- DAT_Y_L_B EQU 28H; // 低8位 結(jié)束位
- FLASH_1 EQU 29H; // FLASH 6位地址
- FLASH_2 EQU 2AH; // 地址格式 #000000H
- FLASH_3 EQU 2BH;
- DIP_VH EQU 2DH; 橫屏 豎屏
- FLAG EQU 2EH;
- DAT_H EQU 42H; 高8位
- DAT_L EQU 43H; 低8位
- //-------------------------------------------------------------------------
- ORG 0000H;
- LJMP START;
- ORG 0100H;
- //-------------------------------------------------------------------------
- START: SETB FLAG
- LCALL REGISTER_SETTINGS; 配置屏幕 寫入預(yù)置數(shù)據(jù)
- //--------------------------------------------------------------------
- MAIN:
- LCALL AT25F_SPIINIT
-
- MOV DAT_X_H_A,#00H // 高8位 起始位 豎屏 寬 起始位+圖像寬-1=結(jié)束位
- MOV DAT_X_L_A,#33H //51 低8位
- MOV DAT_X_H_B,#00H // 高8位 結(jié)束位
- MOV DAT_X_L_B,#0BEH //190 低8位
- MOV DAT_Y_H_A,#00H // 高8位 起始位 豎屏 高 起始位+圖像高-1=結(jié)束位
- MOV DAT_Y_L_A,#0B4H //180 低8位
- MOV DAT_Y_H_B,#01H // 高8位 結(jié)束位
- MOV DAT_Y_L_B,#3FH //319 低8位
- LCALL LCD_Set_X_Y; 設(shè)置區(qū)域
- MOV FLASH_1,#00H;
- MOV FLASH_2,#00H;
- MOV FLASH_3,#00H; 地址#000000H;
- LCALL AT25F_SPI_READ
- //---------------------------------------------
- MOV DAT_X_H_A,#00H // 高8位 起始位 豎屏 寬 起始位+圖像寬-1=結(jié)束位
- MOV DAT_X_L_A,#33H //51 低8位
- MOV DAT_X_H_B,#00H // 高8位 結(jié)束位
- MOV DAT_X_L_B,#0BEH //190 低8位
- MOV DAT_Y_H_A,#00H // 高8位 起始位 豎屏 高 起始位+圖像高-1=結(jié)束位
- MOV DAT_Y_L_A,#0AH //10 低8位
- MOV DAT_Y_H_B,#00H // 高8位 結(jié)束位
- MOV DAT_Y_L_B,#95H //149 低8位
- LCALL LCD_Set_X_Y; 設(shè)置區(qū)域
- MOV FLASH_1,#00H;
- MOV FLASH_2,#99H;
- MOV FLASH_3,#20H; 地址#009920H;
- LCALL AT25F_SPI_READ
- LJMP $;
- //--------------------------------------------------------------------
- AT25F_SPIINIT: ;初始化25T. SPI模式
- SETB AT25F_CS
- CLR AT25F_SCK ;必須要
- ; SETB AT25F_WP
- ; SETB AT25F_HOLD
- SETB AT25F_SO
- SETB AT25F_SI
- RET
- //--------------------------------------------------------------------
- AT25F_SPI_READ: ;連續(xù)讀25T存儲(chǔ)器
- CLR AT25F_CS
- MOV A,#03H ; 讀數(shù)據(jù)命令
- LCALL SPI_W1B; 寫入命令
- MOV A,FLASH_1;
- LCALL SPI_W1B; 寫入要讀取的地址
- MOV A,FLASH_2;
- LCALL SPI_W1B; 寫入要讀取的地址
- MOV A,FLASH_3;
- LCALL SPI_W1B; 寫入要讀取的地址
- MOV R5,#140; 圖片高
- AT25F_SPI_READ_2: MOV R6,#140; 圖片寬
- AT25F_SPI_READ_1: LCALL SPI_R1B; 讀數(shù)據(jù)
- MOV DAT_H,A; 暫存高8位
- LCALL SPI_R1B; 讀數(shù)據(jù)
- MOV DAT_L,A; 暫存低8位
-
- LCALL LCD_WR_DATA_16Bit; 寫入屏幕
- DJNZ R6,AT25F_SPI_READ_1
- DJNZ R5,AT25F_SPI_READ_2
- SETB AT25F_CS
- RET
- //-----------------------------------------------------
- SPI_W1B: ;寫1字節(jié)
- MOV R4,#8
- CLR AT25F_SCK
- SPI_W1B_1: RLC A
- MOV AT25F_SI,C
- CLR AT25F_SCK
- SETB AT25F_SCK
- DJNZ R4,SPI_W1B_1
- RET
- //-----------------------------------------------------
- SPI_R1B: ;讀1字節(jié)
- SETB AT25F_SI
- SETB AT25F_SO
- MOV R4,#8
- SPI_R1B_1: SETB AT25F_SCK
- CLR AT25F_SCK
- MOV C,AT25F_SO
- RLC A
- DJNZ R4,SPI_R1B_1
- CLR AT25F_SCK
- RET
- //------------------------------------------------------------------------
- //------------------------------------------------------------------------
- //--------------------------------------------------------------------
- //全屏顯示顏色
- DISPLAY: MOV R3,#00H; 寬清零
- MOV R2,#00H; 寬清零
- DISPLAY01: MOV R4,#0F0H; 240
- DISPLAY02: LCALL LCD_WR_DATA_16Bit;寫雙字節(jié)顯示數(shù)據(jù)
- DJNZ R4,DISPLAY02; 240列
- INC R3;
- CJNE R3,#00H,DISPLAY03;
- INC R2;
- DISPLAY03: CJNE R2,#01H,DISPLAY01; 高8位
- CJNE R3,#40H,DISPLAY01; 320行 低8位
- RET;
- //--------------------------------------------------------------------
- DELAY1MS: ;誤差 0us
- MOV R7,#01H
- DL1: MOV R6,#0DEH
- DL0: MOV R5,#0CH
- DJNZ R5,$
- DJNZ R6,DL0
- DJNZ R7,DL1
- RET
- DELAY10MS: ;誤差 -0.000000000001us
- MOV R7,#07H
- DL3: MOV R6,#0A8H
- DL2: MOV R5,#18H
- DJNZ R5,$
- DJNZ R6,DL2
- DJNZ R7,DL3
- RET
- DELAY120MS: ;誤差 -0.000000000007us
- MOV R7,#42H
- DL5: MOV R6,#52H
- DL4: MOV R5,#41H
- DJNZ R5,$
- DJNZ R6,DL4
- DJNZ R7,DL5
- MOV R5,#02H
- DJNZ R5,$
- NOP
- RET
- DELAY1S: ;誤差 -0.000000000056us
- MOV R7,#47H
- DL7: MOV R6,#0A8H
- DL6: MOV R5,#0FAH
- DJNZ R5,$
- DJNZ R6,DL6
- DJNZ R7,DL7
- RET
- $INCLUDE (DIP_INIT.ASM)
- END;
復(fù)制代碼
匯編語(yǔ)言程序:
讀25Q64內(nèi)圖片數(shù)據(jù) 2.4寸彩屏顯示 - 匯編.rar
(33.14 KB, 下載次數(shù): 19)
2022-1-23 18:11 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|