??? 07/12/06 07:55 Read: times |
#120063 - 2x16 yj162a LCD glitch |
here's the code that i'm using....
the problem i'm having is the display just won't show up on the 2nd line..the display works fine on the 1st line, but won't budge to line 2. HELP!!! DB0 EQU P1.0 DB1 EQU P1.1 DB2 EQU P1.2 DB3 EQU P1.3 DB4 EQU P1.4 DB5 EQU P1.5 DB6 EQU P1.6 DB7 EQU P1.7 EN EQU P3.5 RS EQU P3.3 RW EQU P3.4 SR EQU P3.2;connected to s_/r of 74HC245 DATA EQU P1 org 0000h LCALL INIT_LCD LCALL CLEAR_LCD MOV A,#'H' LCALL WRITE_TEXT MOV A,#'E' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'O' LCALL WRITE_TEXT CLR RS CLR SR MOV DATA,#0C0h;2nd line,1st character SETB EN CLR EN LCALL WAIT_LCD MOV A,#'W' LCALL WRITE_TEXT MOV A,#'O' LCALL WRITE_TEXT MOV A,#'R' LCALL WRITE_TEXT MOV A,#'L' LCALL WRITE_TEXT MOV A,#'D' LCALL WRITE_TEXT here: sjmp here WAIT_LCD: mov R0,#49;10 ms delay lower byte mov R1,#79;10 ms delay upper byte Loop: djnz R0,Loop djnz R1,Loop CLR EN SETB SR;enable receive CLR RS ;It's a read command SETB RW ;It's a read command part. MOV DATA,#0FFh ;Set all pins to FF initially to make it i/p port SETB EN ;Clock out command to LCD MOV A,DATA ;Read the return value CLR EN ;Finish the command JB ACC.7,WAIT_LCD ;If bit 7 high, LCD still busy CLR RW ;Turn off RW for future commands RET INIT_LCD: CLR RS CLR SR;enable transmit MOV DATA,#38h;enable 8-bit,2-line mode SETB EN CLR EN LCALL WAIT_LCD;wait for busy flag clearance CLR RS CLR SR MOV DATA,#0Fh;enable display,blinking cursor SETB EN CLR EN LCALL WAIT_LCD CLR RS CLR SR MOV DATA,#06h;enable incrementing cursor SETB EN CLR EN LCALL WAIT_LCD RET CLEAR_LCD: CLR RS CLR SR MOV DATA,#01h;clear display SETB EN CLR EN LCALL WAIT_LCD RET WRITE_TEXT: SETB RS CLR SR MOV DATA,A SETB EN CLR EN LCALL WAIT_LCD RET |
Topic | Author | Date |
2x16 yj162a LCD glitch | 01/01/70 00:00 | |
are you aware | 01/01/70 00:00 | |
Some thoughts | 01/01/70 00:00 | |
Problem Solved![]() | 01/01/70 00:00 |