📄 lcd2001.asm
字号:
;程序名:MCU2005
;功 能:XPH-3实验板液晶演示程序
;时 间:2005年6月
;字 模:阴码、逆向、列行式
;Designed by PP.T
;信号引脚及常量定义
LCDIR EQU 0C000H
LCDDR EQU 0E000H
cs1 BIT p3.5
CS2 BIT P1.0
RST BIT P2.6
XADR EQU 0B8H
YADR EQU 40H
X EQU 23H
Y EQU 24H
RAM EQU 22H
ORG 00H
JMP START
;主程序
START:
;初始化
MOV SP,#60H
CLR RST
CALL DELAY
SETB RST
SETB CS1
SETB CS2
MOV RAM,#3FH
CALL PUTIR
MOV RAM,#0C0H
CALL PUTIR
;清屏
CALL CLEAR
CALL CLEAR
;显示字符
MOV X,#01H
MOV Y,#14H
MOV DPTR,#tb1
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb2
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb3
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb4
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb5
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb6
CALL DISP
CALL DELAY5
CALL DELAY5
;显示EDA-IV实验系统
MOV X,#04H
MOV Y,#0bH
MOV DPTR,#tb7
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tbA
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb9
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb10
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb11
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb12
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#tb13
CALL DISP
CALL DELAY5
CALL DELAY5
;MOV X,#04H
;MOV Y,#69H
;MOV DPTR,#tb14
;CALL DISP
;CALL DELAY6
;停机
LJMP START
;模块名:DISP
;参 数:X,Y - 坐标
; DPTR - 地址
;功 能:在X,Y的坐标显示一个16*16点阵的汉字或字符
;注 意:字模方向为 列行式,逆向
DISP:
;暂存坐标
PUSH X
PUSH Y
;行坐标
MOV R6,X
;共两行
MOV R4,#02H
ROW:
;列坐标
MOV R7,Y
;设置片选信号
SETB CS1 ;设置为左边区域(默认)
CLR CS2
;CALL DELAY
CLR C ;判断显示的区域
MOV A,Y
SUBB A,#40H
JC ADDR
;设置为右边区域
MOV R7,A
CLR CS1
SETB CS2
;CALL DELAY
;计算字符显示位置的起始地址
ADDR:
;显示一行
MOV R5,#10H ; 16 列
COL:
CLR A
MOV A,#XADR ;计算X坐标
ADD A,R6
MOV RAM,A ;保存X坐标对应的地址
CALL PUTIR
MOV A,#YADR ;计算Y坐标对应的地址
ADD A,R7
MOV RAM,A ;保存Y坐标
CALL PUTIR
CLR A
MOVC A,@A+DPTR;写一列数据
MOV RAM,A
CALL PUTCHR
INC DPTR ;修改指针
INC R7 ;修改Y地址
CLR C ;检测是否超过#3F
MOV A,R7
SUBB A,#40H
JC NEXT ;检测是否溢出
;溢出
CLR C ;检测是哪个边界溢出
MOV C,CS1 ;检测左边界
JNC RIGHT
;左边界越界选通右边区域
MOV R7,A
CLR CS1
;CALL DELAY1
SETB CS2
SJMP NEXT
;右边界越界选通左边区域
RIGHT:
MOV R7,A
SETB CS1
;CALL DELAY1
CLR CS2
NEXT:DJNZ R5,COL ;判断是否已显示完一行?
INC R6 ;计算下一行地址
DJNZ R4,ROW ;全部显示完了吗?
;恢复片选信号
CLR CS1
CLR CS2
POP Y
POP X
RET
;模块名:PUTIR
;参 数:无
;功 能:向液晶发送写指令命令
;时 间:2004年7月
PUTIR:
PUSH DPH
PUSH DPL
CALL BUSY
MOV DPTR,#LCDIR
MOV A,RAM
MOVX @DPTR,A
POP DPL
POP DPH
RET
;模块名:PUTCHR
;参 数:无
;功 能:向液晶发送写数据命令
;时 间:2004年7月
PUTCHR:
PUSH DPH
PUSH DPL
CALL BUSY
MOV DPTR,#LCDDR
MOV A,RAM
MOVX @DPTR,A
POP DPL
POP DPH
RET
;模块名:BUSY
;参 数:无
;功 能:检测液晶忙状态
;时 间:2004年7月
BUSY:
MOV DPTR,#LCDIR
BUSY1: MOVX A,@DPTR
ANL A,#80H
XRL A,#80H
JZ BUSY1
RET
;模块名:CLEAR
;参 数:无
;功 能:清屏
;时 间:2004年7月
CLEAR:
SETB CS1
SETB CS2
MOV R2,#08
MOV R4,#00
CLR0: MOV A,R4
ADD A,#XADR
MOV RAM,A
CALL PUTIR
MOV RAM,#YADR
CALL PUTIR
MOV R3,#64
CLR1: MOV RAM,#00H
CALL PUTCHR
DJNZ R3,CLR1
INC R4
DJNZ R2,CLR0
MOV RAM,#YADR
CALL PUTIR
MOV RAM,#XADR
CALL PUTIR
CLR CS1
CLR CS2
RET
DELAY6: MOV R5,#04FH
D6: MOV R6,#0FFH
D7: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,D7
DJNZ R5,D6
RET
DELAY5: MOV R6,#07FH
D5: MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,D5
RET
;模块名:DELAY
;参 数:无
;功 能:延时
;时 间:2004年7月
DELAY: MOV R6,#8
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
;模块名:DELAY1
;参 数:无
;功 能:延时
;时 间:2004年7月
DELAY1: MOV R6,#2
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
RET
;====字模====
tb1:
DB 00H, 0FEH,02H,12H,12H,12H,92H,72H,0FEH,12H,12H,12H,02H,0FEH,00H,00H ;
DB 00H,0FFH,48H,44H,42H,41H,50H,60H,5FH,40H,40H,40H,40H,0FFH,00H,00H ; "团" 0
tb2:
DB 20H,30H,0ACH,63H,10H,00H,08H,48H,48H,48H,7FH,48H,48H,48H,08H,00H ;
DB 22H,23H,22H,12H,12H,00H,00H,7EH,22H,22H,22H,22H,22H,7EH,00H,00H ; "结" 1
tb3:
DB 04H,0E4H,24H,25H,26H,24H,0E4H,24H,20H,0E0H,3FH,0E0H,22H,2CH,20H,00H ;
DB 20H,11H,4DH,81H,7FH,05H,59H,20H,18H,07H,00H,3FH,40H,40H,70H,00H ; "就" 2
tb4:
DB 80H,80H,80H,80H,0BEH,0AAH,0AAH,0AAH,0AAH,0AAH,0AAH,0BEH,80H,80H,80H,00H ;
DB 00H,40H,20H,10H,0EH,10H,20H,3FH,44H,44H,44H,44H,44H,40H,40H,00H ; "是" 3
tb5:
DB 00H,10H,10H,10H,10H,10H,10H,0FFH,10H,10H,10H,10H,10H,0F0H,00H,00H ;
DB 00H,00H,80H,40H,20H,18H,06H,01H,00H,00H,40H,80H,40H,3FH,00H,00H ; "力" 4
tb6:
DB 40H,40H,40H,0DFH,55H,55H,55H,0D5H,55H,55H,55H,0DFH,40H,40H,40H,00H ;
DB 40H,40H,40H,57H,55H,55H,55H,7FH,55H,55H,55H,57H,50H,40H,40H,00H ; "量" 5
tb7:
DB 02H,0F2H,12H,12H,1EH,00H,80H,80H,0FFH,0A0H,90H,88H,86H,84H,80H,00H ;
DB 01H,03H,41H,81H,7FH,00H,00H,40H,0FFH,40H,23H,0CH,10H,60H,20H,00H ; "张" 6
tbA:
DB 00H,0F8H,00H,0FFH,00H,0F8H,0A0H,0B0H,0ACH,0A7H,0E4H,0B4H,0ACH,0E4H,80H,00H ;
DB 10H,3FH,10H,1FH,08H,0FH,00H,04H,44H,84H,7FH,04H,04H,07H,00H,00H ; "峥" 7
tb9:
DB 10H,4CH,44H,44H,44H,44H,0C5H,00FEH,0C4H,44H,44H,44H,54H,4CH,04H,00H ;
DB 00H,20H,10H,08H,04H,03H,00H,7FH,01H,02H,04H,08H,10H,30H,10H,00H ; "宋" 8
tb10:
DB 40H,48H,48H,48H,0FFH,48H,48H,82H,0C2H,0BEH,82H,00A2H,0C2H,0BEH,00H,00H ;
DB 60H,1FH,20H,40H,7FH,42H,42H,40H,5FH,48H,48H,48H,48H,5FH,40H,00H ; "超" 9
tb11:
DB 10H,12H,0D2H,0FEH,91H,11H,80H,0BFH,0A1H,0A1H,0A1H,0A1H,0BFH,80H,00H,00H ;
DB 04H,03H,00H,0FFH,00H,41H,44H,44H,44H,7FH,44H,44H,44H,44H,40H,00H ; "程" 10
tb12:
DB 10H,88H,0E4H,3BH,12H,04H,0F4H,94H,0F4H,9FH,94H,0F4H,94H,0F4H,04H,00H ;
DB 01H,00H,0FFH,00H,42H,3AH,02H,3AH,42H,4AH,52H,42H,62H,0AH,32H,00H ; "德" 11
tb13:
DB 00H,0FEH,22H,22H,22H,0FEH,00H,00H,0FFH,11H,11H,11H,11H,0FFH,00H,00H ;
DB 00H,03H,02H,02H,02H,43H,20H,18H,07H,01H,01H,41H,81H,7FH,00H,00H ; "明" 12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -