Autor Tema: No funciona mi lcd, pero si en simulacion (proteus)  (Leído 6737 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
No funciona mi lcd, pero si en simulacion (proteus)
« en: 29 de Junio de 2011, 17:26:33 »
Hola, estoy haciendo un programa de control de temperatura lm35 en el cual la temperatura se debe mostrar el lcd, en la simulacion de proteus si funciona, osea displaya la temperatura, pero cuando lo implemento no sale nada, ( si prende el lcd, pero no envia ningun dato al parecer.)
Gracias de antemano
A continuacion les adjunto el programa y la imagen de la simulacion.


el programa:

;-----[ Ajustes Iniciales ]----------

            LIST   P=PIC16F877A
            include "P16F877A.INC"
            ;include "Macros.asm"
;----------------------------------------------------------------------------------

;-----[ Literales y Constantes ]-----

;----------------------------------------------------------------------------------
;-----[ Variables ]-----

contador equ 0x30
retardo equ 0x31
HEXADECIMAL equ 0X32
ASCII_M     equ 0x33
ASCII_H     equ 0x34
ASCII_L     equ 0x35
      
;compara equ 0x32
;----------------------------------------------------------------------------------

;-----[ Vectores ]-----
   org 0x000            ; Vector de todos los Re-inicios

            goto Principal         ; Primera línea del Programa Principal

            org 0x005
            ; Para si (por error) ocurriera una interrupción
;----------------------------------------------------------------------------------

;-----[ Tablas ]-----
;
; Sin tablas
;----------------------------------------------------------------------------------

;-----[ Programa Principal ]-----
;
Principal
            call Inicio            ; Inicia todo lo necesario
Lazo
            goto Leds         ; Recibe la informacion   
;-----[ Inicio ]-----
;-----------------------------------------------------------------------------------
;Inicialización del puerto A:
Inicio
      CLRF STATUS      ;Selecciona Banco 0
      CLRF PORTB       ;Inicializa latches de datos de PORTB
       MOVLW 0x41       ;Selecciona el Fosc/8,canal 0 del adc, enciende el conversor
      MOVWF ADCON0
        BSF STATUS, RP0  ; Se selecciona el banco 1
      BCF STATUS, RP1
       MOVLW 0x01       ;Selecciona todos los pines analogicos y el resultado se guerda en ADRESL
      MOVWF ADCON1
       MOVLW 0xFF       ;configura todas patitas del puerto A como entradas
      MOVWF TRISA    
          MOVLW 0x00      ;configura todas patitas de puerto B
      MOVWF TRISB    ;como salidas digitales
        MOVWF TRISC    ;como salidas digitales

        return
;-----------------------------------------------------------------------------------
;Una vez inicializado el puerto
Leds
      BCF STATUS,RP0    ;regresa al banco 0
        call inicialcd    ;CONFIGURA EL LCD(INICIALIZA EL LCD)
Ciclo
       BSF ADCON0,2 ;   empiesa la conversion
        BTFSS PIR1,6    ;se espera a q termine la conversion
        GOTO Ciclo     
        movf ADRESL,w   ;se mueve el valor de la conversion a w
         BCF PIR1,6     ;se limpia el bit ADIF
        CALL Hex_Ascii  ;llama a convertir a ascii
        call limpia     ;limpia el lcd
        movf ASCII_H,w  ;imprime el valor de centenas en el lcd
      call envia
        movf ASCII_M,w  ;imprime el valor de decenas en el lcd
      call envia
        movf ASCII_L,w  ;imprime el valor de unidades en el lcd
      call envia
        movlw   0xDF    ;visualiza "°"
        call envia
        movlw "C"
        call envia
        GOTO Ciclo
;-----------------------------------------------------------------------------------
delay          
      movlw 0xF9
        movwf retardo
cicloGG
   
        movlw 0xFF
      movwf contador
   
ciclo2
      decfsz contador
      goto ciclo2
      decfsz retardo
      goto cicloGG
        return
;-----------------------------------------------------------------------------------
;subrutina para inicializar el lcd
inicialcd

        movlw 0x01       ; El comando 0x01 limpia la pantalla en el LCD
      call comando      ; Se da de alta el comando
      movlw 0x0C       ; Se selecciona la primera linea
      call comando     ; Se da de alta el comando
      movlw 0x3C       ; Se configura el cursor
      call comando     ; Se da de alta el comando
      bsf PORTB, 1    ; Rs se pone en 1 para deshabilitar el uso de comandos
        return
;-----------------------------------------------------------------------------------       
;subrutina para enviar comandos
comando
        movwf PORTC
        bsf PORTB, 0   ; Pone la señal E en 1, espera un tiempo y luego la regresa a
        call delay
        call delay
        bcf PORTB, 0   
      call delay
      return     
;subrutina para enviar un dato
;-----------------------------------------------------------------------------------
envia
      bsf PORTB, 1    ; rs en 1
      call comando
      return
;-----------------------------------------------------------------------------------
linea2
          bcf PORTB, 1    ; rs en 0
        movlw 0xc0       ; selecciona linea 2 pantalla en el LCD
      call comando      ; Se da de alta el comando
        return
;-----------------------------------------------------------------------------------     
limpia
        bcf PORTB, 1    ; rs en 0
        movlw 0x01       ; limpia lcd pantalla en el LCD
      call comando      ; Se da de alta el comando
        return
;-----------------------------------------------------------------------------------
;convertimos el valor del adc a decimal(ascii)

Hex_Ascii   ;cargar en W el dato hex.

      
          MOVWF   HEXADECIMAL
            clrf    ASCII_H          ;Para BCD D'0'
            clrf    ASCII_M           ;Para BCD D'0'
            clrf    ASCII_L         ;Para BCD D'0'

Centenas
;-----------------------------------------------------------------------------------
            movlw     D'100'          ;D'100' --> W
            subwf   HEXADECIMAL,W   ;HEXADECIMAL - D'100' --> W
            btfss   STATUS,C        ;¿ HEXADECIMAL es menor que D'100' ?
            goto    Decenas         ;Si
            movwf   HEXADECIMAL     ;Salva el resto
            incf    ASCII_H,F       ;Incrementa el contador de centenas BCD
            goto    Centenas        ;Vuelve por otros D'100'
;-----------------------------------------------------------------------------------
Decenas

            movlw   D'10'             ;D'10' --> W
            subwf   HEXADECIMAL,W   ;HEXADECIMAL - D'10' --> W
            btfss   STATUS,C        ;¿ HEXADECIMAL es menor que D'10' ?
            goto    Unidades        ;Si
            movwf   HEXADECIMAL     ;Salva el resto
            incf    ASCII_M,F       ;Incrementa el contador de decenas BCD
            goto    Decenas         ;Vuelve por otros D'10'
;-----------------------------------------------------------------------------------
Unidades

            movf    HEXADECIMAL,W   ;El resto pertenece
            movwf   ASCII_L         ;a las unidades BCD
            clrf    HEXADECIMAL     ;Pone a cero el registro HEXADECIMAL
;-----------------------------------------------------------------------------------
Bcd_A_Ascii

            movlw    H'30'           ;H'30' --> W
            iorwf   ASCII_L,F       ;Convierte de BCD a ASCII
            iorwf   ASCII_M,F       ;Convierte de BCD a ASCII

            movf    ASCII_H,F       ;ASCII_H --> F
            btfsc   STATUS,Z                ;? ASCII_H es D'00' ?
            goto    Espacio         ;Si
            movlw   H'30'           ;H'30' --> W
            iorwf   ASCII_H,F       ;Convierte de BCD a ASCII
            return                  ;Retorna
;-----------------------------------------------------------------------------------
Espacio

            movlw   '0'             ;A' ' --> W
            movwf   ASCII_H         ;A' ' --> ASCII_H
             return                  ;Retorna

       END

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #1 en: 29 de Junio de 2011, 19:38:03 »
.


¿Qué display estás usando? ¿Al encenderlo no muestra nada o muestra solo cuadros negros?


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #2 en: 29 de Junio de 2011, 20:11:28 »
Recuadros negros en la parte de arriba del lcd es el  1620a-17 el comun el de pantalla azul
ayuda mañan es mi presentacion final

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #3 en: 29 de Junio de 2011, 20:32:08 »
Recuadros negros en la parte de arriba del lcd es el  1620a-17 el comun el de pantalla azul
ayuda mañan es mi presentacion final
los cuadros nnegros es porque necesitas cambiarle el contraste, ponle un poteciometro al pin 3 de la lcd, y variale hasta que se vean bien los numeros
"Nada es imposible, no si puedes imaginarlo"

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #4 en: 29 de Junio de 2011, 20:32:17 »
Colocaste potenciometro de contraste?
No contesto mensajes privados, las consultas en el foro

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #5 en: 29 de Junio de 2011, 20:39:53 »
si puedo regular el contraste pero igual no me bota nada asi le baje el contraste o le suba

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #6 en: 29 de Junio de 2011, 20:42:23 »
deberias ver al menos que los cuadros negros van aclarandose u obscureciendo, como tienes conectado tu potenciometro?
"Nada es imposible, no si puedes imaginarlo"

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #7 en: 29 de Junio de 2011, 20:47:39 »
Si puedo regular el potenciometro para ver los cuadritos negros pero si lo veo en mi simulacion pero pienso que algo esta mal en el programa sin embargo la simulacion si funciona puedes revisar el programa para ver si esta algo mal porfavor.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #8 en: 29 de Junio de 2011, 21:13:41 »
me parece que tu programa esta bien, si fucniona en la simulacion deberia funcionar en hardware, si estas poniendole cristal y el boton del mclr?
"Nada es imposible, no si puedes imaginarlo"

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #9 en: 29 de Junio de 2011, 22:40:05 »
si esta el cristal de 10m herz y el potenciometro a 10 k pero igual no displaya nada nose porque?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #10 en: 29 de Junio de 2011, 22:48:43 »
Resistencia en PIN MCLR? Que configuración de fusibles colocas?
No contesto mensajes privados, las consultas en el foro

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #11 en: 30 de Junio de 2011, 00:40:18 »
si en la pata 1 con un pulsador que mas podria ser?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #12 en: 30 de Junio de 2011, 10:31:15 »
Que configuración de fusibles colocas?
No contesto mensajes privados, las consultas en el foro

Desconectado 200810521

  • PIC10
  • *
  • Mensajes: 8
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #13 en: 02 de Julio de 2011, 23:54:24 »
A QUE TE REFIERES CON ESO?

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: No funciona mi lcd, pero si en simulacion (proteus)
« Respuesta #14 en: 02 de Julio de 2011, 23:59:40 »
Que configuración de fusibles colocas?

se refiere a que palabras de configuracion le pusiste a tu programa
"Nada es imposible, no si puedes imaginarlo"