Autor Tema: scroll en lcd 2*16 con pic  (Leído 3323 veces)

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

Desconectado orlandol

  • PIC10
  • *
  • Mensajes: 4
scroll en lcd 2*16 con pic
« en: 13 de Abril de 2006, 01:38:11 »
 :( Ojala me puedan colaborar con el asm o una guia ya que estoy desarrollando una aplicacion que requiere hacer un scroll o texto deslizante en la primera linea de un lcd 2*16 utilizando un pic 16f873a, y estoy varado pues he intentado utilizar los codigos del manual de referencia del lcd y no he podido.

Por su amabilidad les quedare altamente agradecido.

Cordialmente

Orlando.
« Última modificación: 13 de Abril de 2006, 02:02:18 por orlandol »
El hombre sabio, incluso cuando calla, dice más que el necio cuando habla.

         Thomas Fuller

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: scroll en lcd 2*16 con pic
« Respuesta #1 en: 13 de Abril de 2006, 02:03:55 »
Hola. ¿El LCD que estas usando posee controlador Hitachi hd44780?
¿Que es concretamente lo que no logras hacer funcionar? ¿logras hacer el scroll?
Recorda que inicialmente:
las posiciones RAM del LCD de la primer linea van desde la 0x00 hasta la 0x0F
las posiciones RAM del LCD de la segunda linea van desde la 0x40 hasta la 0x4F

Si pensas por ejemplo, hacer un desplazamiento hacia la izquierda, entonces, la RAM se desplazaria 1 lugar hacia la izquierda, provocando que ingresen por la derecha del LCD los datos grabados en las posiciones 0x10(en la primer linea) y 0x50(en la segunda linea), mientras que los datos grabados en las posiciones 0x00 y 0x40 dejan de visualizarse.
Entonces, previamente debias tener grabado estas posiciones (0x10 y 0x50) para que el efecto luzca bien.¿lo has hecho?

Los bits a enviar al LCD para rotar el contenido a la izquierda en una posicion(si utiliza hd44780 o compatible) son:

RS R/: DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
 0    0     0     0      0    1     1     0     —     —
 

Si postearas el codigo seria mas facil poder orientarte.
Saludos!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado orlandol

  • PIC10
  • *
  • Mensajes: 4
Re: scroll en lcd 2*16 con pic
« Respuesta #2 en: 13 de Abril de 2006, 02:29:38 »
 :)  Mira esta es la rutina de inicializacion, me interesa poder hacer el scroll de la seccion prim_mensaje, asi como esta el texto esta fijo, cualquier ayuda es bien recibida.

Gracias por la orientacion inicial.


;*****************************************************************************************
;..........................COMANDOS PARA EL LCD...........................................
                  ;
LCD_INI   CALL   D_15MS         ;
      MOVLW   28H         ; 4Bits,2 lineas, 5*7
      CALL   LCDI         ;
      MOVLW   6H         ; incremento, desplaza visualizacion
      CALL   LCDI         ;
      MOVLW   0CH         ; Display on,cursor off,parpadeo off
      CALL   LCDI         ;
      RETURN            ;
                  ;
;****************************************************************************************
;................RUTINA PARA EL ENVIO DE INSTRUCCIONES...................................
                  ;
LCDI   BCF      RS         ; LCD en modo de INSTRUCCIONES
      MOVWF   AUX         ;
      SWAPF   AUX,W         ;Voltea el dato
      MOVWF   PORTA         ;
      CALL   LCD_E         ;
      MOVF   AUX,W         ;   
      MOVWF   PORTA         ; Carga el dato al puerto
      CALL   LCD_E         ; Llama bit de habilitacion de LCD
      CALL   D_5MS         ; Tiempo de 5 mS   
      RETURN            ;
                  ;
;****************************************************************************************
;................RUTINA PARA EL ENVIO DE CARACTERES......................................      
                  ;
LCDC   BSF      RS         ; LCD en modo de DATOS
      MOVWF   AUX         ;
      SWAPF   AUX,W         ;
      MOVWF   PORTA         ;
      CALL   LCD_E         ;
      MOVF   AUX,W         ;
      MOVWF   PORTA         ; Carga el dato al puerto
      CALL   LCD_E         ; Llama bit de habilitacion de LCD
      CALL   D_5MS         ; Tiempo de 5 mS   
      RETURN            ;
                  ;
;****************************************************************************************
;................RUTINA PARA EL ENVIO DE PULSO HABILITADOR...............................
                  ;
LCD_E   BSF   E         ; Activa señal E
      NOP            ;
      BCF   E         ; Desactiva E
      RETURN            ;
                  ;                  
;*****************************************************************************************
;--------------------RUTINA DE ENVIO DE PRIMER MENSAJE PARA VISUALIZAR--------------------
                  ;
PRIM_MENSAJE
                   MOVLW   01H         ;
      CALL   LCDI         ; ENVIA INSTRUCCION DE BORRADO PARA LCD
                  ;
      CLRF   AUX1         ;
      MOVLW   .16         ; CARGA REGISTRO CON NUMERO DE CARACTERES
      MOVWF   COUNT         ; A VISUALIZAR EL LA PANTALLA
                  ;
LOOP_MEN1
      MOVF   AUX1,W         ; MUEVE VALOR CERO PARA LLAMAR EL PRIMER
      CALL   MENSAJE_1      ; CARACTER QUE ESTA EN LA TABLA MENSAJE_1
      CALL   LCDC         ; LLAMA LA RUTINA DE ENVIO DE CARACTER AL LCD
      INCF   AUX1,1         ; AUMENTA EL REGISTRO DE POSICIONES EN LA TABLA
      DECFSZ   COUNT,1         ; DECREMETA EL CONTADOR DE CARACTERES DE LINEA DE CARACTER
      GOTO   LOOP_MEN1      ; SI NO HA TERMINADO CONTINUA CON LA RUTINA
   
                  ;      
      MOVLW   0C0H         ; POSICIONAMIENTO DE LA DD_RAM 
      CALL   LCDI         ; 2 LINEA * 1 POSICION
                  ;   
El hombre sabio, incluso cuando calla, dice más que el necio cuando habla.

         Thomas Fuller

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: scroll en lcd 2*16 con pic
« Respuesta #3 en: 13 de Abril de 2006, 04:31:26 »
Hola. Puede que este ciego, pero no veo en que momento rotas el mensaje!
Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado orlandol

  • PIC10
  • *
  • Mensajes: 4
Re: scroll en lcd 2*16 con pic
« Respuesta #4 en: 13 de Abril de 2006, 13:38:11 »
Como decia antes, el codigo anterior deja fijas las dos lineas lo tengo funconando asi por que necesitaba hacer unas pruebas, sin embargo he intentado utilizar esta instruccion



PRIM_MENSAJE
       MOVLW   01H         ;
      CALL   LCDI         ; ENVIA INSTRUCCION DE BORRADO PARA LCD
                  ;
;       MOVLW   b'00011000'         ;
;      CALL   LCDI         ; ENVIA INSTRUCCION DE BORRADO PARA LCD

      CLRF   AUX1         ;
      MOVLW   .16         ; CARGA REGISTRO CON NUMERO DE CARACTERES
      MOVWF   COUNT         ; A VISUALIZAR EL LA PANTALLA
                  ;
LOOP_MEN1
      MOVF   AUX1,W         ; MUEVE VALOR CERO PARA LLAMAR EL PRIMER
      CALL   MENSAJE_1      ; CARACTER QUE ESTA EN LA TABLA MENSAJE_1
      CALL   LCDC         ; LLAMA LA RUTINA DE ENVIO DE CARACTER AL LCD
      INCF   AUX1,1         ; AUMENTA EL REGISTRO DE POSICIONES EN LA TABLA
      DECFSZ   COUNT,1         ; DECREMETA EL CONTADOR DE CARACTERES DE LINEA DE CARACTER
      GOTO   LOOP_MEN1      ; SI NO HA TERMINADO CONTINUA CON LA RUTINA
   
                  ;      
      MOVLW   0C0H         ; POSICIONAMIENTO DE LA DD_RAM 
      CALL   LCDI         ; 2 LINEA * 1 POSICION


pero no consigo que rote el texto
El hombre sabio, incluso cuando calla, dice más que el necio cuando habla.

         Thomas Fuller

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: scroll en lcd 2*16 con pic
« Respuesta #5 en: 14 de Abril de 2006, 14:45:07 »
Hola. Esa rutina que posteaste no rota el texto...
Te modifico al final para que pruebes

Código: ASM
  1. PRIM_MENSAJE
  2.        MOVLW   01H         ;
  3.       CALL   LCDI         ; ENVIA INSTRUCCION DE BORRADO PARA LCD
  4.                   ;
  5. ;       MOVLW   b'00011000'         ;
  6. ;      CALL   LCDI         ; ENVIA INSTRUCCION DE BORRADO PARA LCD
  7.  
  8.       CLRF   AUX1         ;
  9.       MOVLW   .16         ; CARGA REGISTRO CON NUMERO DE CARACTERES
  10.       MOVWF   COUNT         ; A VISUALIZAR EL LA PANTALLA
  11.                   ;
  12. LOOP_MEN1
  13.       MOVF   AUX1,W         ; MUEVE VALOR CERO PARA LLAMAR EL PRIMER
  14.       CALL   MENSAJE_1      ; CARACTER QUE ESTA EN LA TABLA MENSAJE_1
  15.       CALL   LCDC         ; LLAMA LA RUTINA DE ENVIO DE CARACTER AL LCD
  16.       INCF   AUX1,1         ; AUMENTA EL REGISTRO DE POSICIONES EN LA TABLA
  17.       DECFSZ   COUNT,1         ; DECREMETA EL CONTADOR DE CARACTERES DE LINEA DE CARACTER
  18.       GOTO   LOOP_MEN1      ; SI NO HA TERMINADO CONTINUA CON LA RUTINA
  19.    
  20.                          
  21.       ;MOVLW   0C0H         ; POSICIONAMIENTO DE LA DD_RAM  no necesitas si no utilizas la segunda fila del LCD
  22.       ;CALL   LCDI         ; 2 LINEA * 1 POSICION no necesitas si no utilizas la segunda fila del LCD
  23.  
  24.        MOVLW    0CH      ;enviar instruccion
  25.        CALL   LCDI

Ojo con MOVLW   0C0H
Eso es igual a poner: MOVLW   C0H...No se si ese fue tu error a la hora de querer rotar.Proba asi con esa modificacion que puse.
Exitos!!!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything