?? lcd2005.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,#hua
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#zhong
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#ke
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#ji
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#dada
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#01H
MOV A,#0FH
ADD A,Y
MOV Y,A
MOV DPTR,#xue
CALL DISP
CALL DELAY5
CALL DELAY5
;顯示EDA-IV實驗系統(tǒng)
MOV X,#04H
MOV Y,#00H
MOV DPTR,#e
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#0FH
MOV DPTR,#d
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#1EH
MOV DPTR,#I
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#2DH
MOV DPTR,#V
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#3CH
MOV DPTR,#shi
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#4BH
MOV DPTR,#yan
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#5AH
MOV DPTR,#xi
CALL DISP
CALL DELAY5
CALL DELAY5
MOV X,#04H
MOV Y,#69H
MOV DPTR,#tong
CALL DISP
CALL DELAY6
;停機
LJMP START
;模塊名:DISP
;參 數(shù):X,Y - 坐標
; DPTR - 地址
;功 能:在X,Y的坐標顯示一個16*16點陣的漢字或字符
;注 意:字模方向為 列行式,逆向
DISP:
;暫存坐標
PUSH X
PUSH Y
;行坐標
MOV R6,X
;共兩行
MOV R4,#02H
ROW:
;列坐標
MOV R7,Y
;設置片選信號
SETB CS1 ;設置為左邊區(qū)域(默認)
CLR CS2
;CALL DELAY
CLR C ;判斷顯示的區(qū)域
MOV A,Y
SUBB A,#40H
JC ADDR
;設置為右邊區(qū)域
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;寫一列數(shù)據(jù)
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
;左邊界越界選通右邊區(qū)域
MOV R7,A
CLR CS1
;CALL DELAY1
SETB CS2
SJMP NEXT
;右邊界越界選通左邊區(qū)域
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
;參 數(shù):無
;功 能:向液晶發(fā)送寫指令命令
;時 間:2004年7月
PUTIR:
PUSH DPH
PUSH DPL
CALL BUSY
MOV DPTR,#LCDIR
MOV A,RAM
MOVX @DPTR,A
POP DPL
POP DPH
RET
;模塊名:PUTCHR
;參 數(shù):無
;功 能:向液晶發(fā)送寫數(shù)據(jù)命令
;時 間:2004年7月
PUTCHR:
PUSH DPH
PUSH DPL
CALL BUSY
MOV DPTR,#LCDDR
MOV A,RAM
MOVX @DPTR,A
POP DPL
POP DPH
RET
;模塊名:BUSY
;參 數(shù):無
;功 能:檢測液晶忙狀態(tài)
;時 間:2004年7月
BUSY:
MOV DPTR,#LCDIR
BUSY1: MOVX A,@DPTR
ANL A,#80H
XRL A,#80H
JZ BUSY1
RET
;模塊名:CLEAR
;參 數(shù):無
;功 能:清屏
;時 間: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
;參 數(shù):無
;功 能:延時
;時 間:2004年7月
DELAY: MOV R6,#8
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
;模塊名:DELAY1
;參 數(shù):無
;功 能:延時
;時 間:2004年7月
DELAY1: MOV R6,#2
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
RET
;====字模====
DB 040H,040H,044H,054H,054H,054H,054H,07FH,054H,054H,054H,054H,044H,040H,040H,000H ;
DB 000H,000H,000H,0FFH,015H,015H,015H,015H,015H,055H,095H,07FH,000H,000H,000H,000H ; "青" 0
DB 040H,040H,044H,054H,054H,0D4H,074H,05FH,054H,054H,0D4H,054H,054H,044H,040H,000H ;
DB 004H,004H,002H,002H,07FH,04AH,04AH,04AH,04AH,04AH,07EH,001H,003H,006H,002H,000H ; "春" 1
DB 000H,002H,002H,002H,002H,082H,042H,0FEH,006H,042H,0C2H,082H,002H,003H,002H,000H ;
DB 000H,008H,004H,002H,001H,000H,000H,07FH,000H,000H,000H,001H,007H,002H,000H,000H ; "不" 2
DB 000H,000H,0FEH,042H,02AH,011H,061H,080H,062H,01EH,042H,082H,042H,03EH,000H,000H ;
DB 000H,000H,000H,0FFH,049H,049H,049H,07FH,049H,049H,049H,049H,0FFH,000H,000H,000H ; "留" 3
DB 000H,000H,0F8H,008H,008H,00CH,00BH,008H,008H,008H,008H,008H,0F8H,000H,000H,000H ;
DB 000H,000H,07FH,021H,021H,021H,021H,021H,021H,021H,021H,021H,07FH,000H,000H,000H ; "白" 4
DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H ;
DB 000H,000H,058H,038H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H ; "," 5
DB 000H,080H,060H,01EH,010H,010H,010H,010H,0FFH,012H,010H,010H,098H,010H,000H,000H ;
DB 001H,040H,040H,041H,041H,041H,041H,041H,07FH,041H,041H,041H,041H,061H,040H,000H ; "生" 6
DB 040H,040H,0A0H,090H,0A8H,0A4H,0A2H,021H,0A2H,0A4H,0A8H,090H,0B0H,060H,020H,000H ;
DB 000H,000H,03FH,008H,008H,008H,01FH,000H,0FFH,000H,010H,030H,01FH,000H,000H,000H ; "命" 7
DB 010H,060H,001H,0C6H,010H,012H,092H,072H,01EH,032H,052H,092H,092H,010H,010H,000H ;
DB 004H,004H,0FFH,002H,022H,019H,040H,080H,07FH,008H,030H,000H,009H,033H,001H,000H ; "添" 8
DB 000H,040H,020H,0F0H,028H,027H,024H,0E4H,024H,034H,02CH,0E4H,000H,000H,000H,000H ;
DB 000H,000H,000H,03FH,042H,042H,042H,043H,042H,042H,042H,043H,040H,078H,000H,000H ; "色" 9
DB 082H,08AH,0B2H,086H,0DBH,0A1H,091H,08DH,088H,020H,010H,008H,086H,064H,040H,000H ;
DB 020H,010H,008H,006H,0FFH,002H,004H,058H,048H,020H,022H,011H,008H,007H,002H,000H ; "彩" 10
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -