Autor Tema: Hacer mover el cursor de un LCD  (Leído 6416 veces)

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

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
Hacer mover el cursor de un LCD
« en: 20 de Noviembre de 2006, 05:59:15 »
hola amigos

tengo un display 2x16, controlado por un 18F. Funciona todo bien, pero ahora quiero mover el cursor hasta el lugar endonde quiero escribir un nuevo Caracter y hacerlo parpadear. A ver si alguien me puede decir como son los comando para hacer esto. Ya he probado de diferentes metodos y no lo he logrado aun.

Gracias por la ayuda.
Saludos desde Suiza, Pablo.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Hacer mover el cursor de un LCD
« Respuesta #1 en: 20 de Noviembre de 2006, 06:24:32 »
Hola gauchosuizo!

Yo utilizo el CCS y cuando quero colocar el cursor del display donde me place lo que hago es utilizar la instrucción:

lcd_gotoxy(x,y);

Al principio de mi programa la librería que incluyo es la 'flex_lcd.c' la pillé de la págiina de RedPic.

Núnca he necesitado que el cursor parpadee, pero, en la librería tenemos:

Código: [Seleccionar]
int8 const LCD_INIT_STRING[4] =
{
  0x20 | (lcd_type << 2), // Func set: 4-bit, 2 lines, 5x8 dots
  0xc, // Display on
  1, // Clear display
  6 // Increment cursor
};

Mirando el datasheet del display y viendo el comando necesario para que el cursor perpadee... siempre lo puedes introducir en este array para llamarlo más tarde.


Un saludo desde Alicante.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
Re: Hacer mover el cursor de un LCD
« Respuesta #2 en: 20 de Noviembre de 2006, 06:53:06 »
hola Azicuetano

gracias por tu respuesta. No es un problema de inicializacion. Te cuento  que es lo que quiero hacer:
escribi una subrutina para dar entrada a un password. Son cuatro numeros en una array y voy activando de a uno. Despues de mostrar en el LCD todo el texto el cursor se queda en la posicion 15, linea 2 (Display 16x2). Y lo que quiero hacer es correr el cursor a la position del primer numero del password. Esta posicion es 11, linea 2. Y por lo que he leido, se puede correr el cursor sin escribir datos en la memoria del LCD. Los LCD compatibles con el HD44780 tienen unos comandos internos, que son los que estoy intentando usar.

Gracias
Saludos desde Suiza, Pablo.

Desconectado Azicuetano

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1020
    • Aplicaciones Electrónicas en Alicante.
Re: Hacer mover el cursor de un LCD
« Respuesta #3 en: 20 de Noviembre de 2006, 07:55:14 »
Hola gauchosuizo!

En la librería flex_cd.c tenemos:

Código: [Seleccionar]
void lcd_gotoxy(int8 x, int8 y)
{
  int8 address;

  if(y != 1)
  address = lcd_line_two;
  else
  address=0;

  address += x-1;
  lcd_send_byte(0, 0x80 | address);
}

Lo que hace esta función es posicionar el cursor en el lugar que le digamos. Si nos fijamos, la dirección 0x80 en la dirección del primer caracter de la primera linea (lo podemos ver en el datasheet). Lo que esta función hace es posicionar el cursor sin escribir nada en el display, es decir, utilizando el comando que tiene el display para posicionar el cursor.

Yo creo que esto te puede servir.


Un saludo desde Alicante a mi mentor en el diseño de PCB´s jejeje  :mrgreen: :mrgreen:

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
Re: Hacer mover el cursor de un LCD
« Respuesta #4 en: 20 de Noviembre de 2006, 08:59:42 »
hola Azicuetano

gracias por tu respuesta. Eso ya lo se, porque yo lo hago asi. Es mas te dejo mi subrutina que se diferencia(casi nada) un poquito de la tuya:
Código: [Seleccionar]
void lcd_gotoxy(byte x, byte y)
{
byte address;

if(y==1) address=0;
if(y==2) address=0x40;
if(y==3) address=0x10;
if(y==4) address=0x50;
address+=x-1;
lcd_send_byte(0,0x80|address);
}

El tema es que he leido que estos display tienen la posibilidad de mover el cursor con un comando interno. Y precisamente es esto lo que estoy tratando de hacer. Resumiendo: quiero mover el cursor a la posicion deseada, pero que se vea el cursor. Yo ya he probado moviendo el cursor como tu lo dices y despues, usando el comando interno, he hecho que el display me muestre el cursor con el comando correspondiente. Lamentablemente el cursor se ve siempre en el mismo lugar.

Hay que seguir buscando, en donde hago el error.
Saludos desde Suiza, Pablo.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
Re: Hacer mover el cursor de un LCD
« Respuesta #5 en: 20 de Noviembre de 2006, 10:47:47 »
hola amigos

solucione el problema. Los comandos que utilizaban funcionan correctamente. El problema era que en otra parte del programa borraba el LCD y el cursor se iba al punto de partida.

Gracias
Saludos desde Suiza, Pablo.


 

anything