Autor Tema: ayuda lcd  (Leído 1331 veces)

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

Desconectado Jorge_G_E

  • PIC10
  • *
  • Mensajes: 2
ayuda lcd
« 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.

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: ayuda lcd
« Respuesta #1 en: 16 de Agosto de 2006, 15:33:38 »
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
 
 

Desconectado Jorge_G_E

  • PIC10
  • *
  • Mensajes: 2
Re: ayuda lcd
« Respuesta #2 en: 16 de Agosto de 2006, 21:05:14 »
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


 

anything