📄 yslcd.asm
字号:
;dot matrix character liquid crystal display moudule test program Ver 1.0
;special for HD44780,KS0066 driver,capable to 8x,16xx,20xx,40xxLCM.
;YUSUNG Electronic Limited Corporation,kch 1997-12-03
;该程序可测试各种字符点阵模块
ORG 0000H
AJMP MAIN
ORG 0300H
DB 58H,58H,58H,58H,58H,58H,58H,58H, ;58H---display X
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
DB 58H,58H,58H,58H,58H,58H,58H,58H,
ORG 0350H
DB 2AH,59H,55H,53H,55H,4EH,47H,2AH, ;2AH---*
DB 45H,4CH,45H,43H,2EH,4CH,54H,44H, ;*YUSUNG*ELEC.LTD
DB 2AH,44H,4FH,54H,2AH,4DH,41H,54H, ;*DOT*MATRIX*LCD*
DB 52H,49H,58H,2AH,4CH,43H,44H,2AH,
DB 4BH,65H,5AH,6FH,6EH,48H,75H,69H, ;KeZonHui
DB 2AH,59H,55H,53H,55H,4EH,47H,2AH, ;2AH---*
DB 45H,4CH,45H,43H,2EH,4CH,54H,44H, ;*YUSUNG*ELEC.LTD
DB 2AH,44H,4FH,54H,2AH,4DH,41H,54H, ;*DOT*MATRIX*LCD*
DB 52H,49H,58H,2AH,4CH,43H,44H,2AH,
DB 4BH,65H,5AH,6FH,6EH,48H,75H,69H, ;KeZonHui
DB 2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,
DB 44H,4FH,54H,20H,4DH,41H,54H,52H, ;2AH---*
DB 49H,58H,20H,4CH,49H,51H,55H,49H,
DB 44H,20H,43H,52H,59H,53H,54H,41H, ;DOT MATRIX LIQUID CRY
DB 4CH,20H,44H,49H,53H,50H,4CH,41H, ;STAL DISPLAY MOUDULE
DB 59H,20H,4DH,4FH,55H,44H,4CH,45H, ;*******************
DB 2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,
DB 2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,
DB 54H,4DH,0B0H,44H,4DH,43H,34H,30H, ;TM-DCM402
DB 32H,2AH,2AH,2AH,2AH,2AH,2AH,2AH,
DB 2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,
DB 2AH,2AH,2AH,2AH,2AH,2AH,2AH,2AH,
MAIN :
MOV SP, #60H ;Initial for the first display
MOV P1, #38H ;set function
LCALL WINST
MOV P1, #0EH ;set display on/off control
LCALL WINST
MOV P1, #06H ;set Entry mode
LCALL WINST
MOV P1, #01H ;clear display,write code 20h into all DDRAM
LCALL WINST
LCALL DELAY1
MOV DPTR, #0300H
MOV R0, #28H ;Set Pointer
MOV R2, #00H
MOV A, #00H
MOV P1, #80H ;set DDRAM address 0000h
LCALL WINST
LOOP1: MOVC A, @A+DPTR
MOV P1, A
LCALL WDATA
INC R2
MOV A, R2
DJNZ R0, LOOP1
MOV DPTR, #0328H
MOV R0, #28H
MOV R2, #00H
MOV A, #00H
MOV P1, #0C0H
LCALL WINST
LOOP2: MOVC A, @A+DPTR
MOV P1, A
LCALL WDATA
INC R2
MOV A, R2
DJNZ R0, LOOP2 ;The first display is over
LCALL DELAY2 ;paused about 5ms
MOV SP, #60H ;initial for the second display
MOV P1, #38H
LCALL WINST
MOV P1, #0EH
LCALL WINST
MOV P1, #06H
LCALL WINST
MOV P1, #01H
LCALL WINST
LCALL DELAY1
MOV DPTR, #0350H ;ready for the first line display
MOV R0, #28H
MOV R2, #00H
MOV A, #00H
MOV P1, #80H
LCALL WINST
LOOP3: MOVC A, @A+DPTR
MOV P1, A
LCALL WDATA
INC R2
MOV A, R2
DJNZ R0, LOOP3 ;THE first line display is over
MOV DPTR, #0378H ;ready for the second line display
MOV R0, #28H
MOV R2, #00H
MOV A, #00H
MOV P1, #0C0H
LCALL WINST
LOOP4: MOVC A, @A+DPTR
MOV P1, A
LCALL WDATA
INC R2
MOV A, R2
DJNZ R0, LOOP4 ;main program is end upto here
LOOP5: LCALL DELAY2
AJMP MAIN
WINST: CLR P3.0 ;write to instruction register
CLR P3.2
SETB P3.1
LCALL DELAY1
CLR P3.1
LCALL DELAY1
RET
WDATA: CLR P3.2 ;write to data register
SETB P3.0
SETB P3.1
LCALL DELAY1
CLR P3.1
LCALL DELAY1
RET
DELAY1: MOV 50H, #08H ;delay 1648 us
ADDR1: PUSH 50H
ADDR2: PUSH 50H
ADDR3: PUSH 50H
ADDR4: DJNZ 50H, ADDR4
POP 50H
DJNZ 50H, ADDR3
POP 50H
DJNZ 50H, ADDR2
POP 50H
DJNZ 50H, ADDR1
RET
DELAY2: MOV R0, #0CCH
MOV R2, #66H
ADDR5: LCALL DELAY1 ;delay ccH X 1648us
DJNZ R0, ADDR5
ADDR6: LCALL DELAY1 ;delay 66H X 1648us total 5.05ms
DJNZ R2, ADDR6
RET
END ;P1 port connect to Driver's db0--db7
;RS to P3.0; R/W to P3.2; E to P3.1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -