Autor Tema: Minicurso de Printf + LCD  (Leído 3838 veces)

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

Desconectado gaston

  • PIC12
  • **
  • Mensajes: 77
Minicurso de Printf + LCD
« 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

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Minicurso de Printf + LCD
« Respuesta #1 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
* 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 RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Minicurso de Printf + LCD
« Respuesta #2 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!

Desconectado gaston

  • PIC12
  • **
  • Mensajes: 77
Re: Minicurso de Printf + LCD
« Respuesta #3 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  :-)

Desconectado gaston

  • PIC12
  • **
  • Mensajes: 77
Re: Minicurso de Printf + LCD
« Respuesta #4 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

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Minicurso de Printf + LCD
« Respuesta #5 en: 14 de Febrero de 2008, 16:42:19 »
Gaston, te explico brevemente:
printf(LCD_char,"Valor de la variable: %u",variable);

  • LCD_char es un puntero a la función que escupe caracter a caracter, nose si esta implementada o hay que implementarla uno.
  • Todo lo que va dentro de la comillas se interpreta como texto
  • La exepecion a lo anterior es lo que empieza con %
  • Algunos caracteres de escape ( asi se llaman ) empiezan con \, ejemplo las comillas \", el fin de linea ( 0x0A ) \n, el carriage return ( 0x0D ) \r
  • Lo que sigue despues del % es el tipo de variable a formatear: c char, d int, u unsigned, l long, s string
  • Tambien existe %X o %x que permite sacar un hexadecimal
  • Si ademas queres padear con algo lo pones adelante del tipo, ejemplo %04X sacara cuatro digitos hexa, si el valor de la variable es 1 saldra 0001
  • Las variables se colocan a continuacion una tras otra en la medida como fue especificada en el formato

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




Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Minicurso de Printf + LCD
« Respuesta #6 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
* 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 gaston

  • PIC12
  • **
  • Mensajes: 77
Re: Minicurso de Printf + LCD
« Respuesta #7 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>

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Minicurso de Printf + LCD
« Respuesta #8 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.
* 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 gaston

  • PIC12
  • **
  • Mensajes: 77
Re: Minicurso de Printf + LCD
« Respuesta #9 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

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Minicurso de Printf + LCD
« Respuesta #10 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.
* 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 gaston

  • PIC12
  • **
  • Mensajes: 77
Re: Minicurso de Printf + LCD
« Respuesta #11 en: 14 de Febrero de 2008, 18:37:11 »
gracias amigo, al igual que todos aqui, sos muy gentil



 

anything