数字1到9 液晶显示.docx
;******************************************************************************
**
;12864 液 晶 全 屏 幕 显 示 0-9
*
;******************************************************************************
**
;* 日 期 : 2007-3-25
*
;* 版 本 : 3.0
*
;******************************************************************************
**
RSPIN
EQU
P2.0
RWPIN
EQU
P2.1
EPIN
EQU
P2.2
XPOS
EQU
20H
;列方向地址指针(用于LCDPOS子程序)
YPOS
EQU
21H
;行方向地址指针(用于LCDPOS子程序)
ORG
0000H
JMP
START
START:
MOV
SP,#60H
CLR
EPIN
MAIN:
MOV
R7,#0
;测试主程序
MN_PA:
;整屏循环显示0到9及空格
CALL LCDRESET
MOV A,R7
CALL LCDFILLCALL DELAY400MSINC R7
MOV A,R7
CJNE A,#9+1,MN_PAMOV A,#
CALL LCDFILLCALL DELAY400MSJMP MAIN
LCDFILL:
MOV B,A
MOV YPOS,#0
LFL_PB:MOV XPOS,#0 ;整屏显示A中所代表字符LFL_PA:MOV A,B
CALL LCDWRITEINC XPOS
MOV A,XPOSCJNE A,#20,LFL_PA
INC YPOS
MOV A,YPOSCJNE A,#4,LFL_PBRET
LCDPOS: ;设置第(XPOS,YPOS)个字符的DDRAM地址
PUSH ACC
CLR C ;X位置范围(0到19)MOV A,XPOS
SUBB A,#20
JCMOV
LPS_LBX:ANL
MOVCJNEMOVJMP
LPS_LA1:CJNE
MOVADDJMP
LPS_LA2:CJNE
MOVADDJMP
LPS_LAY:MOV
ADDLPS_LAX:ORL
CALLPOPRET
LCDWRITE:
CALLCALLRET
LCDRESET:
CALLCALLCALLMOVCALLCALLMOVCALLCALL
LPS_LBXXPOS,#0
YPOS,#03H ;Y位置范围(0到3)
A,YPOS ;(XPOS,YPOS)对应DDRAM地址A,#00,LPS_LA1
A,XPOS ;(第一行)X:第0 19个字符
LPS_LAX ; DDRAM: 0 13H
A,#01,LPS_LA2
A,XPOS ;(第二行)X:第0 19个字符
A,#40H ; DDRAM: 40 53H
LPS_LAX ;A,#02,LPS_LAY
A,XPOS ;(第三行)X:第0 19个字符
A,#14H ; DDRAM: 14 27H
LPS_LAX
A,XPOS ;(第四行)X:第0 19个字符
A,#54H ; DDRAM: 54 67H
A,#80H ;设置DDRAM地址LCDWC
ACC
;定位写字符子程序
LCDPOS ;定位显示地址
LCDWD ;写字符
;初始化程序
DELAY5MS ;延时15MSDELAY5MS
DELAY5MS
A,#38H ;显示模式设置(不检测忙信号)LCDWCN ;共三次
DELAY5MSA,#38HLCDWCNDELAY5MS
MOV A,#38H
CALL LCDWCN
MOV A,#38H ;显示模式设置(以后均检测忙信号)CALL LCDWC
MOV A,#08H ;显示关闭CALL LCDWC
MOV A,#01H ;显示清屏CALL LCDWC
MOV A,#06H ;显示光标移动设置
LCDWC:
CALLMOVCALLRET
CALL
LCDWCA,#0CHLCDWC
WAITIDLE
;显示开及光标设置
;送控制字子程序(检测忙信号)
LCDWCN:
CLRCLRMOVSETBNOPCLRRET
LCDWD:
CALLSETBCLRMOVSETBNOPCLRRET
WAITIDLE:
PUSHMOVCLRSETBSETB
RSPINRWPINP0,AEPIN