Autor Tema: printf para lcd, caracteres extra y cgram  (Leído 4408 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
printf para lcd, caracteres extra y cgram
« en: 17 de Julio de 2008, 19:09:57 »
saludos amigos, aca con una nueva pregunta sobre lcd's y el printf, no encontre algo referente a mi duda y por eso abri el nuevo tema.

pasa lo siguiente, estoy usando un HD44780 y como es muy bien sabido se puede utilizar hasta 8 caracteres definidos por uno mismo utilizando la cgram, y pues como bien explicado esta en otros hilos no tuve mucho problema en hacerlo funcionar, además que el programa del buen Pali sirve mucho para ello, grande Pali!

ahora paso más al detalle de mi duda con el printf

para por ejemplo ver una ñ en el lcd, o bien la creamos o bien rebuscamos en sus caracteres y encontré que el "codigo ascii" para la ñ dentro el controlador del lcd es 0xee

y por ejemplo si quiero escribir año puede hacerlo de esta manera:

printf(lcd_putc,"A o\b\b");
lcd_putc(0xee);

y con lo que tengo escrito en la pantalla del lcd: Año
solo existe la ñ minuscula, y de la misma forma con el símbolo de grados, que tb se utiliza para nombrar a los números ordinales: º
su codigo ascii en el lcd es 0xdf
si hago por ejemplo:

printf(lcd_putc,"Fue 1");
lcd_putc(0xdf);

y con eso obtengo en mi LCD escrito: Fue 1º

sin crear nada, ahora pasaría lo mismo con la cgram, si coloco 0-7 en el lcd_putc tengo visualizado en el lcd la posicion de la cgram

Ahora la pregunta del millon, hay alguna forma de incluir dentro del printf esos caracteres especiales? para no tener que adjuntar las instrucciones lcd_putc() independientes que hasta ahora he colocado?

algo que sea... nose, como esto:

printf(lcd_putc,"A%eo",0xee);

y me de como resultado la palabra: Año, visto en el lcd.
Nose si me deje entender? espero que si, por si las moscas lo de %e vendría de Especial :D, no existe, al menos hasta ahora para mi.
.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: printf para lcd, caracteres extra y cgram
« Respuesta #1 en: 17 de Julio de 2008, 19:39:32 »
Muy sencillo:

printf("A%cn",oxee); Obtenemos "Año"

%c permite poner un carácter.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: printf para lcd, caracteres extra y cgram
« Respuesta #2 en: 17 de Julio de 2008, 23:13:37 »
Hola.

Lo que yo hago es, antes de definir los caracteres, asignar un nombre a la direccion del caracter correspondiente. Por ejemplo:

Código: C
  1. ...
  2. #define up_down 0
  3. ...
  4. int const caracter0[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
  5. int const data_UP_DOWN[8]={4,14,31,0,31,14,4,0};
  6. ...
  7. printf(lcd_putc,"%c PROGRAMAS\nWIPER DIGITAL");

y obtengo



Saludos.
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: printf para lcd, caracteres extra y cgram
« Respuesta #3 en: 18 de Julio de 2008, 11:06:08 »
ok gracias por las respuestas, sabia q podia existir un %..  :D pero no figuraba en el manual de ccs, ahora mismo lo pruebo.

_MLO, y donde esta el valor para %c??
printf(lcd_putc,"%c PROGRAMAS\nWIPER DIGITAL");  // creo que se escapo algo por ahi?, o me equivoco?
.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: printf para lcd, caracteres extra y cgram
« Respuesta #4 en: 18 de Julio de 2008, 18:23:25 »
Hola

Pues si!!!! jajaja se me olvido!!!! (para no hecharle la culpa al sueno que tenia ya a esas horas  :-) )
Seria de la siguiente manera

Código: [Seleccionar]
printf(lcd_putc,"%c PROGRAMAS\nWIPER DIGITAL", up_down);

Saludos
El papel lo aguanta todo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: printf para lcd, caracteres extra y cgram
« Respuesta #5 en: 18 de Julio de 2008, 18:54:54 »
ok, gracias _MLO

sabia q podia existir un %..  :D pero no figuraba en el manual de ccs, ahora mismo lo pruebo.

enmiendo mi error, si esta en el manual :mrgreen:, pero yo no me habia percatado del truco, jeje

ahora si todo sale muy bien, gracias :-/
.


 

anything