TODOPIC
Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: gcgiron en 08 de Diciembre de 2007, 06:39:31
-
Hola, tengo un problema en la simulacion del termometro digital con el PIC16f84A, ADC0804, LCD16x2 y el sensor de temperatura LM35, este proyecto lo baje de internet, y lo monte en Proteus, resulta que cuando lo simulo aparece en error de contencion logica en las mallas del micro, el adc y el lcd; ademas la pantalla no arranca.
Ahi posteo la imagen de la simulacion.
Gracias por las respuestas.
-
Hola de nuevo ahi posteo el .hex y el archivo de proteus.
De antemano muchas gracias por las respuestas.
-
Disculpen otra vez hola, ahi posteo el .inc
LIST
;#############################################################
; Fichero : LCD1602.inc #include
; Autor : Juan Mu¤oz.
; Fecha: Abril 2001.
; Versi¢n: 0.0
; Funci¢n : Subrutinas para el Control de un LCD1602.
;#############################################################
NOLIST
;-------------------------------------------------------------
; Rutinas de presentaci¢n de mensajes en LCD
;-------------------------------------------------------------
DATO_A EQU 0x0C ;Variable de temporizaci¢n
DATO_B EQU 0x0D ;Variable de temporizaci¢n
;-------------------------------------------------------------
;LCD_BUSY: Lectura del Flag busy & direcci¢n.
;-------------------------------------------------------------
LCD_BUSY bsf PORTA,1 ;Pone el LCD en modo lectura
bsf STATUS,5 ;Selecciona el banco 1
movlw 0xff
movwf TRISB ;Puerta B como entrada
bcf STATUS,5 ;Selecciona el banco 0
bsf PORTA,2 ;Activa el LCD
nop
L_BUSY btfsc PORTB,7 ;Chequea bit de Busy
goto L_BUSY
bcf PORTA,2 ;Desactiva LCD
bsf STATUS,5 ;Selecciona banco 1
clrf TRISB ;Puerta B salida
bcf STATUS,5 ;Selecciona el banco 0
bcf PORTA,1 ;Pone LCD en modo WR
return
;-------------------------------------------------------------
;LCD_E: Pulso de Enable
;-------------------------------------------------------------
LCD_E bsf PORTA,2 ;Activa se¤al E
nop ;Espera 1 uS
bcf PORTA,2 ;Desactiva se¤al E return ;
;-------------------------------------------------------------
;LCD_DATO: Escritura de datos en DDRAM o CGRAM
;-------------------------------------------------------------
LCD_DATO bcf PORTA,0 ;Desactiva RS (modo comando)
movwf PORTB ;Valor ASCII a sacar por PORTB
call LCD_BUSY ;Espera a que se libere el LCD
bsf PORTA,0 ;Activa RS (modo dato).
goto LCD_E ;Genera pulso en la se¤al E
;-------------------------------------------------------------
;LCD_REG: Escritura de comandos en el LCD
;-------------------------------------------------------------
LCD_REG bcf PORTA,0 ;Desactiva RS (modo comando)
movwf PORTB ;Saca el c¢digo de la instrucci¢n
call LCD_BUSY ;Espera se libere el LCD
goto LCD_E ;Genera pulso en la se¤al E ;
;-------------------------------------------------------------
;LCD_INI: Inicializaci¢n del LCD
;-------------------------------------------------------------
LCD_INI movlw b'00111000' ;Caracteres 5-7,datos de 8 bits.
call LCD_REG ;C¢digo de instrucci¢n
call DELAY_5MS ;5ms.(Especificaci¢n de Fabricante)
movlw b'00111000'
call LCD_REG ;C¢digo de instrucci¢n
call DELAY_5MS ;5ms.(Especificaci¢n de Fabricante)
movlw b'00111000'
call LCD_REG ;C¢digo de instrucci¢n
call DELAY_5MS ;5ms.(Especificaci¢n de Fabricante)
return
;-------------------------------------------------------------
;DELAY_5MS: Genera una temporizaci¢n de 5 mS
;-------------------------------------------------------------
DELAY_5MS movlw 0x1a
movwf DATO_B ;Carga la variable DATO_B
clrf DATO_A ;Carga la variable DATO_A
DELAY_1 decfsz DATO_A,1 ;Decrementa la variable DATO_A
goto DELAY_1
decfsz DATO_B,1 ;Decrementa la variable DATO_B
goto DELAY_1
return LIST
Como soy nuevo en esto de los PIC y mi conocimiento es de aficionado, les solicito la colaboracion en sacar este proyecto.
Gracias.
-
Hola gcgiron, ps solo vi la imagen que posteaste, aun no probe los archivos que dejaste, no se mucho de proteus, pero a que te refieres con eso de contencion logica???, imagino te refieres a los puntos amarillos de te da en los pines, si es por eso ps te comento que a mi me pasa algo parecido, pero no me parece ningun error, aunque solo ocurre por unos milisegundos, no se si sera tu caso, aparte en la imagen se ve que el potenciometro que va en el LCD esta en bajo, porque no le pruebas dandole otros valores, para que varie el contraste, otra cosa que podria ser es que los valores de esta mandando el PIC y/o el ADC, se estan procesando muy rapido, cosa que tambien me paso, porque no le das un retardo entre que lees el ADC y lo procesas, y lo mandas al LCD, para que tenga tiempo de mostrarse
-
Eto gracias por tu orientacion, lo voy a hacer a ver que pasa.