?? ex26a_lcd.asm
字號(hào):
;********************************Copyright (c)********************************
;** 廣州周立功單片機(jī)發(fā)展有限公司
;** 研 究 所
;** http://www.zlgmcu.com
;*********************************文件信息************************************
;文件名:
; EX26A_LCD.asm
;目的 :
; 1.學(xué)習(xí)使用DP-51h實(shí)驗(yàn)的仿真調(diào)試程序的方法;
; 2.學(xué)習(xí)LCD液晶顯示器的驅(qū)動(dòng)方法和程序設(shè)計(jì)方法;
; 3.在第1行顯示"DP-51H",在第2行
; 顯示"2003年7月12日"并不斷滾動(dòng)。
;硬件設(shè)置:
; LCD液晶顯示屏數(shù)據(jù)口地址為400xH~4FFxH之間,在此數(shù)據(jù)地址為4002H,而命令口地址
; 為4000H。
;最后修改時(shí)間:
; 2003年7月2
;******************************************************************************
WR_COM EQU 4000H ;寫指令地址
RD_STA EQU 4002H ;讀狀態(tài)地址
WR_DAT EQU 4001H ;寫數(shù)據(jù)地址
RD_DAT EQU 4003H ;讀數(shù)據(jù)地址
ORG 8000H
AJMP MAIN
ORG 8100h
MAIN:
MOV SP,#60h ;設(shè)置SP
ACALL DELAY ;延時(shí)
ACALL INIT_LCD ;初始化液晶模塊
ACALL WRITE_CGRAM ;設(shè)置CGRAM
MOV A,#84H ;從第一行第5位開始
ACALL WRITE_COM
MOV R6,#06 ;顯示DP-51S
MOV DPTR,#TABLE1 ;讀取DP-51S數(shù)據(jù)表地址
DISP1:
CLR A
MOVC A,@A+DPTR
ACALL WRITE_DAT
INC DPTR
DJNZ R6,DISP1
MOV A,#0C2H ;第二行第二位開始顯示
ACALL WRITE_COM
MOV R6,#13 ;顯示ZLG2003年3月26日
MOV DPTR,#TABLE2 ;讀取數(shù)據(jù)表2地址
DISP2:
CLR A
MOVC A,@A+DPTR
ACALL WRITE_DAT
INC DPTR
DJNZ R6,DISP2
DISP_LOOP:
MOV A,#07H ;設(shè)置左移模式
ACALL WRITE_COM
MOV A,#8FH ;從第一行第16位開始
ACALL WRITE_COM
MOV R6,#16 ;左移16個(gè) 空格
DISP_LEFT:
MOV A,#10H
ACALL WRITE_DAT
ACALL DELAY ;延時(shí)
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
DJNZ R6,DISP_LEFT
MOV A,#05H ;設(shè)置右移模式
ACALL WRITE_COM
MOV A,#80H ;從第一行第1位開始
ACALL WRITE_COM
MOV R6,#16
DISP_RIGHT:
MOV A,#10H
ACALL WRITE_DAT
ACALL DELAY ;延時(shí)
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
ACALL DELAY
DJNZ R6,DISP_RIGHT
SJMP DISP_LOOP ;循環(huán)移動(dòng)
;初始化液晶模塊
INIT_LCD:
MOV A,#38H ;設(shè)置為8位數(shù)據(jù)總線,16*2,5*7點(diǎn)陣
ACALL WRITE_COM
MOV A,#01H ;清屏幕
ACALL WRITE_COM
MOV A,#06H ;光標(biāo)移動(dòng),顯示區(qū)不移動(dòng),讀寫操作后AC加1
ACALL WRITE_COM
MOV A,#0CH ;開顯示,關(guān)光標(biāo),不閃爍
ACALL WRITE_COM
RET
;寫指令子程序
WRITE_COM:
PUSH DPH ;保存DPTR
PUSH DPL
MOV DPTR,#WR_COM ;設(shè)置寫指令地址
MOVX @DPTR,A ;輸出指令
ACALL DELAY ;延時(shí)
POP DPL ;恢復(fù)DPTR
POP DPH
RET
;寫數(shù)據(jù)子程序
WRITE_DAT:
PUSH DPH ;保存DPTR
PUSH DPL
MOV DPTR,#WR_DAT ;設(shè)置寫數(shù)據(jù)地址
MOVX @DPTR,A ;輸出數(shù)據(jù)
ACALL DELAY ;延時(shí)
POP DPL ;恢復(fù)DPTR
POP DPH
RET
;設(shè)置自定義字符
WRITE_CGRAM:
PUSH ACC ;保護(hù)現(xiàn)場(chǎng)
PUSH DPL
PUSH DPH
PUSH PSW
MOV A,#40H ;設(shè)置CGRAM開始地址為00H
ACALL WRITE_COM
MOV R7,#24 ;輸出3個(gè)自定義字符(3×8=24)
MOV DPTR,#CGRAM_TABLE
WRITE_CGRAM1:
CLR A
MOVC A,@A+DPTR ;讀取表數(shù)據(jù)
ACALL WRITE_DAT ;把數(shù)據(jù)寫到CGRAM中
INC DPTR
DJNZ R7,WRITE_CGRAM1
ACALL DELAY ;延時(shí)
POP PSW ;現(xiàn)場(chǎng)恢復(fù)
POP DPH
POP DPL
POP ACC
RET
;延時(shí)子程序
DELAY:
MOV R5,#100
DELAY1:
MOV R4,#100
DJNZ R4,$
DJNZ R5,DELAY1
RET
;定義代碼
CGRAM_TABLE:
DB 08H,0FH,12H,0FH,0AH,1FH,02H,02H ;年
DB 0FH,09H,0FH,09H,0FH,09H,11H,00H ;月
DB 0FH,09H,09H,0FH,09H,09H,0FH,00H ;日
TABLE1:
DB 44H,50H,2DH,35H,31H,48H;DP-51H
TABLE3:
DB 10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H,10H;空格
TABLE2:
DB 5AH,4CH,47H,32H,30H,30H,33H,00H,37H,01H,31H,32H,02H
; Z l G 2 0 0 3 年 7 月 1 2 日
END
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -