TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Jorge_G_E en 15 de Agosto de 2006, 20:46:15
-
hola, soy nuevo en este foro, he enontrado cosas muy buenas. Ahora quiero pedir ayuda para resolver mi problema. Hice un programa utilizando el CAD y desplegar el resultado en una pantalla lcd. converti el resultado en binario que me proporciono el CAD a bcd separandolo en 3 cifras las cuales ya mando en ASCII a la lcd. el problema es que al desplegarlas la primera cifra nunca tiene un valor fijo, se mantiene ciclando todos los caracteres 0x3X, la segunta cifra no hace lo mismo sino hasta que la 3ra cifra sea diferente de cero.
Espero me puedan ayudar, creo que solo es algun detalle que estoy omitiendo y que no puedo visualizar.
bsf STATUS,RP0
clrf TRISB
clrf TRISC
bcf STATUS,RP0
clrf PORTC
clrf PORTB
call configu
movlw 0x87
movwf PORTB
call enviar_lcd
movfw centenas
movwf PORTB
bsf PORTC,0
call enviar_lcd
bcf PORTC,0
movlw 0x88
movwf PORTB
call enviar_lcd
movfw decenas
movwf PORTB
bsf PORTC,0
call enviar_lcd
bcf PORTC,0
movlw 0x89
movwf PORTB
call enviar_lcd
movfw unidades
movwf PORTB
bsf PORTC,0
call enviar_lcd
bcf PORTC,0
goto inicio
configu clrf PORTB
movlw 0x06
movwf PORTB
call enviar_lcd
clrf PORTB
movlw 0x0C
movwf PORTB
call enviar_lcd
clrf PORTB
movlw 0x14
movwf PORTB
call enviar_lcd
clrf PORTB
movlw 0x30
movwf PORTB
call enviar_lcd
enviar_lcd bsf PORTC,1
movlw 0x0A
movwf contlcd
otra decfsz contlcd
goto otra
bcf PORTC,1
return
esto es lo que hice para la LCD
Saludos.
-
mira a ver el retardo que le das entre cada conversion.
creo que el problema no es lcd sino la conversion ADC.
miremos el programa de conversion
saludos
-
Hola, parece ser que no es tanto ahi el problema, ya probé poniendo displays de 7 segmentos y despliega los datos muy bien. pongo aqui mi programa.
saludos.
title 'simulación1.asm'
list p=16f877A
#include <p16f877A.inc>
cblock 0x20
dato_obtenido
datodec
contador
centenas
parcial
datodecenas
datodec1
contador1
decenas
parcial1
datounidades
datodec2
contador2
unidades
contlcd
contad
endc
;-------------------A D C-------------------------------------
inicio1 goto inic
inic bsf STATUS,RP0
clrf TRISA
clrf TRISB
clrf TRISC
clrf TRISD
movlw 0x80
movwf ADCON1
bcf STATUS,RP0
movlw 0x41
movwf ADCON0
inicio goto espera20u
clrf PORTB
nop
hecho nop
bsf ADCON0,GO
hecho1 nop
wait btfsc ADCON0,GO
goto wait
bsf STATUS,RP0
movfw ADRESL
bcf STATUS,RP0
;-------------------C E N T E N A S--------------------------------------------------------
movwf dato_obtenido
movwf datodec
repetir movlw .100
subwf datodec
btfsc STATUS,C
goto incrementar
guardar movfw contador
movwf centenas
incf contador
deccont decf contador
btfss STATUS,Z
goto multiplo
movfw parcial
subwf dato_obtenido,0
movwf datodecenas
;-------------------D E C E N A S----------------------------------------------------------
movfw datodecenas
movwf datodec1
repetir1 movlw .10
subwf datodec1,1
btfsc STATUS,C
goto incrementar1
guardar1 movfw contador1
movwf decenas
incf contador1
deccont1 decf contador1
btfss STATUS,Z
goto multiplo1
movfw parcial1
subwf datodecenas,0
movwf datounidades
;-------------------U N I D A D E S--------------------------------------------------------
movfw datounidades
movwf datodec2
repetir2 movlw .1
subwf datodec2,1
btfsc STATUS,C
goto incrementar2
guardar2 movfw contador2
movwf unidades
;-------------------P R E P A R A N D O U, D, C, P A R A L C D------------------------
movlw 0f
andwf unidades,1
andwf decenas,1
andwf centenas,1
movlw 30
iorwf unidades,1
iorwf decenas,1
iorwf centenas,1
;-------------------L C D----------------------------------------------------------------
clrf PORTC
clrf PORTB
movlw 0x06
call enviarinst
movlw 0x0C
call enviarinst
movlw 0x14
call enviarinst
movlw 0x30
call enviarinst
movlw 0x87
call enviarinst
movfw centenas
call enviardato
movfw decenas
call enviardato
movfw unidades
call enviardato
goto inicio
enviarinst bcf PORTB,0
bsf PORTB,1
movwf PORTC
movlw 0x0F
movwf contlcd
otra decfsz contlcd
goto otra
bcf PORTB,1
return
enviardato bsf PORTB,0
bsf PORTB,1
movwf PORTC
movlw 0x0F
movwf contlcd
otra1 decfsz contlcd
goto otra1
bcf PORTB,1
return
;--subrutinas-----------------
espera20u movlw .7
movwf contad
new decfsz contad ;CAD
goto new
goto hecho
;-----------------------------
incrementar incf contador
goto repetir ;CENTENAS
multiplo movlw .100
addwf parcial
goto deccont
;-----------------------------
incrementar1 incf contador1
goto repetir1 ;DECENAS
multiplo1 movlw .10
addwf parcial1
goto deccont1
;-----------------------------
incrementar2 incf contador2
goto repetir2 ;UNIDADES
end