TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: gaston en 14 de Febrero de 2008, 15:19:46

Título: Minicurso de Printf + LCD
Publicado por: gaston en 14 de Febrero de 2008, 15:19:46
Estimados,

he leido muy poco de  las bondades que brinda CCS a travez de su sentencia Printf de texto formateado,

todos conocemos que printf es usado para "sacar datos " por RS232, pero

como usarlo con un LCD?
cuales son los parametros definitivos y sus funciones especificas? /n /t %.....

diferencias si hay con cout >> <<, etc

en fin, a los que saben, y que son muchos y ademas Saben enseñar muy bien,

por ahi conocen enlaces, - incluso del foro mismo, postean ejemplos y comentarios, experiencias y porque no frustaciones jajaja.

quien se anima a agregar comentarios que nos permitan armar información de lo versatil de Printf en CCS

muchas gracias
Título: Re: Minicurso de Printf + LCD
Publicado por: jfh900 en 14 de Febrero de 2008, 15:27:15
Hola, efectivamente printf es muy versátil. Para mandar información al LCD utilizamos un parámetro de printf que permite definir una función a la que se mandará la cadena formateada. Por ejemplo si en nuestra librería LCD tenemos la función LCD_char(): envía un carácter al LCD, lo utilizaríamos así:

printf(LCD_char,"Valor de la variable: %u",variable);

Como se pude observar utilizamos una función que envia un solo carácter al LCD, la función printf se encarga de enviar carácter a carácter a la función LCD_char para que se visualice toda la cadena.

El resto del printf se utiliza de la forma habitual.

Un saludo
Título: Re: Minicurso de Printf + LCD
Publicado por: RICHI777 en 14 de Febrero de 2008, 15:50:22
Gaston, retornando a la discusicón en otro post de la standarización del CSS este es un claro ejemplo, el standart define a la funcion printf de la sgte. manera:
int printf( const char *args, ... );
Cuando quieras llevar tu fuente a otro compilador seguramente tendras problemas, porque el parametro extra no esta incluido en la declaracion ( el puntero a funcion de la función que escupe )
A mi modesto entender, la función printf, deberia dejarse tal cual, y para estos casos donde yo quiero cambiar el standart output ( que es la función que se encarga de escupir caracter a caracter como muy bien explica jfh900 ) le pondria otro nombre, nose por ejemplo Customprintf, en este caso todo tu codigo hace referencia a esta función y se deberias  cambiar de compilador, solo tendrias que implementarla de nuevo, pero ahora todo tu codigo compilaria sin problemas y con poco esfuerzo de portabilidad.
Salu2!
Título: Re: Minicurso de Printf + LCD
Publicado por: gaston en 14 de Febrero de 2008, 15:59:45
Muchas gracias jfh900 por tu respuesta, ahora en CCS no encontre la funcion LCD_char que expones, ni tampoco se como se llama la libreria que maneja la LCD y si tienes alguna informacion sobre los parametros %u que citas o los demas, /n etc, y la puedes postear te agrederia, o al menos algun enlace de donde leerlo,

es que recien empiezo con C, vengo del querido assembler y casi extraños nuestras propias bibliotecas de funciones jajajaja

gacias de nuevo

ojala tengamos mas opiniones al respecto  :-)
Título: Re: Minicurso de Printf + LCD
Publicado por: gaston en 14 de Febrero de 2008, 16:04:33
Gracias RICHI777 

es decir la funcion printf tal cual lo implementa CCS no es compatible con ANSI C, es decir hace todo lo que la funcion printf ANSI hace, y algo mas, que sereia este punto, que si bien agiliza las cosas, tal como se habla en el otro post pierde compatibilidad con el standard.

es interesante el punto de vista, y el hecho de agregar una funcion intemedia como propoes tiene sentido,

gracias de nuevo
Título: Re: Minicurso de Printf + LCD
Publicado por: RICHI777 en 14 de Febrero de 2008, 16:42:19
Gaston, te explico brevemente:
printf(LCD_char,"Valor de la variable: %u",variable);


Existen mas formatos ( floats, double ) pero escapa a este post...
Salu2!



Título: Re: Minicurso de Printf + LCD
Publicado por: jfh900 en 14 de Febrero de 2008, 16:42:38
En CCS creo que la libría es lcd.c. En este foro tienes la librería flex_lcd que la puedes localizar con el buscador y que te permite cambiar los pines como quieras. Dentro de esta librería está definida la función void lcd_putc(char c) que es la que puedes utilizar para enviar información al LCD con printf.

Un saludo
Título: Re: Minicurso de Printf + LCD
Publicado por: gaston en 14 de Febrero de 2008, 18:04:41
Muchas gracias a los dos,

para agregar la libreria simplemente agregas el archivo al proyecto?  y luego algun include que la llame?

por ej, con esta flex_lcd

pondrias algo asi como:

#include <flex_lcd.c>
Título: Re: Minicurso de Printf + LCD
Publicado por: jfh900 en 14 de Febrero de 2008, 18:13:44
Si, tienes que utilizar el #include para añadir la librería como tienes especificado, pero ojo:

#include <flex_lcd.c> => Busca en el directorio de librerías del CCS.

#include "flex_lcd.c" => Busca en el directorio del proyecto.

Un saludo.
Título: Re: Minicurso de Printf + LCD
Publicado por: gaston en 14 de Febrero de 2008, 18:24:49
Gracias jfh900 y perdon por hacer preguntas un poco simples

conoces algun lugar donde pueda bajar algun libro o manual de C para pics?

gracias de nuevo
Título: Re: Minicurso de Printf + LCD
Publicado por: jfh900 en 14 de Febrero de 2008, 18:28:10
Hay un manual en español de CCS que lo puedes buscar por el foro. Pero lo que verdaderamente te puede enseñar son los minitutoriales sobre C que hay en este hilo (aquí tienes el índice):

http://www.todopic.com.ar/foros/index.php?topic=14634.msg89357#msg89357

Un saludo y no dudes en preguntar lo que te haga falta para eso estamos.
Título: Re: Minicurso de Printf + LCD
Publicado por: gaston en 14 de Febrero de 2008, 18:37:11
gracias amigo, al igual que todos aqui, sos muy gentil