Autor Tema: Manejo de LCD mediante variables  (Leído 2069 veces)

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

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Manejo de LCD mediante variables
« en: 20 de Junio de 2008, 23:11:57 »
Hola amigos, antes que nada quiero decirles que son mis maestros en la web en asuntos de PIC, aprendo analizando vustros trabajos.
Hoy les escribo por una duda que debe ser MUY basica pero para alguien que empieza a programar en C es un tanto enredado, el asunto es que deseo manejar mi funcion de LCD optimizadamente, es decir, algo asi

void lcd(void)
{
   lcd_init();                               //inicio lcd
   printf(lcd_putc,"%Ld",primera_linea);      //imprimo primera fila
   lcd_gotoxy(1,2);                          //muevo cursor
   printf(lcd_putc,"%Ld",segunda_linea);      //imprimo segunda fila
return;
}

Pero no encuentro la manera de asignar a las variables, en este caso primera_linea y segunda_linea los valores necesarios, que van desde strings de caracteres, variables int e int32-
Actualmente escribo muchas funciones de LCD y eso me come mucha memoria, ya le voy a tenes que poner un disco duro al pic pa que me alcanze la rom jejejejeje
Alguna sugerencia?
Gracias
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Manejo de LCD mediante variables
« Respuesta #1 en: 21 de Junio de 2008, 03:51:10 »
Los tipos los tienes en la instrucción print() del manual.

c, caracter; u entero; lu long etc.

¿Para qué sirve el return?

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Manejo de LCD mediante variables
« Respuesta #2 en: 21 de Junio de 2008, 11:12:24 »
¿Para qué sirve el return?
Yo me estaba preguntando lo mismo... porque la función es tipo "void"...  :?
Ahora nos toca esperar la respuesta de vasconinicolas...
Saludos, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Gonzalo_BlackHawk

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 519
Re: Manejo de LCD mediante variables
« Respuesta #3 en: 21 de Junio de 2008, 12:14:04 »
Hola fire, pocher y vasconinicolas.

El uso de return dentro de una función void esta contemplado en CCS dentro de los errores de compilación. Seguramente al tratar de compilarlo a vasco le dará el siguiente error:

"Return not allowed in void function"

0x01 saludo.
"Siempre piensa si el jugo vale la exprimida..."

"La muerte esta tan segura de vencer que nos da toda una vida de ventaja."

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Re: Manejo de LCD mediante variables
« Respuesta #4 en: 21 de Junio de 2008, 12:17:48 »
float pm; //  variable float por cuestiones de calculos que hago antes de representar los resultados en la pantalla
char i;

void lcd_seteo_valores_iniciales_motor(void)
{
   lcd_init();                    
   printf(lcd_putc, "motor");                     // represento un string
   lcd_gotoxy(1,2);                      
   printf(lcd_putc, "%ld", (int16)pm);           // aqui convierto la variable float en entera porque come mucho menos memoria de programa
return;
}

void lcd_menu_inicio(void)
{
   lcd_init();                          
   printf(lcd_putc,"Configurar");      //imprimo primera fila string
   lcd_gotoxy(1,2);                
   printf(lcd_putc,"Sistema?");      //imprimo segunda fila string
return;
}

void lcd_saludo(void)
{
   do{
   lcd_init();                      
   printf(lcd_putc,"*SkyNIC*");      //imprimo primera fila string
   lcd_gotoxy(1,2);                
   printf(lcd_putc,"%d",i);      //represento la variable i
return;
}

Y de estas funciones tengo muchas, cada una es ligeramente diferente y lo que yo pretendia es hacer una sola funcion que representase 2 variables, una para la primera fila y otra para la segunda (del lcd). De esa forma yo cargo las variables y luego llamo la funciona LCD() y listo.
Por cierto, el return lo puse con la idea de volver al sitio desde donde llamé la funcion (en el programa principal) luego de terminada la misma, por costumbre de trabajar en ASM (call - return) pero no se si es necesario en C. Disculpen la ignorancia y aunque dispongo del manual en español de Andrés Cánovas López, para los que iniciamos en C algunas no las comprendemos muy bien hasta que no hechamos el moco ejeje
Saludos
« Última modificación: 21 de Junio de 2008, 12:20:33 por vasconinicolas »
"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: Manejo de LCD mediante variables
« Respuesta #5 en: 21 de Junio de 2008, 12:27:56 »
El lcd_init() ponlo una sola vez en el main(), es suficiente.

Desconectado vasconinicolas

  • PIC16
  • ***
  • Mensajes: 124
Re: Manejo de LCD mediante variables
« Respuesta #6 en: 22 de Junio de 2008, 23:33:58 »
Gracias pocher por la aclaracion. Respecto a mi problema, lo he solucionado asi

int saludo[]="hola", saludo2[]="mundo",vlcd;

void lcd(){
   printf(lcd_putc,"%s",vlcd);  //imprimo en lcd
}

void main(void){
vlcd=saludo;   //cargo la cadena en la variable
lcd(); //imprimo hola en lcd
vlcd=saludo2;
lcd();  //imprimo mundo en lcd
}

Y asi, la cuestion era usar una misma variable para no tener que escribir muchas funciones lcd()
Gracias a todos una vez mas.
N

"No hacen ciencia los países ricos,
Son ricos los países por hacer ciencia"


 

anything