TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Cryn en 17 de Julio de 2008, 19:09:57

Título: printf para lcd, caracteres extra y cgram
Publicado por: Cryn 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.
Título: Re: printf para lcd, caracteres extra y cgram
Publicado por: jfh900 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
Título: Re: printf para lcd, caracteres extra y cgram
Publicado por: MLO__ 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

(http://img512.imageshack.us/img512/6858/cgramua8.jpg)

Saludos.
Título: Re: printf para lcd, caracteres extra y cgram
Publicado por: Cryn 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?
Título: Re: printf para lcd, caracteres extra y cgram
Publicado por: MLO__ 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
Título: Re: printf para lcd, caracteres extra y cgram
Publicado por: Cryn 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 :-/