Hello. I have an issue with a 16x2 LCD. With the below code, all the LCD does is show black boxes on both the lines. Maybe I am missing something in the code, but my connections are correct and not loose. Your help shall be appreciated.
Connections are as follows:
Port C: 8-bit data for the LCD
Port A: {
Pin 5 - EN - Enable
Pin 6 - RW - Read Write
Pin 7 - RS - Register Select
}
Thanks.
.INCLUDE "M32DEF.INC" .EQU EN = 5 .EQU RW = 6 .EQU RS = 7 .ORG 0x00 LDI R16, LOW(RAMEND) OUT SPL, R16 LDI R16, HIGH(RAMEND) OUT SPH, R16 LDI R16, 0xFF OUT DDRC, R16 ; Make Port C an output port LDI R16, (1 << EN) | (1 << RW) | (1 << RS) OUT DDRA, R16 ; Make A5, A6, A7 as output pins LDI R16, 0x00 OUT PORTC, R16 ; Clear Port C CALL DELAY ;================================================ CBI PORTA, RW ; Write always CBI PORTA, RS ; Select command register CBI PORTA, EN ; Clear enable line LDI R20, 0x0F ; Display ON without cursor OUT PORTC, R20 CALL SETENABLE LDI R20, 0x01 ; Clear the display OUT PORTC, R20 CALL SETENABLE LDI R20, 0x80 ; Set DDRAM address to 00 OUT PORTC, R20 CALL SETENABLE SBI PORTA, RS ; Select data register LDI ZL, LOW(MYDATA<<1) LDI ZH, HIGH(MYDATA<<1) L1: LPM R20, Z+ TST R20 BREQ EXIT OUT PORTC, R20 CALL SETENABLE RJMP L1 EXIT: RJMP EXIT ;================================================ SETENABLE: SBI PORTA, EN RCALL DELAY CBI PORTA, EN RET DELAY: LDI R21, 0xFF L2: LDI R22, 0xFF L3: DEC R22 BRNE L3 DEC R21 BRNE L2 RET ;================================================ .ORG 0x200 MYDATA: .DB "Hello, World!", 0