# LCD 16X2 Esta quemado o no



## picnoob (Sep 9, 2012)

Buenas compre un lcd de 16x2 y no enciende con el conectado al circuito, si le conecto a 5v a vdd y vss a tierra tendria que encender o sea ponerse verde o me equivoco


----------



## Justiciero24 (Sep 9, 2012)

Si, pero mira bien si pones eso y el contraste a tierra que es el tercer pin (vee) la primera fila encendera completa (esto ocurre porque no fue inicializado.) y el backlight tiene alimentacion independiente, si tu lcd lo tiene usualmente son los pines 15 y 16. Te recomiendo consultar su datasheet.

Saludos,


----------



## picnoob (Sep 9, 2012)

Justiciero24 dijo:


> Si, pero mira bien si pones eso y el contraste a tierra que es el tercer pin (vee) la primera fila encendera completa (esto ocurre porque no fue inicializado.) y el backlight tiene alimentacion independiente, si tu lcd lo tiene usualmente son los pines 15 y 16. Te recomiendo consultar su datasheet.
> 
> Saludos,



ok voy a probar





Justiciero24 dijo:


> Si, pero mira bien si pones eso y el contraste a tierra que es el tercer pin (vee) la primera fila encendera completa (esto ocurre porque no fue inicializado.) y el backlight tiene alimentacion independiente, si tu lcd lo tiene usualmente son los pines 15 y 16. Te recomiendo consultar su datasheet.
> 
> Saludos,



Mira el LCd tiene los siguientes nombres en sus pines VSS VDD VO D0 D1 D2 D3 D4 D5 D6 D7 A K

VSS ES NEGATIVO

VDD ES POSITIVO

VO = ?


----------



## Justiciero24 (Sep 9, 2012)

hola,
VO debe ser el contraste, de D0 a D7 es el bus de datos y A es el anodo del led del backlight y K es su catodo.
Cual es el modelo de tu lcd para estar seguro???

A otra cosa, lo estas alimentando solamente o tienes un circuito con un micro para inicializarlo???

Pero de momento si tu lcd esta bien a la hora de alimentarlo deberia quedar encendida la primera linea aunque no lo inicializes. (en algunos lcd es posible que observes que todos los cuadros prenden bajito)

Saludos,


----------



## picnoob (Sep 9, 2012)

Justiciero24 dijo:


> hola,
> VO debe ser el contraste, de D0 a D7 es el bus de datos y A es el anodo del led del backlight y K es su catodo.
> Cual es el modelo de tu lcd para estar seguro???
> 
> ...



Listo si sirve, asi lo probe


----------



## Justiciero24 (Sep 9, 2012)

Ok, que bueno que te funciono.
Yo usualmente me ahorro el pote y conecto el contraste a tierra y queda al maximo.
Pero esto depende del lcd y del lugar donde vivas.

Saludos,


----------



## Cloudff7 (Sep 20, 2013)

Justiciero24 dijo:


> Ok, que bueno que te funciono.
> Yo usualmente me ahorro el pote y conecto el contraste a tierra y queda al máximo.
> Pero esto depende del lcd y del lugar donde vivas.
> 
> Saludos,




Hola yo tengo el mismo LCD y funciona muy bien
pero al encenderlo el mensaje me sale a medias como si estuviera corrido hacia la izquierda

Uso un PIC 16f877A

Me Ayudan?

el codigo en PIC Basic Pro es el siguiente:

```
'%%%%%%%%%%%%%%%%%%%%%%%%%%%% MICROCONTROLADORES PIC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

RELOJ DIGITAL PROGRAMABLE

DEFINE LCD_DREG  PORTD
DEFINE LCD_DBIT  0
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG  PORTE
DEFINE LCD_EBIT 1

ADCON1 = %0000010

TRISD = 0

X VAR BYTE
Y VAR BYTE
Z VAR BYTE
D VAR BYTE
F VAR BYTE
M VAR BYTE
A VAR WORD

Minutos VAR PORTB.0
Hora VAR PORTB.1
Dia VAR PORTB.2
Fecha VAR PORTB.3
Mes VAR PORTB.4
Anio VAR PORTB.5

TRISB.0 = 1
TRISB.1 = 1
TRISB.2 = 1

X = 0
Y = 0
Z = 0
D = 0

Inicio:

For A = 2000 TO 2050         'Año

For M = 0 TO 11              'Mes         

For F = 1 TO 31              'Numero de dias de Mes               
  
For X = 0 TO 23              'Hora

 D = D + 1                   'Día 
 
 IF D = 7 Then
             
    D = 0
             
 EndIF 
 
   For Y = 0 TO 59           'Minutos
        
      For Z = 0 TO 59        'Segundos
         
         IF Minutos = 1 Then
         
             Y = Y + 1 
             
             IF Y = 60 Then
             
             Y = 0
             
             EndIF  
         
         EndIF
         
         IF Hora = 1 Then
         
            X = X + 1
            
            IF X = 24 Then
             
             X = 0
             
            EndIF 
          
         EndIF
         
         IF Dia = 1 Then
         
            D = D + 1
            
            IF D = 7 Then
             
             D = 0
             
            EndIF 
          
         EndIF
         
         IF D = 0 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/LUN "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/LUN "
               
           EndIF
         
         EndIF
         
         IF D = 1 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/MAR "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/MAR "
               
           EndIF
         
         EndIF
       
         IF D = 2 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/MIE "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/MIE "
               
           EndIF
         
         EndIF
       
         IF D = 3 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/JUE "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/JUE "
               
           EndIF
         
         EndIF
         
         IF D = 4 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/VIE "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/VIE "
               
           EndIF
         
         EndIF
         
         IF D = 5 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/SAB "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/SAB "
               
           EndIF
         
         EndIF
         
         IF D = 6 Then
      
           IF X >= 0 AND X <= 11 Then 
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," AM/DOM "
  
           EndIF
            
           IF X > 11 AND X <= 23 Then
            
              LCDOut $FE,1," ",DEC2 X,":",DEC2 Y,":",DEC2 Z," PM/DOM "
               
           EndIF
         
         EndIF
         
         IF Fecha = 1 Then

              F = F + 1 
             
              IF F = 32 Then
             
              F = 1
             
              EndIF
   
         EndIF   
            
         IF Mes = 1 Then

              M = M + 1 
             
              IF M = 12 Then
             
              M = 0
             
              EndIF
   
         EndIF
        
         IF M = 0 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," ENE DEL ",DEC4 A
         
         EndIF 
         
         IF M = 1 AND F > 0 AND F <= 29 Then
         
            LCDOut $FE,$C0," ",DEC2 F," FEB DEL ",DEC4 A
         
            IF F = 29 Then
         
            F = 1
            
            M = 2 
              
            EndIF
           
         EndIF 
         
         IF M = 2 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," MAR DEL ",DEC4 A
   
         EndIF 
         
         IF M = 3 AND F > 0 AND F <= 31 Then
         
            IF F = 31 Then
         
            F = 1
            
            M = 4
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," ABR DEL ",DEC4 A
         
         EndIF 
         
         IF M = 4 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," MAY DEL ",DEC4 A
      
         EndIF 
         
         IF M = 5 AND F > 0 AND F <= 31 Then
         
            IF F = 31 Then
         
            F = 1
            
            M = 6
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," JUN DEL ",DEC4 A
         
         EndIF 
         
         IF M = 6 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," JUL DEL ",DEC4 A
        
         EndIF 
         
         IF M = 7 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," AGO DEL ",DEC4 A
        
         EndIF 
         
         IF M = 8 AND F > 0 AND F <= 31 Then
         
            IF F = 31 Then
         
            F = 1
            
            M = 9
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," SET DEL ",DEC4 A
         
         EndIF 
         
         IF M = 9 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," OCT DEL ",DEC4 A
    
         EndIF
         
         IF M = 10 AND F > 0 AND F <= 31 Then
         
            IF F = 31 Then
         
            F = 1
            
            M = 11
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," NOV DEL ",DEC4 A
         
         EndIF 
          
         IF M = 11 AND F > 0 AND F <= 32 Then
         
            IF F = 32 Then
         
            F = 1
            
            EndIF
         
            LCDOut $FE,$C0," ",DEC2 F," DIC DEL ",DEC4 A
     
         EndIF 
         
         IF Anio = 1 Then

              A = A + 1 
             
              IF A = 2051 Then
             
              A = 2000
             
              EndIF
   
         EndIF
                                 
         Pause 1000
 
      Next Z
          
   Next Y 
 
Next X

Next F

Next M

Next A
     
GoTo Inicio
```


----------



## D@rkbytes (Sep 20, 2013)

Cloudff7 dijo:


> Hola yo tengo el mismo LCD y funciona muy bien
> pero al encenderlo el mensaje me sale a medias como si estuviera corrido hacia la izquierda
> 
> Uso un PIC 16f877A
> ...


En ese display tienes que empezar a escribir desde la dirección 0x84, no desde 0x80 para la línea 1.
Para la línea 2 tienes que empezar a escribir desde la dirección 0xC4, no desde 0xC0
Por ejemplo...

```
LCDOut $FE,1 ; Limpiar o inicializar la pantalla
    LCDOut $FE,$84,"PROBANDO LCD"   ; Línea 1
    LCDOut $FE,$C4,"LMG-162-STN"    ; Línea 2
```
Saludos.


----------



## Cloudff7 (Sep 21, 2013)

Hola

Ahora tengo otro problema
estoy tratando de Modificar le Programa en Micro Code Studio 2.6
y cuando lo quiero compilar me dice Unable to locate RelojOk.asm (en mi caso)
y no me Genera ni el . HEX ni el .asm nada

por lo que no puedo avanzar, algun consejo?


----------



## D@rkbytes (Sep 21, 2013)

Cloudff7 dijo:


> Hola
> 
> Ahora tengo otro problema
> estoy tratando de Modificar le Programa en Micro Code Studio 2.6
> ...


Posiblemente estés compilando el programa dentro de una carpeta con una ruta demasiado larga,
y usando la opción para compilar usando MPASMWIN.
Si es así, coloca la carpeta del proyecto en una carpeta que no exceda de 62 caracteres y compila nuevamente.

Otra cosa que puedes hacer, es no utilizar la opción para compilar usando MPASMWIN.
Mira por aquí: *Microcode Studio sin usar MPASMWIN*
También puedes mirar por aquí: *Instalación de MicroCode Studio* por otra posible solución.
Si utilizas MPLAB para programar con PICBasic Pro, es recomendable que uses únicamente MicroCode Studio.

Te recomiendo incluir la palabra de configuración en la cabecera del programa si usas MicroCode Studio para programar.
Y que definas la frecuencia del oscilador con la que harás funcionar el microcontrolador.
Algo así para un PIC16F877A:
@ Device XT_OSC, WDT_OFF, PWRT_ON
*Define* OSC 4

Otra recomendación, es que leas un poco más sobre programación en PICBasic Pro.
*Curso de programación de PIC en PICBasic Pro*

El código que posteaste se debe compilar sin problemas, así que, si no encuentras la solución con la información que te proporcioné, entonces debes darnos más detalles acerca de cómo lo estás haciendo.

Suerte.


----------

