??? 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 |
Topic | Author | Date |
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 |