TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado 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:
-
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
-
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
-
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
-
porque parece que él no hizo ese codigo....
-
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.
-
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 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
-
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