📄 lcd_1602.asm
字号:
;本程序适用于 DXDZ 51+AVR-A 开发板
;配置要求:
; 需要将开发板上的P0.7切换到BUZZER一端;跳线组JP5、JP6、JP7切换到LCD一端,开关BLSW实现背光源的开通与闭合。
;程序说明:
; 程序运行时,先显示“WELCOME 51+AVR”然后依次动态将字符库里的字符显示在屏幕上,显示完毕后再从头开始循环运行。
; 屏幕在动态显示过程中,可以按INT0按键来暂停动态显示,再按一次INT0按键又恢复动态显示。
; 动态显示暂停时,蜂鸣器鸣叫;恢复动态显示时蜂鸣器停止鸣叫。
COMMAND EQU 30H
DATA1 EQU 31H
RS EQU P3.3
RW EQU P3.4
E EQU P3.5
BUZZER EQU P0.7
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT
ORG 0030H
MAIN:
MOV SP,#60H
SETB EA
SETB EX0
SETB IT0
MOV P1,#38H
CLR RS
CLR RW
MOV R0,#3
F:
SETB E
CLR E
LCALL SDELAY
DJNZ R0,F
MOV COMMAND,#38H
LCALL PR1
MLP:
MOV COMMAND,#01H
LCALL PR1
MOV COMMAND,#06H
LCALL PR1
MOV COMMAND,#0CH
LCALL PR1
MOV COMMAND,#(80H+04H) ;显示WELCOME
LCALL PR1
MOV R2,#7
MOV DPTR,#char1
MPL1: CLR A
MOVC A,@A+DPTR
MOV DATA1,A
LCALL PR2
INC DPTR
DJNZ R2,MPL1
MOV COMMAND,#(80H+45H) ;显示51+AVR
LCALL PR1
MOV R2,#6
MOV DPTR,#char2
MPL2: CLR A
MOVC A,@A+DPTR
MOV DATA1,A
LCALL PR2
INC DPTR
DJNZ R2,MPL2
LCALL DELAY ;延时
LCALL DELAY
MOV R2,#3 ;依次将20H~7FH的字符显示在屏幕上
MOV DATA1,#20H
L1:
MOV COMMAND,#80H
LCALL PR1
MOV R1,#16
L2: LCALL PR2
INC DATA1
DJNZ R1,L2
LCALL DELAY
MOV COMMAND,#(80H+40H)
LCALL PR1
MOV R1,#16
L3: LCALL PR2
INC DATA1
DJNZ R1,L3
LCALL DELAY
DJNZ R2,L1
MOV R2,#2 ;依次将A0H~DFH的字符显示在屏幕上
MOV DATA1,#0A0H
L4:
MOV COMMAND,#80H
LCALL PR1
MOV R1,#16
L5: LCALL PR2
INC DATA1
DJNZ R1,L5
LCALL DELAY
MOV COMMAND,#(80H+40H)
LCALL PR1
MOV R1,#16
L6: LCALL PR2
INC DATA1
DJNZ R1,L6
LCALL DELAY
DJNZ R2,L4
LJMP MLP
;*******************************************
INT:
PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
CLR EX0
JNB P3.2,$
CLR BUZZER
JB P3.2,$
JNB P3.2,$
SETB BUZZER
SETB EX0
CLR IE0
POP PSW
POP DPL
POP DPH
POP ACC
RETI
;********延时程序**************************
DELAY:
MOV R5,#10
MOV R6,#00H
MOV R7,#00H
DELAY1:
NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
DJNZ R5,DELAY1
RET
SDELAY:
MOV R6,#00H
MOV R7,#00H
SDELAY1:
NOP
DJNZ R7,SDELAY1
DJNZ R6,SDELAY1
RET
;********读BF和AC值************************
PR0:
PUSH ACC
MOV P1,#0FFH
CLR RS
SETB RW
SETB E
MOV COMMAND,P1
CLR E
POP ACC
RET
;*********写指令代码************************
PR1:
PUSH ACC
CLR RS
SETB RW
PR11:MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,PR11
CLR RW
MOV P1,COMMAND
SETB E
CLR E
POP ACC
RET
;*********写显示数据************************
PR2:
PUSH ACC
CLR RS
SETB RW
PR21:MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,PR21
SETB RS
CLR RW
MOV P1,DATA1
SETB E
CLR E
POP ACC
RET
;*********读显示数据************************
PR3:
PUSH ACC
CLR RS
SETB RW
PR31:MOV P1,#0FFH
SETB E
MOV A,P1
CLR E
JB ACC.7,PR31
SETB RS
SETB RW
MOV P1,#0FFH
SETB E
MOV COMMAND,P1
CLR E
POP ACC
RET
char1:
DB 0x57,0x45,0x4c,0x43,0x4f,0x4d,0x45
char2:
DB 0x35,0x31,0x2b,0x41,0x56,0x52
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -