📄 51xp.asm
字号:
;=========================================
;***** 51制作Xp开机画面 ——测试 *****
;******** LCD:12232(SED1520) ********
;***** 作者: aki_studio@163.com *****
;=========================================
;设置缓存
CACHE_LCD_INS EQU 40H
CACHE_LCD_DAT EQU 41H
;LCD-PRINT入口
PAGE_LCD EQU 50H ;起始页
Y_COUNT_LCD EQU 51H ;页数
LINE_LCD EQU 52H ;起始列
X_COUNT_LCD EQU 53H ;列数
P_LOOP_LCD EQU 54H ;循环数
;LCD端口地址
ADDR_LCD_RD1 EQU 8100H ;E1读状态字
ADDR_LCD_INS1 EQU 8000H ;E1送指令
ADDR_LCD_DAT1 EQU 8200H ;E1送数据
;
ADDR_LCD_RD2 EQU 9100H ;E2读状态字
ADDR_LCD_INS2 EQU 9000H ;E2送指令
ADDR_LCD_DAT2 EQU 9200H ;E2送数据
;
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN: LCALL DELAY3
;===============程序开始运行==========================================================
START:
MOV R3,#0
LCALL INIT_LCD ;初始化LCD
;=====开机LOGO====
MOV DPTR,#TAB_XP1
LCALL LCD_3PAGE_DOT
LCALL PRINT1
MOV DPTR,#TAB_XP2
LCALL LCD_3PAGE_DOT
LCALL PRINT2
;
LCALL LCD_START_LOGO
;
SJMP START
;*******************************************;*******************************************
;************* 液晶子程序区 *************;*******************************************
;*******************初始化******************;*******************************************
INIT_LCD: MOV CACHE_LCD_INS,#11100010B ;复位
LCALL INS1
LCALL INS2
MOV CACHE_LCD_INS,#10100100B ;正常模式
LCALL INS1
LCALL INS2
MOV CACHE_LCD_INS,#10101001B ;1/32
LCALL INS1
LCALL INS2
MOV CACHE_LCD_INS,#10100000B ;正向排序0
LCALL INS1
LCALL INS2
MOV CACHE_LCD_INS,#10101111B ;开屏
LCALL INS1
LCALL INS2
MOV PAGE_LCD,#0 ;清屏
LCALL CLR_P
RET
;=========清屏==========
CLR_P: MOV A,PAGE_LCD
ORL A,#0B8H
MOV CACHE_LCD_INS,A ;起始页0
LCALL INS1
LCALL INS2
MOV CACHE_LCD_INS,#0C0H ;行
LCALL INS1
LCALL INS2
MOV CACHE_LCD_INS,#0 ;起始列0
LCALL INS1
LCALL INS2
;
MOV R4,#61
CLRP: MOV CACHE_LCD_DAT,#00H ;;;;;;;;;;
LCALL DAT1
LCALL DAT2
DJNZ R4,CLRP
INC PAGE_LCD
MOV A,PAGE_LCD
CJNE A,#04H,CLR_P
RET
;=========显示==========
;显示E1
PRINT1: MOV R1,#0 ;起始指针
DISP1: MOV A,PAGE_LCD
ORL A,#0B8H
MOV CACHE_LCD_INS,A ;页
LCALL INS1
MOV CACHE_LCD_INS,#0C0H ;行
LCALL INS1
MOV CACHE_LCD_INS,LINE_LCD ;列
LCALL INS1
MOV R4,X_COUNT_LCD
DIS_P1: MOV A,R1
MOVC A,@A+DPTR
MOV CACHE_LCD_DAT,A
LCALL DAT1
INC R1
DJNZ R4,DIS_P1
MOV R4,X_COUNT_LCD
INC PAGE_LCD
INC P_LOOP_LCD
MOV A,P_LOOP_LCD
CJNE A,Y_COUNT_LCD,DISP1
RET
;显示E2
PRINT2: MOV R1,#0 ;起始指针
DISP2: MOV A,PAGE_LCD
ORL A,#0B8H
MOV CACHE_LCD_INS,A ;页
LCALL INS2
MOV CACHE_LCD_INS,#0C0H ;行
LCALL INS2
MOV CACHE_LCD_INS,LINE_LCD ;列
LCALL INS2
MOV R4,X_COUNT_LCD
DIS_P2: MOV A,R1
MOVC A,@A+DPTR
MOV CACHE_LCD_DAT,A
LCALL DAT2
INC R1
DJNZ R4,DIS_P2
MOV R4,X_COUNT_LCD
INC PAGE_LCD
INC P_LOOP_LCD
MOV A,P_LOOP_LCD
CJNE A,Y_COUNT_LCD,DISP2
RET
;显示LOGO1
PRINT_LOGO1: MOV PAGE_LCD,#3 ;起始页
MOV Y_COUNT_LCD,#1 ;页数
MOV LINE_LCD,#45 ;起始列
MOV X_COUNT_LCD,#16 ;列数
MOV P_LOOP_LCD,#0
LCALL PRINT1
RET
;显示LOGO2
PRINT_LOGO2: MOV PAGE_LCD,#3 ;起始页
MOV Y_COUNT_LCD,#1 ;页数
MOV LINE_LCD,#0 ;起始列
MOV X_COUNT_LCD,#16 ;列数
MOV P_LOOP_LCD,#0
LCALL PRINT2
RET
;===========开机LOGO==============
LCD_START_LOGO: MOV R5,#3
LOGO_LOOP:
MOV DPTR,#TAB_SPEED1
LCALL PRINT_LOGO1
;
MOV DPTR,#TAB_SPEED0
LCALL PRINT_LOGO2
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED2
LCALL PRINT_LOGO1
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED3
LCALL PRINT_LOGO1
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED4
LCALL PRINT_LOGO1
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED5
LCALL PRINT_LOGO1
;
MOV DPTR,#TAB_SPEED6
LCALL PRINT_LOGO2
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED1
LCALL PRINT_LOGO1
;
MOV DPTR,#TAB_SPEED7
LCALL PRINT_LOGO2
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED8
LCALL PRINT_LOGO2
LCALL DELAY3
;
MOV DPTR,#TAB_SPEED9
LCALL PRINT_LOGO2
LCALL DELAY3
DJNZ R5,LOGO_LOOP
;===============
;
MOV DPTR,#TAB_WELCOME1
LCALL LCD_4PAGE_DOT
LCALL PRINT1
MOV DPTR,#TAB_WELCOME2
LCALL LCD_4PAGE_DOT
LCALL PRINT2
;
LCALL DELAY3
RET
;=========================
LCD_4PAGE_DOT: MOV PAGE_LCD,#0 ;起始页
MOV Y_COUNT_LCD,#4 ;页数
MOV LINE_LCD,#0 ;起始列
MOV X_COUNT_LCD,#61 ;列数
MOV P_LOOP_LCD,#0
RET
;
LCD_3PAGE_DOT: MOV PAGE_LCD,#0 ;起始页
MOV Y_COUNT_LCD,#3 ;页数
MOV LINE_LCD,#0 ;起始列
MOV X_COUNT_LCD,#61 ;列数
MOV P_LOOP_LCD,#0
RET
;=================================
;指令E1
INS1: PUSH DPL
PUSH DPH
MOV DPTR,#ADDR_LCD_RD1
LCALL TEST_CLD_BUSY
MOV DPTR,#ADDR_LCD_INS1
MOV A,CACHE_LCD_INS ;取指令码
MOVX @DPTR,A
POP DPH
POP DPL
RET
;数据E1
DAT1: PUSH DPL
PUSH DPH
MOV DPTR,#ADDR_LCD_RD1
LCALL TEST_CLD_BUSY
MOV DPTR,#ADDR_LCD_DAT1
MOV A,CACHE_LCD_DAT ;取数据码
MOVX @DPTR,A
POP DPH
POP DPL
RET
;=================================
;指令E2
INS2: PUSH DPL
PUSH DPH
MOV DPTR,#ADDR_LCD_RD2
LCALL TEST_CLD_BUSY
MOV DPTR,#ADDR_LCD_INS2
MOV A,CACHE_LCD_INS ;取指令码
MOVX @DPTR,A
POP DPH
POP DPL
RET
;数据E2
DAT2: PUSH DPL
PUSH DPH
MOV DPTR,#ADDR_LCD_RD2
LCALL TEST_CLD_BUSY
MOV DPTR,#ADDR_LCD_DAT2
MOV A,CACHE_LCD_DAT ;取数据码
MOVX @DPTR,A
POP DPH
POP DPL
RET
;=================================
TEST_CLD_BUSY: MOVX A,@DPTR
JB ACC.7,TEST_CLD_BUSY
RET
;*******************************************;*******************************************
;*******************************************;*******************************************
;*******************************************;*******************************************
;=========延时入口R2;占用R6、R7==========
DELAY: MOV R6,#250
MOV R7,#250
DJNZ R7,$
DJNZ R6,$
DJNZ R2,DELAY
RET
;=========无入口;占用R6、R7==========
DELAY2: MOV R6,#250
MOV R7,#250
DJNZ R7,$
DJNZ R6,$
RET
;=========无入口;占用R2、R6、R7==========
DELAY3: MOV R2,#255
LCALL DELAY
RET
;=========字表==========
TAB_XP1:
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,030H,0BEH,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,0E0H,0E0H,080H,0F0H,060H,060H,0E0H,060H,060H,060H,000H
DB 060H,060H,0F0H,060H,000H,000H,078H,03FH,03FH,03FH,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 01CH,070H,0C0H,070H,038H,0C0H,070H,01CH,000H,0F4H,004H,0E0H,010H,010H,0F0H,000H
DB 0E0H,090H,090H,07CH,000H,0E0H,090H
TAB_XP2:
DB 0BFH,0BFH,03FH,07FH,07EH,0FEH,00EH,0E0H,0F8H,0FCH,0FCH,0F8H,0F0H,0F0H,0F0H,030H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,03FH,07FH,0FFH
DB 07FH,00EH,0E0H,0FCH,0FDH,0FBH,0FBH,0FBH,0F7H,0F7H,017H,001H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,090H,070H,000H,0F0H,081H,0C1H
DB 071H,083H,0F3H,007H,0B7H,0ABH,0E8H,000H,022H,014H,008H,036H,000H,03EH,00AH,00AH
DB 006H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H
TAB_SPEED1:
DB 07CH,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H
TAB_SPEED2:
DB 07CH,082H,0BAH,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H
TAB_SPEED3:
DB 07CH,082H,082H,0BAH,0BAH,082H,0BAH,0BAH,082H,082H,082H,082H,082H,082H,082H,082H
TAB_SPEED4:
DB 07CH,082H,082H,082H,082H,082H,0BAH,0BAH,082H,0BAH,0BAH,082H,0BAH,0BAH,082H,082H
TAB_SPEED5:
DB 07CH,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,0BAH,0BAH,082H,0BAH
TAB_SPEED6:
DB 0BAH,082H,0BAH,0BAH,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,07CH
TAB_SPEED7:
DB 082H,082H,0BAH,0BAH,082H,0BAH,0BAH,082H,0BAH,0BAH,082H,082H,082H,082H,082H,07CH
TAB_SPEED8:
DB 082H,082H,082H,082H,082H,082H,082H,082H,0BAH,0BAH,082H,0BAH,0BAH,082H,082H,07CH
TAB_SPEED9:
DB 082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,0BAH,082H,07CH
TAB_SPEED0:
DB 082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,082H,07CH
TAB_WELCOME1:
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,080H,080H,080H,080H,080H
DB 080H,080H,080H,080H,080H,0C0H,0C0H,080H,080H,080H,080H,080H,080H,080H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,030H,0F0H,0F0H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,007H,007H,007H,0FFH,0FBH,00BH,003H,003H
DB 003H,0F3H,0FFH,03FH,003H,000H,000H,000H,000H,0FCH,0FCH,000H,000H,000H,080H,080H
DB 0C0H,0C0H,000H,000H,000H,000H,0FCH,07FH,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,03FH,0FFH,0C0H,0C0H,070H,03CH,00FH,0FFH
DB 0F8H,080H,0C0H,0F0H,07CH,03FH,007H,000H,000H,0FCH,0FFH,007H,084H,007H,003H,000H
DB 000H,000H,0FCH,0FFH,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,003H,003H,003H,000H,000H,000H,000H,003H,003H,003H
DB 000H,000H,000H,000H,000H,000H,003H,003H,003H,003H,000H,000H,000H,000H,000H,003H
DB 003H,000H,000H,000H
TAB_WELCOME2:
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 080H,080H,0C0H,000H,000H,000H,000H,080H,080H,080H,000H,000H,000H,000H,000H,0C0H
DB 0C0H,000H,000H,080H,0C0H,0C0H,000H,000H,080H,0C0H,040H,000H,000H,000H,000H,080H
DB 080H,0C0H,0C0H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,0FCH,0FFH,083H,080H,000H
DB 000H,000H,0FCH,0FFH,003H,0C0H,07FH,00FH,000H,000H,000H,0C0H,0FFH,03FH,004H,003H
DB 0F3H,0FFH,00FH,004H,083H,0FFH,03FH,000H,000H,000H,0FCH,0FFH,007H,084H,007H,003H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,003H,003H,000H,000H,000H,000H,003H
DB 003H,003H,000H,000H,000H,000H,000H,000H,003H,000H,000H,000H,000H,003H,000H,000H
DB 000H,003H,003H,000H,000H,000H,000H,003H,003H,003H,003H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -