Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

09/09/2012 #1


LCD 16X2 Esta quemado o no
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
09/09/2012 #2

Avatar de Justiciero24

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,
09/09/2012 #3


Justiciero24 dijo: Ver Mensaje
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

---------- Actualizado después de 12 minutos ----------

Justiciero24 dijo: Ver Mensaje
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 = ?
09/09/2012 #4

Avatar de Justiciero24

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,
09/09/2012 #5


Justiciero24 dijo: Ver Mensaje
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,
Listo si sirve, asi lo probe
Imágenes Adjuntas
Tipo de Archivo: jpg LCD_BL.jpg (59,1 KB (Kilobytes), 105 visitas)
09/09/2012 #6

Avatar de Justiciero24

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,
20/09/2013 #7

Avatar de Cloudff7

Problema con LCD
Justiciero24 dijo: Ver Mensaje
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:
Código:
'%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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
Imágenes Adjuntas
Tipo de Archivo: jpg CAM00678.jpg (86,3 KB (Kilobytes), 17 visitas)
20/09/2013 #8
Moderador

Avatar de D@rkbytes

Cloudff7 dijo: Ver Mensaje
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?
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...
Código:
    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.
21/09/2013 #9

Avatar de Cloudff7

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?
21/09/2013 #10
Moderador

Avatar de D@rkbytes

Cloudff7 dijo: Ver Mensaje
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, algún consejo?
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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.