Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
02/20/04 13:39
Read: times


 
#65187 - RE: keil evaluation board & lcd
Responding to: ???'s previous message
indeed i do have a scope, ! we checked the signals and the control signals seem ok, the dats bus wires from lcd module to keil board seem the problem, but why and how?!

when you mention timing do you mean to change the crystal or something?


here is the a51 code i am using.




; Oct 26th 2002. Sean O'Donovan
; This 8051 assembler program writes the words
; DISPLAY_IS_O.K. to an LMO86ALN LCD display.

; but first it initialises the display as
; instructed in the HD44780 lcd DRIVER data sheet.

ORG 0000H ; start the code at address 0H in the ROM.

JMP BEGIN ; LEAVE A FEW LINES FREE
ORG 20H
BEGIN:

; NOW WE INITIALISE THE LCD

;USING THE HD44780 lcd DRIVER data sheet page 86.
P5 EQU 0f8H

P4 EQU 0e8H; port 7, the lcd dta port

CLEAR EQU 01H
FUNCTIONSET EQU 34H ;perhaps this should read 38h for 2 line display.
DISPLAYON EQU 0eH
ENTRYMODESET EQU 06H
BOTTOM EQU 0C0H
IT_IS_WORKING EQU 300H
RS BIT P5.0
RW BIT P5.1
ENABLE BIT P5.2
;*****************************************************************************************
; THE LCD INITIALISATION ROUTINE SEE PAGE 86 OF HD44780 lcd DRIVER SPEC
MOV P5,#0FFH
MOV P5,#00H
MOV P4,#0FFH
MOV P4,#00H
MOV R6,#30
CALL DELAY ; THE DELAY GIVES THE LCD TIME TO ACT.

MOV A ,#CLEAR ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#FUNCTIONSET ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#DISPLAYON ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#ENTRYMODESET ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.

MOV A ,#CLEAR ; SEE PAGE 89/90 OF HD44780 lcd DRIVER SPEC.
CALL INSTRUCTION_TO_LCD ;SEE TIMING DIAGRAM P67OF LM093.
; THIS IS THE END OF THE LCD INITIALISATION ROUTINE
;*****************************************************************************************
;START MAIN PROGRAM
;NOW WE WRITE WORDS TO THE DISPLAY
REPEAT:
MOV R0,#0H
MOV R2,#0H
MOV DPTR, #IT_IS_WORKING ; MOV 300H TO DPTR
MOV A,#0H
CALL PRINTIT
MOV A,#BOTTOM ; MOVE CURSER TO BOTTOM ROW.
CALL INSTRUCTION_TO_LCD

JMP REPEAT ;KEEP ON REPEATING THE SENTENCE (DEMO CODE ONLY).
;END MAIN PROGRAM
; **********************************************************************************
INSTRUCTION_TO_LCD:
; THIS ROUTINE SENDS MESSAGE DOWN TO THE LCD
; TELLING IT HOW TO BEHAVE.
CLR RS ; THE RS BIT LOW INDICATES AN INSTRUCTION WRITE. SEE TIMING DIAGRAM P67OF LM093.
CLR RW
MOV R6, #100
CALL DELAY
SETB ENABLE
MOV P4,A
CLR ENABLE
RET

;END INSTRUCTION_TO_LCD ROUTINE
; **********************************************************************************
PRINTIT:
; THIS ROUTINE PRINTS THE LETTERS POINTED BY THE DPTR.
; REFER TO THE WRITE TIMING DIAGRAM PAGE 67 OF LMO93 SPEC.
SETB RS ; THE RS BIT HIGH INDICATES A DATA WRITE.
CLR RW
SETB ENABLE
MOV R6,#30
CALL DELAY
MOVC A, @A+DPTR
CJNE A,#'!',PRINT ;HAVE WE REACHED THE LAS LETTER ?
CLR ENABLE
CLR RS
RET

;END PRINTIT ROUTINE
; **********************************************************************************

; A DELAY ROUTINE DEPENDING ON THE VALUE NOW IN R6
DELAY:
MOV R5, #0
LOOP:
DJNZ R5,LOOP
DJNZ R6,LOOP
RET ; RETURN TO WHERE CALLED FROM
;END DELAY ROUTINE
; **********************************************************************************
PRINT:
MOV P4,A ;SEND LETTER OUT TO PORT2 I.E. TO DISPLAY. SEE TIMING DIAGRAM P67 LM093 DATA WRITE.
CLR ENABLE
CLR RS
INC R2
MOV A,R2
JMP PRINTIT

;END PRINT ROUTINE
; **********************************************************************************
; HERE WE STORE LETTERS IN ROM LOCATION 300H
ORG IT_IS_WORKING
DB 'BRIAN CUNNANE 2002 !' ; THIS STORES THESE LETTERS IN ROM 300H
; **********************************************************************************
END ; STOP COM

List of 10 messages in thread
TopicAuthorDate
keil evaluation board & lcd            01/01/70 00:00      
   RE: keil evaluation board & lcd            01/01/70 00:00      
   RE: keil evaluation board & lcd            01/01/70 00:00      
   RE: keil evaluation board & lcd            01/01/70 00:00      
      RE: keil evaluation board & lcd            01/01/70 00:00      
         RE: keil evaluation board & lcd            01/01/70 00:00      
            Here is the full code            01/01/70 00:00      
            RE: keil evaluation board & lcd            01/01/70 00:00      
            RE: keil evaluation board & lcd            01/01/70 00:00      
   RE: keil evaluation board & lcd            01/01/70 00:00      

Back to Subject List