⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tft.asm

📁 51单片机驱动TFT彩色显示屏 可以学习51单片机熟悉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 + -