Desplegado de una variable en un lcd

#1
Hola a todos!

Estoy programando un avr mas especificamente el ATmega8 y utilizo el win AVR como compilador, mi proyecto es un sensor de temperatura con desplegado en un lcd, ya tengo la parte de lectura de temperatura en una variable de 16 bits, como puedo desplegar esta variable en mi lcd?

Hasta ahora lo que he ntentado es usando estas lineas de codigo:

void main(void)
{
............
lcd gotoxy(0,1);
lcd_puts("La temp es:");
lcd gotoxy(1,0);
lcd_puts(c); donde c es mi variable a desplegar
}


he leido en varios lados el uso de el comando printf, pero esto estaria ligado directamente al uso de una libreria especifica?

para manipular mi lcd, estyo utilizando una libreria externa, y segun lo poco que se de C el comando printf esta en la libreria stduio.h

Alguien me podria decir ayudar a aclarar estos puntos?

Desde ya muchas gracias!
 
#2
Hola como estás.

Hasta ahora lo que he ntentado es usando estas lineas de codigo:

void main(void)
{
............
lcd gotoxy(0,1);
lcd_puts("La temp es:");
lcd gotoxy(1,0);
lcd_puts(c); donde c es mi variable a desplegar
}
No es tan directo como pasarle el valor al LCD con printf. En AVR - GCC, tenés que abrir un puerto de comunicaciones. En este caso el puerto del LCD y decirle a la función printf que saque los datos formateados por dicho puerto.

Para el puerto serie se hace de la siguiente manera, vos tendrías que adaptarlo al LCD:

Código:
int USART0SendByte(char u8Data, FILE *stream)
{
   if(u8Data == '\n')
   {
      USART0SendByte('\r', 0);
   }
//wait while previous byte is completed
while(!(UCSR0A&(1<<UDRE0))){};
// Transmit data
UDR0 = u8Data;
return 0;
}
int USART0ReceiveByte(FILE *stream)
{
uint8_t u8Data;
// Wait for byte to be received
while(!(UCSR0A&(1<<RXC0))){};
u8Data=UDR0;
//echo input data
USART0SendByte(u8Data,stream);
// Return received data
return u8Data;
}
//set stream pointer
FILE usart0_str = FDEV_SETUP_STREAM(USART0SendByte, USART0ReceiveByte, _FDEV_SETUP_RW);
En el código te muestra las funciones de salida y entrada de datos...y como abrimos un handler para poder usar las funciones printf y scanf.
 
#3
primero que nada te agradezco por tu respuesta, pero leyendo esto lo relaciono con el envio de datos por comunicacion USART, veras, este sensor de temperatura debe enviar los datos a la pc para que por medio de una aplicacion en VB podemos graficar la temperatura, asi que ya tengo la habilitacion serie para el envio de datos, por lo cual no puedo utilizar utilizar este puerto para el lcd......

estoy tratando de manipular primero una variable y mostrarla en mi lcd, sin embargo tengo un ligero problema al parecer tengo que definir en mi libreria de lcd que tipos de variables manejare....lo cual le quita la portabilidad a mi libreria....


y al arecer el uso del printf relaciona al puerto serie no? o puedo manejarlo por otro puerto?
 
#4
estoy tratando de manipular primero una variable y mostrarla en mi lcd, sin embargo tengo un ligero problema al parecer tengo que definir en mi libreria de lcd que tipos de variables manejare....lo cual le quita la portabilidad a mi libreria....
En C podés utilizar identificadores de tipo para declarar variables, con eso solucionas el problema de variables.

y al arecer el uso del printf relaciona al puerto serie no? o puedo manejarlo por otro puerto?
Podés enviar la información de manera formateada por el puerto serie, SPI, I2C, LCD, etc.
 
Arriba