?? 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 + -