Problema con 16f877a no enciende 7 segmentos.

Saludos, soy nuevo con esto de los microcontroladores, mi problema es el siguiente:

tengo un sencillo circuito programado para el PIC 16f877a que despliega los números del 1 al 9 en un display 7 segmentos, el problema es que cuando lo conecto en la práctica no enciende nada, ya lo he polarizado correctamente y le he colocado un oscilador de 4Mhz en los puertos 13y 14, agradezco su ayuda.

El código es el siguiente:

HTML:
list p=16f877A
        #include p16f877A.inc
        org 0x00
CONTA    equ 0x20       
limite  equ 0x0A
        org 0x05
inicio
        bsf STATUS,RP0
        bcf STATUS,RP1
        clrf TRISC  ;PORTC SALIDA
        movlw b'10000000'
        movwf OPTION_REG ;configuracion del timer1
        bcf STATUS,RP0
        bcf STATUS,RP1
        movlw b'00110000';CONTADOR INTERNO DE 16 BITS
        movwf T1CON
        clrf CONTA
        clrf PORTC
bucle
        movf CONTA,W ;W=TMR0
        call DISPLAY
        movwf PORTC
        call retardo
        incf CONTA,F
        movlw b'00001010' ;verifica si ha llegado a 10
        subwf CONTA,W
        btfss STATUS,Z
        goto bucle ;sino es 10 ir a bucle
        clrf CONTA ;si es cero conta=0
        goto bucle
retardo
        bcf PIR1,TMR1IF ;BORRA LA BANDERA DE DESBORDE
        clrf TMR1L ;limpiar los registros de conteo
        clrf TMR1H
        bsf T1CON,TMR1ON ;HABILITA EL TMR1
espera
        btfss PIR1,TMR1IF ;verifica el desborde
        goto espera ; sino ir a espera
        bcf T1CON,TMR1ON ;si desborda limpiar la bandera
        return
DISPLAY
        addwf PCL,f
        retlw b'00111111' ;nemero 0
        retlw b'00000110' ;nemero 1
        retlw b'01011011' ;nemero 2
        retlw b'01001111' ;nemero 3
        retlw b'01100110' ;nemero 4
        retlw b'01101101' ;nemero 5
        retlw b'01111101' ;nemero 6
        retlw b'00000111' ;nemero 7
        retlw b'01111111' ;nemero 8
        retlw b'01100111' ;nemero 9
        END
Cabe decir que en la simulación funciona perfectamente, aqui adjunto el archivo de proteus.
 

Adjuntos

  • timer02.rar
    12.3 KB · Visitas: 73
lo 1º ke te iba a decir es lo de la polarizacion del display por si es anodo o catodo comun. Imagino que habras puesto resistencias entre el display y el pic, si no lo has hecho me da k el display esta en un lugar mejor.

Yo lo que hago alguna vez en caso de duda con el display es meter:

HTML:
INICIO:   
             incf    PORTC,F
             call    RETENCION
             goto  INICIO

veras como ira mostrandose una cuenta en binario, si enciende el display es que elmontaje esta bien sin duda alguna. No se si lo habras hecho pero a mi me han dicho mil veces poner 2 condensadores a extremos del reloj de 27pF conectados a masa. Ejemplo. No se si ya los tendras puestos pero sin ver el esquema digo todo lo que se me ocurre que pueda dar fallos

Mas no te puedo ayudar por que hay mas de una cosa en el programa que se escapa a mi nivel.
 
Última edición:
Ahora mi problema es que monto asi sea el circuito más básico, por ejemplo de prender un led, pero no hace absolutamente nada, no enciende nada, entonces yo creería que el problema es de hardware, lo de los capacitores si lo tengo montado así al clock, me han dicho que me fije que XT debe estar habilitado para 4Mhz, pero no se exactamente a qué sere refieren, y también cómo hago para saber que la programacion de bajo voltaje este deshabilitada?

Muchisimas gracias por sus respuestas.
 
Haber partiendo de cero si el esquema que usas es el que posteaste
1.- donde esta el cristal para la oscilacion?
2.- donde estan los parametros de funcionamiento del pic?
 
en winpic en config tienes que tener desactivado el WDT y activar XT
Y si estoy programando directamente desde MPLAB, sabes cómo se hace?

Ya he conseguido solucionar el problema, lo único que hice fue agregar esta linea de código en el programa de mplab.

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
 
Última edición:
buenas, solicito de su colaboración en lo que puedan ayudarme, ya que tengo que Diseñar un sistema con la capacidad de conteo con diferentes retardos y el límite, estos retardos deben ser introducidos por teclado, el conteo debe hacerse por display 7 segmentos.

Ya hice el diseño en proteus, pero no he podido hacer el código en PIC. Anexo pantalla

Agradezco la ayuda que me puedan prestar.

Gracias
 
que pena contigo, adjunto la imagen del diseño en el formato que me digiste, y bueno el código lo he tratado de hacer y de guiarme pero la verdad no he podido hacerlo, necesito que me colaboren por favor en esto. muchas gracias
 

Adjuntos

  • IMAGEN PROTEUS.rar
    74.7 KB · Visitas: 41
maox13: La imagen no se ve bien. Trata de capturar la imagen de solo el circuito.
Sobre el codigo, esta clase de aplicacion la he visto varias veces aqui en FE y en google. Busca un ejemplo para que te sirva de guia. Saludos
 
Atrás
Arriba