probleem-interfacing AT89S52 met 44780 standaard LCD-scherm

S

Sanchita

Guest
hiiii
probeer AT89S52 interface met 44780 standaard LCD-display ....
maar niets wordt weergegeven ...... kan iemand me helpen met debuggen
Ik heb geschreven volgende code

$ mod51

org 0000h

DB0 EQU P0.0
DB1 EQU P0.1
DB2 EQU p0.2
DB3 EQU P0.3
DB4 EQU P0.4
DB5 EQU P0.5
DB6 EQU P0.6
DB7 EQU P0.7
NL EQU P2.7
RS EQU P2.6
RW EQU P2.5
DATAWD EQU P0

CSEGMOV R4, # 01H
MOV R3, # 00H
MOV SP, # 30H

CALL BLANK_LCD

; test lcd

mov a, # 'W'
mov 70h, een
mov a, # 'E'
mov 71h, een
mov a, # 'L'
mov 72h, een
mov a, # "C"
mov 73H, een
mov a, # 'O'
mov 74H, een
mov a, # 'M'
mov 75H, een
mov a, # 'E'
mov 76H, een
oproep disp_on_lcdWAIT_LCD: CLR EN; Begin LCD-opdracht
CLR RS; Het is een opdracht
SETB RW; Het is een lees-opdracht
MOV DATAWD, # 0FFh; Stel alle pinnen in eerste instantie FF
SETB EN; Klok uit commando om LCD
MOV A, DATAWD; Lees de return waarde
JB ACC.7, WAIT_LCD; Als bit 7 hoog, LCD nog steeds bezig
CLR EN; Finish het commando
CLR RW; Zet RW voor toekomstige opdrachten
RETINITIALIZE_LCD: CLR RS
MOV DATAWD, 38h #
SETB NL
CLR NL
CALL WAIT_LCD
CLR RS
MOV DATAWD, # 0Eh
SETB NL
CLR NL
CALL WAIT_LCD
CLR RS
MOV DATAWD, # 06h
SETB NL
CLR NL
LCALL WAIT_LCD
RET

WRITE_TEXT: SETB RS
MOV DATAWD, @ R0
SETB NL
CLR NL
CALL WAIT_LCD
RET

blank_LCD: CLR RS
MOV DATAWD, # 01h
SETB NL
CLR NL
CALL WAIT_LCD
RET

DISP_ON_LCD: CALL INITIALIZE_LCD
MOV R0, # 70H

REWRITE: CALL WRITE_TEXT
INC R0
CJNE R0, # 7AH, herschrijven
RET

END

 

Welcome to EDABoard.com

Sponsor

Back
Top