Ayuda con LCD diferente

#1
Hola a todos

Les pido ayuda con un LCD q no logro escriba algo, segun el datasheet las asignaciones de memoria son diferentes, primero les pongo los codigos q usa el proteus en sus lcd

Tabla 3. Código de direcciones de caracteres (valores hexadecimales):
Display Position 1 2 3 4 5 6 7 8
DD RAM Address 80 81 82 83 84 85 86 87
DD RAM Address C0 C1 C2 C3 C4 C5 C6 C7

y esto me dice el datasheet del LCD WinStar16x2

Código de direcciones de caracteres (valores hexadecimales):
Display Position 1 2 3 4
DD RAM Address 00 01 02 03
DD RAM Address 40 41 42 43 etc

con cualquiera de las dos tablas de codigos solo se ilumina el lcd y algunas veces muestra cualquier caracter aleatorio conocido o no.

este es el programa q uso con un pic16f877a

'prueba LCD
DEFINE OSC 4
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTD 'UTILIZAR 4 BITS DEL PUERTO D PARA TX DE DATOS
DEFINE LCD_DBIT 4 'DESDE EL BIT D.4 AL BIT D.7
DEFINE LCD_RSREG PORTC 'SELECCIÓN DEL PUERTO DEL REGISTRO C
DEFINE LCD_RSBIT 6 'EN EL BIT C.6
DEFINE LCD_EREG PORTC 'UTILIZAR EL ENABLE EN EL PUERTO C
DEFINE LCD_EBIT 7 'EN EL BIT C.7
DEFINE LCD_LINES 2 ' Number of lines on LCD
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50

TRISD.4 = 0 ' PUERTOS D COMO SALIDA
TRISD.5 = 0 ' PUERTOS D COMO SALIDA
TRISD.6 = 0 ' PUERTOS D COMO SALIDA
TRISD.7 = 0 ' PUERTOS D COMO SALIDA
PAUSE 500 ' PAUSA DE INICIO DEL LCD
'----------------------------------------------------------------------
inicio:
LCDOUT $FE, 1 ' LIMPIAR LCD
LCDOUT $FE, 1, "AUDIO" ' ESCRIBIR EN LA PRIMERA LÍNEA
LCDOUT $FE, $40, "BIENVENIDO" ' ESCRIBIR EN LA SEGUNDA LÍNEA
PAUSE 1000
goto inicio

end

Repito el lcd solo enciende la luz de la pantalla

que puedo hacer? sera el PIC? gracias
 

Adjuntos

Arriba