Autor Tema: pregunta sobre displays LCD 16x2  (Leído 13541 veces)

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

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
pregunta sobre displays LCD 16x2
« en: 12 de Marzo de 2007, 15:46:18 »
Buenas! aca les dejo una consultita, he visto  applicaciones con displays alfa numericos LCD de 16x2 donde se usan las dos lineas del display para dibujar numeros mas grandes... es decir...  dibujan caracteres que no son ascii ... sino... usan los caracteres como vumetros... no se si alguien sabe como se haria esto.

muchas gracuas,

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: pregunta sobre displays LCD 16x2
« Respuesta #1 en: 12 de Marzo de 2007, 16:28:10 »
Hola championz .

a lo mejor te refieres a los caracteres que se pueden crear usando la CG-RAM


por aquí hay una aplicación para ello


Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Re: pregunta sobre displays LCD 16x2
« Respuesta #2 en: 14 de Marzo de 2007, 13:33:19 »
Gracias PalitroqueZ pero me dice que el link no existe mas, habria alguna otra forma de bajarlo?

muchas gracias

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: pregunta sobre displays LCD 16x2
« Respuesta #3 en: 14 de Marzo de 2007, 14:05:44 »
son los 3 adjuntos que estan en este post


lcd_en_asm.rar
lcd_en_C.rar
cgram_picture.rar


los 2 primeros son ejemplos de simulación en proteus.


Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Re: pregunta sobre displays LCD 16x2
« Respuesta #4 en: 15 de Marzo de 2007, 15:22:34 »
Gracias palitroque, la verdad que el soft esta muy bueno, me andubo perfecto en el LCD, pero te hago una pregunta... ya que no entiendo bien la logica de como trabaja el LCD, como hago para ubicar yo los caracteres... es decir... por ejemplo

"(caracter creado)palabra(caracter creado2)"

es posible hacer esto?

muchas gracias

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: pregunta sobre displays LCD 16x2
« Respuesta #5 en: 16 de Marzo de 2007, 11:41:48 »
Hola championz.

cada caracter tiene asignado una dirección, en este tipo de LCD, como veras esta pantalla tiene 2 lineas con posibilidad de 16 caracteres visibles (creo que llega hasta 40 por línea)

cada posición de cada línea, tiene asociada una dirección llamada DDRAM address que van desde 0x00 hasta 0x27 para la línea 1 y 0x40 hasta 0x67 para la línea 2

cuando se quiere mostrar un(os) caracter(es) lo primero que se hace es fijar la DDRAM y después el carácter, en caso de que el carácter esté dentro del juego de font del controlador se coloca directamente el carácter, en caso de que quieras colocar un carácter creado, debes llamar la dirección donde está alojado (el puntero).

en los ejemplos de los adjuntos está la forma de hacerlo.

no se en que lenguaje estas programando pero para darte un ejemplo ( en C)

si quiero colocar un texto en la posición 10, linea 2

Código: C
  1. lcd_gotoxy(10,2);
  2. lcd_putc("Hola CH");

aquí está un controlador común para estas LCD, a partir de la página 11 sale todo lo que he explicado.

mas o menos esa es la idea. si tienes duda, pregunta  :)


Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Re: pregunta sobre displays LCD 16x2
« Respuesta #6 en: 19 de Marzo de 2007, 02:53:19 »
Gracias Palitroke, entiendo lo del goto_xy, pero como hago para ubicar un caracter creado en el display? debo usar otra funcion? porque con gotoxy no me funciona :S jeje

disculpa la molestia, pero no entiendo bien el codigo del ejemplo que planteas en el software para crear los caracteres.

Muchas gracias!

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: pregunta sobre displays LCD 16x2
« Respuesta #7 en: 19 de Marzo de 2007, 14:33:02 »
Hola championz.

creo que no entiendo tu duda, cuando dices ubicar un carácter de la LCD :
¿te refieres a tomar la posición de un carácter que ya existe?
o
¿colocar un nuevo carácter en esa posición deseada?

otra pregunta:
¿en que lenguaje estas programando?

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Re: pregunta sobre displays LCD 16x2
« Respuesta #8 en: 20 de Marzo de 2007, 03:03:30 »
Que tal Palitroquez, estoy programando en C en el compilador de CCS

Lo que pregunto, es cmo ubicar a gusto un caracter creado con el software para crear caracteres.

Es decir.. yo cree una serie de caracteres con ese soft, y se muestran perfectamente en el display, pero uno a continuacion del otro. Lo que yo quiero es poder ubicar en cualquier posicion del display un caracter que ya he creado y guardado en la memoria.

no se si se entiende jeje.. disculpa por tanto lio.

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: pregunta sobre displays LCD 16x2
« Respuesta #9 en: 20 de Marzo de 2007, 17:55:51 »
championz creo que la solucion es la siguiente , y espero que PalitroqueZ lo confirma porque yo tambien soy nuevo en esto de generar caracteres, el controlador del LCD tiene una zona de memoria que permite  guardar caracteres generados por el usuario, y para acceder a ellos tienes enviar un dato entre 0x00 y 0x07 . Por lo que vi en el ejemplo en c que  PalitroqueZ muy gentilmente posteo,  primero guardas tus caracteres y luego los envias al lcd accediendo mediante como si fueran datos , y eso puedes hacerlos como quieras.

po ejemplo podrias hacer
lcd_send_byte(1,'>');
lcd_send_byte(1,0x00);    //aqui envias el primer caracter que guardaste.
lcd_send_byte(1,'A');


Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: pregunta sobre displays LCD 16x2
« Respuesta #10 en: 21 de Marzo de 2007, 13:23:07 »
Hola Championz

aquí hay un ejemplo completo en lenguaje C donde se pretende mostrar

<-Sen 5->

en pantalla, para ello asumiremos que las flechas no existen y las crearemos con el programa que
te mencioné:



tomamos un pedazo del código generado y lo incrustamos en el nuevo ejemplo:

Código: C
  1. #include <16F877A.h>
  2. #fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT // 0x3F72
  3. #use delay(clock=20000000)
  4. #use rs232(baud=9600, BITS=8, PARITY=N, xmit=PIN_C6, rcv=PIN_C7)
  5.  
  6.  
  7. #use fast_io(a)
  8. #use fast_io(b)
  9. #use fast_io(c)
  10.  
  11. #byte porta =5
  12. #byte portb =6
  13. #byte portc =7
  14. #byte portd =8
  15. #byte porte =9
  16.  
  17. #include <lcd.c>
  18.  
  19. int const caracter0_direccion[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
  20. int const caracter0_datos[8]={0b00000,0b00100,0b01000,0b11111,0b01000,0b00100,0b00000,0b0};
  21.  
  22. int const caracter1_direccion[8]={0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f};
  23. int const caracter1_datos[8]={0b00000,0b00100,0b00010,0b11111,0b00010,0b00100,0b00000,0b0};
  24.  
  25.  
  26. void main() {
  27.    int caracter1,caracter2,caracter3,caracter4;
  28.    int contador;
  29.    
  30.    set_tris_a(0x0);
  31.    set_tris_b(0x0);
  32.    set_tris_c(0x0);
  33.    set_tris_e(0x0);
  34.    porta=0;
  35.    portc=0;
  36.    porte=0;
  37.    port_b_pullups(true);
  38. //----------------------------------------
  39.    lcd_init();
  40.    // grabando en la CGRAM
  41.    for(contador=0;contador<8;contador++){
  42.       lcd_send_byte(0,caracter0_direccion[contador]);   //modo comando
  43.       lcd_send_byte(1,caracter0_datos[contador]);        // modo dato
  44.       lcd_send_byte(0,caracter1_direccion[contador]);   //modo comando
  45.       lcd_send_byte(1,caracter1_datos[contador]);        // modo dato
  46.    }
  47. //*******************************************//
  48.    lcd_gotoxy(9,1);  // posición del <-
  49.    lcd_send_byte(1,0); //modo dato '<-'
  50.    
  51.    lcd_gotoxy(10,1);  // posicion de la cadena "Sen 5"
  52.    lcd_putc("Sen 5");
  53.    lcd_gotoxy(15,1);   // posicion del ->
  54.    lcd_send_byte(1,1); //modo dato '->'
  55.  
  56.     caracter1 =lcd_getc(10,1); // toma el caracter de la cadena
  57.     printf("primer carácter= %c\n\r",caracter1);
  58.     // lo envía al COM
  59.  
  60.     caracter2 =lcd_getc(11,1);
  61.     printf("segundo carácter= %c\n\r",caracter2);
  62.  
  63.     caracter3 =lcd_getc(12,1);
  64.     printf("tercer carácter= %c\n\r",caracter3);
  65.    
  66.     caracter4 =lcd_getc(14,1)-0x30;   // convierte el tipo char del LCD
  67.     printf("cuarto carácter= %d\n\r",caracter4);
  68.  
  69.    }


con lcd_getc tomamos el carácter (que exista dentro del FONT de la LCD) con solo pegar la ubicación exacta (posición, línea)

en carácter4 le resto 0x30 como un truco, ya que 5 en asccii= 0x35 y como quiero obtener el mismo número, esa es una manera de hacerlo.


el ejemplo en proteus




espero que te sirva de guía este ejemplo. En este adjunto está el código + archivos de las flechas dibujadas

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado championz

  • PIC16
  • ***
  • Mensajes: 127
Re: pregunta sobre displays LCD 16x2
« Respuesta #11 en: 23 de Marzo de 2007, 02:45:21 »
Muchas gracias palitroquez y sander, me aclararon la duda!

Muchas muchas gracias!!! :)

Desconectado MSILGADO

  • PIC10
  • *
  • Mensajes: 1
Re: pregunta sobre displays LCD 16x2
« Respuesta #12 en: 28 de Noviembre de 2008, 16:46:08 »
AMIGO DISCULPAME ME PODRIAS AYUDAR DANDO A CONOCER COMO SERIA ESTE PROGRAMA PERO EN ASM.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: pregunta sobre displays LCD 16x2
« Respuesta #13 en: 28 de Noviembre de 2008, 19:11:17 »
el programa también tiene la opción de generar el código en asm



La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado unactron123

  • PIC10
  • *
  • Mensajes: 2
Re: pregunta sobre displays LCD 16x2 en matriz de 5x10
« Respuesta #14 en: 17 de Marzo de 2009, 18:44:41 »
hola estoy trabajando con eso de las LCD(Lm016l hitachi 44780) en C estoy en un trabajo donde tengo que usar la configuracíon de la lcd como matriz de 5x10 el detalle es que no se como hacerlo C, solo lo puedo hacer en matrices de 5x8; alguien que ha hecho esto por indicarme la configuración: He leido que se cambia un bit de control del micro interno.