TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: talegres en 24 de Julio de 2009, 14:48:34

Título: Desplazamiento de variables en lcd
Publicado por: talegres en 24 de Julio de 2009, 14:48:34
 Bueno colegas, tras buscar y probar todo lo leído en el foro sobre desplazamiento de textos en lcd,
soy incapaz de aclararme.

Estoy tratando de escribir en un LCD de 16x2 lineas, variables de tres carácteres que recibo vía serin.

Pero no se como conseguir que vayan apareciendo en la pantalla una tras otra a medida que son recibidas.

Es decir, que se imprima la primera ("ABC"), que al recibir la siguiente ("DEF"), se desplace ABC a la derecha y aparezca DEF al inicio del lcd.
Cuando se recibe la siguiente variable ("GHI"), se desplacen las anteriores y ésta última aparezca al inicio del lcd.

La situación debería quedar así en el lcd:
GHI DEF ABC

Gracias a todos de antemano como siempre.

Título: Re: Desplazamiento de variables en lcd
Publicado por: MLO__ en 24 de Julio de 2009, 15:39:08
Hola.

Lo que se me ocurre es controlar el orden de despliegue del bufer de recepcion. Cuando recibes el dato lo vas ubicando desde la posicion 0 hasta la posicion n, cuando lo despliegas en la LCD lo haces desde la pocion n hasta la posicion 0. De hecho, puedes aprobechar el hecho de que la variable en el bufer es 0 cuando no hay dato, para desplegar el dato en la LCD desde la ultima posicion que sea diferente de cero.

Código: [Seleccionar]
BuferData[10] = {'A',0,0,0,0,0,0,0,0,0}

Cuando llega un dato nuevo:
Código: [Seleccionar]
BuferData[10] = {'A','B',0,0,0,0,0,0,0,0}

En la LCD despliego siempre y cuando se cumpla que BuferData[ i ]!=0, hasta que i=0.

Saludos
Título: Re: Desplazamiento de variables en lcd
Publicado por: Suky en 25 de Julio de 2009, 01:01:44
Cambia el modo de entrada enviando alguno de los siguientes comandos:

Código: [Seleccionar]
'--- Modos de Entrada
' Incrementa Direccion, Display fijo 0x06
' Decrementa Direccion, Display fijo 0x04
' Incrementa Direccion, Cursor fijo         0x07
' Decrementa Direccion, Cursor fijo 0x05

Otra forma seria por ejemplo si recibes de a 3 caracteres, mover el display a la izquierda enviando el comando 0x18 al LCD 3 veces, luego mover el cursor a la izquierda 6 veces enviando el comando 0x10 y imprimir los 3 caracteres nuevos.

Sino hacer lo que indica MLO_, es mas sencillo  :mrgreen:

Saludos!