?? lcd.asm
字號:
;實驗名稱:字符型LCD接口實驗
; 功能:在LCD上顯示
; AT89S51 DEMO
; www.mcuprog.com
; 作者:http://www.mcuprog.com
; 05-02-01
;
E BIT P2.2
RW BIT P2.1
RS BIT P2.0
LCDPORT EQU P0
CMD_BYTE EQU 30H
DAT_BYTE EQU 31H
ORG 0000H
AJMP MAIN
ORG 0050H
MAIN: MOV SP,#60H
LCALL INITLCD
LCALL DISPMSG1
LCALL DISPMSG2
SJMP $
;LCD1602要用到的一些子程序
;寫命令(入口參數CMD_BYTE)
WRITE_CMD: CLR RS
CLR RW
MOV A,CMD_BYTE
MOV LCDPORT,A
SETB E
NOP
NOP
CLR E
LCALL DELAY
RET
;寫顯示數據(入口參數DAT_BYTE)
WRITE_DAT: SETB RS
CLR RW
MOV A,DAT_BYTE
MOV LCDPORT,A
SETB E
NOP
NOP
CLR E
LCALL DELAY
RET
;LCD顯示初始化
INITLCD: MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#38H ;設定工作方式
LCALL WRITE_CMD
MOV CMD_BYTE,#0CH ;顯示狀態設置
LCALL WRITE_CMD
MOV CMD_BYTE,#01H ;清屏
LCALL WRITE_CMD
MOV CMD_BYTE,#06H ;輸入方式設置
LCALL WRITE_CMD
RET
;在第一行顯示表格1的內容
DISPMSG1: MOV CMD_BYTE,#80H //設置DDRAM的地址
LCALL WRITE_CMD
MOV R7,#10H
MOV R6,#00H
MOV DPTR,#TAB1
DISPMSG1_1: MOV A,R6
MOVC A,@A+DPTR
MOV DAT_BYTE,A
LCALL WRITE_DAT
INC R6
DJNZ R7,DISPMSG1_1
RET
;在第二行顯示表格1的內容
DISPMSG2: MOV CMD_BYTE,#0C0H //設置DDRAM的地址
LCALL WRITE_CMD
MOV R7,#10H
MOV R6,#00H
MOV DPTR,#TAB2
DISPMSG2_1: MOV A,R6
MOVC A,@A+DPTR
MOV DAT_BYTE,A
LCALL WRITE_DAT
INC R6
DJNZ R7,DISPMSG2_1
RET
;延時子程序
DELAY: MOV R5,#0A0H
DELAY1: NOP
DJNZ R5,DELAY1
RET
ORG 0200H
;要顯示的內容
TAB1: DB " AT89S51 DEMO "
TAB2: DB "www.mcuprog.com "
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -