📄 tft.asm
字号:
SOFT_RESET EQU 0x01
SLEEP_OUT EQU 0x11
DISPLAY_ON EQU 0x29
BOOSTER_ON EQU 0x03
COLOR_INTERFACE EQU 0x3A
COLOR_8_BIT EQU 0x02
COLOR_12_BIT EQU 0x03
COLOR_16_BIT EQU 0x05
COLOR_SET EQU 0x2D
MEM_ACCESS_CTRL EQU 0x36
TFT_LIGHT_COMD EQU 0X25
MIRROR_X EQU 6
MIRROR_Y EQU 7
VERT_WRITE EQU 5
RGB EQU 3
MEM_WRITE EQU 0x2C
SET_X_ADDR EQU 0x2A
SET_Y_ADDR EQU 0x2B
DISP_X_START EQU 0
DISP_Y_START EQU 0
DISP_X_END EQU 131
DISP_Y_END EQU 131
RED EQU 0xE0
GREEN EQU 0x1C
BLUE EQU 0x03
YELLOW EQU 0xFC
MAGENTA EQU 0xE3
CYAN EQU 0x1F
BLACK EQU 0x00
WHITE EQU 0xFF
CS BIT P2.2
SCLK BIT P1.1
SDATA BIT P2.0
REST BIT P1.3
COMD DATA 0X30
DAT DATA 0X31
DELAYTEMP1 DATA 0X32
DELAYTEMP2 DATA 0X33
DELAYTEMP3 DATA 0X34
DELAYTEMP DATA 0X35
STARTX DATA 0X36
ENDX DATA 0X37
STARTY DATA 0X38
ENDY DATA 0X39
TEMP_H DATA 0X3A
TEMP_L DATA 0X3B
TFT_CLEAN_C DATA 0X3C
QUICK_S_DATA DATA 0X3D
ORG 0X0000
JMP MAIN
;**********************************************************
; 发送TFT操作命令 子程序
;**********************************************************
MAIN:
CALL TFT_INIT
SETB C
DIS:
MOV A,TFT_CLEAN_C
RRC A
MOV TFT_CLEAN_C,A
CALL TFT_CLEAN
JMP DIS
TFT_SEND_COMMAND:
CLR CS
CLR SCLK
CLR SDATA
SETB SCLK
CLR SCLK
MOV ACC,COMD
S_7: JB ACC.7,SET_DAT_7
CLR SDATA
JMP NX_7
SET_DAT_7:
SETB SDATA
NX_7:
SETB SCLK
CLR SCLK
S_6: JB ACC.6,SET_DAT_6
CLR SDATA
JMP NX_6
SET_DAT_6:
SETB SDATA
NX_6:
SETB SCLK
CLR SCLK
S_5: JB ACC.5,SET_DAT_5
CLR SDATA
JMP NX_5
SET_DAT_5:
SETB SDATA
NX_5:
SETB SCLK
CLR SCLK
S_4: JB ACC.4,SET_DAT_4
CLR SDATA
JMP NX_4
SET_DAT_4:
SETB SDATA
NX_4:
SETB SCLK
CLR SCLK
S_3: JB ACC.3,SET_DAT_3
CLR SDATA
JMP NX_3
SET_DAT_3:
SETB SDATA
NX_3:
SETB SCLK
CLR SCLK
S_2: JB ACC.2,SET_DAT_2
CLR SDATA
JMP NX_2
SET_DAT_2:
SETB SDATA
NX_2:
SETB SCLK
CLR SCLK
S_1: JB ACC.1,SET_DAT_1
CLR SDATA
JMP NX_1
SET_DAT_1:
SETB SDATA
NX_1:
SETB SCLK
CLR SCLK
S_0: JB ACC.0,SET_DAT_0
CLR SDATA
JMP NX_0
SET_DAT_0:
SETB SDATA
NX_0:
SETB SCLK
SETB CS
RET
QUICK_SEND_1:
CLR CS
CLR SCLK
SETB SDATA
SETB SCLK
CLR SCLK
CLR C
MOV A,QUICK_S_DATA
JNZ CLR_DA
SETB SDATA
JMP Q_M
CLR_DA:
CLR SDATA
Q_M:
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
SETB SCLK
CLR SCLK
RET
;**********************************************************
; 发送TFT操作数据 子程序
;**********************************************************
TFT_SEND_DATA:
CLR CS
CLR SCLK
SETB SDATA
SETB SCLK
CLR SCLK
MOV ACC,DAT
S_7_D: JB ACC.7,SET_DAT_7_D
CLR SDATA
JMP NX_7_D
SET_DAT_7_D:
SETB SDATA
NX_7_D:
SETB SCLK
CLR SCLK
S_6_D: JB ACC.6,SET_DAT_6_D
CLR SDATA
JMP NX_6_D
SET_DAT_6_D:
SETB SDATA
NX_6_D:
SETB SCLK
CLR SCLK
S_5_D: JB ACC.5,SET_DAT_5_D
CLR SDATA
JMP NX_5_D
SET_DAT_5_D:
SETB SDATA
NX_5_D:
SETB SCLK
CLR SCLK
S_4_D: JB ACC.4,SET_DAT_4_D
CLR SDATA
JMP NX_4_D
SET_DAT_4_D:
SETB SDATA
NX_4_D:
SETB SCLK
CLR SCLK
S_3_D: JB ACC.3,SET_DAT_3_D
CLR SDATA
JMP NX_3_D
SET_DAT_3_D:
SETB SDATA
NX_3_D:
SETB SCLK
CLR SCLK
S_2_D: JB ACC.2,SET_DAT_2_D
CLR SDATA
JMP NX_2_D
SET_DAT_2_D:
SETB SDATA
NX_2_D:
SETB SCLK
CLR SCLK
S_1_D: JB ACC.1,SET_DAT_1_D
CLR SDATA
JMP NX_1_D
SET_DAT_1_D:
SETB SDATA
NX_1_D:
SETB SCLK
CLR SCLK
S_0_D: JB ACC.0,SET_DAT_0_D
CLR SDATA
JMP NX_0_D
SET_DAT_0_D:
SETB SDATA
NX_0_D:
SETB SCLK
SETB CS
RET
;**********************************************************
; TFT 初始化显示设置 子程序
;**********************************************************
TFT_INIT:
CLR SDATA
CLR SCLK
SETB SDATA
SETB SCLK
CLR SDATA
CLR SCLK
SETB SDATA
SETB SCLK
SETB CS
SETB REST
MOV DELAYTEMP,#1
CALL DELAY_5MS
CLR REST
MOV DELAYTEMP,#1
CALL DELAY_5MS
SETB REST
SETB SDATA
SETB SCLK
SETB CS
MOV COMD,#SOFT_RESET
CALL TFT_SEND_COMMAND
MOV COMD,#SLEEP_OUT
CALL TFT_SEND_COMMAND
MOV COMD,#DISPLAY_ON
CALL TFT_SEND_COMMAND
MOV COMD,#BOOSTER_ON
CALL TFT_SEND_COMMAND
MOV DELAYTEMP,#10
CALL DELAY_5MS
MOV COMD,#COLOR_INTERFACE
CALL TFT_SEND_COMMAND
MOV DAT,#COLOR_8_BIT
CALL TFT_SEND_DATA
MOV COMD,#COLOR_SET
CALL TFT_SEND_COMMAND
;RED
MOV DAT,#0
CALL TFT_SEND_DATA
MOV DAT,#2
CALL TFT_SEND_DATA
MOV DAT,#3
CALL TFT_SEND_DATA
MOV DAT,#4
CALL TFT_SEND_DATA
MOV DAT,#5
CALL TFT_SEND_DATA
MOV DAT,#6
CALL TFT_SEND_DATA
MOV DAT,#8
CALL TFT_SEND_DATA
MOV DAT,#0X0F
CALL TFT_SEND_DATA
;GREE
MOV DAT,#0
CALL TFT_SEND_DATA
MOV DAT,#2
CALL TFT_SEND_DATA
MOV DAT,#3
CALL TFT_SEND_DATA
MOV DAT,#4
CALL TFT_SEND_DATA
MOV DAT,#5
CALL TFT_SEND_DATA
MOV DAT,#6
CALL TFT_SEND_DATA
MOV DAT,#8
CALL TFT_SEND_DATA
MOV DAT,#0X0F
CALL TFT_SEND_DATA
;BLUE
MOV DAT,#0
CALL TFT_SEND_DATA
MOV DAT,#3
CALL TFT_SEND_DATA
MOV DAT,#6
CALL TFT_SEND_DATA
MOV DAT,#0X0F
CALL TFT_SEND_DATA
MOV COMD,#MEM_ACCESS_CTRL ;显示方式选择 可以上下左右颠倒
CALL TFT_SEND_COMMAND
MOV DAT,#((RGB<<1)|0X80)
CALL TFT_SEND_DATA
MOV COMD,#TFT_LIGHT_COMD ;屏幕亮度选择
CALL TFT_SEND_COMMAND
MOV DAT,#40
CALL TFT_SEND_DATA
CALL TFT_CLEAN
RET
;**********************************************************
; 通用延迟DELAYTEMP*5MS 子程序
;**********************************************************
DELAY_5MS:
MOV DELAYTEMP1,DELAYTEMP
DELAY1: MOV DELAYTEMP2,#0X24
DELAY2: MOV DELAYTEMP3,#0XFE
DJNZ DELAYTEMP3,$
DJNZ DELAYTEMP2,DELAY2
DJNZ DELAYTEMP1,DELAY1
RET
;**********************************************************
; 设置目的点的X Y 坐标位置个窗口大小 子程序
;**********************************************************
TFT_SET_WINDOWS:
MOV COMD,#SET_X_ADDR
CALL TFT_SEND_COMMAND
MOV A,STARTX
INC A
MOV DAT,A
CALL TFT_SEND_DATA
MOV A,ENDX
INC A
MOV DAT,A
CALL TFT_SEND_DATA
MOV COMD,#SET_Y_ADDR
CALL TFT_SEND_COMMAND
MOV A,STARTY
INC A
MOV DAT,A
CALL TFT_SEND_DATA
MOV A,ENDY
INC A
MOV DAT,A
CALL TFT_SEND_DATA
RET
;**********************************************************
; 用指定的颜色清屏 子程序
;**********************************************************
TFT_CLEAN:
MOV STARTX,#DISP_X_START
MOV STARTY,#DISP_Y_START
MOV ENDX,# DISP_X_END
MOV ENDY,# DISP_Y_END
CALL TFT_SET_WINDOWS
MOV COMD,#MEM_WRITE
CALL TFT_SEND_COMMAND
MOV TEMP_H,#0X46
SEND_LOOP:
MOV TEMP_L,#0XFF
LOOP_1: MOV DAT,TFT_CLEAN_C
CALL TFT_SEND_DATA
DJNZ TEMP_L,LOOP_1
DJNZ TEMP_H,SEND_LOOP
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -