TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: cesar gomez en 10 de Junio de 2007, 00:18:50

Título: trasladar un mensaje por lcd???
Publicado por: cesar gomez en 10 de Junio de 2007, 00:18:50
hola a todos necesito mostrar un mensaje por una lcd de 2x16 con el pic 18f452 este mensaje debe salir por la derecha y volver a ingresar por la izquierda esto debe ser en assembler, espero haberme hecho entender. Toda ayuda se las agradecere... gracias adios.... :lol:
Título: Re: trasladar un mensaje por lcd???
Publicado por: maunix en 10 de Junio de 2007, 12:37:15
hola a todos necesito mostrar un mensaje por una lcd de 2x16 con el pic 18f452 este mensaje debe salir por la derecha y volver a ingresar por la izquierda esto debe ser en assembler, espero haberme hecho entender. Toda ayuda se las agradecere... gracias adios.... :lol:

Sería de gran ayuda que nos indiques qué has probado hasta ahora y qué es lo que no te funciona.

Saludos
Título: Re: trasladar un mensaje por lcd???
Publicado por: cesar gomez en 13 de Junio de 2007, 01:46:18
hola.... mira este es el programa espero que no te aburra.... como ves es con el pic 18f452, amigo ya lo vizualice por proteus y con el protoboard pero la verdad simplemente aparece... y no se desplaza e intentado hacerlo con....

movlw b'0000000111'
movwf XLCDCommand

pero no logre mucho y sigue en el mismo sitio... espero que me puedan ayudar se los agradeceria....

;###############################################################################
;# TITLE   "LCD Display"   
;#             
;#      Program         :External LCD(for 18F452)
;#      Version         :1.0   
;#      Revision Date   :      
;#      Author          : Naveen Raj
;#                           
;# Program demonstrates use of External LCD Module
;# general purpose library module.
;###############################################################################
       list p=18F452         
        include <P18F452.INC>               
 
 

    include "XLCD.inc"                      ;This include all required files and variables.   
   
;The user can deaclare different definitions and make necessary commands   
XLCDCursorOnBlinkOn     equ     B'00001111' ;Display on Cursor on and Blink on
XLCDCursorOnBlinKOff    equ     B'00001110' ;Display on Cursor on and Blink off
XLCDDisplayOnCursorOff  equ     B'00001100' ;Display on Cursor off     
XLCDDisplayOff          equ     B'00001000' ;Display off     
XLCDAddrIncrOnShiftOn   equ     B'00000111' ;increment DDRAM address and Display shift during read and wite
XLCDAddrIncrOnShiftOff  equ     B'00000110' ;increment DDRAM address no Display shift during read and wite
XLCDAddrIncrOffShiftOff equ     B'00000100' ;Do not increment DDRAM address and shift during read and wite
XLCDDisplayMoveRight    equ     B'00011100' ;Display moves right,DDRAM Content remain unchanged
XLCDDisplayMoveLeft     equ     B'00011000' ;Display moves left,DDRAM Content remain unchanged
XLCDCursorMoveRight     equ     B'00010100' ;Cursor moves right,DDRAM Content remain unchanged
XLCDCursorMoveLeft      equ     B'00010000' ;Cursor moves left,DDRAM Content remain unchanged

   UDATA   
reg res 1                                   ;used in checking flag status in non blocking mode
                  
Starthere   code    0x0000         
            goto    Start                            
Strt        code

Start
                                            ;make PORTA digital(control signals are on PORTA)
        clrf    PORTD
   
        call    XLCDInit                    ;initialize LCD module(machine cycle talken for this call
                                            ;is depended on MPamOption and if in READBF mode it i depended
         
                                  ;on LCDmodule

                                              ;display of string (this is always blocking)
         movlw b'0000000111'
         movwf XLCDCommand
       
        goto    StartDisplay
       
StartDisplay       
       
 
         movlw   'U'
         call    XLCDPut

        movlw   'n'
        call    XLCDPut

        movlw   'i'
        call    XLCDPut

        movlw   'v'
        call    XLCDPut

        movlw   'a'
        call    XLCDPut       
       
        movlw   'l'
        call    XLCDPut

        movlw   'l'
        call    XLCDPut

        movlw   'e'
        call    XLCDPut
               
        call    XLCDL2home                      ;goto   Line 2 of the LCD       

   movlw   'M'
       call    XLCDPut
       movlw   'i'
       call    XLCDPut   
       movlw   'c'
       call    XLCDPut
       movlw   'r'
       call    XLCDPut
       movlw   'o'
       call    XLCDPut           
       movlw   'c'
       call    XLCDPut
       movlw   'o'
       call    XLCDPut
       movlw   'n'
       call    XLCDPut
       movlw   't'
       call    XLCDPut
   movlw   'r'
       call    XLCDPut
       movlw   'o'
       call    XLCDPut
       movlw   'l'
       call    XLCDPut
   movlw   'a'
       call    XLCDPut
   movlw   'd'
       call    XLCDPut
   movlw   'o'
       call    XLCDPut
   movlw   'r'
       call    XLCDPut
       
       goto    $   

   

       end
Título: Re: trasladar un mensaje por lcd???
Publicado por: maunix en 13 de Junio de 2007, 10:12:57
movlw b'0000000111'
movwf XLCDCommand
Fijate que eso que escribiste son varios bits, mucho más que 8.

Ahora bien porqué no usas directamente los comandos que están definidos como constantes?

Es decir por ejemplo

      movlw      XLCDDisplayMoveRight 
      call       XLCDPut

Título: Re: trasladar un mensaje por lcd???
Publicado por: micro_cadaver en 13 de Junio de 2007, 10:18:14
porque parece que él no hizo ese codigo....
Título: Re: trasladar un mensaje por lcd???
Publicado por: HaroldCannet en 17 de Junio de 2007, 07:07:20
Hola:

para resolver este problema creo que pueden mandarle al LCD lo sigiente:

movlw '00000111'
call       XLCDPut

el primer bit de la derecha es 1 si quieres que el texto se desplaze y 0 si no, el segundo es 1 si el cursor incrementa su posicion y 0 si la decrementa.
Los dos primeros 0 de la izquierda de:

movlw b'0000000111'
movwf XLCDCommand

no son del codigo sino que corresponden al estado en que deben estar los pines RS y R/W del LCD respectivamente durante el envio de la instruccion.

Bueno espero que esto sirva de algo.
Título: Re: trasladar un mensaje por lcd???
Publicado por: maunix en 17 de Junio de 2007, 10:52:26
porque parece que él no hizo ese codigo....

Si, intuí lo mismo pero quería que él lea lo que él mismo había escrito.  ¿suena lógico mi pedido no? :)



para resolver este problema creo que pueden mandarle al LCD lo sigiente:

movlw '00000111'
call       XLCDPut

¿Pero eso no haría desplazar al texto durante la escritura? Creo que la idea es desplazarlo post. escritura.


Los dos primeros 0 de la izquierda de:

movlw b'0000000111'
movwf XLCDCommand

no son del codigo sino que corresponden al estado en que deben estar los pines RS y R/W del LCD respectivamente durante el envio de la instruccion.
Tal vez quiso hacer eso, pero los pics desde la familia 10 a la 18, tienen un bus de datos de 8bits, por ende eso así como está escrito equivale a


     movlw     b'00000111'
     movwf     XLCDCommand


Ya que al ensamblarse se truncarán los bits superiores.

Saludos
Título: Re: trasladar un mensaje por lcd???
Publicado por: cesar gomez en 22 de Junio de 2007, 01:17:39
hola a todos necesito mostrar un mensaje por una lcd de 2x16 con el pic 18f452 este mensaje debe salir por la derecha y volver a ingresar por la izquierda esto debe ser en assembler, espero haberme hecho entender. Toda ayuda se las agradecere... gracias adios.... :lol:
porque parece que él no hizo ese codigo....

Si, intuí lo mismo pero quería que él lea lo que él mismo había escrito.  ¿suena lógico mi pedido no? :)



para resolver este problema creo que pueden mandarle al LCD lo sigiente:

movlw '00000111'
call       XLCDPut

¿Pero eso no haría desplazar al texto durante la escritura? Creo que la idea es desplazarlo post. escritura.


Los dos primeros 0 de la izquierda de:

movlw b'0000000111'
movwf XLCDCommand

no son del codigo sino que corresponden al estado en que deben estar los pines RS y R/W del LCD respectivamente durante el envio de la instruccion.
Tal vez quiso hacer eso, pero los pics desde la familia 10 a la 18, tienen un bus de datos de 8bits, por ende eso así como está escrito equivale a


     movlw     b'00000111'
     movwf     XLCDCommand


Ya que al ensamblarse se truncarán los bits superiores.

Saludos

___________________________________________________________________________________
hola ya logre moverlo con

movlw B'0000011100'
call XLCDCommand

y con un ciclo repetitivo para que se vaya desplazando lo que note esque se desplazaba muy lento pero es por los ciclos de instruccion que tengo dentro del ciclo repetiv, son muchas las instrucciones que debe hacer antes que llegue al comando para mover el display.... pero le hice algunos arreglos... de todas maneras gracias
Título: Re: trasladar un mensaje por lcd???
Publicado por: maunix en 22 de Junio de 2007, 08:47:11
Antes que nada, me alegro que lo hayas solucionado

hola ya logre moverlo con

movlw B'0000011100'
call XLCDCommand

y con un ciclo repetitivo para que se vaya desplazando lo que note esque se desplazaba muy lento pero es por los ciclos de instruccion que tengo dentro del ciclo repetiv, son muchas las instrucciones que debe hacer antes que llegue al comando para mover el display.... pero le hice algunos arreglos... de todas maneras gracias

César, espero puedas leer y comprender lo que mencioné anteriormente... hacer eso te funciona pero estas truncando el resultado!  El WREG es de 8 bits, así le pongas


    movlw b'101010101010101010101010101010101'

será lo mismo que hacer


    movlw b'01010101'



Lo que en tu caso equivale a


     movlw    b'00011100'
     call     XLCDCommand


saludos